Showing preview only (1,989K chars total). Download the full file or copy to clipboard to get everything.
Repository: AnnaSearl/anna-remax-ui
Branch: master
Commit: 1a01e1b28f36
Files: 331
Total size: 1.8 MB
Directory structure:
gitextract_5muk5lim/
├── .eslintignore
├── .eslintrc.js
├── .gitignore
├── .nojekyll
├── .prettierrc.js
├── .umirc.ts
├── CHANGELOG.md
├── README.md
├── babel.config.js
├── build/
│ └── loaders/
│ └── jsxPx2Rem.js
├── components/
│ ├── _util/
│ │ ├── children.ts
│ │ ├── index.ts
│ │ ├── sync.ts
│ │ ├── to.ts
│ │ ├── type.ts
│ │ └── utils.ts
│ ├── action-sheet/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── button/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── card/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── cascade/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── cascade-popup/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── cell/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── checkbox/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── col/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── common/
│ │ └── index.ts
│ ├── config-provider/
│ │ └── index.tsx
│ ├── date-picker/
│ │ ├── index.tsx
│ │ └── style/
│ │ └── index.ts
│ ├── dropdown/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── filter/
│ │ ├── filter.tsx
│ │ ├── index.ts
│ │ ├── item.tsx
│ │ └── style/
│ │ ├── filter.scss
│ │ ├── index.scss
│ │ ├── index.ts
│ │ └── item.scss
│ ├── form-value/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── grid/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── hooks/
│ │ ├── index.ts
│ │ └── useRefs.ts
│ ├── icon/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── image-upload/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── images/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── index.ts
│ ├── input/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── loading/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── mask/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── one/
│ │ ├── api/
│ │ │ ├── chooseImage/
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.web.ts
│ │ │ │ └── index.wechat.ts
│ │ │ ├── createSelectorQuery/
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.web.ts
│ │ │ │ └── index.wechat.ts
│ │ │ ├── datePicker/
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.web.ts
│ │ │ │ └── index.wechat.ts
│ │ │ ├── hideLoading/
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.web.ts
│ │ │ │ └── index.wechat.ts
│ │ │ ├── index.ts
│ │ │ ├── previewImage/
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.web.ts
│ │ │ │ └── index.wechat.ts
│ │ │ ├── showLoading/
│ │ │ │ ├── index.ts
│ │ │ │ ├── index.web.ts
│ │ │ │ └── index.wechat.ts
│ │ │ └── showToast/
│ │ │ ├── index.ts
│ │ │ ├── index.web.ts
│ │ │ └── index.wechat.ts
│ │ ├── base/
│ │ │ ├── checkbox/
│ │ │ │ ├── index.tsx
│ │ │ │ ├── index.web.tsx
│ │ │ │ └── index.wechat.tsx
│ │ │ ├── index.ts
│ │ │ ├── picker/
│ │ │ │ ├── index.tsx
│ │ │ │ ├── index.web.tsx
│ │ │ │ └── index.wechat.tsx
│ │ │ └── scroll-view/
│ │ │ ├── index.tsx
│ │ │ ├── index.web.tsx
│ │ │ └── index.wechat.tsx
│ │ └── index.ts
│ ├── picker/
│ │ ├── index.tsx
│ │ └── style/
│ │ └── index.ts
│ ├── popup/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── progress-bar/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── radio/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── rate/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── result/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── row/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── search-bar/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── selector/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── selector-popup/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── skeleton/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── space/
│ │ ├── __test__/
│ │ │ └── index.test.js
│ │ ├── index.tsx
│ │ ├── s.jsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── spin/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── stepper/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── steps/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── style/
│ │ ├── iconfont/
│ │ │ └── index.scss
│ │ ├── index.scss
│ │ ├── index.ts
│ │ ├── reset/
│ │ │ └── index.scss
│ │ └── theme/
│ │ └── index.scss
│ ├── swipe-action/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── switch/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── tabs/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── tag/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ ├── textarea/
│ │ ├── index.tsx
│ │ └── style/
│ │ ├── index.scss
│ │ └── index.ts
│ └── web/
│ ├── api/
│ │ ├── chooseImage/
│ │ │ └── index.ts
│ │ ├── createSelectorQuery/
│ │ │ └── index.ts
│ │ ├── datePicker/
│ │ │ └── index.ts
│ │ ├── hideLoading/
│ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── previewImage/
│ │ │ └── index.ts
│ │ ├── showLoading/
│ │ │ └── index.ts
│ │ └── showToast/
│ │ └── index.ts
│ ├── base/
│ │ ├── checkbox/
│ │ │ └── index.tsx
│ │ ├── image/
│ │ │ └── index.tsx
│ │ ├── index.ts
│ │ ├── input/
│ │ │ └── index.tsx
│ │ ├── picker/
│ │ │ ├── index.tsx
│ │ │ └── style/
│ │ │ ├── index.scss
│ │ │ └── index.ts
│ │ ├── scroll-view/
│ │ │ └── index.tsx
│ │ ├── text/
│ │ │ └── index.tsx
│ │ ├── textarea/
│ │ │ └── index.tsx
│ │ └── view/
│ │ └── index.tsx
│ └── index.ts
├── docs/
│ ├── components/
│ │ ├── common/
│ │ │ ├── block/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── common/
│ │ │ │ └── index.ts
│ │ │ ├── frame/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── grid/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── grid-item/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ └── index.ts
│ │ ├── data-display/
│ │ │ ├── card/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── card.md
│ │ │ ├── steps/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── steps.md
│ │ │ ├── tabs/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── tabs.md
│ │ │ ├── tag/
│ │ │ │ └── index.tsx
│ │ │ └── tag.md
│ │ ├── data-entry/
│ │ │ ├── cascade/
│ │ │ │ └── index.tsx
│ │ │ ├── cascade.md
│ │ │ ├── checkbox/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── checkbox.md
│ │ │ ├── image-upload/
│ │ │ │ └── index.tsx
│ │ │ ├── imageUpload.md
│ │ │ ├── input/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── input.md
│ │ │ ├── picker/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── picker.md
│ │ │ ├── radio/
│ │ │ │ └── index.tsx
│ │ │ ├── radio.md
│ │ │ ├── rate/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── rate.md
│ │ │ ├── search-bar/
│ │ │ │ └── index.tsx
│ │ │ ├── searchBar.md
│ │ │ ├── selector/
│ │ │ │ └── index.tsx
│ │ │ ├── selector.md
│ │ │ ├── stepper/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── stepper.md
│ │ │ ├── switch/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ └── switch.md
│ │ ├── feedback/
│ │ │ ├── action-sheet/
│ │ │ │ └── index.tsx
│ │ │ ├── action-sheet.md
│ │ │ ├── filter/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── filter.md
│ │ │ ├── loading/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── loading.md
│ │ │ ├── result/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── result.md
│ │ │ ├── skeleton/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ └── skeleton.md
│ │ ├── general/
│ │ │ ├── button/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── button.md
│ │ │ ├── cell/
│ │ │ │ ├── index.module.scss
│ │ │ │ └── index.tsx
│ │ │ ├── cell.md
│ │ │ ├── icon/
│ │ │ │ └── index.tsx
│ │ │ ├── icon.md
│ │ │ ├── popup/
│ │ │ │ └── index.tsx
│ │ │ └── popup.md
│ │ ├── gesture/
│ │ │ ├── swipe-action/
│ │ │ │ ├── index.scss
│ │ │ │ └── index.tsx
│ │ │ └── swipe-action.md
│ │ ├── layout/
│ │ │ ├── one-dimensional/
│ │ │ │ ├── index.scss
│ │ │ │ └── index.tsx
│ │ │ ├── one-dimensional.md
│ │ │ ├── space/
│ │ │ │ └── index.tsx
│ │ │ ├── space.md
│ │ │ ├── two-dimensiona.md
│ │ │ └── two-dimensional/
│ │ │ ├── index.scss
│ │ │ └── index.tsx
│ │ └── mock/
│ │ └── index.ts
│ └── index.md
├── gulpfile.js
├── index.js
├── jest.config.js
├── package.json
├── postcss.config.js
├── scripts/
│ ├── copy.ts
│ └── getEntries.ts
├── shell/
│ ├── commit.sh
│ └── pub.sh
├── site/
│ ├── _demos/
│ │ ├── index/
│ │ │ └── index.html
│ │ ├── index-1/
│ │ │ └── index.html
│ │ ├── index-10/
│ │ │ └── index.html
│ │ ├── index-11/
│ │ │ └── index.html
│ │ ├── index-12/
│ │ │ └── index.html
│ │ ├── index-13/
│ │ │ └── index.html
│ │ ├── index-14/
│ │ │ └── index.html
│ │ ├── index-15/
│ │ │ └── index.html
│ │ ├── index-16/
│ │ │ └── index.html
│ │ ├── index-17/
│ │ │ └── index.html
│ │ ├── index-18/
│ │ │ └── index.html
│ │ ├── index-19/
│ │ │ └── index.html
│ │ ├── index-2/
│ │ │ └── index.html
│ │ ├── index-20/
│ │ │ └── index.html
│ │ ├── index-21/
│ │ │ └── index.html
│ │ ├── index-22/
│ │ │ └── index.html
│ │ ├── index-23/
│ │ │ └── index.html
│ │ ├── index-24/
│ │ │ └── index.html
│ │ ├── index-25/
│ │ │ └── index.html
│ │ ├── index-26/
│ │ │ └── index.html
│ │ ├── index-27/
│ │ │ └── index.html
│ │ ├── index-3/
│ │ │ └── index.html
│ │ ├── index-4/
│ │ │ └── index.html
│ │ ├── index-5/
│ │ │ └── index.html
│ │ ├── index-6/
│ │ │ └── index.html
│ │ ├── index-7/
│ │ │ └── index.html
│ │ ├── index-8/
│ │ │ └── index.html
│ │ └── index-9/
│ │ └── index.html
│ ├── index.html
│ ├── umi.css
│ └── umi.js
├── tests/
│ └── setup.js
├── tsconfig.json
├── tsconfig.webpack.json
├── typings/
│ └── index.d.ts
└── webpack.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .eslintignore
================================================
# don't ever lint node_modules
node_modules
# don't lint site
site
# don't lint scripts
scripts
# don't lint build output (make sure it's set to your correct build folder name)
cjs
/web
!components/web
esm
dist
# don't lint gulpfile
gulpfile.js
webpack.config.js
================================================
FILE: .eslintrc.js
================================================
module.exports = {
root: true,
parser: '@typescript-eslint/parser',
plugins: [
'@typescript-eslint',
'react',
'prettier',
],
extends: [
'eslint:recommended',
'plugin:@typescript-eslint/eslint-recommended',
'plugin:@typescript-eslint/recommended',
"plugin:react/recommended",
'prettier/@typescript-eslint',
'plugin:prettier/recommended',
"prettier/react",
],
env:{
browser: true,
node: true,
es6: true,
jest: true,
},
settings: { //自动发现React的版本,从而进行规范react代码
"react": {
"pragma": "React",
"version": "detect"
}
},
parserOptions: { //指定ESLint可以解析JSX语法,注:解析JSX并不代表能解析React.
"ecmaVersion": 2020,
"sourceType": 'module',
"ecmaFeatures":{
jsx:true
}
},
rules: {
"@typescript-eslint/explicit-function-return-type": 0,
'@typescript-eslint/no-explicit-any': 0,
"@typescript-eslint/ban-ts-ignore": 0,
"prettier/prettier": ["error", {}],
'react/display-name': 0,
}
};
================================================
FILE: .gitignore
================================================
node_modules/
cjs/
web/
!components/web/
esm/
dist/
package-lock.json
yarn.lock
yarn-error.log
.umi/
docs-source/
report.html
site/components
================================================
FILE: .nojekyll
================================================
================================================
FILE: .prettierrc.js
================================================
module.exports = {
singleQuote: true,
trailingComma: 'all',
printWidth: 100,
proseWrap: 'never',
arrowParens: 'avoid',
semi: true,
};
================================================
FILE: .umirc.ts
================================================
import { defineConfig } from 'dumi';
import path from 'path';
process.env.BABEL_ENV = 'dumi';
export default defineConfig({
publicPath: '/anna-remax-ui/',
base: '/anna-remax-ui',
title: 'Annar',
mode: 'site',
logo: 'https://smebimage.fuliaoyi.com/Fger7VZclDUaXDJuqg42MlsUqV-w',
favicon: 'https://smebimage.fuliaoyi.com/Fger7VZclDUaXDJuqg42MlsUqV-w',
navs: [
null,
{ title: 'Eurus', path: 'https://github.com/AnnaSearl/eurus' },
{ title: 'GitHub', path: 'https://github.com/AnnaSearl/annar' },
],
theme: {
'@c-primary': '#FF7777',
},
exportStatic: {},
outputPath: 'site',
sass: {
implementation: require('node-sass'),
},
extraPostCSSPlugins: [
require('postcss-preset-env')(),
require('postcss-plugin-px2rem')({
rootValue: 32,
exclude: '@umijs/preset-dumi',
}),
],
extraBabelPlugins: [
[
'import',
{
libraryName: 'anna-remax-ui',
libraryDirectory: '/',
style: true,
},
],
],
alias: {
'anna-remax-ui': path.resolve(__dirname, 'components'),
'../one': path.resolve(__dirname, 'components/web/index.ts'),
},
chainWebpack(memo, { env, webpack, createCSSRule }) {
memo.module
.rule('px2rem')
.test(/\.tsx$/i)
.include.add(path.resolve(__dirname, 'components'))
.add(path.resolve(__dirname, 'docs'))
.end()
.use('px2rem')
.loader('./build/loaders/jsxPx2Rem.js')
.options({
remUnit: 100,
remFixed: 3,
});
},
styles: [
`
.icon.icon-link {
display: none;
}
.__dumi-default-navbar{
background-color: #FFEEEE !important;
box-shadow: unset !important;
}
.__dumi-default-navbar-logo{
font-size: 20px !important;
padding-left: 52px !important;
}
.__dumi-default-search-input{
background-color: #FFFFFF !important;
}
.__dumi-default-layout-hero {
background-color: #FFEEEE !important;
}
.__dumi-default-menu[data-mode='site'] .__dumi-default-menu-list > li > a.active{
background: linear-gradient(to left, rgba(255, 238, 238, 0.5), rgba(248, 250, 255, 0)) !important;
}
.markdown *:not(pre) code {
margin: 0 1px;
padding: .2em .4em !important;
font-size: .9em;
color: rgba(0, 0, 0, 0.85) !important;
background: #f2f4f5 !important;
border: 1px solid #f0f0f0;
border-radius: 3px;
font-family: sfmono-regular,Consolas,liberation mono,Menlo,Courier,monospace;
}
.markdown table td:nth-child(3) {
color: #FF5555;
font-size: 13px;
word-break: break-all;
}
.markdown table td:nth-child(3) > code {
color: #FF5555 !important;
background-color: #F6F6F6 !important;
font-size: 13px;
word-break: break-all;
margin-bottom: 6px;
}
.anna-btn:not(.anna-btn-disabled):hover .anna-btn-mask {
box-sizing: border-box;
position: absolute;
top: -1PX;
right: -1PX;
bottom: -1PX;
left: -1PX;
content: '';
background-color: rgba(255, 255, 255, 0.35);
border-radius: inherit;
pointer-events: none;
transition: background-color 0.3s;
}
`,
],
});
================================================
FILE: CHANGELOG.md
================================================
## [1.2.6](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.5...v1.2.6) (2020-03-28)
### Features
* :sparkles: 新增组件库文档,去除CSSModule, 规范组件css命名规范 ([87ff874](https://github.com/AnnaSearl/anna-remax-ui/commit/87ff8744e02017f40c4f804109086c639b425218))
## [1.2.5](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.4...v1.2.5) (2020-03-26)
### Bug Fixes
* :bug: lock ([4669de2](https://github.com/AnnaSearl/anna-remax-ui/commit/4669de23cd330ccad402739c3f6b4e794005f20c))
* :bug: 修改md文件 ([2c2ae27](https://github.com/AnnaSearl/anna-remax-ui/commit/2c2ae27434ce3e01ac6a0e082cf2b0d3b3fa91c4))
## [1.2.5](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.4...v1.2.5) (2020-03-26)
### Bug Fixes
* :bug: 修改md文件 ([2c2ae27](https://github.com/AnnaSearl/anna-remax-ui/commit/2c2ae27434ce3e01ac6a0e082cf2b0d3b3fa91c4))
## [1.2.4](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.3...v1.2.4) (2020-03-26)
### Bug Fixes
* :bug: lock ([628b280](https://github.com/AnnaSearl/anna-remax-ui/commit/628b280cf0b35c0e2ebb2c57347c72ef2eccb807))
### Features
* :sparkles: 增加对微信小程序的支持 ([4340421](https://github.com/AnnaSearl/anna-remax-ui/commit/4340421e4c17c83f4242342b3ec5e90b75b8cf88))
## [1.2.4](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.3...v1.2.4) (2020-03-26)
### Features
* :sparkles: 增加对微信小程序的支持 ([4340421](https://github.com/AnnaSearl/anna-remax-ui/commit/4340421e4c17c83f4242342b3ec5e90b75b8cf88))
## [1.2.3](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.1...v1.2.3) (2020-03-26)
### Bug Fixes
* :bug: lock ([5ec6bd8](https://github.com/AnnaSearl/anna-remax-ui/commit/5ec6bd807f510ab4ecf4a85b845b1ed3716e22d5))
* :bug: lock ([568c1b2](https://github.com/AnnaSearl/anna-remax-ui/commit/568c1b2fbd6b3eed349386fe341424120ad2b298))
* :bug: 添加md图片 ([eddd242](https://github.com/AnnaSearl/anna-remax-ui/commit/eddd2428b275f50f4531ab401f7c0c1c7cb1de73))
### Features
* :sparkles: 新增Icon组件,修改Cell组件,取消部分组件的cssModule,加入anna样式前缀 ([c3d765f](https://github.com/AnnaSearl/anna-remax-ui/commit/c3d765f0ffaee649097b872b32610015be19c44e))
## [1.2.3](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.1...v1.2.3) (2020-03-26)
### Bug Fixes
* :bug: lock ([568c1b2](https://github.com/AnnaSearl/anna-remax-ui/commit/568c1b2fbd6b3eed349386fe341424120ad2b298))
* :bug: 添加md图片 ([eddd242](https://github.com/AnnaSearl/anna-remax-ui/commit/eddd2428b275f50f4531ab401f7c0c1c7cb1de73))
### Features
* :sparkles: 新增Icon组件,修改Cell组件,取消部分组件的cssModule,加入anna样式前缀 ([c3d765f](https://github.com/AnnaSearl/anna-remax-ui/commit/c3d765f0ffaee649097b872b32610015be19c44e))
# [1.3.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.1...v1.3.0) (2020-03-26)
### Bug Fixes
* :bug: 添加md图片 ([eddd242](https://github.com/AnnaSearl/anna-remax-ui/commit/eddd2428b275f50f4531ab401f7c0c1c7cb1de73))
### Features
* :sparkles: 新增Icon组件,修改Cell组件,取消部分组件的cssModule,加入anna样式前缀 ([c3d765f](https://github.com/AnnaSearl/anna-remax-ui/commit/c3d765f0ffaee649097b872b32610015be19c44e))
## [1.2.1](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.0...v1.2.1) (2020-03-25)
### Bug Fixes
* :bug: lock ([99e43d7](https://github.com/AnnaSearl/anna-remax-ui/commit/99e43d70c851242dcbb139f1710feae3cf4c2bf2))
* :bug: 添加依赖 ([ff9d648](https://github.com/AnnaSearl/anna-remax-ui/commit/ff9d648845e4b0c327525b346fd1751a1a7e1d5f))
## [1.2.1](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.0...v1.2.1) (2020-03-25)
### Bug Fixes
* :bug: 添加依赖 ([ff9d648](https://github.com/AnnaSearl/anna-remax-ui/commit/ff9d648845e4b0c327525b346fd1751a1a7e1d5f))
# [1.2.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.1.0...v1.2.0) (2020-03-24)
### Bug Fixes
* :bug: lock ([287e1f8](https://github.com/AnnaSearl/anna-remax-ui/commit/287e1f85058834cfd87bb5f319e94e449d5c5788))
### Features
* :sparkles: button新增形状 加载状态 块级属性,loading增加type属性 ([953f151](https://github.com/AnnaSearl/anna-remax-ui/commit/953f15138b4d19e6155928f64e2d3b542c1e04e8))
# [1.2.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.1.0...v1.2.0) (2020-03-24)
### Features
* :sparkles: button新增形状 加载状态 块级属性,loading增加type属性 ([953f151](https://github.com/AnnaSearl/anna-remax-ui/commit/953f15138b4d19e6155928f64e2d3b542c1e04e8))
# [1.2.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.1.0...v1.2.0) (2020-03-24)
### Features
* :sparkles: button新增形状 加载状态 块级属性,loading增加type属性 ([953f151](https://github.com/AnnaSearl/anna-remax-ui/commit/953f15138b4d19e6155928f64e2d3b542c1e04e8))
# [1.2.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.1.0...v1.2.0) (2020-03-24)
### Features
* :sparkles: button新增形状 加载状态 块级属性,loading增加type属性 ([953f151](https://github.com/AnnaSearl/anna-remax-ui/commit/953f15138b4d19e6155928f64e2d3b542c1e04e8))
# [1.1.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.0.19...v1.1.0) (2020-03-23)
### Bug Fixes
* :bug: 修改shell/pub ([7c97706](https://github.com/AnnaSearl/anna-remax-ui/commit/7c977067e728887eadd5507b39e12263ec38d972))
* :bug: 修改shell/pub ([a13d61b](https://github.com/AnnaSearl/anna-remax-ui/commit/a13d61b091a848889ea5554bd72b82f2cb83924c))
# [1.1.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.0.19...v1.1.0) (2020-03-23)
### Bug Fixes
* :bug: 修改shell/pub ([a13d61b](https://github.com/AnnaSearl/anna-remax-ui/commit/a13d61b091a848889ea5554bd72b82f2cb83924c))
# [1.1.0](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.0.19...v1.1.0) (2020-03-23)
### Bug Fixes
* :bug: 修改shell/pub ([a13d61b](https://github.com/AnnaSearl/anna-remax-ui/commit/a13d61b091a848889ea5554bd72b82f2cb83924c))
## [1.0.19](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.0.18...v1.0.19) (2020-03-23)
### Bug Fixes
* :bug: cancel ignore pakage-lock.json ([cc08adc](https://github.com/AnnaSearl/anna-remax-ui/commit/cc08adc6ff22efbe511c99885355ac86a8074a1f))
* :bug: ignore pakage-lock.json ([84073f4](https://github.com/AnnaSearl/anna-remax-ui/commit/84073f4144fbed61996ba5fbf99f261b06d1d449))
## [1.0.19](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.0.18...v1.0.19) (2020-03-23)
### Bug Fixes
* :bug: ignore pakage-lock.json ([84073f4](https://github.com/AnnaSearl/anna-remax-ui/commit/84073f4144fbed61996ba5fbf99f261b06d1d449))
## 1.0.18 (2020-03-23)
### Bug Fixes
* :bug: ignore pakage-lock.json ([fc33525](https://github.com/AnnaSearl/anna-remax-ui/commit/fc33525693c40c5664a196f5c8f6d9a60d11cff9))
* :bug: ignore pakage-lock.json ([ab11d02](https://github.com/AnnaSearl/anna-remax-ui/commit/ab11d027b25975cc7fb0629675901ca041e2038a))
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Bug Fixes
* :bug: ignore pakage-lock.json ([ab11d02](https://github.com/AnnaSearl/anna-remax-ui/commit/ab11d027b25975cc7fb0629675901ca041e2038a))
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
# 1.1.0 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
## 1.0.18 (2020-03-23)
### Features
* :sparkles: 新增commit规范和解决Path变量类型未声明的问题 ([64abdbc](https://github.com/AnnaSearl/anna-remax-ui/commit/64abdbc7142e85dc390bf61f8bdee8ad2fc355d8))
================================================
FILE: README.md
================================================
<p align="center">
<img width="100" src="https://smebimage.fuliaoyi.com/Fger7VZclDUaXDJuqg42MlsUqV-w">
</p>
<h1 align="center">Anna Remax UI</h1>
<div align="center">优雅、简洁的 Remax 组件库</div>
## :tada: Anna 2.0
`anna-remax-ui` 现已升级到 2.0,并更名为 `annar` ,我们推荐您使用 `annar` 而不是 `anna-remax-ui`,我们将一直维护 `annar` 并 添加新的特性。
👉 [查看 Anna 2.0,发现 Anna 的最新组件及特性!](https://github.com/AnnaSearl/annar)
## 💫 特性
- 基于 `Remax` 开发 UI 组件
- 支持`微信` `支付宝` `钉钉` 小程序多端适配运行
- 支持 Web 开发
- 支持按需引入
- 支持 TypeScript
## 📦 安装
```bash
npm install anna-remax-ui
```
```bash
yarn add anna-remax-ui
```
## ⚒ 使用
> :warning: `anna-remax-ui` v1.6.0 为破坏性的更新,不再兼容以前的版本。
#### 小程序
```jsx
import { Button } from 'anna-remax-ui';
const App = () => (
<>
<Button>Click Anna</Button>
</>
);
```
在 `app.js` 中引入样式:
```jsx
import 'anna-remax-ui/dist/anna.css';
```
#### Web
使用 Web 组件开发需要依赖 `remax/one`
```bash
npm install remax/one
```
```jsx
import { Button } from 'anna-remax-ui/web';
const App = () => (
<>
<Button>Click Anna</Button>
</>
);
```
引入样式:
```jsx
import 'anna-remax-ui/dist/anna.css';
```
## 🥡 按需加载
`anna-remax-ui` 的 JS 部分默认支持 tree shaking。
#### 小程序
CSS 部分需要在 `app.js` 中手动引入
```jsx
import 'anna-remax-ui/esm/button/style/css';
// 如果你使用 sass,也可以这样引入
import 'anna-remax-ui/esm/button/style';
```
#### Web
通过配置 `babel-plugin-import` 进行 CSS 的按需加载
## 🧑🏻💻 本地开发
```bash
$ git clone git@github.com:AnnaSearl/anna-remax-ui.git
$ cd anna-remax-ui
$ npm install
$ npm start
```
## 🤝 参与共建
如果你有任何问题,可以提交 issue 给我们,我们也非常欢迎你加入 `Anna Remax UI` 的建设,向我们提交 PR。
Anna Remax UI 维护 `master` 和 `feature` 两个分支,如果您是修复 bug,请提交到 `master`;如果您要添加新的功能,请提交到 `feature`。
#### Pull Request 规范
1. 我们建议保持你的 PR 足够小。保证一个 PR 只解决一个问题或只添加一个功能
2. 在 PR 中请添加合适的描述,并关联相关的 Issue
3. 在 Pull Request 前,请同步主仓库的最新代码
#### 常用命令
1. `npm start` 在本地运行 Anna Remax UI 的网站
2. `npm run lint` 检查代码风格
3. `npm run build` 编译 TypeScript 代码到 esm、web 以及 dist 目录
## 🌰 示例
[Examples for Anna](https://github.com/AnnaSearl/examples-anna-remax-ui)
## 🍭 体验
> :vertical_traffic_light: 体验小程序上的组件版本较低,若想查看 `Anna` 的最新组件及特性,请前往 [官方文档](https://annasearl.github.io/anna-remax-ui/)
<img src="https://smebimage.fuliaoyi.com/FrWM_L5llswAfkEfefnXKEFJwutl">
## 🍻 钉钉交流群
<img width="320" src="https://smebimage.fuliaoyi.com/FnY4Dm9zaIpe06ZrMklsG6Qb6Hnt">
================================================
FILE: babel.config.js
================================================
const presets = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];
const plugins = [
'@babel/plugin-transform-modules-commonjs',
'@babel/plugin-proposal-class-properties',
'@babel/plugin-transform-runtime',
];
module.exports = api => {
if (api.env('dumi')) {
return {
presets: ['@babel/preset-env'],
};
}
if (api.env('esm')) {
return {
presets: [
'@babel/preset-react',
'@babel/preset-typescript',
[
'@babel/preset-env',
{
modules: false,
},
],
],
plugins: [
'@babel/plugin-proposal-class-properties',
[
'@babel/plugin-transform-runtime',
{
useESModules: true,
},
],
],
};
}
if (api.env('web')) {
return {
presets,
plugins: ['@babel/plugin-proposal-class-properties', '@babel/plugin-transform-runtime'],
};
}
if (api.env('test')) {
return {
presets: [
'@babel/preset-react',
'@babel/preset-typescript',
[
'@babel/preset-env',
{
targets: {
node: 'current',
},
},
],
],
plugins,
};
}
// default
return {
presets: ['@babel/preset-env'],
};
};
================================================
FILE: build/loaders/jsxPx2Rem.js
================================================
const loaderUtils = require('loader-utils');
// 默认参数
const defaultopts = {
remUnit: 32, // rem unit value (default: 100)
remFixed: 2, // rem value precision (default: 2)
};
// 获取webpack配置好的参数
const opts = loaderUtils.getOptions(this);
// 将参数组合
const config = Object.assign({}, defaultopts, opts);
const ZPXRegExp = /\b(\d+(\.\d+)?)px\b/;
module.exports = function (source) {
const pxGlobalRegExp = new RegExp(ZPXRegExp.source, 'g');
if (this.cacheable) {
this.cacheable();
}
// 先test下有没有符合的如果有再进行替换
if (pxGlobalRegExp.test(source)) {
return source.replace(pxGlobalRegExp, ($0, $1) => {
let val = $1 / config.remUnit;
// 精确到几位
val = parseFloat(val.toFixed(config.remFixed));
return val === 0 ? val : val + 'rem';
});
} else {
return source;
}
};
================================================
FILE: components/_util/children.ts
================================================
// import React from 'react';
// import { isFragment } from 'react-is';
// export const toArray = (children: React.ReactNode): React.ReactElement[] => {
// let ret: React.ReactElement[] = [];
// React.Children.forEach(children, (child: any) => {
// if (child === undefined || child === null) {
// return;
// }
// if (Array.isArray(child)) {
// ret = ret.concat(toArray(child));
// } else if (isFragment(child) && child.props) {
// ret = ret.concat(toArray(child.props.children));
// } else {
// ret.push(child);
// }
// });
// return ret;
// };
================================================
FILE: components/_util/index.ts
================================================
import to from './to';
import sync from './sync';
export * from './type';
export * from './utils';
export { sync, to };
================================================
FILE: components/_util/sync.ts
================================================
const sync = (fn: Function, ...args: any[]): Promise<any> => {
return new Promise((resolve, reject) => {
const obj = { ...args[0] };
const success = obj.success;
obj.success = function (...params: any[]) {
success && success.apply(this, ...params);
const r = params.length > 1 ? params : params[0];
resolve(r);
};
const fail = obj.fail;
obj.fail = function (...params: any[]) {
fail && fail.apply(this, ...params);
const r = params.length > 1 ? params : params[0];
reject(r);
};
fn(obj);
});
};
export default sync;
================================================
FILE: components/_util/to.ts
================================================
const to = (promise: Promise<any>): Promise<any> => {
// eslint-disable-next-line no-prototype-builtins
if (!promise || !Promise.prototype.isPrototypeOf(promise)) {
return new Promise((resolve, reject) => {
reject(new Error('requires promises as the param'));
}).catch(err => {
return [err, null];
});
}
return promise
.then(function (...args) {
return [null, ...args];
})
.catch(err => {
return [err];
});
};
export default to;
================================================
FILE: components/_util/type.ts
================================================
export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
// https://stackoverflow.com/questions/46176165/ways-to-get-string-literal-type-of-array-values-without-enum-overhead
export const tuple = <T extends string[]>(...args: T) => args;
export const tupleNum = <T extends number[]>(...args: T) => args;
================================================
FILE: components/_util/utils.ts
================================================
export interface Obj {
[key: string]: any;
}
export const guid = () => {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
const r = (Math.random() * 16) | 0;
const v = c == 'x' ? r : (r & 0x3) | 0x8;
return v.toString(16);
});
};
// 如果你想禁用第一次首先执行的话,传递{leading: false},还有如果你想禁用最后一次执行的话,传递{trailing: false}。
// 默认是 第一次首先执行并且最后一次会执行,相当于 {leading: true, trailing: true}
export const throttle = (func: any, wait: any, options?: any) => {
let previous = 0;
let timeout: any = null;
let context: any;
let args: any;
if (!options) options = {};
const later = function () {
previous = options.leading === false ? 0 : new Date().getTime();
timeout = null;
func.apply(context, args);
if (!timeout) context = args = null;
};
const throttled = function (this: any) {
const now = new Date().getTime();
if (!previous && options.leading === false) previous = now;
const remaining = wait - (now - previous);
context = this;
// eslint-disable-next-line prefer-rest-params
args = arguments;
if (remaining <= 0 || remaining > wait) {
if (timeout) {
clearTimeout(timeout);
timeout = null;
}
previous = now;
func.apply(context, args);
if (!timeout) context = args = null;
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
};
return throttled;
};
export const mergeStyle = (target: Obj | undefined, style: Obj) => {
const newTarget = target ? { ...target } : {};
for (const key in style) {
if (Object.prototype.hasOwnProperty.call(style, key)) {
const element = style[key];
if (element || element === 0) {
newTarget[key] = element;
}
}
}
return newTarget;
};
export const twoDimensional = (
data: any[],
columns: number,
span?: number | number[],
standard = 24,
): [any[], any[]] => {
const two: any[] = [];
const spanTwo: any[] = [];
const colSpan = standard / columns;
if (!Array.isArray(data)) {
return [two, spanTwo];
}
let spanArray = [];
if (span) {
spanArray = new Array(data.length).fill(colSpan);
if (typeof span === 'number') {
if (span > 0) {
spanArray[0] = span;
}
if (span < 0) {
spanArray[data.length - 1] = Math.abs(span);
}
}
if (Array.isArray(span)) {
spanArray = span.concat(spanArray.slice(span.length));
}
let prev = 0;
let rowIndex = 0;
for (let i = 0; i < spanArray.length; i++) {
const item = spanArray[i];
const row = [data[i]];
const spanRow = [item];
if (item >= 24) {
rowIndex = two.push(row);
spanTwo.push(spanRow);
} else {
if (24 - prev >= item) {
two[rowIndex]
? (two[rowIndex] = two[rowIndex].concat(data[i]))
: (rowIndex = two.push(row) - 1);
spanTwo[rowIndex]
? (spanTwo[rowIndex] = spanTwo[rowIndex].concat(item))
: (rowIndex = spanTwo.push(spanRow) - 1);
prev += item;
} else {
rowIndex = two.push(row) - 1;
spanTwo.push(spanRow);
prev = item;
}
}
}
return [two, spanTwo];
}
const rowsLength = Math.ceil(data.length / columns);
const oneDimensional = data.concat([]);
let index = 0;
for (let i = 0; i < rowsLength; i++) {
const row = oneDimensional.slice(index, (index += columns));
two.push(row);
spanTwo.push(new Array(row.length).fill(colSpan));
}
return [two, spanTwo];
};
export const flat = (arr: any[]): any[] => {
if (!Array.isArray(arr)) {
return [];
}
return arr.reduce((prev, curr) => {
if (Array.isArray(curr)) {
return prev.concat(flat(curr));
}
return prev.concat(curr);
}, []);
};
export const isObjectValueEqual = (a: Obj, b: Obj) => {
//取对象a和b的属性名
const aProps = Object.getOwnPropertyNames(a);
const bProps = Object.getOwnPropertyNames(b);
//判断属性名的length是否一致
if (aProps.length != bProps.length) {
return false;
}
//循环取出属性名,再判断属性值是否一致
for (let i = 0; i < aProps.length; i++) {
const propName = aProps[i];
if (a[propName] !== b[propName]) {
return false;
}
}
return true;
};
export const isArrayValueEqual = (a: any[], b: any[]) => {
if (!Array.isArray(a) || !Array.isArray(b)) {
return false;
}
//判断array的length是否一致
if (a.length != b.length) {
return false;
}
let isEqual = true;
for (let i = 0; i < a.length; i += 1) {
if (typeof a[i] === 'object' && typeof b[i] === 'object') {
!isObjectValueEqual(a[i], b[i]) && (isEqual = false);
} else {
a[i] !== b[i] && (isEqual = false);
}
}
return isEqual;
};
export const deepClone = function (data: any): any {
let cloneData: any = null;
if (Array.isArray(data)) {
cloneData = [];
for (let i = 0; i < data.length; i += 1) {
const item = data[i];
cloneData[i] = deepClone(item);
}
} else if (typeof data === 'object' && data !== null) {
cloneData = {};
Object.keys(data).forEach(key => {
const item = data[key];
cloneData[key] = deepClone(item);
});
} else {
cloneData = data;
}
return cloneData;
};
================================================
FILE: components/action-sheet/index.tsx
================================================
import React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import Popup from '../popup';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('action-sheet');
export interface ActionSheetActionGridProps {
value?: string | number;
name?: React.ReactNode;
icon?: string;
disabled?: boolean;
}
export interface ActionSheetActionDefaultProps {
value?: string | number;
text?: React.ReactNode | ActionSheetActionGridProps[];
type?: string;
mode?: string;
disabled?: boolean;
}
export type ActionSheetAction = ActionSheetActionDefaultProps | ActionSheetActionGridProps;
export interface ActionSheetProps {
open?: boolean;
title?: React.ReactNode;
actions?: ActionSheetActionDefaultProps[];
cancelText?: React.ReactNode;
cover?: boolean;
children?: React.ReactNode;
maskClosable?: boolean;
onCancel?: (e?: any) => void;
onChange?: (a: ActionSheetAction, g?: ActionSheetActionDefaultProps, e?: any) => void;
}
const ActionSheet = (props: ActionSheetProps) => {
const {
open,
title,
actions,
cancelText = 'Cancel',
cover,
maskClosable = true,
onCancel,
onChange,
} = props;
const handleCancel = (e: any) => {
onCancel?.(e);
};
const handleChange = (
action: ActionSheetAction,
grid?: ActionSheetActionDefaultProps,
e?: any,
) => {
onChange?.(action, grid, e);
};
const handleCloseMask = () => {
maskClosable && onCancel?.();
};
const renderAction = (action: ActionSheetActionDefaultProps) => (
<View
key={action.value}
className={classNames(`${prefixCls}-action`, {
[`${prefixCls}-action-destructive`]: action.type === 'destructive',
})}
onTap={e => handleChange(action, undefined, e)}
>
{action.text}
</View>
);
const renderGrid = (action: ActionSheetActionDefaultProps) => (
<View
key={action.value}
className={classNames(`${prefixCls}-grid`, {
[`${prefixCls}-action-destructive`]: action.type === 'destructive',
})}
>
<View className={`${prefixCls}-grid-wrapper`}>
{(action.text as ActionSheetActionGridProps[])?.map((item: ActionSheetActionGridProps) => (
<View
key={item.value}
className={`${prefixCls}-grid-item`}
onTap={e => handleChange(item, action, e)}
>
<View className={`${prefixCls}-grid-item-icon`}>
{item.icon ? (
<Icon type={item.icon} size="48px" color="rgba(0, 0, 0, 0.8)" />
) : (
item.name
)}
</View>
<View className={`${prefixCls}-grid-item-name`}>{item.name}</View>
</View>
))}
</View>
</View>
);
return (
<View className={prefixCls}>
<Popup transparent position="bottom" open={open} onClose={handleCloseMask}>
<View className={classNames(`${prefixCls}-container`, { [`${prefixCls}-cover`]: cover })}>
<View className={`${prefixCls}-menu`}>
{title ? (
<View className={classNames(`${prefixCls}-action`, { [`${prefixCls}-title`]: true })}>
{title}
</View>
) : null}
{actions?.map(action =>
action.mode === 'grid' ? renderGrid(action) : renderAction(action),
)}
</View>
<View className={`${prefixCls}-cancel`} onTap={handleCancel}>
{cancelText}
</View>
</View>
</Popup>
</View>
);
};
export default ActionSheet;
================================================
FILE: components/action-sheet/style/index.scss
================================================
@import '../../style/theme/index';
$action-sheet-prefix-cls: #{$anna-prefix}-action-sheet;
.#{$action-sheet-prefix-cls} {
position: relative;
overflow: hidden;
font-size: 28px;
color: rgba(0, 0, 0, 0.9);
font-weight: 400;
text-align: center;
&-container{
margin: 0 24px 16px;
border-radius: 32px;
overflow: hidden;
}
&-cover{
margin: 0;
border-radius: 0;
}
&-menu {
padding-bottom: 16px;
background-color: $light-5;
}
&-action {
position: relative;
height: 112px;
line-height: 112px;
background-color: $light-base;
font-size: 34px;
cursor: pointer;
user-select: none;
&:active {
background-color: $active-bg-1;
}
&:not(:last-child):before{
box-sizing: border-box;
position: absolute;
left: 0;
right: 0;
bottom: 0;
content: '';
height: 1PX;
background-color: rgba(0, 0, 0, 0.1);
transform: scale(1, 0.5);
pointer-events: none; // 这样伪类元素可以点击穿透, 也就是能看到, 但是不触发任何默认事件(click等);
}
&-destructive{
color: $danger-color;
}
}
&-grid {
position: relative;
background-color: $light-base;
&:not(:last-child):before{
box-sizing: border-box;
position: absolute;
left: 0;
right: 0;
bottom: 0;
content: '';
height: 1PX;
background-color: rgba(0, 0, 0, 0.1);
transform: scale(1, 0.5);
pointer-events: none; // 这样伪类元素可以点击穿透, 也就是能看到, 但是不触发任何默认事件(click等);
}
&-wrapper {
display: flex;
padding: 32px 24px;
overflow: scroll;
&::-webkit-scrollbar{
display: none;
}
}
&-item {
box-sizing: border-box;
position: relative;
width: 106px;
max-width: 106px;
margin-right: 36px;
cursor: pointer;
user-select: none;
&:nth-last-child(1){
margin-right: 0;
}
&:nth-last-child(1) {
&::before {
box-sizing: border-box;
position: absolute;
content: '';
top: 0;
bottom: 0;
right: -24px;
width: 24px;
}
}
&:active &-icon{
background-color: rgba(0, 0, 0, 0.5);
}
&-icon {
display: flex;
justify-content: center;
align-items: center;
height: 106px;
width: 106px;
border-radius: 16px;
background-color: $light-4;
overflow: hidden;
font-weight: 500;
font-size: 32px;
}
&-name {
margin-top: 16px;
font-size: 24px;
word-break: keep-all;
}
}
}
&-title {
font-size: 24px;
color: rgba(0, 0, 0, 0.5);
}
&-cancel {
height: 112px;
line-height: 112px;
background-color: $light-base;
cursor: pointer;
font-size: 34px;
user-select: none;
&:active {
background-color: $active-bg-2;
}
}
}
================================================
FILE: components/action-sheet/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/button/index.tsx
================================================
import * as React from 'react';
import { View, Text, Button } from 'remax/one';
import classNames from 'classnames';
import { tuple } from '../_util';
import Loading from '../loading';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('btn');
const ButtonTypes = tuple('default', 'primary');
export type ButtonType = typeof ButtonTypes[number];
export interface ButtonProps {
type?: ButtonType;
size?: string;
className?: string;
style?: React.CSSProperties;
children?: React.ReactNode;
disabled?: boolean;
danger?: boolean;
shape?: string;
block?: boolean;
float?: boolean | string;
loading?: boolean;
loadingText?: string;
plain?: boolean;
hairline?: boolean;
look?: string;
color?: string;
icon?: string | React.ReactNode;
ghost?: boolean;
onTap?: (e: any) => void;
[restProps: string]: any;
}
const AButton = (props: ButtonProps): React.ReactElement => {
const {
type,
size,
className,
style,
children,
onTap,
disabled,
danger,
shape,
block,
float,
loading,
loadingText,
plain,
hairline,
look,
color,
icon,
ghost,
...restProps
} = props;
const handleTap = (e: any) => {
if (disabled) {
return;
}
if (loading) {
return;
}
onTap?.(e);
};
const renderIcon = (childrenElement: any) => {
let iconSize = '32px';
if (size === 'small') {
iconSize = '28px';
}
if (size === 'large') {
iconSize = '36px';
}
let iconColor = '#1890FF';
if (type === 'primary') {
iconColor = '#FDFFFD';
}
if (plain) {
if (type === 'primary') {
iconColor = '#1890FF';
}
if (color) {
iconColor = color;
}
}
if (typeof icon === 'string') {
return (
<Icon
type={icon}
color={iconColor}
size={iconSize}
style={{ verticalAlign: '-0.05em', marginRight: childrenElement ? '6px' : undefined }}
/>
);
}
if (React.isValidElement(icon)) {
return {
...icon,
props: {
...icon?.props,
style: {
verticalAlign: '-0.05em',
marginRight: childrenElement ? '6px' : undefined,
...icon?.props?.style,
},
},
};
}
return null;
};
const classes = classNames(prefixCls, className, {
[`${prefixCls}-${shape}`]: shape,
[`${prefixCls}-${size}`]: size,
[`${prefixCls}-primary`]: type === 'primary',
[`${prefixCls}-ghost`]: ghost,
[`${prefixCls}-plain`]: plain,
[`${prefixCls}-hairline`]: hairline,
[`${prefixCls}-block`]: block,
[`${prefixCls}-float`]: float,
[`${prefixCls}-float-${float}`]: float,
[`${prefixCls}-danger-default`]: danger,
[`${prefixCls}-danger`]: type === 'primary' && danger,
[`${prefixCls}-look-${look}`]: look,
[`${prefixCls}-loading`]: loading,
[`${prefixCls}-disabled`]: disabled || loading,
});
const childrenElement = loading && loadingText ? loadingText : children;
const iconElement = renderIcon(childrenElement);
return (
<Button
className={classes}
disabled={disabled}
onTap={handleTap}
style={{
...style,
color,
borderColor: color,
}}
{...restProps}
>
{loading ? (
<View className={`${prefixCls}-loading-icon`}>
<Loading color="#FDFFFD" radius="36px" style={{ verticalAlign: '-0.3em' }} />
</View>
) : (
iconElement
)}
<Text className={`${prefixCls}-text`}>{childrenElement}</Text>
<Text className={`${prefixCls}-mask`} />
</Button>
);
};
export default AButton;
================================================
FILE: components/button/style/index.scss
================================================
@import '../../style/theme/index';
$button-prefix-cls: #{$anna-prefix}-btn;
$large-height: 80px;
.#{$button-prefix-cls} {
position: relative;
box-sizing: border-box;
display: inline-block;
padding: 0 32px;
background-color: $btn-default-bg;
height: 64px;
line-height: 60px;
border: 1PX solid $btn-default-bg;
border-radius: 64px;
color: $brand-color;
font-weight: 500;
font-size: 28px;
text-align: center;
white-space: nowrap;
user-select: none;
touch-action: manipulation;
-webkit-appearance: none;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
// 移除浏览器默认样式
margin: 0;
outline: 0;
cursor: pointer;
// 覆盖微信默认的<overflow: hidden>,<overflow: hidden>隐藏的是border以内的内容,隐藏不包括border
overflow: unset;
// 设置点击链接的时候出现的高亮颜色
// -webkit-tap-highlight-color: unset;
&:not(&-disabled):active {
// 由于absolute是相对于border以内的内容,不包括border, 所以要设置-1PX才能把border也罩住。
.#{$button-prefix-cls}-mask{
box-sizing: border-box;
position: absolute;
top: -1PX;
right: -1PX;
bottom: -1PX;
left: -1PX;
content: '';
background-color: rgba(0, 0, 0, 0.5);
border-radius: inherit;
pointer-events: none;
transition: background-color 0.3s;
}
}
&:after {
display: none;
}
&-text {
font-weight: 500;
font-size: 28px;
}
&-small{
font-size: 24px;
padding: 0 24px;
height: 48px;
line-height: 44px;
border-radius: 52px;
}
&-large{
padding: 0 40px;
height: 80px;
line-height: 76px;
border-radius: 80px;
}
&-superlarge{
font-size: 30px;
height: 84px;
line-height: 80px;
border-radius: 84px;
}
&-primary{
border-color: $brand-color;
background-color: $brand-color;
color: $light-base;
}
// plain
&-plain{
font-weight: 400;
color: #666;
border: 1PX solid #DDD;
background-color: $light-base;
}
&-plain.#{$button-prefix-cls}-primary{
border-color: $brand-color;
color: $brand-color;
}
// hairline
&-hairline{
line-height: 64px;
border-width: 0;
&:before {
box-sizing: border-box;
position: absolute;
top: -50%;
right: -50%;
bottom: -50%;
left: -50%;
content: '';
border: 1PX solid #DDD;
border-color: inherit;
border-radius: inherit;
transform: scale(0.5);
pointer-events: none; // 这样伪类元素可以点击穿透, 也就是能看到, 但是不触发任何默认事件(click等);
}
}
&-small.#{$button-prefix-cls}-hairline{
line-height: 48px;
}
&-large.#{$button-prefix-cls}-hairline{
line-height: 80px;
}
&-superlarge.#{$button-prefix-cls}-hairline{
line-height: 84px;
}
// square
&-square{
padding: 0 30px;
border-radius: 12px;
}
&-square.#{$button-prefix-cls}-small {
padding: 0 14px;
}
&-circle{
padding: 0;
min-width: 64px;
border-radius: 50%;
z-index: 9;
}
&-circle.#{$button-prefix-cls}-small{
min-width: 48px;
}
&-circle.#{$button-prefix-cls}-large{
min-width: 80px;
}
&-circle.#{$button-prefix-cls}-superlarge{
min-width: 84px;
}
&-disabled{
cursor: default;
opacity: 0.4;
transition: opacity .2s;
}
&-danger-default{
color: $danger-color;
}
&-danger{
border-color: $danger-color;
background-color: $danger-color;
color: $light-base;
}
&-look{
&-secondary{
color: $brand-color;
background-color: #ECF5FF;
border-color: #ECF5FF;
}
&-secure{
color: $light-base;
background-color: #07C160;
border-color: #07C160;
}
&-warning{
color: $dark-base;
background-color: #FFC409;
border-color: #FFC409;
}
&-light{
color: $dark-base;
background-color:#F4F5F8;
border-color: #F4F5F8;
}
&-medium{
color: $light-base;
background-color: #92949c;
border-color: #92949c;
}
&-dark{
color: $light-base;
background-color: #222428;
border-color: #222428;
}
&-anna{
color: $light-base;
background-color: #FF7777;
border-color: #FF7777;
}
&-orange{
color: $light-base;
background-color: #ff4f00;
border-color: #ff4f00;
}
}
&-block{
width: 100%;
}
&-float{
position: fixed;
box-shadow: 0 6px 24px #CCC;
// box-shadow: 0 6px 16px -8px rgba(0,0,0,.12), 0 12px 32px 0 rgba(0,0,0,.08), 0 18px 56px 16px rgba(0,0,0,.05);
&-center{
left: 50%;
bottom: 60px;
transform: translateX(-50%);
}
&-left{
left: 24px;
bottom: 60px;
}
&-right{
right: 24px;
bottom: 60px;
}
}
&-loading{
padding-left: 32px + 36px + 16px;
transition: padding .3s cubic-bezier(.645,.045,.355,1);
// 用flex布局使icon和text垂直居中会导致移动端动画不渲染的问题,故改为verticalAlign
&-icon{ //微信小程序text标签下包含view标签导致loading不显示
display: inline;
padding-right: 16px;
margin-left: -36px - 16px;
}
}
&-ghost{
border-color: transparent;
background-color: transparent;
}
}
.width-fix{
height: $large-height;
display: inline-block;
overflow: hidden;
.default{
display: inline-block;
width: 200%;
height: 200%;
font-size: 28px * 2;
transform: scale(0.5);
transform-origin: 0 0;
text-align: center;
}
.large{
line-height: $large-height * 2;
border-radius: $large-height * 2;
}
.primary{
background-color: $brand-color;
color: $light-base;
}
.disabled{
opacity: 0.4;
color: hsla(0,0%,100%,.6) !important;
}
}
================================================
FILE: components/button/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../loading/style';
================================================
FILE: components/card/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('card');
export interface CardProps {
title?: React.ReactNode;
description?: React.ReactNode;
extra?: React.ReactNode;
foot?: React.ReactNode;
cover?: React.ReactNode;
direction?: 'horizontal' | 'vertical';
shadow?: boolean;
style?: React.CSSProperties;
contentStyle?: React.CSSProperties;
children?: React.ReactNode;
onTap?: (e: any) => void;
}
const Card = (props: CardProps) => {
const {
title,
description,
extra,
cover,
foot,
direction = 'vertical',
shadow,
style,
contentStyle,
children,
onTap,
} = props;
const renderTitle = (isHead: boolean) => {
return title || description || extra ? (
<View className={classNames(`${prefixCls}-head`, { [`${prefixCls}-content-head`]: !isHead })}>
<View>
{title ? <View className={`${prefixCls}-title`}>{title}</View> : null}
{description ? <View className={`${prefixCls}-description`}>{description}</View> : null}
</View>
<View className={`${prefixCls}-extra`}>{extra}</View>
</View>
) : null;
};
const renderHead = () => {
if (cover) {
return <View className={`${prefixCls}-cover`}>{cover}</View>;
}
return renderTitle(true);
};
const renderFoot = () => {
return foot ? (
<View
className={classNames(`${prefixCls}-foot`, {
[`${prefixCls}-foot-horizontal`]: direction === 'horizontal',
})}
>
{foot}
</View>
) : null;
};
return (
<View
className={classNames(prefixCls, {
[`${prefixCls}-horizontal`]: cover && direction === 'horizontal',
[`${prefixCls}-shadow`]: shadow,
})}
style={style}
onTap={onTap}
>
{renderHead()}
<View
className={`${prefixCls}-content`}
style={{
...contentStyle,
}}
>
{cover ? renderTitle(false) : null}
{children}
{direction === 'horizontal' ? renderFoot() : null}
</View>
{direction !== 'horizontal' ? renderFoot() : null}
</View>
);
};
export default Card;
================================================
FILE: components/card/style/index.scss
================================================
@import '../../style/theme/index';
$card-prefix-cls: #{$anna-prefix}-card;
.#{$card-prefix-cls} {
position: relative;
overflow: hidden;
border-radius: 16px;
margin-bottom: 20px;
background-color: $light-base;
font-size: 28px;
color: $font-color;
&-horizontal{
display: flex;
}
&-shadow{
box-shadow:0 0 24px #CCC;
}
&-cover{
> img, span, image, text, audio, video, scroll-view, map {
display: block;
width: 100%;
}
}
&-head{
display: flex;
justify-content: space-between;
font-weight: 500;
padding: 24px 20px 0 20px;
}
&-title{
font-size: 32px;
}
&-description{
color: #999;
font-size: 24px;
font-weight: 400;
margin-top: 12px;
}
&-extra{
font-size: 28px;
}
&-content{
padding: 24px 20px;
&-head{
display: flex;
justify-content: space-between;
font-weight: 500;
padding: 0 0 24px 0;
}
}
&-foot{
background-color: $light-6;
&-horizontal{
margin-top: 24px;
background-color: transparent;
}
}
}
================================================
FILE: components/card/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/cascade/index.tsx
================================================
import React, { useState, useEffect } from 'react';
import { View, Text } from 'remax/one';
import { ScrollView } from '../one';
import classNames from 'classnames';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('cascade');
export interface OptionProps {
key: string;
value: string;
parentKey: string;
children?: OptionProps[];
}
export interface CascadeProps {
name?: string;
value: OptionProps[];
options: OptionProps[];
height?: string;
className?: string;
prompt?: (e: any) => string;
onChange: (v: any[], last?: any) => void;
onComplete?: (v: any[], last?: any) => void;
}
let flag = false;
const Cascade = (props: CascadeProps) => {
const {
name,
value = [],
options = [],
height = '80vh',
className = '',
prompt,
onChange,
onComplete,
} = props;
const [showedOptions, setShowedOptions] = useState(options);
const [sign, setSign] = useState(false);
const [scrollTop, setScrollTop] = useState(0);
// useEffect(() => {
// if (options && options.length > 0) {
// setShowedOptions(options);
// }
// }, [options]) // 无法使用此 useEffect,使用后会报错。
useEffect(() => {
if (sign && value.length > 0 && flag) {
setSign(false);
flag = false;
const item = value[value.length - 1];
onComplete?.(value, {
key: item.key,
value: item.value,
});
}
}, [value, sign]);
const handleClick = async (i: any) => {
let nextValue = [];
const nextOption = {
key: i.key,
value: i.value,
parentKey: i.parentKey,
};
if (value.length > 0 && value[value.length - 1].parentKey === i.parentKey) {
nextValue = [...value.slice(0, value.length - 1), nextOption];
} else {
nextValue = [...value, nextOption];
}
onChange(nextValue, nextOption);
setScrollTop(top => {
return top === 0 ? 1 : 0;
});
if (Array.isArray(i.children) && i.children.length > 0) {
setShowedOptions(i.children);
} else {
flag = true;
setSign(true);
}
};
const getMatchLevelOptions = (key: string, data: any[]): any => {
let r = null;
for (let i = 0; i < data.length; i++) {
const item = data[i];
if (key === item.key) {
r = data;
} else if (item.children) {
r = getMatchLevelOptions(key, item.children);
}
if (r) {
return r;
}
}
return r;
};
const handleReChoose = (item: any, index: number) => {
onChange(value.slice(0, index + 1));
setShowedOptions(getMatchLevelOptions(item.key, options));
setScrollTop(top => {
return top === 0 ? 1 : 0;
});
};
const h = value.length > 1 ? 90 * value.length + 40 - 30 : 130;
return (
<View
className={classNames({
[prefixCls]: true,
[className]: true,
})}
style={{
height,
}}
>
<View className={`${prefixCls}-selected`}>
{value.map((item, index) => (
<View
key={item.key}
className={`${prefixCls}-step`}
onTap={() => {
handleReChoose(item, index);
}}
>
<View className={`${prefixCls}-step-line`}>
{index === value.length - 1 ? null : (
<View className={`${prefixCls}-step-line-active`} />
)}
<Text className={`${prefixCls}-step-dot`} />
</View>
<View className={`${prefixCls}-step-container`}>
<View className={`${prefixCls}-step-content`}>
<View className={`${prefixCls}-step-left`}>{item.value}</View>
<View className={`${prefixCls}-step-right`}>
<View className={`${prefixCls}-step-right-text`}>{prompt?.(index)}</View>
<View className={`${prefixCls}-step-right-arrow`}>
<Icon type="right" size="24px" color="#999" />
</View>
</View>
</View>
</View>
</View>
))}
</View>
<View>
<ScrollView
scrollY
className={`${prefixCls}-showed`}
scrollTop={scrollTop}
style={{
height: `calc(${height} - ${h + 80}px)`,
}}
>
<View className={`${prefixCls}-showed-title`}>{`选择${name}`}</View>
{showedOptions.map(i => (
<View
key={i.key}
className={`${prefixCls}-showed-category`}
onTap={() => {
handleClick(i);
}}
>
{i.value}
</View>
))}
</ScrollView>
</View>
</View>
);
};
export default Cascade;
================================================
FILE: components/cascade/style/index.scss
================================================
@import '../../style/theme/index';
$cascade-prefix-cls: #{$anna-prefix}-cascade;
$radius: 30px;
.#{$cascade-prefix-cls} {
background-color: $light-4;
color: #333;
font-size: 30px;
text-align: left;
&-selected{
min-height: 90px;
background-color: $light-base;
padding: 24px 0;
}
&-step{
display: flex;
padding-bottom: $radius;
cursor: pointer;
&:nth-last-child(1){
padding-bottom: 0;
}
&-dot{
position: absolute;
width: 16px;
height: 16px;
top: $radius;
left: 100%;
margin-top: -8px;
margin-left: -8px;
border-radius: 50%;
background-color: #1890FF;
z-index: 10;
}
&-line{
position: relative;
width: $radius;
min-width: $radius;
margin-right: $radius;
&-default::before{
content: '';
position: absolute;
width: 2px;
height: calc(100% + 30px);
background-color: #E8E8E8;
top: $radius;
left: 100%;
margin-left: -1px;
}
&-active::before{
content: '';
position: absolute;
width: 2px;
height: calc(100% + 30px);
background-color: $brand-color;
top: $radius;
left: 100%;
margin-left: -1px;
}
}
&-container{
flex-grow: 1;
}
&-content{
display: flex;
justify-content: space-between;
align-items: center;
}
&-left{
display: flex;
align-items: center;
height: $radius * 2;
}
&-right{
display: flex;
align-items: center;
padding-right: 20px;
color: #999;
&-text{
padding-right: 10px;
}
&-arrow{
min-width: 24px;
}
}
}
&-showed{
min-height: 200px;
padding: 0 30px;
&-title{
padding: 30px 0 10px 0;
font-size: 24px;
color: #666;
}
&-category{
padding: 30px 0;
cursor: pointer;
}
}
}
================================================
FILE: components/cascade/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/cascade-popup/index.tsx
================================================
import * as React from 'react';
import { useState } from 'react';
import { View } from 'remax/one';
import Cascade from '../cascade';
import Loading from '../loading';
import Popup from '../popup';
import Icon from '../icon';
import FormValue from '../form-value';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('cascade-popup');
export interface CascadePopupProps {
name?: string;
value: any[];
text?: string;
disabled?: boolean;
placeholder?: string;
options: any[];
prompt?: (e: any) => string;
onChange: (e: any, v: any) => void;
onComplete?: (e: any, values?: any[]) => void;
}
const CascadePopup = (props: CascadePopupProps) => {
const { value, text, disabled, placeholder, options, onComplete } = props;
const [show, setShow] = useState(false);
const handleComplete = (value: any, values?: any[]) => {
onComplete?.(value, values);
setShow(false);
};
const handleTap = () => {
if (disabled) {
return;
}
setShow(true);
};
const handleClose = () => {
setShow(false);
};
if (!options || options.length === 0) {
return (
<View className={prefixCls}>
<View className={`${prefixCls}-loading`}>
<Loading />
</View>
</View>
);
}
return (
<View className={prefixCls}>
<View className={`${prefixCls}-formitem`} onTap={handleTap}>
<FormValue placeholder={placeholder}>{text || value?.map(i => i.name).join(' ')}</FormValue>
</View>
<Popup position="bottom" open={show}>
<View className={`${prefixCls}-container`}>
<View className={`${prefixCls}-container-header`}>
<View>请选择</View>
<View className={`${prefixCls}-container-header-close`} onTap={handleClose}>
<Icon type="close" color="#999" />
</View>
</View>
<Cascade {...props} onComplete={handleComplete} />
</View>
</Popup>
</View>
);
};
export default CascadePopup;
================================================
FILE: components/cascade-popup/style/index.scss
================================================
@import '../../style/theme/index';
$cascade-popup-prefix-cls: #{$anna-prefix}-cascade-popup;
.#{$cascade-popup-prefix-cls} {
height: 100%;
width: 100%;
&-loading{
display: flex;
align-items: center;
justify-content: flex-end;
height: 100%;
width: 100%;
}
&-formitem{
display: flex;
align-items: center;
justify-content: flex-end;
height: 100%;
width: 100%;
font-size: 26px;
}
&-container{
overflow: hidden;
&-header{
position: relative;
text-align: center;
height: 80px;
line-height: 80px;
padding: 0 30px;
background-color: $light-base;
font-size: 26px;
color: #333;
border-top-left-radius: 16px;
border-top-right-radius: 16px;
&-close{
position: absolute;
right: 30px;
top: 30px;
width: 34px;
height: 34px;
display: flex;
justify-content: center;
align-items: center;
}
}
}
}
================================================
FILE: components/cascade-popup/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../cascade/style';
import '../../loading/style';
import '../../popup/style';
import '../../icon/style';
import '../../form-value/style';
================================================
FILE: components/cell/index.tsx
================================================
import * as React from 'react';
import { View, Text } from 'remax/one';
import classNames from 'classnames';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('cell');
export interface ItemProps {
label?: React.ReactNode;
children?: React.ReactNode;
description?: React.ReactNode;
style?: React.CSSProperties;
labelStyle?: React.CSSProperties;
valueStyle?: React.CSSProperties;
verticality?: boolean;
icon?: string;
required?: boolean;
border?: boolean;
arrow?: boolean;
field?: boolean;
defaultNullValue?: string;
onTap?: () => void;
}
const Cell = (props: ItemProps) => {
const {
label,
style,
labelStyle,
valueStyle,
children,
description,
verticality,
icon,
border = true,
arrow,
required,
field,
defaultNullValue = '',
onTap,
} = props;
if (verticality) {
return (
<View className={prefixCls} style={style} onTap={onTap}>
<View className={`${prefixCls}-verticality`}>
{label ? (
<View className={`${prefixCls}-verticality-label`} style={labelStyle}>
{required ? <Text className={`${prefixCls}-verticality-required`}>*</Text> : null}
{label}
</View>
) : null}
<View className={`${prefixCls}-verticality-value`} style={valueStyle}>
{children}
</View>
</View>
</View>
);
}
return (
<View className={prefixCls} style={style} onTap={onTap}>
<View className={`${prefixCls}-container`}>
<View className={`${prefixCls}-container-main`}>
<View
className={classNames(`${prefixCls}-container-main-left`, {
[`${prefixCls}-container-main-left-input`]: field,
})}
>
<View className={`${prefixCls}-container-main-left-label`}>
{required ? (
<Text className={`${prefixCls}-container-main-left-label-required`}>*</Text>
) : null}
{icon ? (
<Icon type={icon} size="32px" style={{ marginRight: '10px' }} color="#333" />
) : null}
{label ? (
<Text className={`${prefixCls}-container-main-left-label-value`} style={labelStyle}>
{label}
</Text>
) : null}
</View>
</View>
<View className={`${prefixCls}-container-main-right`}>
<View className={`${prefixCls}-container-main-right-value`} style={valueStyle}>
{children || children === 0 ? children : defaultNullValue}
</View>
{arrow ? <Icon type="right" style={{ marginLeft: '10px' }} color="#666" /> : null}
</View>
</View>
{description ? (
<View className={`${prefixCls}-container-description`}>{description}</View>
) : null}
</View>
{border ? <View className={`${prefixCls}-border`} /> : null}
</View>
);
};
export default Cell;
================================================
FILE: components/cell/style/index.scss
================================================
@import '../../style/theme/index';
$cell-prefix-cls: #{$anna-prefix}-cell;
.#{$cell-prefix-cls} {
position: relative;
padding: 20px 32px;
font-size: 28px;
line-height: 48px;
background-color: $light-base;
margin-bottom: 1PX;
&-verticality{
&-required{
color: #f5222d;
margin-right: 4px;
}
&-label{
color: $font-color-1;
padding-bottom: 20px;
}
&-value{
color: $font-color-3;
}
}
&-container{
&-main{
display: flex;
&-left{
box-sizing: border-box;
flex: 1;
display: flex;
align-items: center;
&-input{
flex: none;
}
&-label{
box-sizing: border-box;
color: $font-color-1;
font-weight: 500;
flex: 1;
display: flex;
align-items: center;
&-required{
color: #f5222d;
margin-right: 4px;
}
&-value{
margin-right: 20px;
}
}
}
&-right{
flex: 1;
color: $font-color-3;
display: flex;
// align-items: flex-start;
align-items: center;
justify-content: flex-end;
&-value{
width: 100%;
text-align: right;
}
}
}
&-description{
margin-top: 10px;
font-size: 24px;
color: $font-color-3;
}
}
&-border{
position: absolute;
left: 32px;
right: 0;
bottom: -1PX;
height: 1PX;
background-color: #e8e8e8;
-webkit-transform: scaleY(0.5);
-ms-transform: scaleY(0.5);
transform: scaleY(0.5);
}
}
================================================
FILE: components/cell/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../cell/style';
================================================
FILE: components/checkbox/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import { getPrefixCls } from '../common';
import Icon from '../icon';
const prefixCls = getPrefixCls('checkbox');
type CheckboxValue = string | number;
export interface CheckboxProps {
checked?: boolean;
value?: CheckboxValue;
extra?: React.ReactNode;
style?: React.CSSProperties;
children?: React.ReactNode;
onChange?: (checked: any, e?: any, v?: CheckboxValue) => void;
onGroupChange?: (v: CheckboxValue[], e?: any) => void;
}
const Checkbox = (props: CheckboxProps) => {
const { children, checked, value, extra, style, onChange } = props;
const handleClick = (e: any) => {
onChange?.(!checked, e, value);
};
return (
<View className={prefixCls} style={style}>
<View className={`${prefixCls}-container`} onTap={handleClick}>
{checked ? (
<Icon type="roundcheckfill" size="48px" color="#1890FF" />
) : (
<Icon type="round" size="48px" color="#999" />
)}
{children ? <View className={`${prefixCls}-container-label`}>{children}</View> : null}
</View>
<View className={`${prefixCls}-extra`}>{extra}</View>
</View>
);
};
const getCheckboxs = (
children: React.ReactNode,
value: CheckboxValue[] = [],
onChange?: (v: CheckboxValue[], e?: any) => void,
) => {
const onGroupChange = (checked: any, e: any, v: CheckboxValue) => {
const newValue = value?.includes(v) ? value?.filter(i => i !== v) : value?.concat(v);
onChange?.(newValue, e);
};
const checkboxs = React.Children.map(children, (checkbox: any) => {
const p = checkbox?.props || {};
let checked = p.checked;
if ((p.value || p.value === 0) && (value as CheckboxValue[])?.includes(p.value)) {
checked = !checked;
}
return {
...checkbox,
props: {
...checkbox.props,
checked,
onChange: onGroupChange,
},
};
});
return checkboxs;
};
export interface GroupProps {
value?: CheckboxValue[];
children?: React.ReactNode;
direction?: string;
onChange?: (v: CheckboxValue[]) => void;
}
Checkbox.Group = (props: GroupProps) => {
const { value = [], children, direction = 'row', onChange } = props;
const checkboxs = getCheckboxs(children, value, onChange);
return (
<View
style={
{
display: 'flex',
flexDirection: direction,
} as React.CSSProperties
}
>
{checkboxs}
</View>
);
};
export default Checkbox;
// 注意不要加 React.memo,会导致保错。
================================================
FILE: components/checkbox/style/index.scss
================================================
@import '../../style/theme/index';
$checkbox-prefix-cls: #{$anna-prefix}-checkbox;
.#{$checkbox-prefix-cls} {
display: inline-block;
margin-right: 30px;
font-size: 28px;
&:nth-last-child(1){
margin-right: 0;
}
&-container{
display: flex;
align-items: center;
cursor: pointer;
&-icon{
font-size: 48px;
width: 48px;
height: 48px;
}
&-label{
margin-left: 14px;
color: #333;
white-space: nowrap;
}
}
}
================================================
FILE: components/checkbox/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/col/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('col');
export interface ColProps {
span?: number;
offset?: number;
flex?: string | number;
style?: React.CSSProperties;
className?: string;
children?: React.ReactNode;
}
const Col = (props: ColProps) => {
const { span, offset = 0, flex, style, className, children } = props;
return (
<View
className={classNames(
prefixCls,
{
[`${prefixCls}-${span}`]: span,
[`${prefixCls}-offset-${offset}`]: offset,
},
className,
)}
style={{
flex,
...style,
}}
>
{children}
</View>
);
};
export default Col;
================================================
FILE: components/col/style/index.scss
================================================
@import '../../style/theme/index';
$col-prefix-cls: #{$anna-prefix}-col;
$span: 100% / 24;
.#{$col-prefix-cls} {
position: relative;
@for $i from 1 through 24 {
&-#{$i} {
flex: 0 0 $span * $i;
max-width: $span * $i;
}
}
&-offset {
@for $i from 1 through 24 {
&-#{$i} {
margin-left: $span * $i;
}
}
}
}
================================================
FILE: components/col/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/common/index.ts
================================================
export const annaPrefix = 'anna';
export const getPrefixCls = (name: string) => `${annaPrefix}-${name}`;
================================================
FILE: components/config-provider/index.tsx
================================================
import React from 'react';
const configProvider = React.createContext('anna');
export default configProvider;
================================================
FILE: components/date-picker/index.tsx
================================================
import * as React from 'react';
import dayjs from 'dayjs';
import { View } from 'remax/one';
import { datePicker, showToast } from '../one';
import { to, sync } from '../_util';
export interface DateTimeProps {
value?: string;
start?: string;
format?: string;
placeholder?: string;
onChange?: (e: any) => void;
onOpen?: () => void;
onComplete?: () => void;
}
const DateTime = (props: DateTimeProps) => {
const { value, start, format = 'yyyy-MM-dd', placeholder, onChange, onOpen, onComplete } = props;
const handleClick = async () => {
onOpen?.();
const [err, res] = await to(
sync(datePicker, {
format,
currentDate: start ? start : dayjs().format(format),
complete: onComplete,
}),
);
if (err) {
showToast({
type: 'none',
content: '调用datePicker失败',
duration: 2000,
});
return;
}
onChange?.(res.date);
};
return (
<View
style={{
height: '42px',
}}
onTap={handleClick}
>
{value ? value : placeholder}
</View>
);
};
export default DateTime;
================================================
FILE: components/date-picker/style/index.ts
================================================
================================================
FILE: components/dropdown/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('dropdown');
export interface OptionProps {
key: string;
value: string;
}
export interface DropdownProps {
options?: OptionProps[];
value?: string;
activeColor?: string;
onChange?: (e: OptionProps) => void;
}
const Dropdown = (props: DropdownProps) => {
const { options = [], value, activeColor = '#1890FF', onChange } = props;
return (
<View className={prefixCls}>
<View className={`${prefixCls}-content`}>
{options.map(item => (
<View
className={`${prefixCls}-content-option`}
key={item.key}
onTap={() => onChange?.(item)}
style={
item.key === value
? {
color: activeColor,
fontWeight: 500,
}
: undefined
}
>
{item.value}
</View>
))}
</View>
</View>
);
};
export default Dropdown;
================================================
FILE: components/dropdown/style/index.scss
================================================
@import '../../style/theme/index';
$dropdown-prefix-cls: #{$anna-prefix}-dropdown;
.#{$dropdown-prefix-cls} {
&-content{
padding-left: 40px;
&-option{
height: 88px;
line-height: 88px;
font-size: 26px;
color: #666;
border-bottom: 1px solid #EEEEEE;
display: flex;
justify-content: space-between;
align-items: center;
cursor: pointer;
&:nth-last-child(1){
border-bottom: none;
}
&-check{
display: flex;
align-items: center;
padding-right: 40px;
padding-top: 28px;
}
}
}
}
================================================
FILE: components/dropdown/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/filter/filter.tsx
================================================
import React, { useState, useRef } from 'react';
import { View } from 'remax/one';
import Mask from '../mask';
import FilterItem from './item';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('filter');
export interface FilterProps {
children?: React.ReactNode;
style?: React.CSSProperties;
zIndex?: number;
}
const InternalFilter = (props: FilterProps) => {
const filterRef = useRef<any[]>([]);
const { style, zIndex, children } = props;
const [showMask, setShowMask] = useState(false);
const hanldeShowMask = (value: boolean) => {
setShowMask(value);
};
const handleTapItem = (value: boolean, index: number, tapCb: () => void) => {
filterRef.current.forEach((item, cindex) => {
if (index !== cindex) {
item.current.close();
}
});
if (value) {
setShowMask(true);
} else {
setShowMask(false);
}
tapCb?.();
};
const hanldeTapMask = () => {
filterRef.current.forEach(item => {
item.current.close();
});
setShowMask(false);
};
const filterItems = React.Children.map(children, (filterItem: any, index: number) => {
const itemRef = useRef();
filterRef.current[index] = itemRef;
if (filterItem.ref) {
filterRef.current[index] = filterItem.ref;
}
return (
<FilterItem
{...filterItem.props}
ref={filterRef.current[index]}
onTap={v => handleTapItem(v, index, filterItem.props?.onTap)}
onShowMask={hanldeShowMask}
id={index}
/>
);
});
const isAddZIndex = zIndex || zIndex === 0;
let filterStyle = style;
if (isAddZIndex) {
filterStyle = {
...style,
zIndex,
};
}
return (
<View className={prefixCls} style={filterStyle}>
<View className={`${prefixCls}-content`} style={{ height: showMask ? '100%' : '100px' }}>
<View className={`${prefixCls}-items`}>{filterItems}</View>
</View>
<Mask
show={showMask}
onTap={hanldeTapMask}
style={{
top: 'unset',
bottom: 'unset',
height: '100%',
}}
zIndex={0}
/>
</View>
);
};
export default InternalFilter;
// {/* mask必须放到items的后面,否则会导致动画transition失效 */}
================================================
FILE: components/filter/index.ts
================================================
import InternalFilter from './filter';
import Item from './item';
type InternalFilter = typeof InternalFilter;
interface Filter extends InternalFilter {
Item: typeof Item;
}
const Filter: Filter = InternalFilter as Filter;
Filter.Item = Item;
export default Filter;
================================================
FILE: components/filter/item.tsx
================================================
import React, { useImperativeHandle, useState } from 'react';
import { View, Text } from 'remax/one';
import classNames from 'classnames';
import { ScrollView } from '../one';
import Dropdown, { OptionProps } from '../dropdown';
import Popup from '../popup';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('filter-item');
export interface ItemProps {
title?: string;
height?: string;
onTap?: (open: boolean) => void;
onShowMask?: (show: boolean) => void;
children?: React.ReactNode;
value?: string;
options?: OptionProps[];
activeColor?: string;
onChange?: (e: OptionProps) => void;
disabled?: boolean;
}
const Item = (props: ItemProps, ref: any): React.ReactElement => {
const {
title,
onTap,
children,
onShowMask,
value,
options = [],
onChange,
activeColor,
disabled,
} = props;
const [open, setOpen] = useState(false);
// const [height, setHeight] = useState("0");
useImperativeHandle(
ref,
() => ({
toggle() {
setOpen(state => {
if (state) {
setTimeout(() => {
onShowMask?.(false);
});
} else {
setTimeout(() => {
onShowMask?.(true);
});
}
return !state;
});
},
open() {
setOpen(true);
},
close() {
setOpen(false);
},
}),
[],
);
const handleTap = () => {
if (disabled) {
return;
}
setOpen(state => !state);
onTap?.(!open);
};
const handleChange = (e: OptionProps) => {
onChange?.(e);
setOpen(false);
onShowMask?.(false);
};
// React.useEffect(() => {
// wx.createSelectorQuery()
// .select(`#anna-filter-item-${id}`)
// .boundingClientRect((rect: any) => {
// setHeight(`${rect.height * 2}px`);
// })
// .exec()
// }, [])
return (
<View className={prefixCls}>
<View style={{ backgroundColor: '#FDFFFD' }}>
<View
className={classNames({
[`${prefixCls}-label`]: true,
[`${prefixCls}-label-disabled`]: disabled,
})}
onTap={handleTap}
>
<Text className={`${prefixCls}-label-text`}>
{options?.find(option => option.key === value)?.value || title}
</Text>
{open ? (
<Text className={`${prefixCls}-label-chevronUp`} />
) : (
<Text className={`${prefixCls}-label-chevronDown`} />
)}
</View>
</View>
<Popup
position="bottom"
square
curve="ease"
mask={false}
open={open}
style={{
position: 'absolute',
zIndex: -1,
transform: open ? 'translate3d(0, 100%, 0)' : 'translate3d(0, 0, 0)',
}}
>
<ScrollView
scrollY
className={classNames({
[`${prefixCls}-value`]: true,
})}
>
{children ? (
children
) : (
<Dropdown
value={value}
options={options}
onChange={handleChange}
activeColor={activeColor}
/>
)}
</ScrollView>
</Popup>
</View>
);
};
export default React.forwardRef(Item);
================================================
FILE: components/filter/style/filter.scss
================================================
@import '../../style/theme/index';
$filter-prefix-cls: #{$anna-prefix}-filter;
.#{$filter-prefix-cls} {
position: relative;
z-index: 999;
height: 100px;
&-items{
position: relative;
display: flex;
}
&-content{
z-index: 1;
position: fixed;
top: unset;
bottom: unset;
height: 100%;
width: 100%;
overflow: hidden;
transition: height 0.3s ease;
}
}
================================================
FILE: components/filter/style/index.scss
================================================
@import './filter';
@import './item';
================================================
FILE: components/filter/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../mask/style';
import '../../popup/style';
import '../../dropdown/style';
================================================
FILE: components/filter/style/item.scss
================================================
@import '../../style/theme/index';
$filter-item-prefix-cls: #{$anna-prefix}-filter-item;
.#{$filter-item-prefix-cls} {
overflow: hidden;
flex: 1;
&-label{
display: flex;
justify-content: center;
align-items: center;
height: 100px;
font-size: 24px;
color: #333;
background-color: $light-base;
cursor: pointer;
&-disabled{
opacity: 0.4;
}
&-text{
margin-right: 10px;
}
&-chevronUp{
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-bottom: 10px solid #CCCCCC;
}
&-chevronDown{
width: 0;
height: 0;
border-left: 8px solid transparent;
border-right: 8px solid transparent;
border-top: 10px solid #CCCCCC;
}
}
&-value{
// position: absolute;
// left: 0;
// right: 0;
// bottom: 0;
// overflow: hidden;
// transition: transform 0.2s ease;
// transform: translate3d(0, 0, 0);
background-color: $light-base;
max-height: 80vh;
z-index: -1;
}
}
================================================
FILE: components/form-value/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('form-value');
export interface ValueProps {
placeholder?: string;
style?: React.CSSProperties;
children?: React.ReactNode;
}
const Value = (props: ValueProps) => {
const { placeholder, style, children } = props;
return (
<View className={prefixCls} style={style}>
{children || children === 0 ? (
children
) : (
<View className={`${prefixCls}-placeholder`}>{placeholder}</View>
)}
</View>
);
};
export default Value;
================================================
FILE: components/form-value/style/index.scss
================================================
@import '../../style/theme/index';
$form-value-prefix-cls: #{$anna-prefix}-form-value;
.#{$form-value-prefix-cls} {
min-height: 42px;
font-size: 28px;
color: $font-color-1;
&-placeholder{
color: $font-color-2;
}
}
================================================
FILE: components/form-value/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/grid/index.tsx
================================================
import React, { useMemo } from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import Row from '../row';
import Col from '../col';
import { twoDimensional, flat } from '../_util';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('grid');
export interface GridProps {
data?: any[];
columns?: number;
gutter?: number | [number, number?];
span?: number | number[];
border?: string;
children?: (
o: any,
index?: number,
colIndex?: number,
rowIndex?: number,
) => any | React.ReactNode;
}
const getColIndex = (two: any[], rindex: number, cindex: number) => {
const list = two.slice(0, rindex + 1);
list[rindex] = list[rindex].slice(0, cindex + 1);
const flatedList = flat(list);
return flatedList.length;
};
const Grid = (props: GridProps) => {
const { data = [], columns = 4, gutter = 0, span, border, children } = props;
const [two, spanTwo] = useMemo(() => twoDimensional(data, columns, span, 24), [data?.length]);
let gutterArray: number[] = gutter as number[];
if (!Array.isArray(gutter)) {
gutterArray = [gutter];
}
return (
<View className={classNames(prefixCls)}>
{two?.map((row, rindex) => (
<Row
key={rindex}
gutter={gutterArray[0]}
className={border && `${prefixCls}-row-border`}
style={{
marginBottom: rindex !== two.length - 1 ? `${gutterArray[1]}px` : undefined,
borderBottom: two.length - 1 !== rindex ? border : undefined,
}}
>
{row?.map((col: any, cindex: number) => (
<Col
key={cindex}
span={spanTwo?.[rindex]?.[cindex]}
className={border && `${prefixCls}-col-border`}
style={{ borderRight: row.length - 1 !== cindex ? border : undefined }}
>
{typeof children === 'function'
? children?.(col, getColIndex(spanTwo, rindex, cindex), cindex, rindex)
: children}
</Col>
))}
</Row>
))}
</View>
);
};
export default Grid;
================================================
FILE: components/grid/style/index.scss
================================================
@import '../../style/theme/index';
$grid-prefix-cls: #{$anna-prefix}-grid;
.#{$grid-prefix-cls} {
&-row-border {
}
&-col-border {
}
}
================================================
FILE: components/grid/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../row/style';
import '../../col/style';
================================================
FILE: components/hooks/index.ts
================================================
export { default as useRefs } from './useRefs';
================================================
FILE: components/hooks/useRefs.ts
================================================
import * as React from 'react';
import { useRef } from 'react';
export default function useRefs<RefType>(): [
(key: React.Key) => React.RefObject<RefType>,
(key: React.Key) => void,
] {
const cacheRefs = useRef(new Map<React.Key, React.RefObject<RefType>>());
function getRef(key: React.Key) {
if (!cacheRefs.current.has(key)) {
cacheRefs.current.set(key, React.createRef<RefType>());
}
return cacheRefs.current.get(key);
}
function removeRef(key: React.Key) {
cacheRefs.current.delete(key);
}
// @ts-ignore
return [getRef, removeRef];
}
================================================
FILE: components/icon/index.tsx
================================================
import * as React from 'react';
import { Text } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('icon');
export interface IconProps {
type?: string;
color?: string;
size?: string;
style?: React.CSSProperties;
}
const Icon = (props: IconProps) => {
const { type, color, size, style } = props;
return (
<Text
className={classNames({
[prefixCls]: true,
iconfont: true,
[`icon-${type}`]: true,
})}
style={{
...style,
color,
fontSize: size ? size : '28px',
}}
/>
);
};
export default Icon;
================================================
FILE: components/icon/style/index.scss
================================================
@import '../../style/theme/index';
@import '../../style/iconfont/index';
$icon-prefix-cls: #{$anna-prefix}-icon;
.#{$icon-prefix-cls} {
box-sizing: border-box;
display: inline-flex;
align-items: center;
font-size: 28px;
color: #000;
}
================================================
FILE: components/icon/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/image-upload/index.tsx
================================================
import * as React from 'react';
import { View, Image } from 'remax/one';
import { previewImage, chooseImage } from '../one';
import { sync, to, deepClone } from '../_util';
import { getPrefixCls } from '../common';
import Icon from '../icon';
const prefixCls = getPrefixCls('image-upload');
export interface ImageProps {
key: string;
url: string;
}
export type DataItem = ImageProps | string;
export interface ImageUploadProps {
files?: DataItem[];
multiple?: boolean;
multipleCount?: number;
sizeType?: string[];
sourceType?: string[];
deletable?: boolean;
disabled?: boolean;
maxCount?: number;
children?: React.ReactNode;
onChange?: (e: DataItem[]) => void;
}
const ImageUpload = (props: ImageUploadProps) => {
const {
files = [],
onChange,
multiple,
multipleCount,
sizeType,
sourceType,
deletable = true,
disabled,
maxCount,
children,
} = props;
const handleClickImage = (index: number) => {
let urls = files;
const current = index;
if (typeof files[index] !== 'string') {
urls = files.map(i => (i as ImageProps).url);
}
previewImage({
urls: urls as string[],
current,
// @ts-ignore
enablesavephoto: true,
enableShowPhotoDownload: true,
});
};
const handleAdd = async () => {
if (disabled) {
return;
}
const params: any = {};
if (multiple) {
params.multiple = true;
params.count = 99;
}
if (multipleCount) {
params.count = multipleCount;
}
if (sizeType) {
params.sizeType = sizeType;
}
if (sourceType) {
params.sourceType = sourceType;
}
const [errc, resc] = await to(sync(chooseImage, params));
if (errc) {
return;
}
const targetFiles = resc.filePaths
? resc.filePaths.map((i: any) => i)
: resc.tempFilePaths.map((i: any) => i);
const newFiles = files.concat(targetFiles);
onChange?.(newFiles);
};
const handleDelete = (e: any, index: number) => {
e.stopPropagation();
let newValue = deepClone(files);
newValue.splice(index, 1);
newValue = newValue.map((item: DataItem, index: number) => {
const newItem = item;
if (typeof newItem === 'string') {
return newItem;
}
(newItem as ImageProps).key = String(index);
return newItem;
});
onChange?.(newValue);
};
return (
<View className={prefixCls}>
{files.map((item: DataItem, index: number) => (
<View
key={(item as ImageProps).key || index}
className={`${prefixCls}-item`}
onTap={() => handleClickImage(index)}
>
{deletable ? (
<View className={`${prefixCls}-item-delete`}>
<View
style={{ height: '24px' }}
onTap={e => {
handleDelete(e, index);
}}
>
<Icon
type="close"
size="24px"
color="#FDFFFD"
style={{
width: '24px',
height: '24px',
verticalAlign: 'text-top',
}}
/>
</View>
</View>
) : null}
<Image mode="widthFix" src={(item as ImageProps).url || (item as string)} />
</View>
))}
{!maxCount || files.length < maxCount ? (
<View onTap={handleAdd}>
{children ?? (
<View className={`${prefixCls}-add`}>
<Icon type="add" size="48px" color="#BABEC6" />
</View>
)}
</View>
) : null}
</View>
);
};
export default ImageUpload;
================================================
FILE: components/image-upload/style/index.scss
================================================
@import '../../style/theme/index';
$image-upload-prefix-cls: #{$anna-prefix}-image-upload;
.#{$image-upload-prefix-cls} {
display: grid;
grid-template-columns: repeat(auto-fill, 170px);
row-gap: 20px;
column-gap: 20px;
&-add{
display: flex;
justify-content: center;
align-items: center;
height: 170px;
border-radius: 10px;
background-color: $light-5;
cursor: pointer;
}
&-item{
position: relative;
display: flex;
justify-content: center;
align-items: center;
height: 170px;
border-radius: 10px;
background-color: #e8e8e8;
overflow: hidden;
cursor: pointer;
&-delete{
display: flex;
justify-content: center;
align-items: center;
position: absolute;
top: 5px;
right: 5px;
width: 30px;
height: 30px;
background-color: #999;
opacity: 0.8;
border-radius: 50%;
}
>image{
width: 100%;
}
}
}
================================================
FILE: components/image-upload/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/images/index.tsx
================================================
import * as React from 'react';
import { View, Image } from 'remax/one';
import { previewImage } from '../one';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('images');
export interface ImageProps {
key: string;
url: string;
}
export type DataItem = ImageProps | string;
export interface ImagesProps {
data?: DataItem[];
}
const Images = (props: ImagesProps) => {
const { data = [] } = props;
const handleClickImage = (index: number) => {
let urls = data;
const current = index;
if (typeof data[index] !== 'string') {
urls = data.map(i => (i as ImageProps).url);
}
previewImage({
urls: urls as string[],
current,
// @ts-ignore
enablesavephoto: true,
enableShowPhotoDownload: true,
});
};
return (
<View className={prefixCls}>
{data &&
data.map((item: DataItem, index: number) => (
<View
key={(item as ImageProps).key || index}
className={`${prefixCls}-item`}
onTap={() => handleClickImage(index)}
>
<Image mode="widthFix" src={(item as ImageProps).url || (item as string)} />
</View>
))}
</View>
);
};
export default Images;
================================================
FILE: components/images/style/index.scss
================================================
@import '../../style/theme/index';
$images-prefix-cls: #{$anna-prefix}-images;
.#{$images-prefix-cls} {
display: grid;
grid-template-columns: repeat(auto-fill, 170px);
row-gap: 20px;
column-gap: 20px;
&-add{
display: flex;
justify-content: center;
align-items: center;
height: 170px;
}
&-item{
display: flex;
justify-content: center;
align-items: center;
height: 170px;
border-radius: 10px;
background-color: #e8e8e8;
overflow: hidden;
>image{
width: 100%;
}
}
}
================================================
FILE: components/images/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/index.ts
================================================
// 通用
export { default as Button } from './button';
export { default as Icon } from './icon';
export { default as Popup } from './popup';
// 布局
export { default as Row } from './row';
export { default as Col } from './col';
export { default as Grid } from './grid';
export { default as Space } from './space';
// 导航
export { default as Tabs } from './tabs';
export { default as Steps } from './steps';
export { default as Dropdown } from './dropdown';
export { default as Selector } from './selector';
// 数据录入
export { default as Input } from './input/index';
export { default as Picker } from './picker';
export { default as Radio } from './radio';
export { default as Checkbox } from './checkbox';
export { default as Switch } from './switch';
export { default as DatePicker } from './date-picker';
export { default as ImageUpload } from './image-upload';
export { default as Cascade } from './cascade';
export { default as Rate } from './rate';
export { default as Textarea } from './textarea';
export { default as SearchBar } from './search-bar';
export { default as FormValue } from './form-value';
export { default as Stepper } from './stepper';
// 数据展示
export { default as Card } from './card';
export { default as Cell } from './cell';
export { default as Images } from './images';
export { default as ProgressBar } from './progress-bar';
export { default as Tag } from './tag';
// 反馈
export { default as ActionSheet } from './action-sheet';
export { default as Filter } from './filter';
export { default as Loading } from './loading';
export { default as Mask } from './mask';
export { default as Result } from './result';
export { default as Spin } from './spin';
export { default as Skeleton } from './skeleton';
// 手势
export { default as SwipeAction } from './swipe-action';
// 二次封装
export { default as SelectorPopup } from './selector-popup';
export { default as CascadePopup } from './cascade-popup';
================================================
FILE: components/input/index.tsx
================================================
import * as React from 'react';
import { Input, View } from 'remax/one';
import classNames from 'classnames';
import Cell from '../cell';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('input');
export interface InputProps {
label?: React.ReactNode;
name?: string;
type?: 'text' | 'number';
placeholder?: string;
value?: string;
className?: string;
inputAlign?: string;
icon?: string;
disabled?: boolean;
border?: boolean;
required?: boolean;
extra?: React.ReactNode;
maxLength?: number;
cellStyle?: React.CSSProperties;
onChange?: (e: any) => void;
}
const AInput = (props: InputProps) => {
const {
label,
name,
type,
value,
className = '',
inputAlign,
placeholder,
onChange,
disabled,
border = true,
required,
icon,
extra,
maxLength,
cellStyle,
} = props;
const handleChangeInput = (e: any) => {
onChange?.(e);
};
const inputElement = (
<Input
className={classNames({
[prefixCls]: true,
[`${prefixCls}-align-right`]: inputAlign === 'right',
[`${prefixCls}-align-center`]: inputAlign === 'center',
[className]: true,
})}
name={name}
type={type}
value={value}
placeholder={placeholder}
onInput={handleChangeInput}
disabled={disabled}
maxLength={maxLength}
/>
);
return (
<Cell
style={cellStyle}
label={label}
labelStyle={{ width: '180px' }}
border={border}
required={required}
icon={icon}
field
>
<View className={`${prefixCls}-container`}>
{inputElement}
{extra && <View className={`${prefixCls}-extra`}>{extra}</View>}
</View>
</Cell>
);
};
export default AInput;
================================================
FILE: components/input/style/index.scss
================================================
@import '../../style/theme/index';
$input-prefix-cls: #{$anna-prefix}-input;
.#{$input-prefix-cls} {
display: block;
min-height: 48px;
line-height: inherit;
padding: 0;
text-align: left;
width: 100%;
color: $font-color-1;
background-color: $light-base;
outline: none;
border: none;
font-size: 28px;
&-align {
&-right{
text-align: right;
}
&-center{
text-align: center;
}
}
&-container {
display: flex;
}
&-extra {
margin-left: 8px;
}
}
================================================
FILE: components/input/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../cell/style';
================================================
FILE: components/loading/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('loading');
export interface LoadingProps {
type?: string;
color?: string;
gapColor?: string;
radius?: string;
style?: React.CSSProperties;
}
const Loading = (props: LoadingProps) => {
const { style, type, color = '#999', gapColor = '#FDFFFD', radius = '42px' } = props;
if (type === 'gap') {
return (
<View
className={`${prefixCls}-gap`}
style={{
height: radius,
width: radius,
border: `2px solid ${color}`,
}}
>
<View
className={`${prefixCls}-gap-fill`}
style={{
backgroundColor: gapColor,
}}
/>
</View>
);
}
if (type === 'wave') {
return (
<View className={`${prefixCls}-wave`}>
<View style={{ backgroundColor: color }} />
<View style={{ backgroundColor: color }} />
<View style={{ backgroundColor: color }} />
<View style={{ backgroundColor: color }} />
<View style={{ backgroundColor: color }} />
</View>
);
}
if (type === 'anna') {
return (
<View className={`${prefixCls}-anna`}>
<View style={{ backgroundColor: color }} />
<View style={{ backgroundColor: color }} />
<View style={{ backgroundColor: color }} />
</View>
);
}
return (
<View
className={prefixCls}
style={{
...style,
height: radius,
width: radius,
borderColor: `${color} ${color} transparent`,
}}
/>
);
};
export default Loading;
================================================
FILE: components/loading/style/index.scss
================================================
@import '../../style/theme/index';
$loading-prefix-cls: #{$anna-prefix}-loading;
.#{$loading-prefix-cls} {
box-sizing: border-box;
display: inline-block;
width: 42px;
height: 42px;
border-radius: 50%;
border: 2px solid $light-base;
border-bottom-color: transparent;
animation: loading .5s linear infinite;
&-gap{
box-sizing: border-box;
position: relative;
display: inline-block;
width: 42px;
height: 42px;
border-radius: 50%;
border: 2px solid #999;
background-color: transparent;
animation: loading .6s linear infinite;
overflow: hidden;
&-fill{
position: absolute;
left: 50%;
right: 0;
top: 50%;
margin-top: -5px;
height: 10px;
background-color: $light-base;
}
}
&-wave view, &-wave div {
width: 6px;
height: 40px;
background-color: #999;
border-radius: 2px;
display: inline-block;
margin-right: 6px;
&:nth-child(1) {
animation: loaderWave 0.5s -0.3s ease-in-out infinite alternate;
}
&:nth-child(2) {
animation: loaderWave 0.5s -0.25s ease-in-out infinite alternate;
}
&:nth-child(3) {
animation: loaderWave 0.5s -0.2s ease-in-out infinite alternate;
}
&:nth-child(4) {
animation: loaderWave 0.5s -0.1s ease-in-out infinite alternate;
}
&:nth-child(5) {
animation: loaderWave 0.5s 0s ease-in-out infinite alternate;
margin-right: 0;
}
}
&-anna {
position: relative;
width: 40px;
height: 40px;
}
&-anna view, &-anna div {
position: absolute;
width: 10px;
height: 10px;
background-color: #999;
border-radius: 50%;
&:nth-child(1) {
left: -20px;
animation: loaderAnna-1 1.5s ease-in-out infinite;
}
&:nth-child(2) {
top: -35px;
animation: loaderAnna-2 1.5s ease-in-out infinite;
}
&:nth-child(3) {
left: 20px;
animation: loaderAnna-3 1.5s ease-in-out infinite;
}
}
}
@keyframes loading {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
@keyframes loaderWave {
0% {
-webkit-transform: scale(1, 0.3);
}
100% {
-webkit-transform: scale(1, 1);
}
}
@keyframes loaderAnna-1 {
33.333% {
-webkit-transform: translate(20px, -35px);
}
66.666% {
-webkit-transform: translate(40px, 0);
}
100% {
-webkit-transform: translate(0, 0);
}
}
@keyframes loaderAnna-2 {
33.333% {
-webkit-transform: translate(20px, 35px);
}
66.666% {
-webkit-transform: translate(-20px, 35px);
}
100% {
-webkit-transform: translate(0, 0);
}
}
@keyframes loaderAnna-3 {
33.333% {
-webkit-transform: translate(-40px, 0);
}
66.666% {
-webkit-transform: translate(-20px, -35px);
}
100% {
-webkit-transform: translate(0, 0);
}
}
================================================
FILE: components/loading/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/mask/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('mask');
export interface MaskProps {
show?: boolean;
onTap?: () => void;
zIndex?: number;
style?: React.CSSProperties;
children?: React.ReactNode;
}
const Mask = (props: MaskProps): React.ReactElement => {
const { show, onTap, zIndex, style, children } = props;
const maskZindex = zIndex || zIndex === 0 ? zIndex : 999;
return (
<View
className={classNames({
[prefixCls]: true,
[`${prefixCls}_active`]: show,
})}
style={{
...style,
zIndex: maskZindex,
}}
onTap={onTap}
>
{children}
</View>
);
};
export default Mask;
================================================
FILE: components/mask/style/index.scss
================================================
@import '../../style/theme/index';
$mask-prefix-cls: #{$anna-prefix}-mask;
.#{$mask-prefix-cls} {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 999;
background-color: rgba(0,0,0,0.4);
visibility: hidden;
opacity: 0;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1); // 必须用 all (包含visibility和opacity),少任何一个都会有问题。
}
.#{$mask-prefix-cls}_active{
opacity: 1;
visibility: visible;
}
================================================
FILE: components/mask/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/one/api/chooseImage/index.ts
================================================
import { chooseImage } from 'remax/ali';
export default chooseImage;
================================================
FILE: components/one/api/chooseImage/index.web.ts
================================================
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default () => {};
================================================
FILE: components/one/api/chooseImage/index.wechat.ts
================================================
import { chooseImage } from 'remax/wechat';
export default (options: any) => {
chooseImage({
...options,
});
};
================================================
FILE: components/one/api/createSelectorQuery/index.ts
================================================
import { createSelectorQuery } from 'remax/ali';
export default createSelectorQuery;
================================================
FILE: components/one/api/createSelectorQuery/index.web.ts
================================================
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default () => {};
================================================
FILE: components/one/api/createSelectorQuery/index.wechat.ts
================================================
import { createSelectorQuery } from 'remax/wechat';
export default createSelectorQuery;
================================================
FILE: components/one/api/datePicker/index.ts
================================================
import { datePicker } from 'remax/ali';
export default datePicker;
================================================
FILE: components/one/api/datePicker/index.web.ts
================================================
/* eslint-disable @typescript-eslint/no-unused-vars */
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default (e: any) => {};
================================================
FILE: components/one/api/datePicker/index.wechat.ts
================================================
import { showToast } from 'remax/wechat';
export default showToast;
================================================
FILE: components/one/api/hideLoading/index.ts
================================================
import { hideLoading } from 'remax/ali';
export default hideLoading;
================================================
FILE: components/one/api/hideLoading/index.web.ts
================================================
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default () => {};
================================================
FILE: components/one/api/hideLoading/index.wechat.ts
================================================
import { hideLoading } from 'remax/wechat';
export default hideLoading;
================================================
FILE: components/one/api/index.ts
================================================
export { default as createSelectorQuery } from './createSelectorQuery';
export { default as datePicker } from './datePicker';
export { default as chooseImage } from './chooseImage';
export { default as previewImage } from './previewImage';
export { default as showToast } from './showToast';
export { default as showLoading } from './showLoading';
export { default as hideLoading } from './hideLoading';
================================================
FILE: components/one/api/previewImage/index.ts
================================================
import { previewImage } from 'remax/ali';
export default previewImage;
================================================
FILE: components/one/api/previewImage/index.web.ts
================================================
/* eslint-disable @typescript-eslint/no-unused-vars */
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default (e: any) => {};
================================================
FILE: components/one/api/previewImage/index.wechat.ts
================================================
import { previewImage } from 'remax/wechat';
export default previewImage;
================================================
FILE: components/one/api/showLoading/index.ts
================================================
import { showLoading } from 'remax/ali';
export default showLoading;
================================================
FILE: components/one/api/showLoading/index.web.ts
================================================
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default () => {};
================================================
FILE: components/one/api/showLoading/index.wechat.ts
================================================
import { showLoading } from 'remax/wechat';
export default showLoading;
================================================
FILE: components/one/api/showToast/index.ts
================================================
import { showToast } from 'remax/ali';
export default showToast;
================================================
FILE: components/one/api/showToast/index.web.ts
================================================
/* eslint-disable @typescript-eslint/no-unused-vars */
// eslint-disable-next-line @typescript-eslint/no-empty-function
export default (e: any) => {};
================================================
FILE: components/one/api/showToast/index.wechat.ts
================================================
import { showToast } from 'remax/wechat';
export default showToast;
================================================
FILE: components/one/base/checkbox/index.tsx
================================================
import { Checkbox } from 'remax/ali';
export default Checkbox;
================================================
FILE: components/one/base/checkbox/index.web.tsx
================================================
import * as React from 'react';
type Props = any;
export default function Checkbox(props: Props) {
return <input {...props} type="checkbox" />;
}
================================================
FILE: components/one/base/checkbox/index.wechat.tsx
================================================
import { Checkbox } from 'remax/wechat';
export default Checkbox;
================================================
FILE: components/one/base/index.ts
================================================
export { default as ScrollView } from './scroll-view';
export { default as Checkbox } from './checkbox';
export { default as Picker } from './picker';
================================================
FILE: components/one/base/picker/index.tsx
================================================
import { Picker } from 'remax/ali';
export default Picker;
================================================
FILE: components/one/base/picker/index.web.tsx
================================================
import * as React from 'react';
// 自定义 Props
type Props = any;
export default function Picker(props: Props) {
return <div {...props} />;
}
================================================
FILE: components/one/base/picker/index.wechat.tsx
================================================
import { Picker } from 'remax/wechat';
export default Picker;
================================================
FILE: components/one/base/scroll-view/index.tsx
================================================
import { ScrollView } from 'remax/ali';
export default ScrollView;
================================================
FILE: components/one/base/scroll-view/index.web.tsx
================================================
import * as React from 'react';
// 自定义 Props
type Props = any;
export default function ScrollView(props: Props) {
return <div {...props} style={{ ...props.style, overflow: 'scroll' }} />;
}
================================================
FILE: components/one/base/scroll-view/index.wechat.tsx
================================================
import { ScrollView } from 'remax/wechat';
export default ScrollView;
================================================
FILE: components/one/index.ts
================================================
export * from './api';
export * from './base';
================================================
FILE: components/picker/index.tsx
================================================
import * as React from 'react';
import { Picker as APicker } from '../one';
import Cell from '../cell';
import FormValue from '../form-value';
export interface PickerProps {
label?: React.ReactNode;
border?: boolean;
required?: boolean;
icon?: string;
disabled?: boolean;
pickerAlign?: string;
options?: any[];
value?: string;
placeholder?: string;
children?: React.ReactNode;
onChange?: (e: any) => void;
}
const Picker = (props: PickerProps) => {
const {
label,
border,
required,
icon,
pickerAlign = 'left',
options,
value,
onChange,
placeholder,
children,
disabled,
} = props;
const handleChangePicker = (e: any) => {
if (e.detail.value < 0) {
return;
}
onChange?.(options?.[e.detail.value]);
};
const valueIndex = options?.findIndex((item: any) => item['key'] === value) || 0;
const selectedOption = options?.find(option => option.key === value);
return (
<Cell
label={label}
labelStyle={{ width: '180px' }}
border={border}
required={required}
icon={icon}
field
>
<APicker
wechat-mode="selector"
range={options}
rangeKey="value"
disabled={disabled}
value={valueIndex}
onChange={handleChangePicker}
>
{children ?? (
<FormValue
placeholder={placeholder}
style={
{
textAlign: pickerAlign,
} as React.CSSProperties
}
>
{selectedOption?.value}
</FormValue>
)}
</APicker>
</Cell>
);
};
export default Picker;
================================================
FILE: components/picker/style/index.ts
================================================
import '../../web/base/picker/style';
// dependencies
import '../../cell/style';
import '../../form-value/style';
================================================
FILE: components/popup/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import Mask from '../mask';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('popup');
export interface PopupProps {
open?: boolean;
children?: React.ReactNode;
onClose?: () => void;
closeable?: boolean;
title?: React.ReactNode;
position?: string;
style?: React.CSSProperties;
mask?: boolean;
square?: boolean;
curve?: string;
transparent?: boolean;
}
const Popup = (props: PopupProps): React.ReactElement => {
const {
open = false,
children,
onClose,
closeable,
title,
position = 'center',
style,
mask = true,
square,
curve,
transparent,
} = props;
const handleClickMask = () => {
onClose?.();
};
const classes = classNames({
[`${prefixCls}-container`]: true,
[`${prefixCls}-container-${position}`]: position,
[`${prefixCls}-container-ease`]: curve === 'ease',
[`${prefixCls}-container-square`]: square,
[`${prefixCls}-container-active`]: open,
[`${prefixCls}-container-transparent`]: transparent,
});
return (
<View className={prefixCls}>
<View className={classes} style={style}>
{title ? <View className={`${prefixCls}-container-title`}>{title}</View> : null}
{children}
{closeable ? (
<View
className={`${prefixCls}-container-close`}
onTap={() => {
onClose?.();
}}
>
<Icon type="close" size="40px" color="#999" />
</View>
) : null}
</View>
{mask ? <Mask show={open} onTap={handleClickMask} /> : null}
</View>
);
};
export default Popup;
================================================
FILE: components/popup/style/index.scss
================================================
@import '../../style/theme/index';
$popup-prefix-cls: #{$anna-prefix}-popup;
.#{$popup-prefix-cls} {
&-container{
position: fixed;
z-index: 1000;
background-color: $light-base;
overflow: hidden;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
&-transparent{
background-color: transparent;
}
&-center{
left: 50%;
top: 50%;
border-radius: 16px;
transform: translate3d(-50%, -50%, 0);
// animation: center 3s ease 0.3s 1 alternate forwards;
visibility: hidden;
opacity: 0;
}
&-bottom{
left: 0;
right: 0;
bottom: 0;
transform: translate3d(0, 100%, 0);
border-radius: 20px 20px 0 0;
}
&-top{
left: 0;
right: 0;
top: 0;
transform: translate3d(0, -100%, 0);
border-radius: 0 0 20px 20px;
}
&-left{
left: 0;
top: 0;
bottom: 0;
transform: translate3d(-100%, 0, 0);
border-radius: 0 20px 20px 0;
}
&-right{
right: 0;
top: 0;
bottom: 0;
transform: translate3d(100%, 0, 0);
border-radius: 20px 0 0 20px;
}
&-ease{
// transition-duration: 0.2s;
transition-timing-function: ease;
}
&-square{
border-radius: 0;
}
&-active{
transform: translate3d(0, 0, 0);
}
&-center.#{$popup-prefix-cls}-container-active{
visibility: visible;
opacity: 1;
transform: translate3d(-50%, -50%, 0);
}
&-close{
position: absolute;
top: 20px;
right: 20px;
}
&-title{
padding: 30px 0;
text-align: center;
color: #000;
}
}
@keyframes center {
0%{
transform: scale3d(1, 1, 1);
transform: translate3d(-50%, -50%, 0);
}
30%{
transform: scale3d(0.6, 0.6, 1);
transform: translate3d(-50%, -50%, 0);
}
100%{
transform: scale3d(1, 1, 1);
transform: translate3d(-50%, -50%, 0);
}
}
}
================================================
FILE: components/popup/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../mask/style';
import '../../icon/style';
================================================
FILE: components/progress-bar/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import Loading from '../loading';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('progress_bar');
export interface ItemProps {
key: string;
value: string;
}
export interface ProgressBarProps {
data?: ItemProps[];
value?: string;
style?: React.CSSProperties;
}
const ProgressBar = (props: ProgressBarProps) => {
const { data = [], value, style } = props;
const [move, setMove] = React.useState(false);
React.useEffect(() => {
if (data.length > 1 && !move) {
setTimeout(() => {
setMove(true);
}, 100);
}
}, [data]);
let curIndex = -1;
data.forEach((item, index) => {
if (value === item.key) {
curIndex = index;
}
});
const moveX = data.length > 0 ? (100 / data.length) * (curIndex + 1) : 100;
return (
<View className={prefixCls} style={style}>
{data?.map((item, index) => (
<View
key={item.key}
className={classNames({
[`${prefixCls}-node`]: true,
[`${prefixCls}-node_first`]: index === 0,
[`${prefixCls}-node_last`]: index === curIndex,
[`${prefixCls}-node_active`]: index <= curIndex,
})}
>
{item.value}
</View>
))}
{data.length === 0 ? <Loading type="gap" gapColor="#E8E8E8" /> : null}
<View
className={`${prefixCls}-process`}
style={{
width: move ? `${moveX}%` : 0,
transition: `width ${(curIndex + 1) * 0.3}s ease-in`,
}}
/>
</View>
);
};
export default ProgressBar;
================================================
FILE: components/progress-bar/style/index.scss
================================================
@import '../../style/theme/index';
$progress_bar-prefix-cls: #{$anna-prefix}-progress_bar;
$height: 50px;
.#{$progress_bar-prefix-cls} {
position: relative;
box-sizing: border-box;
display: flex;
justify-content: center;
align-items: center;
background-color: #E8E8E8;
height: $height;
// line-height: $height;
border-radius: $height;
overflow: hidden;
font-size: 24px;
&-node{
box-sizing: border-box;
flex: 1;
color: #333;
text-align: center;
z-index: 1;
}
&-node_first{
border-radius: $height 0 0 $height;
}
&-node_last{
border-radius: 0 $height $height 0;
}
&-node_active{
color: $light-base;
}
&-process{
position: absolute;
left: 0;
top: 0;
width: 0;
height: 100%;
border-radius: $height;
background-color: $brand-color;
z-index: 0;
}
}
================================================
FILE: components/progress-bar/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../loading/style';
================================================
FILE: components/radio/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('radio');
type RadioValue = string | number;
export interface RadioProps {
children?: React.ReactNode;
checked?: boolean;
value?: RadioValue;
extra?: React.ReactNode;
style?: React.CSSProperties;
onChange?: (checked: boolean, e?: any, v?: RadioValue) => void;
}
const Radio = (props: RadioProps) => {
const { children, checked, value, extra, style, onChange } = props;
const handleClick = (e: any) => {
onChange?.(!checked, e, value);
};
return (
<View className={prefixCls} style={style}>
<View className={`${prefixCls}-container`} onTap={handleClick}>
<View
className={classNames(`${prefixCls}-out-round`, {
[`${prefixCls}-out-round-checked`]: checked,
})}
>
{checked ? <View className={`${prefixCls}-inner-round`} /> : null}
</View>
<View className={`${prefixCls}-children`}>{children}</View>
</View>
<View className={`${prefixCls}-extra`}>{extra}</View>
</View>
);
};
const getRadios = (
children: React.ReactNode,
value?: RadioValue,
onChange?: (v: RadioValue, e?: any) => void,
) => {
const onGroupChange = (checked: any, e: any, v: RadioValue) => {
const newValue = v;
onChange?.(newValue as RadioValue, e);
};
const radios = React.Children.map(children, (radio: any) => {
const newRadio = radio;
let checked = false;
if (newRadio && newRadio.props) {
if (
(newRadio.props.value || newRadio.props.value === 0 || newRadio.props.value === false) &&
newRadio.props.value === value
) {
checked = true;
} else {
checked = false;
}
return <Radio {...newRadio.props} checked={checked} onChange={onGroupChange} />;
}
return newRadio;
});
return radios;
};
export interface GroupProps {
value?: RadioValue;
children?: React.ReactNode;
direction?: string;
onChange?: (v: RadioValue, e?: any) => void;
style?: React.CSSProperties;
}
Radio.Group = (props: GroupProps) => {
const { value, children, direction = 'row', onChange, style } = props;
const radios = getRadios(children, value, onChange);
return (
<View
style={
{
display: 'flex',
flexDirection: direction,
...style,
} as React.CSSProperties
}
>
{radios}
</View>
);
};
export default Radio;
================================================
FILE: components/radio/style/index.scss
================================================
@import '../../style/theme/index';
$radio-prefix-cls: #{$anna-prefix}-radio;
.#{$radio-prefix-cls} {
display: inline-block;
margin-right: 30px;
font-size: 28px;
&:nth-last-child(1){
margin-right: 0;
}
&-container{
display: flex;
align-items: center;
cursor: pointer;
}
&-out-round{
position: relative;
width: 38px;
height: 38px;
padding: 7px;
border-radius: 50%;
&::before{
box-sizing: border-box;
position: absolute;
content: '';
left: -50%;
right: -50%;
top: -50%;
bottom: -50%;
transform: scale(0.5);
border-radius: 50%;
border: 1PX solid #999;
pointer-events: none;
}
&-checked{
&::before{
border: 2PX solid $brand-color;
}
}
}
&-inner-round{
width: 100%;
height: 100%;
border-radius: 50%;
background-color: $brand-color;
}
&-children{
margin-left: 14px;
color: #333;
white-space: nowrap;
}
}
================================================
FILE: components/radio/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/rate/index.tsx
================================================
import * as React from 'react';
import { useMemo } from 'react';
import { View } from 'remax/one';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('rate');
export interface RateProps {
count?: number;
label?: React.ReactNode;
value?: number;
readOnly?: boolean;
icon?: string;
iconFill?: string;
size?: string;
color?: string;
onChange?: (e: any) => void;
}
const Rate = (props: RateProps) => {
const {
count = 5,
label,
value = 0,
onChange,
readOnly,
icon = 'favor',
iconFill = 'favorfill',
size = '48px',
color = '#FFD700',
} = props;
const handleClick = (index: number) => {
if (readOnly) {
return;
}
onChange?.(index + 1);
};
const stars = useMemo(() => {
if (!count) {
return [];
}
return [...new Array(count).keys()];
}, [count]);
return (
<View className={prefixCls}>
{label ? <View className={`${prefixCls}-label`}>{label}</View> : null}
<View className={`${prefixCls}-value`}>
{stars.map((item, index) => (
<View
key={index}
className={`${prefixCls}-value-star`}
onTap={() => {
handleClick(index);
}}
>
{value >= index + 1 ? (
<Icon type={iconFill} size={size} color={color} />
) : (
<Icon type={icon} size={size} color="#999" />
)}
</View>
))}
</View>
</View>
);
};
export default Rate;
================================================
FILE: components/rate/style/index.scss
================================================
@import '../../style/theme/index';
$rate-prefix-cls: #{$anna-prefix}-rate;
.#{$rate-prefix-cls} {
display: flex;
align-items: center;
padding-bottom: 30px;
&:nth-last-child(1){
padding-bottom: 0;
}
&-label{
padding-right: 40px;
}
&-value{
flex: 1;
display: flex;
&-star{
margin-right: 30px;
cursor: pointer;
&:nth-last-child(1){
margin-right: 0;
}
}
}
}
================================================
FILE: components/rate/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/result/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('result');
const getIconNameByStatus = (status: any): any => {
let obj = {
name: 'infofill',
color: '#1890ff',
};
switch (status) {
case 'info':
obj = {
name: 'infofill',
color: '#1890ff',
};
break;
case 'success':
obj = {
name: 'roundcheckfill',
color: '#52c41a',
};
break;
case 'warning':
obj = {
name: 'warnfill',
color: '#faad14',
};
break;
case 'error':
obj = {
name: 'roundclosefill',
color: '#f5222d',
};
break;
default:
break;
}
return obj;
};
export interface IconProps {
name: string;
color?: string;
}
export interface ResultProps {
status?: string;
title?: React.ReactNode;
subTitle?: React.ReactNode;
extra?: React.ReactNode;
children?: React.ReactNode;
icon?: React.ReactNode | IconProps;
height?: string;
}
const Result = (props: ResultProps) => {
const { status = 'info', title, subTitle, extra, children, icon, height } = props;
let isCustomIcon = false;
let iconObj = getIconNameByStatus(status);
if (icon) {
if (Object.prototype.toString.call(icon) === '[object Object]') {
iconObj = icon;
} else {
isCustomIcon = true;
}
}
return (
<View className={prefixCls} style={{ height: height || '100vh' }}>
<View className={`${prefixCls}-icon`}>
{isCustomIcon ? (
icon
) : (
<View className={`${prefixCls}-icon-status`}>
<Icon type={iconObj.name} color={iconObj.color} size="168px" />
</View>
)}
</View>
<View className={`${prefixCls}-title`}>{title}</View>
<View className={`${prefixCls}-sub_title`}>{subTitle}</View>
{children ? <View className={`${prefixCls}-content`}>{children}</View> : null}
<View className={`${prefixCls}-extra`}>{extra}</View>
</View>
);
};
export default Result;
================================================
FILE: components/result/style/index.scss
================================================
@import '../../style/theme/index';
$result-prefix-cls: #{$anna-prefix}-result;
.#{$result-prefix-cls} {
box-sizing: border-box;
height: 100vh;
padding: 100px 30px;
background-color: $light-base;
&-icon{
margin-bottom: 48px;
text-align: center;
&-status{
display: inline-flex;
justify-content: center;
align-items: center;
width: 144px;
height: 144px;
border-radius: 50%;
}
}
&-title{
color: #333;
font-size: 48px;
line-height: 1.8;
text-align: center;
}
&-sub_title{
color: #999;
font-size: 28px;
line-height: 1.6;
text-align: center;
}
&-content{
margin-top: 48px;
padding: 24px 40px;
background-color: $light-4;
}
&-extra{
margin-top: 64px;
text-align: center;
}
}
================================================
FILE: components/result/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/row/index.tsx
================================================
import React, { useMemo } from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('row');
export interface RowProps {
gutter?: number;
justify?: string;
align?: string;
style?: React.CSSProperties;
className?: string;
children?: React.ReactNode;
}
const renderCols = (columns: React.ReactNode, halfGutter?: number) => {
const cols = React.Children.map(columns, (column: any) => {
const style = halfGutter
? { paddingLeft: `${halfGutter}px`, paddingRight: `${halfGutter}px` }
: null;
return {
...column,
props: {
...column.props,
style: {
...column.props.style,
...style,
},
},
};
});
return cols;
};
const Row = (props: RowProps) => {
const { gutter = 0, justify = 'start', align = 'top', style, className, children } = props;
const halfGutter = useMemo(() => gutter / 2, [gutter]);
return (
<View
className={classNames(
prefixCls,
{
[`${prefixCls}-justify-${justify}`]: justify,
[`${prefixCls}-align-${align}`]: align,
},
className,
)}
style={{
...style,
marginLeft: `-${halfGutter}px`,
marginRight: `-${halfGutter}px`,
}}
>
{renderCols(children, halfGutter)}
</View>
);
};
export default Row;
================================================
FILE: components/row/style/index.scss
================================================
@import '../../style/theme/index';
$row-prefix-cls: #{$anna-prefix}-row;
.#{$row-prefix-cls} {
display: flex;
&-justify{
&-start{
justify-content: flex-start;
}
&-center{
justify-content: center;
}
&-end{
justify-content: flex-end;
}
&-space-around{
justify-content: space-around;
}
&-space-between{
justify-content: space-between;
}
}
&-align{
&-top{
align-items: flex-start;
}
&-middle{
align-items: center;
}
&-bottom{
align-items: flex-end;
}
}
}
================================================
FILE: components/row/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/search-bar/index.tsx
================================================
import * as React from 'react';
import { useState } from 'react';
import { View, Input } from 'remax/one';
import classNames from 'classnames';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('search_bar');
export interface SearchBarProps {
value?: string;
placeholder?: string;
shape?: string;
size?: string;
type?: string;
confirmType?: string;
style?: React.CSSProperties;
inputStyle?: React.CSSProperties;
actionName?: string;
keepShowActionButton?: boolean;
hideActionButton?: boolean;
focus?: boolean;
onInput?: (value: string) => void;
onClear?: (value: any) => void;
onActionClick?: () => void;
onFocus?: (e: any) => void;
onBlur?: (e: any) => void;
onSubmit?: (value: string) => void;
}
let showBtn = false;
const SearchBar = (props: SearchBarProps) => {
const {
value,
placeholder,
onInput,
onClear,
onFocus,
onBlur,
onActionClick,
onSubmit,
inputStyle,
shape,
type = 'text',
confirmType = 'search',
style,
focus,
actionName = '取消',
keepShowActionButton,
hideActionButton,
size,
} = props;
const [isFocus, setIsFocus] = useState(false);
const handleFocus = (e: any) => {
onFocus?.(e);
setIsFocus(true);
};
const handleBlur = (e: any) => {
onBlur?.(e);
setIsFocus(false);
};
const handleInput = (e: any) => {
onInput?.(e.target.value);
};
const handleClear = () => {
onClear?.(value);
};
const handleActionClick = () => {
showBtn = false;
onActionClick?.();
};
const handleConfirm = (e: any) => {
onSubmit?.(e.target.value);
};
const active = isFocus || value || focus;
if (active && !showBtn) {
showBtn = true;
}
let iconSize = '32px';
if (size === 'large') {
iconSize = '36px';
}
if (size === 'small') {
iconSize = '28px';
}
return (
<View
className={classNames({
[prefixCls]: true,
[`${prefixCls}-large`]: size === 'large',
[`${prefixCls}-small`]: size === 'small',
})}
style={style}
>
<View
className={classNames(`${prefixCls}-input`, { [`${prefixCls}-input-${shape}`]: shape })}
style={inputStyle}
>
<View
className={classNames({
[`${prefixCls}-input-synthetic`]: true,
[`${prefixCls}-input-is_left`]: active,
})}
>
<View className={`${prefixCls}-input-synthetic-icon`}>
<Icon type="search" size={iconSize} color="#999" />
</View>
<View
className={`${prefixCls}-input-synthetic-placeholder`}
style={{
visibility: active ? 'hidden' : 'visible',
}}
>
{placeholder}
</View>
</View>
<Input
className={`${prefixCls}-input-value`}
// @ts-ignore
type={type}
confirmType={confirmType}
value={value}
onFocus={handleFocus}
onBlur={handleBlur}
onInput={handleInput}
onConfirm={handleConfirm}
focus={focus}
/>
<View className={`${prefixCls}-input-clear`} onTap={handleClear}>
<Icon
type="roundclosefill"
size={`${iconSize}px`}
color="#999"
style={{
visibility: value ? 'visible' : 'hidden',
}}
/>
</View>
</View>
{!hideActionButton ? (
<View
className={classNames({
[`${prefixCls}-action_button`]: true,
[`${prefixCls}-show_action_button`]: keepShowActionButton ? true : active,
})}
onTap={handleActionClick}
>
{actionName}
</View>
) : null}
</View>
);
};
export default SearchBar;
================================================
FILE: components/search-bar/style/index.scss
================================================
@import '../../style/theme/index';
$search_bar-prefix-cls: #{$anna-prefix}-search_bar;
.#{$search_bar-prefix-cls} {
display: flex;
align-items: center;
overflow: hidden; //防止取消按钮露出
&-input{
max-width: 100%; //防止input长度超出
box-sizing: border-box;
position: relative;
flex: 1;
display: flex;
align-items: center;
height: 64px;
border-radius: 64px;
padding: 16px;
background-color: $light-6;
&-square{
border-radius: 8px;
}
&-synthetic{
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
display: flex;
align-items: center;
color: #999;
&-icon{
color: #666;
}
&-placeholder{
padding-left: 10px;
font-size: 28px;
}
}
&-is_left{
left: 16px;
transform: translate(0, -50%);
}
&-value{
flex: 1;
padding: 0 10px 0 46px;
background-color: transparent;
color: #333;
font-size: 28px;
outline: none;
border: none;
}
&-clear{
color: #CCC;
}
}
&-action_button{
padding-left: 20px;
margin-right: -100px;
font-size: 30px;
white-space: nowrap;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
cursor: pointer;
}
&-show_action_button{
margin-right: 0;
}
}
.#{$search_bar-prefix-cls}-large {
.#{$search_bar-prefix-cls}-input {
height: 72px;
border-radius: 72px;
&-synthetic{
&-placeholder{
font-size: 30px;
}
}
&-value{
font-size: 30px;
}
}
.#{$search_bar-prefix-cls}-action_button {
font-size: 32px;
}
}
.#{$search_bar-prefix-cls}-small {
.#{$search_bar-prefix-cls}-input {
height: 56px;
border-radius: 56px;
&-synthetic{
&-placeholder{
font-size: 28px;
}
}
&-value{
font-size: 28px;
}
}
.#{$search_bar-prefix-cls}-action_button {
font-size: 30px;
}
}
================================================
FILE: components/search-bar/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/selector/index.tsx
================================================
import * as React from 'react';
import { useState, useEffect } from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('selector');
export interface OptionProps {
key: string;
value: string;
children?: OptionProps[];
}
export interface SelectorProps {
options?: OptionProps[];
value?: string[];
style?: React.CSSProperties;
onChange?: (value: any, valueStr?: string) => void;
onChangeParentOption?: (e: any) => void;
[key: string]: any;
}
let currentParent: any = null;
const Selector = (props: SelectorProps) => {
const { value = [], options = [], style, onChange, onChangeParentOption } = props;
const [parentData, setParentData] = useState<OptionProps[]>([]);
const [childrenData, setChildrenData] = useState<OptionProps[]>([]);
const [activeParent, setActiveParent] = useState('');
useEffect(() => {
if (options.length > 0) {
const data = options[0].children || [];
currentParent = options[0];
setActiveParent(currentParent.key);
setParentData(options);
setChildrenData(data);
}
}, [options]);
const handleClickParentOption = (option: OptionProps) => {
const data = option.children || [];
currentParent = option;
setChildrenData(data);
setActiveParent(option.key);
onChangeParentOption?.(option);
};
const handleClickChildrenOption = (option: OptionProps) => {
onChange?.([currentParent.key, option.key], `${currentParent.value} ${option.value}`);
};
return (
<View className={prefixCls} style={style}>
<View className={`${prefixCls}-parent`}>
{parentData?.map((option, index) => (
<View
key={option.key}
className={classNames({
[`${prefixCls}-option`]: true,
[`${prefixCls}-active`]: activeParent === option.key,
})}
onTap={() => {
handleClickParentOption(option);
}}
>
{option.value}
{activeParent === option.key && index !== 0 ? (
<View className={`${prefixCls}-option-rounded_top`}>
<View className={`${prefixCls}-option-rounded_top-circle`} />
</View>
) : null}
{activeParent === option.key ? (
<View className={`${prefixCls}-option-rounded_bottom`}>
<View className={`${prefixCls}-option-rounded_bottom-circle`} />
</View>
) : null}
</View>
))}
</View>
<View className={`${prefixCls}-children`}>
{childrenData?.map(option => (
<View
key={option.key}
className={classNames({
[`${prefixCls}-option`]: true,
[`${prefixCls}-active`]: value?.[1] === option.key,
})}
onTap={() => {
handleClickChildrenOption(option);
}}
>
{option.value}
</View>
))}
</View>
</View>
);
};
export default Selector;
================================================
FILE: components/selector/style/index.scss
================================================
@import '../../style/theme/index';
$selector-prefix-cls: #{$anna-prefix}-selector;
.#{$selector-prefix-cls} {
display: flex;
text-align: left;
&-parent{
width: 280px;
background-color: $light-6;
}
&-children{
flex: 1;
}
&-option{
position: relative;
box-sizing: border-box;
padding-left: 30px;
height: 88px;
line-height: 88px;
font-size: 28px;
color: #666;
cursor: pointer;
&-rounded_bottom{
position: absolute;
bottom: -12px;
right: 0;
width: 12px;
height: 12px;
background-color: $light-base;
overflow: hidden;
&-circle{
position: absolute;
width: 24px;
height: 24px;
border-radius: 50%;
left: -12px;
right: -12px;
background-color: $light-6;
}
}
&-rounded_top{
position: absolute;
top: -12px;
right: 0;
width: 12px;
height: 12px;
background-color: $light-base;
overflow: hidden;
transform: rotate(90deg);
&-circle{
position: absolute;
width: 24px;
height: 24px;
border-radius: 50%;
left: -12px;
right: -12px;
background-color: $light-6;
}
}
}
&-active{
color: $brand-color;
font-weight: 500;
background-color: $light-base;
}
}
================================================
FILE: components/selector/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/selector-popup/index.tsx
================================================
import * as React from 'react';
import { useState } from 'react';
import { View } from 'remax/one';
import Popup from '../popup';
import Selector from '../selector';
import FormValue from '../form-value';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('selector-popup');
export interface SelectorPopupProps {
placeholder?: string;
children?: React.ReactNode;
title?: React.ReactNode;
onChange?: (value: any, valueStr?: string) => void;
[restProps: string]: any;
}
const SelectorPopup = (props: SelectorPopupProps) => {
const { placeholder, children, title, onChange } = props;
const [show, setShow] = useState(false);
const handleTap = () => {
setShow(true);
};
const handleClose = () => {
setShow(false);
};
const handleChange = (value: any, valueStr?: string) => {
onChange?.(value, valueStr);
handleClose();
};
return (
<View className={prefixCls}>
<View className={`${prefixCls}-formitem`} onTap={handleTap}>
<FormValue placeholder={placeholder}>{children}</FormValue>
</View>
<Popup position="bottom" title={title} closeable open={show} onClose={handleClose}>
<View className={`${prefixCls}-container`}>
<Selector
{...props}
style={{
height: '540px',
}}
onChange={handleChange}
/>
</View>
</Popup>
</View>
);
};
export default SelectorPopup;
================================================
FILE: components/selector-popup/style/index.scss
================================================
@import '../../style/theme/index';
$selector-popup-prefix-cls: #{$anna-prefix}-selector-popup;
.#{$selector-popup-prefix-cls} {
height: 100%;
width: 100%;
&-formitem{
display: flex;
align-items: center;
justify-content: flex-end;
height: 100%;
width: 100%;
font-size: 26px;
}
}
================================================
FILE: components/selector-popup/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../popup/style';
import '../../selector/style';
import '../../form-value/style';
================================================
FILE: components/skeleton/index.tsx
================================================
import React, { useEffect, useMemo } from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('skeleton');
export interface SkeletonParagraphProps {
rows?: number;
width?: number | string | number[] | string[];
}
export interface SkeletonProps {
title?: boolean;
titleColor?: string;
backgroundColor?: string;
active?: boolean;
avatar?: boolean;
loading?: boolean;
image?: boolean;
fade?: boolean;
paragraph?: SkeletonParagraphProps;
repetitions?: number;
space?: number;
customize?: React.ReactNode;
style?: React.CSSProperties;
children?: React.ReactNode;
}
const Skeleton = (props: SkeletonProps) => {
const {
title = true,
titleColor,
backgroundColor,
active,
avatar = false,
loading = true,
image = false,
paragraph = { rows: 3, width: [80, 'auto', 200] },
repetitions = 1,
space,
customize,
fade,
style,
children,
} = props;
const [loadingEnd, setLoadingEnd] = React.useState(false);
const [renderStart, setRenderStart] = React.useState(false);
useEffect(() => {
if (fade) {
if (!loading) {
setTimeout(() => {
setLoadingEnd(true);
}, 300);
}
if (loading) {
setLoadingEnd(false);
setRenderStart(false);
}
}
}, [loading]);
useEffect(() => {
if (fade) {
if (loadingEnd) {
setTimeout(() => {
setRenderStart(true);
}, 100);
}
}
}, [loadingEnd]);
const rows = useMemo(() => (paragraph.rows ? [...new Array(paragraph.rows).keys()] : []), [
paragraph,
]);
const rowsWidth = useMemo(() => {
if (typeof paragraph.width === 'number') {
return [...new Array(rows.length).fill(`${paragraph.width}px`)];
}
if (typeof paragraph.width === 'string') {
return [...new Array(rows.length).fill(paragraph.width)];
}
if (Array.isArray(paragraph.width)) {
return (paragraph.width as any[])?.map((i: any) => {
if (typeof i === 'number') {
return `${i}px`;
} else if (typeof i === 'string') {
return i;
} else {
return 'auto';
}
});
}
}, [paragraph]);
const renderImage = (visible: any) => {
return visible ? (
<View
className={classNames({
[`${prefixCls}-image`]: true,
[`${prefixCls}-active`]: active,
})}
/>
) : null;
};
const renderAvatar = (visible: any) => {
return visible ? (
<View
className={classNames({
[`${prefixCls}-avatar`]: true,
[`${prefixCls}-active`]: active,
})}
/>
) : null;
};
const renderTitle = (visible: any) => {
return visible ? (
<View
className={classNames({
[`${prefixCls}-title`]: true,
[`${prefixCls}-active`]: active,
})}
style={{ backgroundColor: titleColor }}
/>
) : null;
};
const renderParagraph = () => {
return rows.map((item, index) => (
<View
key={item}
className={classNames({
[`${prefixCls}-row`]: true,
[`${prefixCls}-active`]: active,
})}
style={{
width: rowsWidth?.[index],
}}
/>
));
};
const renderSkeleton = () => {
const skeleton = [...new Array(repetitions).keys()];
return (
<>
{skeleton?.map((i, index) => (
<View
key={i}
className={`${prefixCls}-item`}
style={{ marginBottom: index !== skeleton.length - 1 ? space : 0 }}
>
{customize ? (
customize
) : (
<>
{renderImage(image)}
{renderAvatar(avatar)}
{renderTitle(title)}
{renderParagraph()}
</>
)}
</View>
))}
</>
);
};
if (fade) {
return (
<View className={prefixCls}>
{!loadingEnd ? (
<View
className={classNames(`${prefixCls}-placeholder`, {
[`${prefixCls}-hidden`]: !loading,
})}
style={{ backgroundColor, ...style }}
>
{renderSkeleton()}
</View>
) : (
<View
className={classNames({
[`${prefixCls}-container`]: true,
[`${prefixCls}-container-active`]: renderStart,
})}
>
{children}
</View>
)}
</View>
);
}
return (
<View className={prefixCls}>
{loading ? (
<View className={`${prefixCls}-placeholder`} style={{ backgroundColor, ...style }}>
{renderSkeleton()}
</View>
) : (
<View
className={classNames({
[`${prefixCls}-container`]: true,
[`${prefixCls}-container-active`]: true,
})}
>
{children}
</View>
)}
</View>
);
};
export default Skeleton;
================================================
FILE: components/skeleton/style/index.scss
================================================
@import '../../style/theme/index';
$skeleton-prefix-cls: #{$anna-prefix}-skeleton;
.#{$skeleton-prefix-cls} {
position: relative;
&-placeholder{
// padding: 24px 0; // 加padding会导致切换时晃动一下
// background-color: $light-base;
visibility: visible;
opacity: 1;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
&-item{
margin-bottom: 60px;
&:nth-last-child(1){
margin-bottom: 0;
}
}
&-hidden{ // activeClass必须放到后面
visibility: hidden;
opacity: 0;
}
&-title{
margin-left: 24px;
height: 26px;
border-radius: 6px;
width: 260px;
background-color: rgba(24, 144, 255, 0.2);
margin-bottom: 16px;
}
&-row{
margin: 0 24px;
height: 20px;
border-radius: 6px;
background-color: $btn-default-bg;
margin-bottom: 16px;
}
&-image{
margin: 24px;
height: 340px;
border-radius: 16px;
background-color: $btn-default-bg;
}
&-avatar{
margin: 0 24px 16px;
width: 74px;
height: 74px;
border-radius: 50%;
background-color: $btn-default-bg;
}
&-container{
visibility: hidden;
opacity: 0;
transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
}
&-container-active{
visibility: visible;
opacity: 1;
}
&-active{
background: linear-gradient(90deg, $btn-default-bg 25%, $skeleton-gradient-bg 37%, $btn-default-bg 63%);
background-size: 400% 100%;
animation: anna-skeleton-loading 1.4s ease infinite;
}
@keyframes anna-skeleton-loading {
0% {
background-position: 100% 50%;
}
100% {
background-position: 0 50%;
}
}
}
================================================
FILE: components/skeleton/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/space/__test__/index.test.js
================================================
import React from 'react';
import { mount } from 'enzyme';
import Space from '..';
describe('Space', () => {
it('should render width empty children', () => {
const wrapper = mount(<Space />);
expect(wrapper.instance()).toBe(null);
// expect(ss(1, 4)).toBe(5);
});
});
================================================
FILE: components/space/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('space');
export interface SpaceProps {
size?: string | number;
direction?: string;
align?: string;
style?: React.CSSProperties;
className?: string;
children?: React.ReactNode;
}
const renderItems = (children: React.ReactNode, size?: string | number, direction?: string) => {
let itemStyle: React.CSSProperties | undefined = undefined;
if (typeof size === 'number') {
itemStyle =
direction === 'vertical'
? {
marginBottom: size,
}
: {
marginRight: size,
};
}
const items: any[] = [];
React.Children.forEach(children, (child: any, index: number) => {
const itemCn = classNames(`${prefixCls}-item`, {
[`${prefixCls}-${direction}-${size}`]: typeof size === 'string' && size,
});
if (child === undefined || child === null) {
return;
}
items.push(
<View key={index} className={itemCn} style={itemStyle}>
{child}
</View>,
);
});
return items;
};
const Space: React.FC<SpaceProps> = (props: SpaceProps) => {
const {
size = 'small',
direction = 'horizontal',
align = direction === 'horizontal' ? 'center' : undefined,
style,
className,
children,
} = props;
const cn = classNames(
prefixCls,
`${prefixCls}-${direction}`,
{
[`${prefixCls}-align-${align}`]: align,
},
className,
);
return (
<View className={cn} style={style}>
{renderItems(children, size, direction)}
</View>
);
};
export default Space;
================================================
FILE: components/space/s.jsx
================================================
import React from 'react';
const Space = () => {
return <div>aaaaaa</div>;
};
export default Space;
================================================
FILE: components/space/style/index.scss
================================================
@import '../../style/theme/index';
$space-prefix-cls: #{$anna-prefix}-space;
.#{$space-prefix-cls} {
display: inline-flex;
&-horizontal{
&-small{
margin-right: 16px;
}
&-middle{
margin-right: 32px;
}
&-large{
margin-right: 48px;
}
}
&-horizontal > &-item{
&:nth-last-child(1){
margin-right: 0;
}
}
&-vertical{
flex-direction: column;
&-small{
margin-bottom: 16px;
}
&-middle{
margin-bottom: 32px;
}
&-large{
margin-bottom: 48px;
}
}
&-vertical > &-item{
&:nth-last-child(1){
margin-bottom: 0;
}
}
&-align{
&-center{
align-items: center;
}
&-start{
align-items: flex-start;
}
&-end{
align-items: flex-end;
}
&-baseline{
align-items: baseline;
}
}
}
================================================
FILE: components/space/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/spin/index.tsx
================================================
import * as React from 'react';
import { View } from 'remax/one';
import classNames from 'classnames';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('spin');
export interface SpinProps {
loading?: boolean;
children?: React.ReactNode;
className?: any;
style?: React.CSSProperties;
}
const Spin = (props: SpinProps) => {
const { loading, children, className, style } = props;
return (
<View
className={classNames({
[prefixCls]: true,
[className]: true,
})}
style={{
...style,
}}
>
{loading ? (
<View className={`${prefixCls}-loading`} />
) : (
<View className={`${prefixCls}-default`} />
)}
<View>{children}</View>
</View>
);
};
export default Spin;
================================================
FILE: components/spin/style/index.scss
================================================
@import '../../style/theme/index';
$spin-prefix-cls: #{$anna-prefix}-spin;
.#{$spin-prefix-cls} {
display: flex;
justify-content: center;
align-items: center;
&-loading{
width: 50px;
height: 50px;
border-radius: 50%;
border: 2px solid #999;
border-bottom-color: transparent;
animation: loading .5s linear infinite;
margin: 0 auto;
}
&-default{
width: 50px;
height: 50px;
}
@keyframes loading {
from {
transform: rotate(0);
}
to {
transform: rotate(360deg);
}
}
}
================================================
FILE: components/spin/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
================================================
FILE: components/stepper/index.tsx
================================================
import * as React from 'react';
import { View, Input } from 'remax/one';
import classNames from 'classnames';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('stepper');
export interface StepperProps {
value?: number;
step?: number;
min?: number;
max?: number;
disabled?: boolean;
plain?: boolean;
shape?: string;
size?: string;
color?: string;
bgColor?: string;
onChange?: (v?: number, e?: Event) => void;
onInput?: (v?: number, e?: Event) => void;
onTap?: (v?: number, e?: Event) => void;
onFocus?: (e: any) => void;
onBlur?: (e: any) => void;
}
const Stepper = (props: StepperProps) => {
const {
min = 1,
max,
step = 1,
value = min,
disabled,
plain,
shape,
size,
color,
bgColor,
onChange,
onInput,
onTap,
onFocus,
onBlur,
} = props;
const val = value;
const minusDisabled = val <= min || disabled;
const plusDisabled = ((max || max === 0) && val >= max) || disabled;
const handlePlus = () => {
if (!val && val !== 0) {
return;
}
if (plusDisabled) {
return;
}
const newValue = max && val + step > max ? max : val + step;
onTap?.(newValue);
onChange?.(newValue);
};
const handleMinus = () => {
if (!val && val !== 0) {
return;
}
if (minusDisabled) {
return;
}
const newValue = val - step < min ? min : val - step;
onTap?.(newValue);
onChange?.(newValue);
};
const handleInput = (e: any) => {
onInput?.(Number(e.target.value), e);
onChange?.(Number(e.target.value), e);
};
const handleFocus = (e: any) => {
onFocus?.(e);
};
const handleBlur = (e: any) => {
onBlur?.(e);
if (minusDisabled) {
onInput?.(min);
onChange?.(min);
}
if (plusDisabled) {
onInput?.(max);
onChange?.(max);
}
};
return (
<View
className={classNames(prefixCls, {
[`${prefixCls}-${size}`]: size,
})}
>
<View
className={classNames(`${prefixCls}-btn`, `${prefixCls}-minus`, {
[`${prefixCls}-btn-disabled`]: minusDisabled,
[`${prefixCls}-btn-plain`]: plain,
[`${prefixCls}-btn-plain-disabled`]: plain && minusDisabled,
[`${prefixCls}-btn-circle`]: shape === 'circle',
})}
onTap={handleMinus}
>
<Icon type="move" size="36px" color="#999" />
</View>
<View className={`${prefixCls}-input-wrapper`}>
<Input
className={classNames(`${prefixCls}-input`, {
[`${prefixCls}-input-disabled`]: disabled,
[`${prefixCls}-input-circle`]: shape === 'circle',
[`${prefixCls}-input-plain`]: plain,
[`${prefixCls}-binputtn-plain-disabled`]: plain && disabled,
})}
type="number"
value={String(val)}
onInput={handleInput}
onFocus={handleFocus}
onBlur={handleBlur}
disabled={disabled}
/>
</View>
<View
className={classNames(`${prefixCls}-btn`, `${prefixCls}-plus`, {
[`${prefixCls}-btn-disabled`]: plusDisabled,
[`${prefixCls}-btn-plain`]: plain,
[`${prefixCls}-btn-plain-disabled`]: plain && plusDisabled,
[`${prefixCls}-btn-circle`]: shape === 'circle',
})}
style={{
borderColor: bgColor || color,
backgroundColor: bgColor,
opacity: plusDisabled && bgColor ? 0.4 : undefined,
}}
onTap={handlePlus}
>
<Icon type="add" size="36px" color={color || '#333'} />
</View>
</View>
);
};
export default Stepper;
================================================
FILE: components/stepper/style/index.scss
================================================
@import '../../style/theme/index';
$stepper-prefix-cls: #{$anna-prefix}-stepper;
$small: 48px;
$default: 56px;
.#{$stepper-prefix-cls} {
display: inline-flex;
align-items: center;
height: $default;
line-height: $default;
font-size: 32px;
&-small{
height: $small;
line-height: $small;
>.#{$stepper-prefix-cls}-btn{
width: $small;
height: $small;
&-plain{
width: $small - 4;
height: $small - 4;
}
}
}
&-minus{
border-radius: 8px 0 0 8px;
}
&-plus{
border-radius: 0 8px 8px 0;
}
&-btn{
display: flex;
justify-content: center;
align-items: center;
width: $default;
height: $default;
background-color: #F5F5F5;
text-align: center;
font-size: 36px;
cursor: pointer;
&:active{
background-color: $gray-2;
}
&-disabled{
cursor: not-allowed;
background-color: #FBFBFB;
&:active{
background-color: #FBFBFB;
}
}
&-plain{
width: $default - 4;
height: $default - 4;
border: 2px solid #DDD;
border-radius: 8px;
background-color: transparent;
&:active{
background-color: transparent;
}
&-disabled{
cursor: not-allowed;
background-color: transparent;
opacity: 0.4;
}
}
&-circle{
border-radius: 50%;
}
}
&-input-wrapper{
display: flex;
justify-content: center;
align-items: center;
height: 100%;
width: 80px;
margin: 0 4px;
background-color: #FDFFFD;
overflow: hidden;
}
&-input{
height: 100%;
width: 100%;
padding: 0;
background-color: #F5F5F5;
outline: none;
border: none;
color: $font-color-1;
font-size: 30px;
text-align: center;
&-disabled{
background-color: #FBFBFB;
}
&-plain{
background-color: transparent;
}
&-circle{
border-radius: 16px;
}
}
}
================================================
FILE: components/stepper/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/steps/index.tsx
================================================
import * as React from 'react';
import { View, Text } from 'remax/one';
import classNames from 'classnames';
import Icon from '../icon';
import { getPrefixCls } from '../common';
const prefixCls = getPrefixCls('steps');
export interface StepProps {
title?: React.ReactNode;
errorTitle?: React.ReactNode;
extra?: React.ReactNode;
description?: React.ReactNode;
}
export interface StepsProps {
current?: number;
status?: string;
direction?: string;
steps?: StepProps[];
}
const Steps = (props: StepsProps): React.ReactElement => {
const { direction = 'horizontal', current = 0, steps, status } = props;
const statusIconType = status === 'error' ? 'roundclosefill' : 'roundcheckfill';
const statusIconColor = status === 'error' ? '#f5222d' : '#1890FF';
const getTitle = (item: StepProps, index: number) => {
if (index === current) {
if (status === 'error') {
return item.errorTitle || item.title;
}
}
return item.title;
};
if (direction === 'vertical') {
return (
<View className={prefixCls}>
{/* <View className={`${prefixCls}-first_step`}>
<View className={styles.line} />
</View> */}
{steps?.map((item, index) => (
<View key={index} className={`${prefixCls}-step`}>
{index === 0 ? (
<View className={`${prefixCls}-circle_current`}>
<Text className={`${prefixCls}-circle_current-icon`}>
<Icon type="roundcheckfill" size="40px" color="#1890FF" />
</Text>
</View>
) : (
<View className={`${prefixCls}-circle`} />
)}
<View className={`${prefixCls}-line`} />
<View className={`${prefixCls}-step-header`}>
<View className={`${prefixCls}-step-header-title`}>{item.title}</View>
<View className={`${prefixCls}-step-header-extra`}>{item.extra}</View>
</View>
<View className={`${prefixCls}-step-description`}>{item.description}</View>
</View>
))}
</View>
);
}
return (
<View className={`${prefixCls}_horizontal`}>
{steps?.map((item, index) => (
<View
key={index}
className={classNames({
[`${prefixCls}_horizontal-step`]: true,
[`${prefixCls}_horizontal-step-finish`]: index <= current - 1,
})}
>
<View className={`${prefixCls}_horizontal-step-container`}>
<View className={`${prefixCls}_horizontal-step-container-icon`}>
{index < current ? <Icon type="roundcheckfill" size="40px" color="#1890FF" /> : null}
{index === current ? (
<Icon type={statusIconType} size="40px" color={statusIconColor} />
) : null}
{index > current ? (
<View className={`${prefixCls}_horizontal-step-container-icon-default`}>
<View />
</View>
) : null}
</View>
<View className={`${prefixCls}_horizontal-step-container-content`}>
<View className={`${prefixCls}_horizontal-step-container-content-title`}>
{getTitle(item, index)}
</View>
</View>
</View>
</View>
))}
</View>
);
};
export default Steps;
================================================
FILE: components/steps/style/index.scss
================================================
@import '../../style/theme/index';
$steps-prefix-cls: #{$anna-prefix}-steps;
.#{$steps-prefix-cls} {
&-first_step{
position: relative;
height: 80px;
}
&-step{
box-sizing: border-box;
position: relative;
padding: 0 0 70px 50px;
&-header{
display: flex;
justify-content: space-between;
transform: translateY(-50%);
&-title{
color: rgba(0, 0, 0, 0.85);
font-size: 30px;
font-weight: 500;
}
&-extra{
color: rgba(0, 0, 0, 0.45);
font-size: 26px;
}
}
&-description{
color: rgba(0, 0, 0, 0.65);
padding-top: 2px;
line-height: 1.44444;
font-size: 26px;
transform: translateY(-10px);
}
}
&-circle{
box-sizing: border-box;
position: absolute;
left: 0;
top: 0;
width: 16px;
height: 16px;
border-radius: 50%;
background-color: $brand-color;
z-index: 1;
transform: translate(-50%, -50%);
}
&-circle_current{
box-sizing: border-box;
position: absolute;
left: 0;
top: 0;
width: 48px;
height: 48px;
border-radius: 50%;
background-color: $light-base;
z-index: 1;
transform: translate(-50%, -50%);
display: flex;
justify-content: center;
align-items: center;
box-shadow: 0 0 30px #99CCFF;
&-icon{
width: 40px;
height: 40px;
display: inline-block;
}
}
&-line{
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: 2px;
background-color: $brand-color;
transform: translateX(-50%);
}
}
$steps_horizontal-prefix-cls: #{$steps-prefix-cls}_horizontal;
.#{$steps_horizontal-prefix-cls} {
display: flex;
background-color: $light-base;
overflow: hidden;
&-step{
flex: 1;
display: flex;
flex-direction: column;
align-items: center;
&:nth-child(1){
align-items: flex-start;
}
&:nth-last-child(1){
align-items: flex-end;
.#{$steps_horizontal-prefix-cls}-step-container{
&-icon{
&::after{
background-color: $light-base;
}
}
}
}
&-container{
position: relative;
z-index: 0;
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
&-icon{
position: relative;
display: inline-block;
padding: 0 20px;
background-color: $light-base;
height: 40px;
&::after{
content: '';
position: absolute;
z-index: -1;
height: 2px;
background-color: #f0f0f0;
top: 50%;
left: 50%;
margin-top: -1px;
width: 3000px;
}
&-default{
display: flex;
align-items: center;
height: 40px;
>view{
width: 16px;
height: 16px;
border-radius: 50%;
background-color: rgba(0,0,0,.25);
}
>div{
width: 16px;
height: 16px;
border-radius: 50%;
background-color: rgba(0,0,0,.25);
}
}
}
&-content{
&-title{
color: rgba(0, 0, 0, 0.85);
font-size: 28px;
font-weight: 500;
margin-top: 10px;
}
}
}
}
&-step-finish{
.#{$steps_horizontal-prefix-cls}-step-container{
&-icon{
&::after{
background-color: $brand-color;
}
}
}
}
}
================================================
FILE: components/steps/style/index.ts
================================================
import '../../style/index.scss';
import './index.scss';
// dependencies
import '../../icon/style';
================================================
FILE: components/style/iconfont/index.scss
================================================
@font-face {font-family: "iconfont";
src: url('//at.alicdn.com/t/font_1623975_p5xdzibs32b.woff2') format('woff2'),
url('//at.alicdn.com/t/font_1623975_p5xdzibs32b.woff') format('woff'),
url('//at.alicdn.com/t/font_1623975_p5xdzibs32b.ttf') format('truetype');
}
.iconfont {
font-family: "iconfont" !important;
font-size: 28px;
font-style: normal;
width: 1em;
height: 1em;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.icon-warn:before {
content: "\e663";
}
.icon-shoplight:before {
content: "\e7b8";
}
.icon-camerafill:before {
content: "\e664";
}
.icon-voicelight:before {
content: "\e7b9";
}
.icon-camera:before {
content: "\e665";
}
.icon-attentionfavorfill-copy:before {
content: "\e7ba";
}
.icon-commentfill:before {
content: "\e666";
}
.icon-full:before {
content: "\e7bc";
}
.icon-comment:before {
content: "\e667";
}
.icon-mail:before {
content: "\e7bd";
}
.icon-likefill:before {
content: "\e668";
}
.icon-peoplelist:before {
content: "\e7be";
}
.icon-like:before {
content: "\e669";
}
.icon-goodsnewfill:before {
content: "\e7bf";
}
.icon-notificationfill:before {
content: "\e66a";
}
.icon-goodsnew:before {
content: "\e7c0";
}
.icon-notification:before {
content: "\e66b";
}
.icon-medalfill:before {
content: "\e7c1";
}
.icon-order:before {
content: "\e66c";
}
.icon-medal:before {
content: "\e7c2";
}
.icon-samefill:before {
content: "\e66d";
}
.icon-newsfill:before {
content: "\e7c3";
}
.icon-same:before {
content: "\e66e";
}
.icon-newshotfill:before {
content: "\e7c4";
}
.icon-deliver:before {
content: "\e671";
}
.icon-newshot:before {
content: "\e7c5";
}
.icon-evaluate:before {
content: "\e672";
}
.icon-news:before {
content: "\e7c6";
}
.icon-pay:before {
content: "\e673";
}
.icon-videofill:before {
content: "\e7c7";
}
.icon-send:before {
content: "\e675";
}
.icon-video:before {
content: "\e7c8";
}
.icon-shop:before {
content: "\e676";
}
.icon-askfill:before {
content: "\e7c9";
}
.icon-ticket:before {
content: "\e677";
}
.icon-ask:before {
content: "\e7ca";
}
.icon-wang:before {
content: "\e678";
}
.icon-exit:before {
content: "\e7cb";
}
.icon-back:before {
content: "\e679";
}
.icon-skinfill:before {
content: "\e7cc";
}
.icon-cascades:before {
content: "\e67c";
}
.icon-skin:before {
content: "\e7cd";
}
.icon-discover:before {
content: "\e67e";
}
.icon-moneybagfill:before {
content: "\e7ce";
}
.icon-list:before {
content: "\e682";
}
.icon-usefullfill:before {
content: "\e7cf";
}
.icon-more:before {
content: "\e684";
}
.icon-usefull:before {
content: "\e7d0";
}
.icon-scan:before {
content: "\e689";
}
.icon-moneybag:before {
content: "\e7d1";
}
.icon-settings:before {
content: "\e68a";
}
.icon-redpacket_fill:before {
content: "\e7d3";
}
.icon-questionfill:before {
content: "\e690";
}
.icon-subscription:before {
content: "\e7d4";
}
.icon-question:before {
content: "\e691";
}
.icon-home_light:before {
content: "\e7d5";
}
.icon-shopfill:before {
content: "\e697";
}
.icon-my_light:before {
content: "\e7d6";
}
.icon-form:before {
content: "\e699";
}
.icon-community_light:before {
content: "\e7d7";
}
.icon-wangfill:before {
content: "\e69a";
}
.icon-cart_light:before {
content: "\e7d8";
}
.icon-pic:before {
content: "\e69b";
}
.icon-we_light:before {
content: "\e7d9";
}
.icon-filter:before {
content: "\e69c";
}
.icon-home_fill_light:before {
content: "\e7da";
}
.icon-footprint:before {
content: "\e69d";
}
.icon-cart_fill_light:before {
content: "\e7db";
}
.icon-top:before {
content: "\e69e";
}
.icon-community_fill_light:before {
content: "\e7dc";
}
.icon-pulldown:before {
content: "\e69f";
}
.icon-my_fill_light:before {
content: "\e7dd";
}
.icon-pullup:before {
content: "\e6a0";
}
.icon-we_fill_light:before {
content: "\e7de";
}
.icon-right:before {
content: "\e6a3";
}
.icon-skin_light:before {
content: "\e7df";
}
.icon-refresh:before {
content: "\e6a4";
}
.icon-search_light:before {
content: "\e7e0";
}
.icon-moreandroid:before {
content: "\e6a5";
}
.icon-scan_light:before {
content: "\e7e1";
}
.icon-deletefill:before {
content: "\e6a6";
}
.icon-people_list_light:before {
content: "\e7e2";
}
.icon-refund:before {
content: "\e6ac";
}
.icon-message_light:before {
content: "\e7e3";
}
.icon-cart:before {
content: "\e6af";
}
.icon-close_light:before {
content: "\e7e4";
}
.icon-qrcode:before {
content: "\e6b0";
}
.icon-add_light:before {
content: "\e7e5";
}
.icon-remind:before {
content: "\e6b2";
}
.icon-profile_light:before {
content: "\e7e6";
}
.icon-delete:before {
content: "\e6b4";
}
.icon-service_light:before {
content: "\e7e7";
}
.icon-profile:before {
content: "\e6b7";
}
.icon-friend_add_light:before {
content: "\e7e8";
}
.icon-home:before {
content: "\e6b8";
}
.icon-edit_light:before {
content: "\e7e9";
}
.icon-cartfill:before {
content: "\e6b9";
}
.icon-camera_light:before {
content: "\e7ea";
}
.icon-discoverfill:before {
content: "\e6ba";
}
.icon-hot_light:before {
content: "\e7eb";
}
.icon-homefill:before {
content: "\e6bb";
}
.icon-refresh_light:before {
content: "\e7ec";
}
.icon-message:before {
content: "\e6bc";
}
.icon-back_light:before {
content: "\e7ed";
}
.icon-addressbook:before {
content: "\e6bd";
}
.icon-share_light:before {
content: "\e7ee";
}
.icon-link:before {
content: "\e6bf";
}
.icon-comment_light:before {
content: "\e7ef";
}
.icon-lock:before {
content: "\e6c0";
}
.icon-appreciate_light:before {
content: "\e7f0";
}
.icon-unlock:before {
content: "\e6c2";
}
.icon-favor_light:before {
content: "\e7f1";
}
.icon-vip:before {
content: "\e6c3";
}
.icon-appreciate_fill_light:before {
content: "\e7f2";
}
.icon-weibo:before {
content: "\e6c4";
}
.icon-comment_fill_light:before {
content: "\e7f3";
}
.icon-activity:before {
content: "\e6c5";
}
.icon-wang_light:before {
content: "\e7f4";
}
.icon-big:before {
content: "\e6c7";
}
.icon-more_android_light:before {
content: "\e7f5";
}
.icon-friendaddfill:before {
content: "\e6c9";
}
.icon-friend_light:before {
content: "\e7f6";
}
.icon-friendadd:before {
content: "\e6ca";
}
.icon-more_light:before {
content: "\e7f7";
}
.icon-friendfamous:before {
content: "\e6cb";
}
.icon-goods_favor_light:before {
content: "\e7f8";
}
.icon-friend:before {
content: "\e6cc";
}
.icon-goods_new_fill_light:before {
content: "\e7f9";
}
.icon-goods:before {
content: "\e6cd";
}
.icon-goods_new_light:before {
content: "\e7fa";
}
.icon-selection:before {
content: "\e6ce";
}
.icon-goods_light:before {
content: "\e7fb";
}
.icon-tmall:before {
content: "\e6cf";
}
.icon-medal_fill_light:before {
content: "\e7fc";
}
.icon-explore:before {
content: "\e6d2";
}
.icon-medal_light:before {
content: "\e7fd";
}
.icon-present:before {
content: "\e6d3";
}
.icon-news_fill_light:before {
content: "\e7fe";
}
.icon-squarecheckfill:before {
content: "\e6d4";
}
.icon-news_hot_fill_light:before {
content: "\e7ff";
}
.icon-square:before {
content: "\e6d5";
}
.icon-news_hot_light:before {
content: "\e800";
}
.icon-squarecheck:before {
content: "\e6d6";
}
.icon-news_light:before {
content: "\e801";
}
.icon-round:before {
content: "\e6d7";
}
.icon-video_fill_light:before {
content: "\e802";
}
.icon-roundaddfill:before {
content: "\e6d8";
}
.icon-message_fill_light:before {
content: "\e803";
}
.icon-roundadd:before {
content: "\e6d9";
}
.icon-form_light:before {
content: "\e804";
}
.icon-add:before {
content: "\e6da";
}
.icon-video_light:before {
content: "\e805";
}
.icon-notificationforbidfill:before {
content: "\e6db";
}
.icon-search_list_light:before {
content: "\e806";
}
.icon-explorefill:before {
content: "\e6dd";
}
.icon-form_fill_light:before {
content: "\e807";
}
.icon-fold:before {
content: "\e6de";
}
.icon-global_light:before {
content: "\e808";
}
.icon-game:before {
content: "\e6df";
}
.icon-global:before {
content: "\e809";
}
.icon-redpacket:before {
content: "\e6e0";
}
.icon-favor_fill_light:before {
content: "\e80a";
}
.icon-selectionfill:before {
content: "\e6e1";
}
.icon-delete_light:before {
content: "\e80b";
}
.icon-similar:before {
content: "\e6e2";
}
.icon-back_android:before {
content: "\e80c";
}
.icon-appreciatefill:before {
content: "\e6e3";
}
.icon-back_android_light:before {
content: "\e80d";
}
.icon-infofill:before {
content: "\e6e4";
}
.icon-down_light:before {
content: "\e80e";
}
.icon-info:before {
content: "\e6e5";
}
.icon-round_close_light:before {
content: "\e80f";
}
.icon-tao:before {
content: "\e6e8";
}
.icon-round_close_fill_light:before {
content: "\e810";
}
.icon-mobiletao:before {
content: "\e6e9";
}
.icon-expressman:before {
content: "\e811";
}
.icon-forwardfill:before {
content: "\e6ea";
}
.icon-punch_light:before {
content: "\e812";
}
.icon-forward:before {
content: "\e6eb";
}
.icon-evaluate_fill:before {
content: "\e813";
}
.icon-rechargefill:before {
content: "\e6ec";
}
.icon-furniture:before {
content: "\e814";
}
.icon-recharge:before {
content: "\e6ed";
}
.icon-dress:before {
content: "\e815";
}
.icon-vipcard:before {
content: "\e6ee";
}
.icon-coffee:before {
content: "\e816";
}
.icon-voice:before {
content: "\e6ef";
}
.icon-sports:before {
content: "\e817";
}
.icon-voicefill:before {
content: "\e6f0";
}
.icon-group_light:before {
content: "\e818";
}
.icon-friendfavor:before {
content: "\e6f1";
}
.icon-location_light:before {
content: "\e819";
}
.icon-wifi:before {
content: "\e6f2";
}
.icon-attention_light:before {
content: "\e81a";
}
.icon-share:before {
content: "\e6f3";
}
.icon-group_fill_light:before {
content: "\e81b";
}
.icon-wefill:before {
content: "\e6f4";
}
.icon-group_fill:before {
content: "\e81c";
}
.icon-we:before {
content: "\e6f5";
}
.icon-play_forward_fill:before {
content: "\e81d";
}
.icon-lightauto:before {
content: "\e6f6";
}
.icon-subscription_light:before {
content: "\e81e";
}
.icon-lightforbid:before {
content: "\e6f7";
}
.icon-deliver_fill:before {
content: "\e81f";
}
.icon-lightfill:before {
content: "\e6f8";
}
.icon-notice_forbid_fill:before {
content: "\e820";
}
.icon-camerarotate:before {
content: "\e6f9";
}
.icon-qr_code_light:before {
content: "\e821";
}
.icon-light:before {
content: "\e6fa";
}
.icon-settings_light:before {
content: "\e822";
}
.icon-barcode:before {
content: "\e6fb";
}
.icon-pick:before {
content: "\e823";
}
.icon-flashlightclose:before {
content: "\e6fc";
}
.icon-form_favor_light:before {
content: "\e824";
}
.icon-flashlightopen:before {
content: "\e6fd";
}
.icon-round_comment_light:before {
content: "\e825";
}
.icon-searchlist:before {
content: "\e6fe";
}
.icon-phone_light:before {
content: "\e826";
}
.icon-service:before {
content: "\e6ff";
}
.icon-round_down_light:before {
content: "\e827";
}
.icon-sort:before {
content: "\e700";
}
.icon-friend_settings_light:before {
content: "\e828";
}
.icon-1212:before {
content: "\e702";
}
.icon-change:before {
content: "\e829";
}
.icon-down:before {
content: "\e703";
}
.icon-round_list_light:before {
content: "\e82a";
}
.icon-mobile:before {
content: "\e704";
}
.icon-ticket_fill:before {
content: "\e82b";
}
.icon-mobilefill:before {
content: "\e705";
}
.icon-round_friend_fill:before {
content: "\e82c";
}
.icon-copy:before {
content: "\e706";
}
.icon-round_crown_fill:before {
content: "\e82d";
}
.icon-countdownfill:before {
content: "\e707";
}
.icon-round_link_fill:before {
content: "\e82e";
}
.icon-countdown:before {
content: "\e708";
}
.icon-round_light_fill:before {
content: "\e82f";
}
.icon-noticefill:before {
content: "\e709";
}
.icon-round_favor_fill:before {
content: "\e830";
}
.icon-notice:before {
content: "\e70a";
}
.icon-round_menu_fill:before {
content: "\e831";
}
.icon-qiang:before {
content: "\e70b";
}
.icon-round_location_fill:before {
content: "\e832";
}
.icon-upstagefill:before {
content: "\e70e";
}
.icon-round_pay_fill:before {
content: "\e833";
}
.icon-upstage:before {
content: "\e70f";
}
.icon-round_like_fill:before {
content: "\e834";
}
.icon-babyfill:before {
content: "\e710";
}
.icon-round_people_fill:before {
content: "\e835";
}
.icon-baby:before {
content: "\e711";
}
.icon-round_pay:before {
content: "\e836";
}
.icon-brandfill:before {
content: "\e712";
}
.icon-round_rank_fill:before {
content: "\e837";
}
.icon-brand:before {
content: "\e713";
}
.icon-round_redpacket_fill:before {
content: "\e838";
}
.icon-choicenessfill:before {
content: "\e714";
}
.icon-round_skin_fill:before {
content: "\e839";
}
.icon-choiceness:before {
content: "\e715";
}
.icon-round_record_fill:before {
content: "\e83a";
}
.icon-clothesfill:before {
content: "\e716";
}
.icon-round_ticket_fill:before {
content: "\e83b";
}
.icon-clothes:before {
content: "\e717";
}
.icon-round_redpacket:before {
content: "\e83c";
}
.icon-creativefill:before {
content: "\e718";
}
.icon-round_text_fill:before {
content: "\e83d";
}
.icon-creative:before {
content: "\e719";
}
.icon-round_ticket:before {
content: "\e83e";
}
.icon-female:before {
content: "\e71a";
}
.icon-round_transfer_fill:before {
content: "\e83f";
}
.icon-keyboard:before {
content: "\e71b";
}
.icon-subtitle_block_light:before {
content: "\e840";
}
.icon-male:before {
content: "\e71c";
}
.icon-warn_light:before {
content: "\e841";
}
.icon-newfill:before {
content: "\e71d";
}
.icon-round_transfer:before {
content: "\e842";
}
.icon-new:before {
content: "\e71e";
}
.icon-vip_code_light:before {
content: "\e843";
}
.icon-pullleft:before {
content: "\e71f";
}
.icon-subtitle_unblock_light:before {
content: "\e844";
}
.icon-pullright:before {
content: "\e720";
}
.icon-round_shop_fill:before {
content: "\e845";
}
.icon-rankfill:before {
content: "\e721";
}
.icon-oppose_fill_light:before {
content: "\e846";
}
.icon-rank:before {
content: "\e722";
}
.icon-oppose_light:before {
content: "\e847";
}
.icon-bad:before {
content: "\e723";
}
.icon-living:before {
content: "\e848";
}
.icon-cameraadd:before {
content: "\e724";
}
.icon-goods_hot_fill:before {
content: "\e849";
}
.icon-focus:before {
content: "\e725";
}
.icon-ticket_money_fill:before {
content: "\e84a";
}
.icon-friendfill:before {
content: "\e726";
}
.icon-arrow_left_fill:before {
content: "\e84b";
}
.icon-cameraaddfill:before {
content: "\e727";
}
.icon-arrow_up_fill:before {
content: "\e84c";
}
.icon-apps:before {
content: "\e729";
}
.icon-xiaoheiqun:before {
content: "\e84d";
}
.icon-paintfill:before {
content: "\e72a";
}
.icon-auction:before {
content: "\e84e";
}
.icon-paint:before {
content: "\e72b";
}
.icon-return:before {
content: "\e84f";
}
.icon-picfill:before {
content: "\e72c";
}
.icon-mall_light:before {
content: "\e850";
}
.icon-refresharrow:before {
content: "\e72d";
}
.icon-mall_fill_light:before {
content: "\e851";
}
.icon-markfill:before {
content: "\e730";
}
.icon-broadcast_fill:before {
content: "\e852";
}
.icon-mark:before {
content: "\e731";
}
.icon-at:before {
content: "\e853";
}
.icon-presentfill:before {
content: "\e732";
}
.icon-card_fill:before {
content: "\e854";
}
.icon-repeal:before {
content: "\e733";
}
.icon-album:before {
content: "\e734";
}
.icon-peoplefill:before {
content: "\e735";
}
.icon-people:before {
content: "\e736";
}
.icon-servicefill:before {
content: "\e737";
}
.icon-repair:before {
content: "\e738";
}
.icon-file:before {
content: "\e739";
}
.icon-repairfill:before {
content: "\e73a";
}
.icon-taoxiaopu:before {
content: "\e73b";
}
.icon-attentionfill:before {
content: "\e73c";
}
.icon-attention:before {
content: "\e73d";
}
.icon-commandfill:before {
content: "\e73e";
}
.icon-command:before {
content: "\e73f";
}
.icon-communityfill:before {
content: "\e740";
}
.icon-community:before {
content: "\e741";
}
.icon-read:before {
content: "\e742";
}
.icon-suan:before {
content: "\e743";
}
.icon-hua:before {
content: "\e744";
}
.icon-ju:before {
content: "\e745";
}
.icon-tian:before {
content: "\e748";
}
.icon-calendar:before {
content: "\e74a";
}
.icon-cut:before {
content: "\e74b";
}
.icon-magic:before {
content: "\e74c";
}
.icon-backwardfill:before {
content: "\e74d";
}
.icon-playfill:before {
content: "\e74f";
}
.icon-stop:before {
content: "\e750";
}
.icon-tagfill:before {
content: "\e751";
}
.icon-tag:before {
content: "\e752";
}
.icon-group:before {
content: "\e753";
}
.icon-all:before {
content: "\e755";
}
.icon-backdelete:before {
content: "\e756";
}
.icon-hotfill:before {
content: "\e757";
}
.icon-hot:before {
content: "\e758";
}
.icon-post:before {
content: "\e759";
}
.icon-radiobox:before {
content: "\e75b";
}
.icon-rounddown:before {
content: "\e75c";
}
.icon-upload:before {
content: "\e75d";
}
.icon-writefill:before {
content: "\e760";
}
.icon-write:before {
content: "\e761";
}
.icon-radioboxfill:before {
content: "\e763";
}
.icon-punch:before {
content: "\e764";
}
.icon-shake:before {
content: "\e765";
}
.icon-add1:before {
content: "\e767";
}
.icon-move:before {
content: "\e768";
}
.icon-safe:before {
content: "\e769";
}
.icon-haodian:before {
content: "\e76d";
}
.icon-mao:before {
content: "\e76e";
}
.icon-qi:before {
content: "\e76f";
}
.icon-ye:before {
content: "\e770";
}
.icon-juhuasuan:before {
content: "\e771";
}
.icon-taoqianggou:before {
content: "\e772";
}
.icon-tianmao:before {
content: "\e773";
}
.icon-activityfill:before {
content: "\e775";
}
.icon-crownfill:before {
content: "\e776";
}
.icon-crown:before {
content: "\e777";
}
.icon-goodsfill:before {
content: "\e778";
}
.icon-messagefill:before {
content: "\e779";
}
.icon-profilefill:before {
content: "\e77a";
}
.icon-sound:before {
content: "\e77b";
}
.icon-sponsorfill:before {
content: "\e77c";
}
.icon-sponsor:before {
content: "\e77d";
}
.icon-upblock:before {
content: "\e77e";
}
.icon-weblock:before {
content: "\e77f";
}
.icon-weunblock:before {
content: "\e780";
}
.icon-1111:before {
content: "\e782";
}
.icon-my:before {
content: "\e78b";
}
.icon-myfill:before {
content: "\e78c";
}
.icon-emojifill:before {
content: "\e78d";
}
.icon-emojiflashfill:before {
content: "\e78e";
}
.icon-flashbuyfill-copy:before {
content: "\e78f";
}
.icon-text:before {
content: "\e791";
}
.icon-goodsfavor:before {
content: "\e794";
}
.icon-musicfill:before {
content: "\e795";
}
.icon-musicforbidfill:before {
content: "\e796";
}
.icon-xiamiforbid:before {
content: "\e797";
}
.icon-xiami:before {
content: "\e798";
}
.icon-roundleftfill:before {
content: "\e799";
}
.icon-triangledownfill:before {
content: "\e79b";
}
.icon-appreciate:before {
content: "\e644";
}
.icon-triangleupfill:before {
content: "\e79c";
}
.icon-check:before {
content: "\e645";
}
.icon-roundleftfill-copy:before {
content: "\e79e";
}
.icon-close:before {
content: "\e646";
}
.icon-pulldown1:before {
content: "\e79f";
}
.icon-edit:before {
content: "\e649";
}
.icon-emojilight:before {
content: "\e7a1";
}
.icon-emoji:before {
content: "\e64a";
}
.icon-keyboardlight:before {
content: "\e7a3";
}
.icon-favorfill:before {
content: "\e64b";
}
.icon-recordfill:before {
content: "\e7a4";
}
.icon-favor:before {
content: "\e64c";
}
.icon-recordlight:before {
content: "\e7a5";
}
.icon-loading:before {
content: "\e64f";
}
.icon-record:before {
content: "\e7a6";
}
.icon-locationfill:before {
content: "\e650";
}
.icon-roundaddlight:before {
content: "\e7a7";
}
.icon-location:before {
content: "\e651";
}
.icon-soundlight:before {
content: "\e7a8";
}
.icon-phone:before {
content: "\e652";
}
.icon-cardboardfill:before {
content: "\e7a9";
}
.icon-roundcheckfill:before {
content: "\e656";
}
.icon-cardboard:before {
content: "\e7aa";
}
.icon-roundcheck:before {
content: "\e657";
}
.icon-formfill:before {
content: "\e7ab";
}
.icon-roundclosefill:before {
content: "\e658";
}
.icon-coin:before {
content: "\e7ac";
}
.icon-roundclose:before {
content: "\e659";
}
.icon-sortlight:before {
content: "\e7ad";
}
.icon-roundrightfill:before {
content: "\e65a";
}
.icon-cardboardforbid:before {
content: "\e7af";
}
.icon-roundright:before {
content: "\e65b";
}
.icon-circlefill:before {
content: "\e7b0";
}
.icon-search:before {
content: "\e65c";
}
.icon-circle:before {
content: "\e7b1";
}
.icon-taxi:before {
content: "\e65d";
}
.icon-attentionforbid:before {
content: "\e7b2";
}
.icon-timefill:before {
content: "\e65e";
}
.icon-attentionforbidfill:before {
content: "\e7b3";
}
.icon-time:before {
content: "\e65f";
}
.icon-attentionfavorfill:before {
content: "\e7b4";
}
.icon-unfold:before {
content: "\e661";
}
.icon-attentionfavor:before {
content: "\e7b5";
}
.icon-warnfill:before {
content: "\e662";
}
.icon-piclight:before {
content: "\e7b7";
}
================================================
FILE: components/style/index.scss
================================================
@import './reset/index.scss';
@import './theme/index';
================================================
FILE: components/style/index.ts
================================================
import './index.scss';
================================================
FILE: components/style/reset/index.scss
================================================
/*
html5doctor.com Reset Stylesheet
v1.4.1
2010-03-01
Author: Richard Clark - http://richclarkdesign.com
*/
view, text, html, body, div, span, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
abbr, address, cite, code,
del, dfn, em, img, ins, kbd, q, samp,
small, strong, sub, sup, var,
b, i,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, figcaption, figure,
footer, header, hgroup, menu, nav, section, summary,
time, mark, audio, video {
margin:0;
padding:0;
border:0;
outline:0;
fo
gitextract_5muk5lim/ ├── .eslintignore ├── .eslintrc.js ├── .gitignore ├── .nojekyll ├── .prettierrc.js ├── .umirc.ts ├── CHANGELOG.md ├── README.md ├── babel.config.js ├── build/ │ └── loaders/ │ └── jsxPx2Rem.js ├── components/ │ ├── _util/ │ │ ├── children.ts │ │ ├── index.ts │ │ ├── sync.ts │ │ ├── to.ts │ │ ├── type.ts │ │ └── utils.ts │ ├── action-sheet/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── button/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── card/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── cascade/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── cascade-popup/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── cell/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── checkbox/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── col/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── common/ │ │ └── index.ts │ ├── config-provider/ │ │ └── index.tsx │ ├── date-picker/ │ │ ├── index.tsx │ │ └── style/ │ │ └── index.ts │ ├── dropdown/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── filter/ │ │ ├── filter.tsx │ │ ├── index.ts │ │ ├── item.tsx │ │ └── style/ │ │ ├── filter.scss │ │ ├── index.scss │ │ ├── index.ts │ │ └── item.scss │ ├── form-value/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── grid/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── hooks/ │ │ ├── index.ts │ │ └── useRefs.ts │ ├── icon/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── image-upload/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── images/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── index.ts │ ├── input/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── loading/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── mask/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── one/ │ │ ├── api/ │ │ │ ├── chooseImage/ │ │ │ │ ├── index.ts │ │ │ │ ├── index.web.ts │ │ │ │ └── index.wechat.ts │ │ │ ├── createSelectorQuery/ │ │ │ │ ├── index.ts │ │ │ │ ├── index.web.ts │ │ │ │ └── index.wechat.ts │ │ │ ├── datePicker/ │ │ │ │ ├── index.ts │ │ │ │ ├── index.web.ts │ │ │ │ └── index.wechat.ts │ │ │ ├── hideLoading/ │ │ │ │ ├── index.ts │ │ │ │ ├── index.web.ts │ │ │ │ └── index.wechat.ts │ │ │ ├── index.ts │ │ │ ├── previewImage/ │ │ │ │ ├── index.ts │ │ │ │ ├── index.web.ts │ │ │ │ └── index.wechat.ts │ │ │ ├── showLoading/ │ │ │ │ ├── index.ts │ │ │ │ ├── index.web.ts │ │ │ │ └── index.wechat.ts │ │ │ └── showToast/ │ │ │ ├── index.ts │ │ │ ├── index.web.ts │ │ │ └── index.wechat.ts │ │ ├── base/ │ │ │ ├── checkbox/ │ │ │ │ ├── index.tsx │ │ │ │ ├── index.web.tsx │ │ │ │ └── index.wechat.tsx │ │ │ ├── index.ts │ │ │ ├── picker/ │ │ │ │ ├── index.tsx │ │ │ │ ├── index.web.tsx │ │ │ │ └── index.wechat.tsx │ │ │ └── scroll-view/ │ │ │ ├── index.tsx │ │ │ ├── index.web.tsx │ │ │ └── index.wechat.tsx │ │ └── index.ts │ ├── picker/ │ │ ├── index.tsx │ │ └── style/ │ │ └── index.ts │ ├── popup/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── progress-bar/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── radio/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── rate/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── result/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── row/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── search-bar/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── selector/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── selector-popup/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── skeleton/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── space/ │ │ ├── __test__/ │ │ │ └── index.test.js │ │ ├── index.tsx │ │ ├── s.jsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── spin/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── stepper/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── steps/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── style/ │ │ ├── iconfont/ │ │ │ └── index.scss │ │ ├── index.scss │ │ ├── index.ts │ │ ├── reset/ │ │ │ └── index.scss │ │ └── theme/ │ │ └── index.scss │ ├── swipe-action/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── switch/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── tabs/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── tag/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ ├── textarea/ │ │ ├── index.tsx │ │ └── style/ │ │ ├── index.scss │ │ └── index.ts │ └── web/ │ ├── api/ │ │ ├── chooseImage/ │ │ │ └── index.ts │ │ ├── createSelectorQuery/ │ │ │ └── index.ts │ │ ├── datePicker/ │ │ │ └── index.ts │ │ ├── hideLoading/ │ │ │ └── index.ts │ │ ├── index.ts │ │ ├── previewImage/ │ │ │ └── index.ts │ │ ├── showLoading/ │ │ │ └── index.ts │ │ └── showToast/ │ │ └── index.ts │ ├── base/ │ │ ├── checkbox/ │ │ │ └── index.tsx │ │ ├── image/ │ │ │ └── index.tsx │ │ ├── index.ts │ │ ├── input/ │ │ │ └── index.tsx │ │ ├── picker/ │ │ │ ├── index.tsx │ │ │ └── style/ │ │ │ ├── index.scss │ │ │ └── index.ts │ │ ├── scroll-view/ │ │ │ └── index.tsx │ │ ├── text/ │ │ │ └── index.tsx │ │ ├── textarea/ │ │ │ └── index.tsx │ │ └── view/ │ │ └── index.tsx │ └── index.ts ├── docs/ │ ├── components/ │ │ ├── common/ │ │ │ ├── block/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── common/ │ │ │ │ └── index.ts │ │ │ ├── frame/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── grid/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── grid-item/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ └── index.ts │ │ ├── data-display/ │ │ │ ├── card/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── card.md │ │ │ ├── steps/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── steps.md │ │ │ ├── tabs/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── tabs.md │ │ │ ├── tag/ │ │ │ │ └── index.tsx │ │ │ └── tag.md │ │ ├── data-entry/ │ │ │ ├── cascade/ │ │ │ │ └── index.tsx │ │ │ ├── cascade.md │ │ │ ├── checkbox/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── checkbox.md │ │ │ ├── image-upload/ │ │ │ │ └── index.tsx │ │ │ ├── imageUpload.md │ │ │ ├── input/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── input.md │ │ │ ├── picker/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── picker.md │ │ │ ├── radio/ │ │ │ │ └── index.tsx │ │ │ ├── radio.md │ │ │ ├── rate/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── rate.md │ │ │ ├── search-bar/ │ │ │ │ └── index.tsx │ │ │ ├── searchBar.md │ │ │ ├── selector/ │ │ │ │ └── index.tsx │ │ │ ├── selector.md │ │ │ ├── stepper/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── stepper.md │ │ │ ├── switch/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ └── switch.md │ │ ├── feedback/ │ │ │ ├── action-sheet/ │ │ │ │ └── index.tsx │ │ │ ├── action-sheet.md │ │ │ ├── filter/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── filter.md │ │ │ ├── loading/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── loading.md │ │ │ ├── result/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── result.md │ │ │ ├── skeleton/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ └── skeleton.md │ │ ├── general/ │ │ │ ├── button/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── button.md │ │ │ ├── cell/ │ │ │ │ ├── index.module.scss │ │ │ │ └── index.tsx │ │ │ ├── cell.md │ │ │ ├── icon/ │ │ │ │ └── index.tsx │ │ │ ├── icon.md │ │ │ ├── popup/ │ │ │ │ └── index.tsx │ │ │ └── popup.md │ │ ├── gesture/ │ │ │ ├── swipe-action/ │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ └── swipe-action.md │ │ ├── layout/ │ │ │ ├── one-dimensional/ │ │ │ │ ├── index.scss │ │ │ │ └── index.tsx │ │ │ ├── one-dimensional.md │ │ │ ├── space/ │ │ │ │ └── index.tsx │ │ │ ├── space.md │ │ │ ├── two-dimensiona.md │ │ │ └── two-dimensional/ │ │ │ ├── index.scss │ │ │ └── index.tsx │ │ └── mock/ │ │ └── index.ts │ └── index.md ├── gulpfile.js ├── index.js ├── jest.config.js ├── package.json ├── postcss.config.js ├── scripts/ │ ├── copy.ts │ └── getEntries.ts ├── shell/ │ ├── commit.sh │ └── pub.sh ├── site/ │ ├── _demos/ │ │ ├── index/ │ │ │ └── index.html │ │ ├── index-1/ │ │ │ └── index.html │ │ ├── index-10/ │ │ │ └── index.html │ │ ├── index-11/ │ │ │ └── index.html │ │ ├── index-12/ │ │ │ └── index.html │ │ ├── index-13/ │ │ │ └── index.html │ │ ├── index-14/ │ │ │ └── index.html │ │ ├── index-15/ │ │ │ └── index.html │ │ ├── index-16/ │ │ │ └── index.html │ │ ├── index-17/ │ │ │ └── index.html │ │ ├── index-18/ │ │ │ └── index.html │ │ ├── index-19/ │ │ │ └── index.html │ │ ├── index-2/ │ │ │ └── index.html │ │ ├── index-20/ │ │ │ └── index.html │ │ ├── index-21/ │ │ │ └── index.html │ │ ├── index-22/ │ │ │ └── index.html │ │ ├── index-23/ │ │ │ └── index.html │ │ ├── index-24/ │ │ │ └── index.html │ │ ├── index-25/ │ │ │ └── index.html │ │ ├── index-26/ │ │ │ └── index.html │ │ ├── index-27/ │ │ │ └── index.html │ │ ├── index-3/ │ │ │ └── index.html │ │ ├── index-4/ │ │ │ └── index.html │ │ ├── index-5/ │ │ │ └── index.html │ │ ├── index-6/ │ │ │ └── index.html │ │ ├── index-7/ │ │ │ └── index.html │ │ ├── index-8/ │ │ │ └── index.html │ │ └── index-9/ │ │ └── index.html │ ├── index.html │ ├── umi.css │ └── umi.js ├── tests/ │ └── setup.js ├── tsconfig.json ├── tsconfig.webpack.json ├── typings/ │ └── index.d.ts └── webpack.config.js
SYMBOL INDEX (1066 symbols across 59 files)
FILE: .umirc.ts
method chainWebpack (line 47) | chainWebpack(memo, { env, webpack, createCSSRule }) {
FILE: components/_util/type.ts
type Omit (line 1) | type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;
FILE: components/_util/utils.ts
type Obj (line 1) | interface Obj {
FILE: components/action-sheet/index.tsx
type ActionSheetActionGridProps (line 10) | interface ActionSheetActionGridProps {
type ActionSheetActionDefaultProps (line 17) | interface ActionSheetActionDefaultProps {
type ActionSheetAction (line 25) | type ActionSheetAction = ActionSheetActionDefaultProps | ActionSheetActi...
type ActionSheetProps (line 27) | interface ActionSheetProps {
FILE: components/button/index.tsx
type ButtonType (line 12) | type ButtonType = typeof ButtonTypes[number];
type ButtonProps (line 14) | interface ButtonProps {
FILE: components/card/index.tsx
type CardProps (line 8) | interface CardProps {
FILE: components/cascade-popup/index.tsx
type CascadePopupProps (line 13) | interface CascadePopupProps {
FILE: components/cascade/index.tsx
type OptionProps (line 10) | interface OptionProps {
type CascadeProps (line 17) | interface CascadeProps {
FILE: components/cell/index.tsx
type ItemProps (line 9) | interface ItemProps {
FILE: components/checkbox/index.tsx
type CheckboxValue (line 8) | type CheckboxValue = string | number;
type CheckboxProps (line 10) | interface CheckboxProps {
type GroupProps (line 70) | interface GroupProps {
FILE: components/col/index.tsx
type ColProps (line 8) | interface ColProps {
FILE: components/date-picker/index.tsx
type DateTimeProps (line 7) | interface DateTimeProps {
FILE: components/dropdown/index.tsx
type OptionProps (line 7) | interface OptionProps {
type DropdownProps (line 12) | interface DropdownProps {
FILE: components/filter/filter.tsx
type FilterProps (line 9) | interface FilterProps {
FILE: components/filter/index.ts
type InternalFilter (line 4) | type InternalFilter = typeof InternalFilter;
type Filter (line 5) | interface Filter extends InternalFilter {
FILE: components/filter/item.tsx
type ItemProps (line 11) | interface ItemProps {
method toggle (line 42) | toggle() {
method open (line 56) | open() {
method close (line 59) | close() {
FILE: components/form-value/index.tsx
type ValueProps (line 7) | interface ValueProps {
FILE: components/grid/index.tsx
type GridProps (line 11) | interface GridProps {
FILE: components/hooks/useRefs.ts
function useRefs (line 4) | function useRefs<RefType>(): [
FILE: components/icon/index.tsx
type IconProps (line 8) | interface IconProps {
FILE: components/image-upload/index.tsx
type ImageProps (line 10) | interface ImageProps {
type DataItem (line 15) | type DataItem = ImageProps | string;
type ImageUploadProps (line 17) | interface ImageUploadProps {
FILE: components/images/index.tsx
type ImageProps (line 8) | interface ImageProps {
type DataItem (line 13) | type DataItem = ImageProps | string;
type ImagesProps (line 15) | interface ImagesProps {
FILE: components/input/index.tsx
type InputProps (line 9) | interface InputProps {
FILE: components/loading/index.tsx
type LoadingProps (line 7) | interface LoadingProps {
FILE: components/mask/index.tsx
type MaskProps (line 8) | interface MaskProps {
FILE: components/one/base/checkbox/index.web.tsx
type Props (line 3) | type Props = any;
function Checkbox (line 5) | function Checkbox(props: Props) {
FILE: components/one/base/picker/index.web.tsx
type Props (line 4) | type Props = any;
function Picker (line 6) | function Picker(props: Props) {
FILE: components/one/base/scroll-view/index.web.tsx
type Props (line 3) | type Props = any;
function ScrollView (line 5) | function ScrollView(props: Props) {
FILE: components/picker/index.tsx
type PickerProps (line 6) | interface PickerProps {
FILE: components/popup/index.tsx
type PopupProps (line 10) | interface PopupProps {
FILE: components/progress-bar/index.tsx
type ItemProps (line 9) | interface ItemProps {
type ProgressBarProps (line 14) | interface ProgressBarProps {
FILE: components/radio/index.tsx
type RadioValue (line 8) | type RadioValue = string | number;
type RadioProps (line 10) | interface RadioProps {
type GroupProps (line 72) | interface GroupProps {
FILE: components/rate/index.tsx
type RateProps (line 9) | interface RateProps {
FILE: components/result/index.tsx
type IconProps (line 44) | interface IconProps {
type ResultProps (line 49) | interface ResultProps {
FILE: components/row/index.tsx
type RowProps (line 8) | interface RowProps {
FILE: components/search-bar/index.tsx
type SearchBarProps (line 10) | interface SearchBarProps {
FILE: components/selector-popup/index.tsx
type SelectorPopupProps (line 11) | interface SelectorPopupProps {
FILE: components/selector/index.tsx
type OptionProps (line 9) | interface OptionProps {
type SelectorProps (line 15) | interface SelectorProps {
FILE: components/skeleton/index.tsx
type SkeletonParagraphProps (line 8) | interface SkeletonParagraphProps {
type SkeletonProps (line 13) | interface SkeletonProps {
FILE: components/space/index.tsx
type SpaceProps (line 8) | interface SpaceProps {
FILE: components/spin/index.tsx
type SpinProps (line 8) | interface SpinProps {
FILE: components/stepper/index.tsx
type StepperProps (line 9) | interface StepperProps {
FILE: components/steps/index.tsx
type StepProps (line 9) | interface StepProps {
type StepsProps (line 16) | interface StepsProps {
FILE: components/swipe-action/index.tsx
type SwipeActionOptionProps (line 10) | interface SwipeActionOptionProps {
type SwipeActionProps (line 17) | interface SwipeActionProps {
FILE: components/switch/index.tsx
type SwitchProps (line 9) | interface SwitchProps {
FILE: components/tabs/index.tsx
type TabTitleProps (line 10) | interface TabTitleProps {
type TabProps (line 15) | interface TabProps {
type TabContentProps (line 31) | interface TabContentProps {
FILE: components/tag/index.tsx
type TagProps (line 8) | interface TagProps {
type CheckableTagProps (line 41) | interface CheckableTagProps extends TagProps {
FILE: components/textarea/index.tsx
type TextareaProps (line 8) | interface TextareaProps {
FILE: components/web/api/createSelectorQuery/index.ts
type QueryProps (line 1) | interface QueryProps {
constant HTML_NODES (line 8) | const HTML_NODES = ['[object HTMLCollection]', '[object NodeList]'];
FILE: components/web/base/checkbox/index.tsx
type Props (line 3) | type Props = any;
function Checkbox (line 5) | function Checkbox(props: Props) {
FILE: components/web/base/picker/index.tsx
type RangeObjProps (line 7) | interface RangeObjProps {
type RangeProps (line 11) | type RangeProps = string | RangeObjProps;
type PickerProps (line 13) | interface PickerProps {
FILE: components/web/base/scroll-view/index.tsx
type Props (line 3) | type Props = any;
function ScrollView (line 5) | function ScrollView(props: Props) {
FILE: docs/components/common/block/index.tsx
type BlockProps (line 6) | interface BlockProps {
FILE: docs/components/common/frame/index.tsx
type BlockProps (line 6) | interface BlockProps {
FILE: docs/components/common/grid-item/index.tsx
type GridItemProps (line 5) | interface GridItemProps {
FILE: docs/components/common/grid/index.tsx
type GridProps (line 5) | interface GridProps {
FILE: index.js
function camelCase (line 1) | function camelCase(name) {
FILE: site/umi.js
function t (line 1) | function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{...
function c (line 1) | function c(e){for(var n="https://reactjs.org/docs/error-decoder.html?inv...
function C (line 1) | function C(e){return null===e||"object"!==n(e)?null:(e=S&&e[S]||e["@@ite...
function R (line 1) | function R(e){if(-1===e._status){e._status=0;var n=e._ctor;n=n(),e._resu...
function T (line 1) | function T(e){if(null==e)return null;if("function"===typeof e)return e.d...
function O (line 1) | function O(e){var n=e,t=e;if(e.alternate)for(;n["return"];)n=n["return"]...
function j (line 1) | function j(e){if(O(e)!==e)throw Error(c(188))}
function N (line 1) | function N(e){var n=e.alternate;if(!n){if(n=O(e),null===n)throw Error(c(...
function P (line 1) | function P(e){if(e=N(e),!e)return null;for(var n=e;;){if(5===n.tag||6===...
function F (line 1) | function F(e){if(e=N(e),!e)return null;for(var n=e;;){if(5===n.tag||6===...
function Pe (line 1) | function Pe(e){var n="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:c...
function Ae (line 1) | function Ae(e){0>Be||(e.current=Fe[Be],Fe[Be]=null,Be--)}
function Ve (line 1) | function Ve(e,n){Be++,Fe[Be]=e.current,e.current=n}
function Le (line 1) | function Le(e,n){var t=e.type.contextTypes;if(!t)return Ie;var r=e.state...
function Ke (line 1) | function Ke(e){return e=e.childContextTypes,null!==e&&void 0!==e}
function qe (line 1) | function qe(){Ae(De),Ae(Ue)}
function ze (line 1) | function ze(e,n,t){if(Ue.current!==Ie)throw Error(c(168));Ve(Ue,n),Ve(De...
function Ge (line 1) | function Ge(e,n,t){var r=e.stateNode;if(e=n.childContextTypes,"function"...
function We (line 1) | function We(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMerged...
function $e (line 1) | function $e(e,n,t){var r=e.stateNode;if(!r)throw Error(c(169));t?(e=Ge(e...
function fn (line 1) | function fn(){switch(Je()){case en:return 99;case nn:return 98;case tn:r...
function hn (line 1) | function hn(e){switch(e){case 99:return en;case 98:return nn;case 97:ret...
function yn (line 1) | function yn(e,n){return e=hn(e),He(e,n)}
function gn (line 1) | function gn(e,n,t){return e=hn(e),Ye(e,n,t)}
function bn (line 1) | function bn(e){return null===un?(un=[e],sn=Ye(en,En)):un.push(e),ln}
function vn (line 1) | function vn(){if(null!==sn){var e=sn;sn=null,Xe(e)}En()}
function En (line 1) | function En(){if(!dn&&null!==un){dn=!0;var e=0;try{var n=un;yn(99,(funct...
function kn (line 1) | function kn(e,n,t){return t/=10,1073741821-(1+((1073741821-e+n/10)/t|0))*t}
function xn (line 1) | function xn(e,n){return e===n&&(0!==e||1/e===1/n)||e!==e&&n!==n}
function Sn (line 1) | function Sn(e,t){if(_n(e,t))return!0;if("object"!==n(e)||null===e||"obje...
function Cn (line 1) | function Cn(e,n){if(e&&e.defaultProps)for(var t in n=l({},n),e=e.default...
function Nn (line 1) | function Nn(){jn=On=Tn=null}
function Pn (line 1) | function Pn(e,n){e=e.type._context,Y?(Ve(Rn,e._currentValue),e._currentV...
function Fn (line 1) | function Fn(e){var n=Rn.current;Ae(Rn),e=e.type._context,Y?e._currentVal...
function Bn (line 1) | function Bn(e,n){for(;null!==e;){var t=e.alternate;if(e.childExpirationT...
function An (line 1) | function An(e,n){Tn=e,jn=On=null,e=e.dependencies,null!==e&&null!==e.fir...
function Vn (line 1) | function Vn(e,n){if(jn!==e&&!1!==n&&0!==n)if("number"===typeof n&&107374...
function Un (line 1) | function Un(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,s...
function Dn (line 1) | function Dn(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={base...
function Mn (line 1) | function Mn(e,n){return e={expirationTime:e,suspenseConfig:n,tag:0,paylo...
function Ln (line 1) | function Ln(e,n){if(e=e.updateQueue,null!==e){e=e.shared;var t=e.pending...
function Kn (line 1) | function Kn(e,n){var t=e.alternate;null!==t&&Dn(t,e),e=e.updateQueue,t=e...
function qn (line 1) | function qn(e,n,t,r){var a=e.updateQueue;In=!1;var o=a.baseQueue,i=a.sha...
function zn (line 1) | function zn(e,n,t){if(e=n.effects,n.effects=null,null!==e)for(n=0;n<e.le...
function $n (line 1) | function $n(e,n,t,r){n=e.memoizedState,t=t(r,n),t=null===t||void 0===t?n...
function Yn (line 1) | function Yn(e,n,t,r,a,l,o){return e=e.stateNode,"function"===typeof e.sh...
function Xn (line 1) | function Xn(e,t,r){var a=!1,l=Ie,o=t.contextType;return"object"===n(o)&&...
function Qn (line 1) | function Qn(e,n,t,r){e=n.state,"function"===typeof n.componentWillReceiv...
function Zn (line 1) | function Zn(e,t,r,a){var l=e.stateNode;l.props=r,l.state=e.memoizedState...
function et (line 1) | function et(e,t,r){if(e=r.ref,null!==e&&"function"!==typeof e&&"object"!...
function nt (line 1) | function nt(e,n){if("textarea"!==e.type)throw Error(c(31,"[object Object...
function tt (line 1) | function tt(e){function t(n,t){if(e){var r=n.lastEffect;null!==r?(r.next...
function ut (line 1) | function ut(e){if(e===lt)throw Error(c(174));return e}
function st (line 1) | function st(e,n){Ve(ct,n),Ve(it,e),Ve(ot,lt),e=A(n),Ae(ot),Ve(ot,e)}
function dt (line 1) | function dt(){Ae(ot),Ae(it),Ae(ct)}
function mt (line 1) | function mt(e){var n=ut(ct.current),t=ut(ot.current);n=V(t,e.type,n),t!=...
function pt (line 1) | function pt(e){it.current===e&&(Ae(ot),Ae(it))}
function ht (line 1) | function ht(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedSta...
function yt (line 1) | function yt(e,n){return{responder:e,props:n}}
function wt (line 1) | function wt(){throw Error(c(321))}
function St (line 1) | function St(e,n){if(null===n)return!1;for(var t=0;t<n.length&&t<e.length...
function Ct (line 1) | function Ct(e,n,t,r,a,l){if(vt=l,Et=n,n.memoizedState=null,n.updateQueue...
function Rt (line 1) | function Rt(){var e={memoizedState:null,baseState:null,baseQueue:null,qu...
function Tt (line 1) | function Tt(){if(null===kt){var e=Et.alternate;e=null!==e?e.memoizedStat...
function Ot (line 1) | function Ot(e,n){return"function"===typeof n?n(e):n}
function jt (line 1) | function jt(e){var n=Tt(),t=n.queue;if(null===t)throw Error(c(311));t.la...
function Nt (line 1) | function Nt(e){var n=Tt(),t=n.queue;if(null===t)throw Error(c(311));t.la...
function Pt (line 1) | function Pt(e){var n=Rt();return"function"===typeof e&&(e=e()),n.memoize...
function Ft (line 1) | function Ft(e,n,t,r){return e={tag:e,create:n,destroy:t,deps:r,next:null...
function Bt (line 1) | function Bt(){return Tt().memoizedState}
function At (line 1) | function At(e,n,t,r){var a=Rt();Et.effectTag|=e,a.memoizedState=Ft(1|n,t...
function Vt (line 1) | function Vt(e,n,t,r){var a=Tt();r=void 0===r?null:r;var l=void 0;if(null...
function It (line 1) | function It(e,n){return At(516,4,e,n)}
function Ut (line 1) | function Ut(e,n){return Vt(516,4,e,n)}
function Dt (line 1) | function Dt(e,n){return Vt(4,2,e,n)}
function Mt (line 1) | function Mt(e,n){return"function"===typeof n?(e=e(),n(e),function(){n(nu...
function Lt (line 1) | function Lt(e,n,t){return t=null!==t&&void 0!==t?t.concat([e]):null,Vt(4...
function Kt (line 1) | function Kt(){}
function qt (line 1) | function qt(e,n){return Rt().memoizedState=[e,void 0===n?null:n],e}
function zt (line 1) | function zt(e,n){var t=Tt();n=void 0===n?null:n;var r=t.memoizedState;re...
function Gt (line 1) | function Gt(e,n){var t=Tt();n=void 0===n?null:n;var r=t.memoizedState;re...
function Wt (line 1) | function Wt(e,n,t){var r=fn();yn(98>r?98:r,(function(){e(!0)})),yn(97<r?...
function $t (line 1) | function $t(e,n,t){var r=La(),a=Gn.suspense;r=Ka(r,e,a),a={expirationTim...
function nr (line 1) | function nr(e,n){var t=_l(5,null,null,0);t.elementType="DELETED",t.type=...
function tr (line 1) | function tr(e,n){switch(e.tag){case 5:return n=Ee(n,e.type,e.pendingProp...
function rr (line 1) | function rr(e){if(er){var n=Jt;if(n){var t=n;if(!tr(e,n)){if(n=we(t),!n|...
function ar (line 1) | function ar(e){for(e=e["return"];null!==e&&5!==e.tag&&3!==e.tag&&13!==e....
function lr (line 1) | function lr(e){if(!Z||e!==Zt)return!1;if(!er)return ar(e),er=!0,!1;var n...
function or (line 1) | function or(){Z&&(Jt=Zt=null,er=!1)}
function ur (line 1) | function ur(e,n,t,r){n.child=null===e?at(n,null,t,r):rt(n,e.child,t,r)}
function sr (line 1) | function sr(e,n,t,r,a){t=t.render;var l=n.ref;return An(n,a),r=Ct(e,n,t,...
function dr (line 1) | function dr(e,n,t,r,a,l){if(null===e){var o=t.type;return"function"!==ty...
function mr (line 1) | function mr(e,n,t,r,a,l){return null!==e&&Sn(e.memoizedProps,r)&&e.ref==...
function pr (line 1) | function pr(e,n){var t=n.ref;(null===e&&null!==t||null!==e&&e.ref!==t)&&...
function fr (line 1) | function fr(e,n,t,r,a){var l=Ke(t)?Me:Ue.current;return l=Le(n,l),An(n,a...
function hr (line 1) | function hr(e,t,r,a,l){if(Ke(r)){var o=!0;We(t)}else o=!1;if(An(t,l),nul...
function yr (line 1) | function yr(e,n,t,r,a,l){pr(e,n);var o=0!==(64&n.effectTag);if(!r&&!o)re...
function gr (line 1) | function gr(e){var n=e.stateNode;n.pendingContext?ze(e,n.pendingContext,...
function _r (line 1) | function _r(e,n,t){var r,a=n.mode,l=n.pendingProps,o=ft.current,i=!1;if(...
function wr (line 1) | function wr(e,n){e.expirationTime<n&&(e.expirationTime=n);var t=e.altern...
function Sr (line 1) | function Sr(e,n,t,r,a,l){var o=e.memoizedState;null===o?e.memoizedState=...
function Cr (line 1) | function Cr(e,n,t){var r=n.pendingProps,a=r.revealOrder,l=r.tail;if(ur(e...
function Rr (line 1) | function Rr(e,n,t){null!==e&&(n.dependencies=e.dependencies);var r=n.exp...
function Tr (line 1) | function Tr(e){e.effectTag|=4}
function jr (line 1) | function jr(e,n){switch(e.tailMode){case"hidden":n=e.tail;for(var t=null...
function Nr (line 1) | function Nr(e,n,t){var r=n.pendingProps;switch(n.tag){case 2:case 16:cas...
function Pr (line 1) | function Pr(e){switch(e.tag){case 1:Ke(e.type)&&qe();var n=e.effectTag;r...
function Fr (line 1) | function Fr(e,n){return{value:e,source:n,stack:Pe(n)}}
function Ar (line 1) | function Ar(e,n){var t=n.source,r=n.stack;null===r&&null!==t&&(r=Pe(t)),...
function Vr (line 1) | function Vr(e,n){try{n.props=e.memoizedProps,n.state=e.memoizedState,n.c...
function Ir (line 1) | function Ir(e){var n=e.ref;if(null!==n)if("function"===typeof n)try{n(nu...
function Ur (line 1) | function Ur(e,n){switch(n.tag){case 0:case 11:case 15:case 22:return;cas...
function Dr (line 1) | function Dr(e,n){if(n=n.updateQueue,n=null!==n?n.lastEffect:null,null!==...
function Mr (line 1) | function Mr(e,n){if(n=n.updateQueue,n=null!==n?n.lastEffect:null,null!==...
function Lr (line 1) | function Lr(e,n,t){switch(t.tag){case 0:case 11:case 15:case 22:return v...
function Kr (line 1) | function Kr(e,n,t){switch("function"===typeof El&&El(n),n.tag){case 0:ca...
function qr (line 1) | function qr(e,n,t){for(var r=n;;)if(Kr(e,r,t),null===r.child||X&&4===r.t...
function zr (line 1) | function zr(e){var n=e.alternate;e["return"]=null,e.child=null,e.memoize...
function Gr (line 1) | function Gr(e){if(Q){e=e.stateNode.containerInfo;var n=fe(e);ge(e,n)}}
function Wr (line 1) | function Wr(e){return 5===e.tag||3===e.tag||4===e.tag}
function $r (line 1) | function $r(e){if(X){e:{for(var n=e["return"];null!==n;){if(Wr(n)){var t...
function Hr (line 1) | function Hr(e,n,t){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.sta...
function Yr (line 1) | function Yr(e,n,t){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.sta...
function Xr (line 1) | function Xr(e,n,t){for(var r,a,l=n,o=!1;;){if(!o){o=l["return"];e:for(;;...
function Qr (line 1) | function Qr(e,n){if(X){switch(n.tag){case 0:case 11:case 14:case 15:case...
function Zr (line 1) | function Zr(e){var n=e;if(null===e.memoizedState)var t=!1;else t=!0,n=e....
function Jr (line 1) | function Jr(e){var n=e.updateQueue;if(null!==n){e.updateQueue=null;var t...
function na (line 1) | function na(e,n,t){t=Mn(t,null),t.tag=3,t.payload={element:null};var r=n...
function ta (line 1) | function ta(e,n,t){t=Mn(t,null),t.tag=3;var r=e.type.getDerivedStateFrom...
function La (line 1) | function La(){return(ga&(ua|sa))!==ia?1073741821-(pn()/10|0):0!==Ma?Ma:M...
function Ka (line 1) | function Ka(e,n,t){if(n=n.mode,0===(2&n))return 1073741823;var r=fn();if...
function qa (line 1) | function qa(e,n){if(50<Ua)throw Ua=0,Da=null,Error(c(185));if(e=za(e,n),...
function za (line 1) | function za(e,n){e.expirationTime<n&&(e.expirationTime=n);var t=e.altern...
function Ga (line 1) | function Ga(e){var n=e.lastExpiredTime;if(0!==n)return n;if(n=e.firstPen...
function Wa (line 1) | function Wa(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741...
function $a (line 1) | function $a(e,n){if(Ma=0,n)return n=La(),Al(e,n),Wa(e),null;var t=Ga(e);...
function Ha (line 1) | function Ha(e){var n=e.lastExpiredTime;if(n=0!==n?n:1073741823,(ga&(ua|s...
function Ya (line 1) | function Ya(e,n){Al(e,n),Wa(e),(ga&(ua|sa))===ia&&vn()}
function Xa (line 1) | function Xa(){if(null!==Ia){var e=Ia;Ia=null,e.forEach((function(e,n){Al...
function Qa (line 1) | function Qa(e,n){var t=ga;ga|=1;try{return e(n)}finally{ga=t,ga===ia&&vn...
function Za (line 1) | function Za(e,n){if((ga&(ua|sa))!==ia)throw Error(c(187));var t=ga;ga|=1...
function Ja (line 1) | function Ja(e,n){e.finishedWork=null,e.finishedExpirationTime=0;var t=e....
function el (line 1) | function el(e,t){do{try{if(Nn(),gt.current=Ht,_t)for(var r=Et.memoizedSt...
function nl (line 1) | function nl(){var e=la.current;return la.current=Ht,null===e?Ht:e}
function tl (line 1) | function tl(e,n){e<_a&&2<e&&(_a=e),null!==n&&e<wa&&2<e&&(wa=e,Sa=n)}
function rl (line 1) | function rl(e){e>Ca&&(Ca=e)}
function al (line 1) | function al(){for(;null!==va;)va=ol(va)}
function ll (line 1) | function ll(){for(;null!==va&&!on();)va=ol(va)}
function ol (line 1) | function ol(e){var n=ra(e.alternate,e,Ea);return e.memoizedProps=e.pendi...
function il (line 1) | function il(e){va=e;do{var n=va.alternate;if(e=va["return"],0===(2048&va...
function cl (line 1) | function cl(e){var n=e.expirationTime;return e=e.childExpirationTime,n>e...
function ul (line 1) | function ul(e){var n=fn();return yn(99,sl.bind(null,e,n)),null}
function sl (line 1) | function sl(e,n){do{ml()}while(null!==Aa);if((ga&(ua|sa))!==ia)throw Err...
function dl (line 1) | function dl(){for(;null!==ja;){var e=ja.effectTag;0!==(256&e)&&Ur(ja.alt...
function ml (line 1) | function ml(){if(90!==Va){var e=97<Va?97:Va;return Va=90,yn(e,pl)}}
function pl (line 1) | function pl(){if(null===Aa)return!1;var e=Aa;if(Aa=null,(ga&(ua|sa))!==i...
function fl (line 1) | function fl(e,n,t){n=Fr(t,n),n=na(e,n,1073741823),Ln(e,n),e=za(e,1073741...
function hl (line 1) | function hl(e,n){if(3===e.tag)fl(e,e,n);else for(var t=e["return"];null!...
function yl (line 1) | function yl(e,n,t){var r=e.pingCache;null!==r&&r["delete"](n),ba===e&&Ea...
function gl (line 1) | function gl(e,n){var t=e.stateNode;null!==t&&t["delete"](n),n=0,0===n&&(...
function kl (line 1) | function kl(e){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)re...
function xl (line 1) | function xl(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this[...
function _l (line 1) | function _l(e,n,t,r){return new xl(e,n,t,r)}
function wl (line 1) | function wl(e){return e=e.prototype,!(!e||!e.isReactComponent)}
function Sl (line 1) | function Sl(e){if("function"===typeof e)return wl(e)?1:0;if(void 0!==e&&...
function Cl (line 1) | function Cl(e,n){var t=e.alternate;return null===t?(t=_l(e.tag,n,e.key,e...
function Rl (line 1) | function Rl(e,t,r,a,l,o){var i=2;if(a=e,"function"===typeof e)wl(e)&&(i=...
function Tl (line 1) | function Tl(e,n,t,r){return e=_l(7,e,r,n),e.expirationTime=t,e}
function Ol (line 1) | function Ol(e,n,t){return e=_l(6,e,null,n),e.expirationTime=t,e}
function jl (line 1) | function jl(e,n,t){return n=_l(4,null!==e.children?e.children:[],e.key,n...
function Nl (line 1) | function Nl(e,n,t){this.tag=n,this.current=null,this.containerInfo=e,thi...
function Pl (line 1) | function Pl(e,n){var t=e.firstSuspendedTime;return e=e.lastSuspendedTime...
function Fl (line 1) | function Fl(e,n){var t=e.firstSuspendedTime,r=e.lastSuspendedTime;t<n&&(...
function Bl (line 1) | function Bl(e,n){n>e.firstPendingTime&&(e.firstPendingTime=n);var t=e.fi...
function Al (line 1) | function Al(e,n){var t=e.lastExpiredTime;(0===t||t>n)&&(e.lastExpiredTim...
function Il (line 1) | function Il(n){if(null===Vl)try{var t=("require"+Math.random()).slice(0,...
function Ul (line 1) | function Ul(e){var n=e._reactInternalFiber;if(void 0===n){if("function"=...
function Dl (line 1) | function Dl(e,n){e=e.memoizedState,null!==e&&null!==e.dehydrated&&e.retr...
function Ml (line 1) | function Ml(e,n){Dl(e,n),(e=e.alternate)&&Dl(e,n)}
function zl (line 1) | function zl(e){try{ql(),Il((function(){ql()?zl(e):e()}))}catch(n){e(n)}}
function t (line 1) | function t(){Gl--,Ll.current=r,bl.current=a}
function a (line 1) | function a(e){return e&&e.__esModule?e:{default:e}}
function l (line 1) | function l(){return l=Object.assign||function(e){for(var n=1;n<arguments...
function o (line 1) | function o(e,n){if(null==e)return{};var t,r,a=i(e,n);if(Object.getOwnPro...
function i (line 1) | function i(e,n){if(null==e)return{};var t,r,a={},l=Object.keys(e);for(r=...
function r (line 1) | function r(){var e=a(t("q1tI"));return r=function(){return e},e}
function a (line 1) | function a(e){return e&&e.__esModule?e:{default:e}}
function C (line 1) | function C(e,n){var t=e.length;e.push(n);e:for(;;){var r=t-1>>>1,a=e[r];...
function R (line 1) | function R(e){return e=e[0],void 0===e?null:e}
function T (line 1) | function T(e){var n=e[0];if(void 0!==n){var t=e.pop();if(t!==n){e[0]=t;e...
function O (line 1) | function O(e,n){var t=e.sortIndex-n.sortIndex;return 0!==t?t:e.id-n.id}
function U (line 1) | function U(e){for(var n=R(N);null!==n;){if(null===n.callback)T(N);else{i...
function D (line 1) | function D(e){if(I=!1,U(e),!V)if(null!==R(j))V=!0,r(M);else{var n=R(N);n...
function M (line 1) | function M(e,t){V=!1,I&&(I=!1,l()),A=!0;var r=B;try{for(U(t),F=R(j);null...
function L (line 1) | function L(e){switch(e){case 1:return-1;case 2:return 250;case 5:return ...
function m (line 1) | function m(e){return e&&e.__esModule?e:{default:e}}
function p (line 1) | function p(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function f (line 1) | function f(e){if(e&&e.__esModule)return e;if(null===e||"object"!==h(e)&&...
function h (line 1) | function h(e){return h="function"===typeof Symbol&&"symbol"===typeof Sym...
function y (line 1) | function y(e){return E(e)||v(e)||b(e)||g()}
function g (line 1) | function g(){throw new TypeError("Invalid attempt to spread non-iterable...
function b (line 1) | function b(e,n){if(e){if("string"===typeof e)return k(e,n);var t=Object....
function v (line 1) | function v(e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(...
function E (line 1) | function E(e){if(Array.isArray(e))return k(e)}
function k (line 1) | function k(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function x (line 1) | function x(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function _ (line 1) | function _(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function w (line 1) | function w(e,n,t){return n&&_(e.prototype,n),t&&_(e,t),e}
function S (line 1) | function S(e,n){if("function"!==typeof n&&null!==n)throw new TypeError("...
function C (line 1) | function C(e,n){return C=Object.setPrototypeOf||function(e,n){return e._...
function R (line 1) | function R(e){var n=j();return function(){var t,r=N(e);if(n){var a=N(thi...
function T (line 1) | function T(e,n){return!n||"object"!==h(n)&&"function"!==typeof n?O(e):n}
function O (line 1) | function O(e){if(void 0===e)throw new ReferenceError("this hasn't been i...
function j (line 1) | function j(){if("undefined"===typeof Reflect||!Reflect.construct)return!...
function N (line 1) | function N(e){return N=Object.setPrototypeOf?Object.getPrototypeOf:funct...
function F (line 1) | function F(e,n){if(!e)return 0;if(!e.getClientRects().length)return 0;va...
function t (line 1) | function t(){var e;x(this,t);for(var l=arguments.length,o=new Array(l),i...
function r (line 1) | function r(){return r=Object.assign||function(e){for(var n=1;n<arguments...
function c (line 1) | function c(){var e=[{path:"/_demos/index",component:t("VqQD")["default"]...
function a (line 1) | function a(){}
function l (line 1) | function l(){}
function e (line 1) | function e(e,n,t,a,l,o){if(o!==r){var i=new Error("Calling PropTypes val...
function n (line 1) | function n(){return e}
function u (line 1) | function u(e){return r.isMemo(e)?i:c[e["$$typeof"]]||a}
function y (line 1) | function y(e,n,t){if("string"!==typeof n){if(h){var r=f(n);r&&r!==h&&y(e...
function t (line 1) | function t(n,t){var r="doc-comment",a=e.languages[n];if(a){var l=a[r];if...
function r (line 1) | function r(e,n){"string"===typeof e&&(e=[e]),e.forEach((function(e){t(e,...
function n (line 1) | function n(e,n){return"___"+e.toUpperCase()+n+"___"}
function o (line 1) | function o(i){for(var c=0;c<i.length;c++){if(a>=l.length)break;var u=i[c...
function o (line 1) | function o(n,r){if(e.languages[n])return{pattern:RegExp("((?:"+r+")\\s*)...
function i (line 1) | function i(e,n){return"___"+n.toUpperCase()+"_"+e+"___"}
function c (line 1) | function c(n,t,r){var a={code:n,grammar:t,language:r};return e.hooks.run...
function u (line 1) | function u(n){var t={};t["interpolation-punctuation"]=a;var l=e.tokenize...
function s (line 1) | function s(n,t,r){var a=e.tokenize(n,{interpolation:{pattern:RegExp(l),l...
function m (line 1) | function m(e){return"string"===typeof e?e:Array.isArray(e)?e.map(m).join...
function t (line 1) | function t(n){for(var r=0,a=n.length;r<a;r++){var l=n[r];if("string"!==t...
function t (line 1) | function t(e,t){return e=e.replace(/<inner>/g,n),t&&(e=e+"|"+e.replace(/...
function n (line 1) | function n(e){if(e&&"string"!==typeof e)for(var t=0,r=e.length;t<r;t++){...
function s (line 1) | function s(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function d (line 1) | function d(){return d=Object.assign||function(e){for(var n=1;n<arguments...
function g (line 1) | function g(e,n){var t={};for(var r in e)Object.prototype.hasOwnProperty....
function n (line 1) | function n(){var n=this,t=[],r=arguments.length;while(r--)t[r]=arguments...
function n (line 1) | function n(){for(var n,t=arguments.length,r=new Array(t),a=0;a<t;a++)r[a...
function n (line 1) | function n(){for(var n,t=arguments.length,r=new Array(t),a=0;a<t;a++)r[a...
function g (line 1) | function g(e){return!!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)}
function x (line 1) | function x(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=...
function s (line 1) | function s(e){return e&&e.__esModule?e:{default:e}}
function d (line 1) | function d(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function m (line 1) | function m(e){if(e&&e.__esModule)return e;if(null===e||"object"!==p(e)&&...
function p (line 1) | function p(e){return p="function"===typeof Symbol&&"symbol"===typeof Sym...
function f (line 1) | function f(){return f=Object.assign||function(e){for(var n=1;n<arguments...
function h (line 1) | function h(e,n){if(null==e)return{};var t,r,a=y(e,n);if(Object.getOwnPro...
function y (line 1) | function y(e,n){if(null==e)return{};var t,r,a={},l=Object.keys(e);for(r=...
function g (line 1) | function g(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){va...
function b (line 1) | function b(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[...
function v (line 1) | function v(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function E (line 1) | function E(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function k (line 1) | function k(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function x (line 1) | function x(e,n,t){return n&&k(e.prototype,n),t&&k(e,t),e}
function _ (line 1) | function _(e,n){if("function"!==typeof n&&null!==n)throw new TypeError("...
function w (line 1) | function w(e,n){return w=Object.setPrototypeOf||function(e,n){return e._...
function S (line 1) | function S(e){var n=T();return function(){var t,r=O(e);if(n){var a=O(thi...
function C (line 1) | function C(e,n){return!n||"object"!==p(n)&&"function"!==typeof n?R(e):n}
function R (line 1) | function R(e){if(void 0===e)throw new ReferenceError("this hasn't been i...
function T (line 1) | function T(){if("undefined"===typeof Reflect||!Reflect.construct)return!...
function O (line 1) | function O(e){return O=Object.setPrototypeOf?Object.getPrototypeOf:funct...
function t (line 1) | function t(){var e;E(this,t);for(var r=arguments.length,l=new Array(r),o...
function i (line 1) | function i(e,n){return r(e)||a(e,n)||l(e,n)||o()}
function a (line 1) | function a(e,n){if(!r[e]){r[e]={};for(var t=0;t<e.length;t++)r[e][e.char...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function o (line 1) | function o(e){return e&&e.__esModule?e:{default:e}}
function i (line 1) | function i(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function c (line 1) | function c(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function u (line 1) | function u(e,n){return f(e)||p(e,n)||d(e,n)||s()}
function s (line 1) | function s(){throw new TypeError("Invalid attempt to destructure non-ite...
function d (line 1) | function d(e,n){if(e){if("string"===typeof e)return m(e,n);var t=Object....
function m (line 1) | function m(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function p (line 1) | function p(e,n){if("undefined"!==typeof Symbol&&Symbol.iterator in Objec...
function f (line 1) | function f(e){if(Array.isArray(e))return e}
function i (line 1) | function i(e,n){try{return decodeURIComponent(e.join(""))}catch(a){}if(1...
function c (line 1) | function c(e){try{return decodeURIComponent(e)}catch(r){for(var n=e.matc...
function u (line 1) | function u(e){var n={"%FE%FF":"\ufffd\ufffd","%FF%FE":"\ufffd\ufffd"},t=...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function s (line 1) | function s(e){return e&&e.__esModule?e:{default:e}}
function d (line 1) | function d(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function m (line 1) | function m(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function l (line 1) | function l(e,n){if(!e){if(r)throw new Error(a);throw new Error(a+": "+(n...
function r (line 1) | function r(e,n,t,r,a,l,o){try{var i=e[l](o),c=i.value}catch(u){return vo...
function a (line 1) | function a(e){return function(){var n=this,t=arguments;return new Promis...
function a (line 1) | function a(e){if(Array.isArray(e))return r(e)}
function o (line 1) | function o(e,n){if(null==e)return{};var t,r,a={},l=Object.keys(e);for(r=...
function i (line 1) | function i(e,n){if(null==e)return{};var t,r,a=o(e,n);if(Object.getOwnPro...
function a (line 1) | function a(e){return e&&e.__esModule?e:{default:e}}
function l (line 1) | function l(){return l=Object.assign||function(e){for(var n=1;n<arguments...
function o (line 1) | function o(e,n){if(null==e)return{};var t,r,a=i(e,n);if(Object.getOwnPro...
function i (line 1) | function i(e,n){if(null==e)return{};var t,r,a={},l=Object.keys(e);for(r=...
function r (line 1) | function r(){this.constructor=n}
function n (line 1) | function n(){var n=null!==e&&e.apply(this,arguments)||this;return n.stat...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function o (line 1) | function o(e){return e&&e.__esModule?e:{default:e}}
function i (line 1) | function i(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function c (line 1) | function c(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function u (line 1) | function u(e){return e&&e.__esModule?e:{default:e}}
function t (line 1) | function t(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function a (line 1) | function a(e){return e&&e.__esModule?e:{default:e}}
function e (line 1) | function e(){}
function i (line 1) | function i(e,n){var t=r.length;while(t--){var a=r[t],l=a[0],o=a[1],i=o[0...
function l (line 1) | function l(e){return e&&e.__esModule?e:{default:e}}
function a (line 1) | function a(e){if(e&&e.nodeName&&"TEXTAREA"===e.nodeName&&!t.has(e)){var ...
function l (line 1) | function l(e){var n=t.get(e);n&&n.destroy()}
function o (line 1) | function o(e){var n=t.get(e);n&&n.update()}
function e (line 1) | function e(){}
function t (line 1) | function t(e){return e&&e.__esModule?e:{default:e}}
function m (line 1) | function m(e){return m="function"===typeof Symbol&&"symbol"===typeof Sym...
function p (line 1) | function p(e,n,t,r,a,l,o){try{var i=e[l](o),c=i.value}catch(u){return vo...
function f (line 1) | function f(e){return function(){var n=this,t=arguments;return new Promis...
function h (line 1) | function h(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function y (line 1) | function y(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function g (line 1) | function g(e,n,t){return n&&y(e.prototype,n),t&&y(e,t),e}
function b (line 1) | function b(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function v (line 1) | function v(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){va...
function E (line 1) | function E(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[...
function k (line 1) | function k(e){return x(e)||_(e)||w(e)||C()}
function x (line 1) | function x(e){if(Array.isArray(e))return e}
function _ (line 1) | function _(e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(...
function w (line 1) | function w(e,n){if(e){if("string"===typeof e)return S(e,n);var t=Object....
function S (line 1) | function S(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function C (line 1) | function C(){throw new TypeError("Invalid attempt to destructure non-ite...
function R (line 1) | function R(e){if("undefined"===typeof Symbol||null==e[Symbol.iterator]){...
function T (line 1) | function T(e,n){if(!e)throw new Error(n)}
function O (line 1) | function O(e){var n=e.fns,t=e.args;if(1===n.length)return n[0];var r=n.p...
function j (line 1) | function j(e){return!!e&&"object"===m(e)&&"function"===typeof e.then}
function e (line 1) | function e(n){h(this,e),this.hooks={},this.validKeys=(null===n||void 0==...
function V (line 1) | function V(e){var n=e(),t={loading:!0,loaded:null,error:null};return t.p...
function I (line 1) | function I(e){var n={loading:!1,loaded:{},error:null},t=[];try{Object.ke...
function U (line 1) | function U(e){return e&&e.__esModule?e["default"]:e}
function D (line 1) | function D(e,n){return s.a.createElement(U(e),n)}
function M (line 1) | function M(e,n){var t=Object.assign({loader:null,loading:null,delay:200,...
function e (line 1) | function e(n,t){h(this,e),this._loadFn=n,this._opts=t,this._callbacks=ne...
function K (line 1) | function K(e){return M(V,e)}
function q (line 1) | function q(e){if("function"!==typeof e.render)throw new Error("LoadableM...
function z (line 1) | function z(e,n){var t=[];while(e.length){var r=e.pop();t.push(r(n))}retu...
function G (line 1) | function G(e){var n=K,t={loading:function(e){e.error,e.isLoading;return ...
function t (line 1) | function t(e,n){if("undefined"!==typeof Symbol&&Symbol.iterator in Objec...
function o (line 1) | function o(e){if(null===e||void 0===e)throw new TypeError("Object.assign...
function i (line 1) | function i(){try{if(!Object.assign)return!1;var e=new String("abc");if(e...
function a (line 1) | function a(e){return e&&e.__esModule?e:{default:e}}
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function c (line 1) | function c(e){return e&&e.__esModule?e:{default:e}}
function u (line 1) | function u(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function s (line 1) | function s(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function d (line 1) | function d(e){var n=document.getElementById(e);return n&&(document.docum...
function p (line 1) | function p(e,n){var t,r;d(n)&&(null===(t=m.current)||void 0===t||null===...
function e (line 1) | function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function N (line 1) | function N(){var e=0<arguments.length&&void 0!==arguments[0]?arguments[0...
function P (line 1) | function P(e){return u(f(T,"document.getElementById"))?[].concat(C(y(h(e...
function F (line 1) | function F(e){var n=[].concat(C(new Set([].concat(C(function e(n){return...
function n (line 1) | function n(e){var t;b(this,n);for(var r=arguments.length,a=Array(1<r?r-1...
function n (line 1) | function n(){var e,t,r;b(this,n);for(var a=arguments.length,l=Array(a),o...
function t (line 1) | function t(){var e,n,r;b(this,t);for(var a=arguments.length,l=Array(a),o...
function n (line 1) | function n(){var e,t,r;b(this,n);for(var a=arguments.length,l=Array(a),o...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function c (line 1) | function c(e){return e&&e.__esModule?e:{default:e}}
function u (line 1) | function u(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function s (line 1) | function s(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function t (line 1) | function t(e){if(Array.isArray(e))return e}
function l (line 1) | function l(e){return e&&e.__esModule?e:{default:e}}
function a (line 1) | function a(e,n){if(e){if("string"===typeof e)return Object(r["a"])(e,n);...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function l (line 1) | function l(e){return e&&e.__esModule?e:{default:e}}
function o (line 1) | function o(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){va...
function i (line 1) | function i(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[...
function c (line 1) | function c(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function i (line 1) | function i(e){return r(e)||a(e)||l(e)||o()}
function a (line 1) | function a(e){var n=r(e,"line-height"),t=parseFloat(n,10);if(n===t+""){v...
function u (line 1) | function u(e){return a["createElement"]("input",Object(c["a"])({},e,{typ...
function i (line 1) | function i(){for(var e=[],n=0;n<arguments.length;n++){var t=arguments[n]...
function n (line 1) | function n(n){var t;return t=e.call(this,n)||this,t.state={location:n.hi...
function n (line 1) | function n(){for(var n,t=arguments.length,r=new Array(t),a=0;a<t;a++)r[a...
function n (line 1) | function n(){return e.apply(this,arguments)||this}
function x (line 1) | function x(e){var n=e.message,t=e.when,r=void 0===t||t;return l.a.create...
function C (line 1) | function C(e){if(_[e])return _[e];var n=d.a.compile(e);return S<w&&(_[e]...
function R (line 1) | function R(e,n){return void 0===e&&(e="/"),void 0===n&&(n={}),"/"===e?e:...
function T (line 1) | function T(e){var n=e.computedMatch,t=e.to,r=e.push,a=void 0!==r&&r;retu...
function P (line 1) | function P(e,n){var t=""+n.end+n.strict+n.sensitive,r=O[t]||(O[t]={});if...
function F (line 1) | function F(e,n){void 0===n&&(n={}),("string"===typeof n||Array.isArray(n...
function n (line 1) | function n(){return e.apply(this,arguments)||this}
function A (line 1) | function A(e){return"/"===e.charAt(0)?e:"/"+e}
function V (line 1) | function V(e,n){return e?Object(u["a"])({},n,{pathname:A(e)+n.pathname}):n}
function I (line 1) | function I(e,n){if(!e)return n;var t=A(e);return 0!==n.pathname.indexOf(...
function U (line 1) | function U(e){return"string"===typeof e?e:Object(o["e"])(e)}
function D (line 1) | function D(e){return function(){Object(c["a"])(!1)}}
function M (line 1) | function M(){}
function n (line 1) | function n(){for(var n,t=arguments.length,r=new Array(t),a=0;a<t;a++)r[a...
function n (line 1) | function n(){return e.apply(this,arguments)||this}
function q (line 1) | function q(e){var n="withRouter("+(e.displayName||e.name)+")",t=function...
function G (line 1) | function G(){return z(y)}
function W (line 1) | function W(){return z(b).location}
function $ (line 1) | function $(){var e=z(b).match;return e?e.params:{}}
function H (line 1) | function H(e){var n=W(),t=z(b).match;return e?F(n.pathname,e):t}
function e (line 1) | function e(){}
function i (line 1) | function i(e,n,t){return void 0===t&&(t=[]),e.some((function(e){var a=e....
function c (line 1) | function c(e,n,t){return void 0===n&&(n={}),void 0===t&&(t={}),e?o.a.cre...
function l (line 1) | function l(e){return e&&e.__esModule?e:{default:e}}
function e (line 1) | function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function u (line 1) | function u(e,n,t,r){var a=n&&n.prototype instanceof y?n:y,l=Object.creat...
function s (line 1) | function s(e,n,t){try{return{type:"normal",arg:e.call(n,t)}}catch(r){ret...
function y (line 1) | function y(){}
function g (line 1) | function g(){}
function b (line 1) | function b(){}
function _ (line 1) | function _(e){["next","throw","return"].forEach((function(n){e[n]=functi...
function w (line 1) | function w(e,t){function r(l,o,i,c){var u=s(e[l],e,o);if("throw"!==u.typ...
function S (line 1) | function S(e,n,t){var r=d;return function(a,l){if(r===p)throw new Error(...
function C (line 1) | function C(e,n){var r=e.iterator[n.method];if(r===t){if(n.delegate=null,...
function R (line 1) | function R(e){var n={tryLoc:e[0]};1 in e&&(n.catchLoc=e[1]),2 in e&&(n.f...
function T (line 1) | function T(e){var n=e.completion||{};n.type="normal",delete n.arg,e.comp...
function O (line 1) | function O(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(R,this),this.r...
function j (line 1) | function j(e){if(e){var n=e[o];if(n)return n.call(e);if("function"===typ...
function N (line 1) | function N(){return{value:t,done:!0}}
function r (line 1) | function r(r,a){return i.type="throw",i.arg=e,n.next=r,a&&(n.method="nex...
function t (line 1) | function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{...
function s (line 1) | function s(e){return s="function"===typeof Symbol&&"symbol"===o(Symbol.i...
function d (line 1) | function d(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[...
function m (line 1) | function m(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function p (line 1) | function p(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function f (line 1) | function f(e,n,t){return n&&p(e.prototype,n),t&&p(e,t),e}
function h (line 1) | function h(e,n){return!n||"object"!==s(n)&&"function"!==typeof n?y(e):n}
function y (line 1) | function y(e){if(void 0===e)throw new ReferenceError("this hasn't been i...
function g (line 1) | function g(e){return g=Object.setPrototypeOf?Object.getPrototypeOf:funct...
function b (line 1) | function b(e,n){if("function"!==typeof n&&null!==n)throw new TypeError("...
function v (line 1) | function v(e,n){return v=Object.setPrototypeOf||function(e,n){return e._...
function E (line 1) | function E(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function n (line 1) | function n(){return m(this,n),h(this,g(n).apply(this,arguments))}
function t (line 1) | function t(){throw new TypeError("Invalid attempt to spread non-iterable...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function c (line 1) | function c(e){return e&&e.__esModule?e:{default:e}}
function u (line 1) | function u(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function s (line 1) | function s(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function i (line 1) | function i(e){var n,t,r="";if("string"===typeof e||"number"===typeof e)r...
function d (line 1) | function d(e){return Object.keys(e).reduce((function(n,t){var r=t;return...
function f (line 1) | function f(e){var n=e.hoverDuration,t=e.hoverDelay,r=e.onLongTap,l=e.onT...
function O (line 1) | function O(e,n){return e+n.charAt(0).toUpperCase()+n.substring(1)}
function D (line 1) | function D(){var e=U;return U+=1,e}
function L (line 1) | function L(e,n){return e+n.charAt(0).toUpperCase()+n.substring(1)}
function e (line 1) | function e(e){this.plugins=e}
function Q (line 1) | function Q(){for(var e=[],n=0;n<arguments.length;n++)e[n]=arguments[n];r...
function Z (line 1) | function Z(e){X=Q(e)}
function J (line 1) | function J(e){return X[e]}
function ee (line 1) | function ee(){X=Y}
function ce (line 1) | function ce(e,n){var t,r;e=e.replace("className","class");var a=J("hostC...
function ue (line 1) | function ue(e,n){return e.toLowerCase().endsWith("style")&&"[object Obje...
function se (line 1) | function se(e,n,t){return[ce(e,t),ue(e,n)]}
function de (line 1) | function de(e,n){if(!e)return e;var t={};for(var r in e)t[ce(r,n)]=ue(r,...
function fe (line 1) | function fe(e){return e.type===I?{id:e.id,type:e.type,text:e.text}:{id:e...
function he (line 1) | function he(e,n,t){return se(e,n,t)}
function e (line 1) | function e(e){var n=e.id,t=e.type,r=e.props,a=e.container;this.mounted=!...
function ke (line 1) | function ke(e,n){var t,r=e.parent;r?(null===(t=r.props)||void 0===t?void...
function xe (line 1) | function xe(e,n){Ee[n]=!0,ke(e,n)}
function Se (line 1) | function Se(e){return be===e&&console.warn("DEPRECATION: remax \u5df2\u6...
function Ce (line 1) | function Ce(e,n,t){if(t)return t.stopPropagation=function(){xe(e,n)},t}
function Re (line 1) | function Re(e,n,t){return Se(e)?function(r){for(var a=[],l=1;l<arguments...
function Pe (line 1) | function Pe(e,n){var t,r,a=null,l=e,o=n,i=null;for(t in l)if(!Object.pro...
function De (line 1) | function De(e,n,t){var r,a,l={};try{for(var o=Fe(Object.keys(e)),i=o.nex...
function r (line 1) | function r(){this.constructor=n}
function n (line 1) | function n(){return null!==e&&e.apply(this,arguments)||this}
function Qe (line 1) | function Qe(e){if(void 0===e)throw new ReferenceError("this hasn't been ...
function tn (line 1) | function tn(e,n){if(!e){var t=new Error("loadable: "+n);throw t.framesTo...
function un (line 1) | function un(e){return"function"===typeof e?{requireAsync:e,resolve:funct...
function mn (line 1) | function mn(e){var n=e.defaultResolveComponent,t=void 0===n?dn:n,r=e.ren...
function pn (line 1) | function pn(e){return e.__esModule?e["default"]:e["default"]||e}
function n (line 1) | function n(){return Sn()(this,n),On()(this,(n.__proto__||Object.getProto...
function Vn (line 1) | function Vn(e,n){e.transform=n,e.webkitTransform=n,e.MozTransform=n}
function n (line 1) | function n(){Sn()(this,n);var e=On()(this,(n.__proto__||Object.getProtot...
function nt (line 1) | function nt(e){var n=a["useRef"](et());return a["useEffect"]((function()...
function y (line 1) | function y(e){"Enter"===e.key&&"function"===typeof o&&o(e),"function"===...
function m (line 1) | function m(){switch(i){case"reLaunch":window.location.href=window.locati...
function h (line 1) | function h(e){if(f.current=!0,"function"===typeof l)return l(e)}
function y (line 1) | function y(e){if(f.current=!1,"function"===typeof o)return o(e)}
function g (line 1) | function g(e){if(f.current=!1,"function"===typeof i)return i(e)}
function b (line 1) | function b(e){if(f.current=!1,"function"===typeof u)return u(e)}
function f (line 1) | function f(e){"Enter"===e.key&&"function"===typeof r&&r(e),"function"===...
function d (line 1) | function d(e){switch(e.arrayFormat){case"index":return function(n){retur...
function m (line 1) | function m(e){var n;switch(e.arrayFormat){case"index":return function(e,...
function p (line 1) | function p(e){if("string"!==typeof e||1!==e.length)throw new TypeError("...
function f (line 1) | function f(e,n){return n.encode?n.strict?i(e):encodeURIComponent(e):e}
function h (line 1) | function h(e,n){return n.decode?c(e):e}
function y (line 1) | function y(e){return Array.isArray(e)?e.sort():"object"===l(e)?y(Object....
function g (line 1) | function g(e){var n=e.indexOf("#");return-1!==n&&(e=e.slice(0,n)),e}
function b (line 1) | function b(e){var n="",t=e.indexOf("#");return-1!==t&&(n=e.slice(t)),n}
function v (line 1) | function v(e){e=g(e);var n=e.indexOf("?");return-1===n?"":e.slice(n+1)}
function E (line 1) | function E(e,n){return n.parseNumbers&&!Number.isNaN(Number(e))&&"string...
function k (line 1) | function k(e,n){n=Object.assign({decode:!0,sort:!0,arrayFormat:"none",ar...
function l (line 1) | function l(e){return"/"===e.charAt(0)}
function o (line 1) | function o(e,n){for(var t=n,r=t+1,a=e.length;r<a;t+=1,r+=1)e[t]=e[r];e.p...
function i (line 1) | function i(e,n){void 0===n&&(n="");var t,r=e&&e.split("/")||[],a=n&&n.sp...
function u (line 1) | function u(e){return e.valueOf?e.valueOf():Object.prototype.valueOf.call...
function s (line 1) | function s(e,n){if(e===n)return!0;if(null==e||null==n)return!1;if(Array....
function h (line 1) | function h(e){return"/"===e.charAt(0)?e:"/"+e}
function y (line 1) | function y(e){return"/"===e.charAt(0)?e.substr(1):e}
function g (line 1) | function g(e,n){return 0===e.toLowerCase().indexOf(n.toLowerCase())&&-1!...
function b (line 1) | function b(e,n){return g(e,n)?e.substr(n.length):e}
function v (line 1) | function v(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}
function E (line 1) | function E(e){var n=e||"/",t="",r="",a=n.indexOf("#");-1!==a&&(r=n.subst...
function k (line 1) | function k(e){var n=e.pathname,t=e.search,r=e.hash,a=n||"/";return t&&"?...
function x (line 1) | function x(e,n,t,r){var l;"string"===typeof e?(l=E(e),l.query=l.search?p...
function _ (line 1) | function _(e,n){return e.pathname===n.pathname&&e.search===n.search&&e.h...
function w (line 1) | function w(){var e=null;function n(n){return e=n,function(){e===n&&(e=nu...
function C (line 1) | function C(e,n){n(window.confirm(e))}
function R (line 1) | function R(){var e=window.navigator.userAgent;return(-1===e.indexOf("And...
function T (line 1) | function T(){return-1===window.navigator.userAgent.indexOf("Trident")}
function O (line 1) | function O(){return-1===window.navigator.userAgent.indexOf("Firefox")}
function j (line 1) | function j(e){return void 0===e.state&&-1===navigator.userAgent.indexOf(...
function F (line 1) | function F(){try{return window.history.state||{}}catch(e){return{}}}
function B (line 1) | function B(e){void 0===e&&(e={}),S||Object(f["a"])(!1);var n=window.hist...
function I (line 1) | function I(e){var n=e.indexOf("#");return-1===n?e:e.slice(0,n)}
function U (line 1) | function U(){var e=window.location.href,n=e.indexOf("#");return-1===n?""...
function D (line 1) | function D(e){window.location.hash=e}
function M (line 1) | function M(e){window.location.replace(I(window.location.href)+"#"+e)}
function L (line 1) | function L(e){void 0===e&&(e={}),S||Object(f["a"])(!1);var n=window.hist...
function K (line 1) | function K(e,n,t){return Math.min(Math.max(e,n),t)}
function q (line 1) | function q(e){void 0===e&&(e={});var n=e,t=n.getUserConfirmation,r=n.ini...
function l (line 1) | function l(e){return e&&e.__esModule?e:{default:e}}
function o (line 1) | function o(e,n){return d(e)||s(e,n)||c(e,n)||i()}
function i (line 1) | function i(){throw new TypeError("Invalid attempt to destructure non-ite...
function c (line 1) | function c(e,n){if(e){if("string"===typeof e)return u(e,n);var t=Object....
function u (line 1) | function u(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function s (line 1) | function s(e,n){if("undefined"!==typeof Symbol&&Symbol.iterator in Objec...
function d (line 1) | function d(e){if(Array.isArray(e))return e}
function m (line 1) | function m(e){return(e.match(/^(.+)\.([^.]+)$/)||[]).slice(1)}
function a (line 1) | function a(e,n){var t;if("undefined"===typeof Symbol||null==e[Symbol.ite...
function r (line 1) | function r(e,n){e.prototype=Object.create(n.prototype),e.prototype.const...
function r (line 1) | function r(){var e=a(t("6xEa"));return r=function(){return e},e}
function a (line 1) | function a(e){return e&&e.__esModule?e:{default:e}}
function l (line 1) | function l(e){return r()["default"].compressToBase64(e).replace(/\+/g,"-...
function o (line 1) | function o(e){return l(JSON.stringify(e))}
function e (line 1) | function e(){if(!a){var e=n();o((function(a){return a.getCurrentValue!==...
function t (line 1) | function t(){throw new TypeError("Invalid attempt to destructure non-ite...
function r (line 1) | function r(){if("undefined"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"fu...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function i (line 1) | function i(e){return e&&e.__esModule?e:{default:e}}
function c (line 1) | function c(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function u (line 1) | function u(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function i (line 1) | function i(e){var r=l.history.location.pathname.replace("/".concat(t),""...
function r (line 1) | function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function a (line 1) | function a(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){va...
function l (line 1) | function l(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[...
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function c (line 1) | function c(e){return e&&e.__esModule?e:{default:e}}
function u (line 1) | function u(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function s (line 1) | function s(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function d (line 1) | function d(e){return f(e)||p(e)||g(e)||m()}
function m (line 1) | function m(){throw new TypeError("Invalid attempt to spread non-iterable...
function p (line 1) | function p(e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(...
function f (line 1) | function f(e){if(Array.isArray(e))return b(e)}
function h (line 1) | function h(e,n){return E(e)||v(e,n)||g(e,n)||y()}
function y (line 1) | function y(){throw new TypeError("Invalid attempt to destructure non-ite...
function g (line 1) | function g(e,n){if(e){if("string"===typeof e)return b(e,n);var t=Object....
function b (line 1) | function b(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function v (line 1) | function v(e,n){if("undefined"!==typeof Symbol&&Symbol.iterator in Objec...
function E (line 1) | function E(e){if(Array.isArray(e))return e}
function r (line 1) | function r(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function a (line 1) | function a(e,n){if(e){if("string"===typeof e)return r(e,n);var t=Object....
function u (line 1) | function u(e){return e&&e.__esModule?e:{default:e}}
function l (line 1) | function l(e){return a.decode(e.split(/<[^>]+>/).map((function(e){return...
function a (line 1) | function a(e){if(Array.isArray(e))return Object(r["a"])(e)}
function l (line 1) | function l(e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(...
function i (line 1) | function i(){throw new TypeError("Invalid attempt to spread non-iterable...
function c (line 1) | function c(e){return a(e)||l(e)||Object(o["a"])(e)||i()}
function r (line 1) | function r(e){return r="function"===typeof Symbol&&"symbol"===typeof Sym...
function i (line 1) | function i(){if("function"!==typeof WeakMap)return null;var e=new WeakMa...
function c (line 1) | function c(e){if(e&&e.__esModule)return e;if(null===e||"object"!==r(e)&&...
function u (line 1) | function u(e){return e&&e.__esModule?e:{default:e}}
function s (line 1) | function s(){return s=Object.assign||function(e){for(var n=1;n<arguments...
function _ (line 1) | function _(e){if("object"===r(e)&&null!==e){var n=e.$$typeof;switch(n){c...
function w (line 1) | function w(e){return _(e)===p}
function t (line 1) | function t(e){if("undefined"!==typeof Symbol&&Symbol.iterator in Object(...
function t (line 1) | function t(r){if(n[r])return n[r].exports;var a=n[r]={i:r,l:!1,exports:{...
function t (line 1) | function t(e){var n;if("SELECT"===e.nodeName)e.focus(),n=e.value;else if...
function t (line 1) | function t(){}
function a (line 1) | function a(){r.off(e,a),n.apply(t,arguments)}
function l (line 1) | function l(e,n,t){if(!e&&!n&&!t)throw new Error("Missing required argume...
function o (line 1) | function o(e,n,t){return e.addEventListener(n,t),{destroy:function(){e.r...
function i (line 1) | function i(e,n,t){return Array.prototype.forEach.call(e,(function(e){e.a...
function c (line 1) | function c(e,n,t){return a(document.body,e,n,t)}
function a (line 1) | function a(e,n,t,r,a){var l=o.apply(this,arguments);return e.addEventLis...
function l (line 1) | function l(e,n,t,r,l){return"function"===typeof e.addEventListener?a.app...
function o (line 1) | function o(e,n,t,a){return function(t){t.delegateTarget=r(t.target,n),t....
function a (line 1) | function a(e,n){while(e&&e.nodeType!==t){if("function"===typeof e.matche...
function e (line 1) | function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function c (line 1) | function c(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function e (line 1) | function e(n){c(this,e),this.resolveOptions(n),this.initSelection()}
function e (line 1) | function e(e,n){for(var t=0;t<n.length;t++){var r=n[t];r.enumerable=r.en...
function g (line 1) | function g(e,n){if(!(e instanceof n))throw new TypeError("Cannot call a ...
function b (line 1) | function b(e,n){if(!e)throw new ReferenceError("this hasn't been initial...
function v (line 1) | function v(e,n){if("function"!==typeof n&&null!==n)throw new TypeError("...
function n (line 1) | function n(e,t){g(this,n);var r=b(this,(n.__proto__||Object.getPrototype...
function k (line 1) | function k(e,n){var t="data-clipboard-"+e;if(n.hasAttribute(t))return n....
function s (line 1) | function s(){var e="__global_unique_id__";return u[e]=(u[e]||0)+1}
function d (line 1) | function d(e,n){return e===n?0!==e||1/e===1/n:e!==e&&n!==n}
function m (line 1) | function m(e){var n=[];return{on:function(e){n.push(e)},off:function(e){...
function p (line 1) | function p(e){return Array.isArray(e)?e[0]:e}
function f (line 1) | function f(e,n){var t,a,o="__create-react-context-"+s()+"__",u=function(...
function r (line 1) | function r(e){if(Array.isArray(e))return e}
function a (line 1) | function a(e,n){if("undefined"!==typeof Symbol&&Symbol.iterator in Objec...
function o (line 1) | function o(){throw new TypeError("Invalid attempt to destructure non-ite...
function i (line 1) | function i(e,n){return r(e)||a(e,n)||Object(l["a"])(e,n)||o()}
function o (line 1) | function o(e){return l["createElement"]("div",Object(r["a"])({},e,{style...
function o (line 1) | function o(e,n){var t,r=[],a=0,o=0,i="",c=n&&n.delimiter||"/";while(null...
function i (line 1) | function i(e,n){return s(o(e,n),n)}
function c (line 1) | function c(e){return encodeURI(e).replace(/[\/?#]/g,(function(e){return"...
function u (line 1) | function u(e){return encodeURI(e).replace(/[?#]/g,(function(e){return"%"...
function s (line 1) | function s(e,n){for(var t=new Array(e.length),l=0;l<e.length;l++)"object...
function d (line 1) | function d(e){return e.replace(/([.+*?=^!:${}()[\]|\/\\])/g,"\\$1")}
function m (line 1) | function m(e){return e.replace(/([=!:$\/()])/g,"\\$1")}
function p (line 1) | function p(e,n){return e.keys=n,e}
function f (line 1) | function f(e){return e&&e.sensitive?"":"i"}
function h (line 1) | function h(e,n){var t=e.source.match(/\((?!\?)/g);if(t)for(var r=0;r<t.l...
function y (line 1) | function y(e,n,t){for(var r=[],a=0;a<e.length;a++)r.push(v(e[a],n,t).sou...
function g (line 1) | function g(e,n,t){return b(o(e,t),n,t)}
function b (line 1) | function b(e,n,t){a(n)||(t=n||t,n=[]),t=t||{};for(var r=t.strict,l=!1!==...
function v (line 1) | function v(e,n,t){return a(n)||(t=n||t,n=[]),t=t||{},e instanceof RegExp...
function g (line 1) | function g(e){for(var n="https://reactjs.org/docs/error-decoder.html?inv...
function E (line 1) | function E(e,n,t){this.props=e,this.context=n,this.refs=v,this.updater=t...
function k (line 1) | function k(){}
function x (line 1) | function x(e,n,t){this.props=e,this.context=n,this.refs=v,this.updater=t...
function R (line 1) | function R(e,n,t){var r,a={},o=null,i=null;if(null!=n)for(r in void 0!==...
function T (line 1) | function T(e,n){return{$$typeof:l,type:e.type,key:n,ref:e.ref,props:e.pr...
function O (line 1) | function O(e){return"object"===typeof e&&null!==e&&e.$$typeof===l}
function j (line 1) | function j(e){var n={"=":"=0",":":"=2"};return"$"+(""+e).replace(/[=:]/g...
function F (line 1) | function F(e,n,t,r){if(P.length){var a=P.pop();return a.result=e,a.keyPr...
function B (line 1) | function B(e){e.result=null,e.keyPrefix=null,e.func=null,e.context=null,...
function A (line 1) | function A(e,n,t,r){var a=typeof e;"undefined"!==a&&"boolean"!==a||(e=nu...
function V (line 1) | function V(e,n,t){return null==e?0:A(e,"",n,t)}
function I (line 1) | function I(e,n){return"object"===typeof e&&null!==e&&null!=e.key?j(e.key...
function U (line 1) | function U(e,n){e.func.call(e.context,n,e.count++)}
function D (line 1) | function D(e,n,t){var r=e.result,a=e.keyPrefix;e=e.func.call(e.context,n...
function M (line 1) | function M(e,n,t,r,a){var l="";null!=t&&(l=(""+t).replace(N,"$&/")+"/"),...
function K (line 1) | function K(){var e=L.current;if(null===e)throw Error(g(321));return e}
function r (line 1) | function r(){return r=Object.assign||function(e){for(var n=1;n<arguments...
function o (line 1) | function o(e){for(var n="https://reactjs.org/docs/error-decoder.html?inv...
function i (line 1) | function i(e,n,t,r,a,l,o,i,c){var u=Array.prototype.slice.call(arguments...
function p (line 1) | function p(e,n,t,r,a,l,o,s,d){c=!1,u=null,i.apply(m,arguments)}
function f (line 1) | function f(e,n,t,r,a,l,i,m,f){if(p.apply(this,arguments),c){if(!c)throw ...
function b (line 1) | function b(e,n,t){var r=e.type||"unknown-event";e.currentTarget=g(t),f(r...
function k (line 1) | function k(){if(v)for(var e in E){var n=E[e],t=v.indexOf(e);if(!(-1<t))t...
function x (line 1) | function x(e,n,t){if(S[e])throw Error(o(100,e));S[e]=n,C[e]=n.eventTypes...
function R (line 1) | function R(e){var n,t=!1;for(n in e)if(e.hasOwnProperty(n)){var r=e[n];i...
function P (line 1) | function P(e){if(e=y(e)){if("function"!==typeof O)throw Error(o(280));va...
function F (line 1) | function F(e){j?N?N.push(e):N=[e]:j=e}
function B (line 1) | function B(){if(j){var e=j,n=N;if(N=j=null,P(e),n)for(e=0;e<n.length;e++...
function A (line 1) | function A(e,n){return e(n)}
function V (line 1) | function V(e,n,t,r,a){return e(n,t,r,a)}
function I (line 1) | function I(){}
function L (line 1) | function L(){null===j&&null===N||(I(),B())}
function K (line 1) | function K(e,n,t){if(M)return e(n,t);M=!0;try{return U(e,n,t)}finally{M=...
function $ (line 1) | function $(e){return!!z.call(W,e)||!z.call(G,e)&&(q.test(e)?W[e]=!0:(G[e...
function H (line 1) | function H(e,n,t,r){if(null!==t&&0===t.type)return!1;switch(typeof n){ca...
function Y (line 1) | function Y(e,n,t,r){if(null===n||"undefined"===typeof n||H(e,n,t,r))retu...
function X (line 1) | function X(e,n,t,r,a,l){this.acceptsBooleans=2===n||3===n||4===n,this.at...
function J (line 1) | function J(e){return e[1].toUpperCase()}
function ne (line 1) | function ne(e,n,t,r){var a=Q.hasOwnProperty(n)?Q[n]:null,l=null!==a?0===...
function ve (line 1) | function ve(e){return null===e||"object"!==typeof e?null:(e=be&&e[be]||e...
function Ee (line 1) | function Ee(e){if(-1===e._status){e._status=0;var n=e._ctor;n=n(),e._res...
function ke (line 1) | function ke(e){if(null==e)return null;if("function"===typeof e)return e....
function xe (line 1) | function xe(e){var n="";do{e:switch(e.tag){case 3:case 4:case 6:case 7:c...
function _e (line 1) | function _e(e){switch(typeof e){case"boolean":case"number":case"object":...
function we (line 1) | function we(e){var n=e.type;return(e=e.nodeName)&&"input"===e.toLowerCas...
function Se (line 1) | function Se(e){var n=we(e)?"checked":"value",t=Object.getOwnPropertyDesc...
function Ce (line 1) | function Ce(e){e._valueTracker||(e._valueTracker=Se(e))}
function Re (line 1) | function Re(e){if(!e)return!1;var n=e._valueTracker;if(!n)return!0;var t...
function Te (line 1) | function Te(e,n){var t=n.checked;return a({},n,{defaultChecked:void 0,de...
function Oe (line 1) | function Oe(e,n){var t=null==n.defaultValue?"":n.defaultValue,r=null!=n....
function je (line 1) | function je(e,n){n=n.checked,null!=n&&ne(e,"checked",n,!1)}
function Ne (line 1) | function Ne(e,n){je(e,n);var t=_e(n.value),r=n.type;if(null!=t)"number"=...
function Pe (line 1) | function Pe(e,n,t){if(n.hasOwnProperty("value")||n.hasOwnProperty("defau...
function Fe (line 1) | function Fe(e,n,t){"number"===n&&e.ownerDocument.activeElement===e||(nul...
function Be (line 1) | function Be(e){var n="";return r.Children.forEach(e,(function(e){null!=e...
function Ae (line 1) | function Ae(e,n){return e=a({children:void 0},n),(n=Be(n.children))&&(e....
function Ve (line 1) | function Ve(e,n,t,r){if(e=e.options,n){n={};for(var a=0;a<t.length;a++)n...
function Ie (line 1) | function Ie(e,n){if(null!=n.dangerouslySetInnerHTML)throw Error(o(91));r...
function Ue (line 1) | function Ue(e,n){var t=n.value;if(null==t){if(t=n.children,n=n.defaultVa...
function De (line 1) | function De(e,n){var t=_e(n.value),r=_e(n.defaultValue);null!=t&&(t=""+t...
function Me (line 1) | function Me(e){var n=e.textContent;n===e._wrapperState.initialValue&&""!...
function Ke (line 1) | function Ke(e){switch(e){case"svg":return"http://www.w3.org/2000/svg";ca...
function qe (line 1) | function qe(e,n){return null==e||"http://www.w3.org/1999/xhtml"===e?Ke(n...
function We (line 1) | function We(e,n){if(n){var t=e.firstChild;if(t&&t===e.lastChild&&3===t.n...
function $e (line 1) | function $e(e,n){var t={};return t[e.toLowerCase()]=n.toLowerCase(),t["W...
function Qe (line 1) | function Qe(e){if(Ye[e])return Ye[e];if(!He[e])return e;var n,t=He[e];fo...
function an (line 1) | function an(e){var n=rn.get(e);return void 0===n&&(n=new Map,rn.set(e,n)...
function ln (line 1) | function ln(e){var n=e,t=e;if(e.alternate)for(;n.return;)n=n.return;else...
function on (line 1) | function on(e){if(13===e.tag){var n=e.memoizedState;if(null===n&&(e=e.al...
function cn (line 1) | function cn(e){if(ln(e)!==e)throw Error(o(188))}
function un (line 1) | function un(e){var n=e.alternate;if(!n){if(n=ln(e),null===n)throw Error(...
function sn (line 1) | function sn(e){if(e=un(e),!e)return null;for(var n=e;;){if(5===n.tag||6=...
function dn (line 1) | function dn(e,n){if(null==n)throw Error(o(30));return null==e?n:Array.is...
function mn (line 1) | function mn(e,n,t){Array.isArray(e)?e.forEach(n,t):e&&n.call(t,e)}
function fn (line 1) | function fn(e){if(e){var n=e._dispatchListeners,t=e._dispatchInstances;i...
function hn (line 1) | function hn(e){if(null!==e&&(pn=dn(pn,e)),e=pn,pn=null,e){if(mn(e,fn),pn...
function yn (line 1) | function yn(e){return e=e.target||e.srcElement||window,e.correspondingUs...
function gn (line 1) | function gn(e){if(!T)return!1;e="on"+e;var n=e in document;return n||(n=...
function vn (line 1) | function vn(e){e.topLevelType=null,e.nativeEvent=null,e.targetInst=null,...
function En (line 1) | function En(e,n,t,r){if(bn.length){var a=bn.pop();return a.topLevelType=...
function kn (line 1) | function kn(e){var n=e.targetInst,t=n;do{if(!t){e.ancestors.push(t);brea...
function xn (line 1) | function xn(e,n,t){if(!t.has(e)){switch(e){case"scroll":at(n,"scroll",!0...
function Vn (line 1) | function Vn(e,n){var t=an(n);Bn.forEach((function(e){xn(e,n,t)})),An.for...
function In (line 1) | function In(e,n,t,r,a){return{blockedOn:e,topLevelType:n,eventSystemFlag...
function Un (line 1) | function Un(e,n){switch(e){case"focus":case"blur":Tn=null;break;case"dra...
function Dn (line 1) | function Dn(e,n,t,r,a,l){return null===e||e.nativeEvent!==l?(e=In(n,t,r,...
function Mn (line 1) | function Mn(e,n,t,r,a){switch(n){case"focus":return Tn=Dn(Tn,e,n,t,r,a),...
function Ln (line 1) | function Ln(e){var n=Lt(e.target);if(null!==n){var t=ln(n);if(null!==t)i...
function Kn (line 1) | function Kn(e){if(null!==e.blockedOn)return!1;var n=ct(e.topLevelType,e....
function qn (line 1) | function qn(e,n,t){Kn(e)&&t.delete(n)}
function zn (line 1) | function zn(){for(Cn=!1;0<Rn.length;){var e=Rn[0];if(null!==e.blockedOn)...
function Gn (line 1) | function Gn(e,n){e.blockedOn===n&&(e.blockedOn=null,Cn||(Cn=!0,l.unstabl...
function Wn (line 1) | function Wn(e){function n(n){return Gn(n,e)}if(0<Rn.length){Gn(Rn[0],e);...
function Qn (line 1) | function Qn(e,n){for(var t=0;t<e.length;t+=2){var r=e[t],a=e[t+1],l="on"...
function rt (line 1) | function rt(e,n){at(n,e,!1)}
function at (line 1) | function at(e,n,t){var r=Yn.get(n);switch(void 0===r?2:r){case 0:r=lt.bi...
function lt (line 1) | function lt(e,n,t,r){D||I();var a=it,l=D;D=!0;try{V(a,e,n,t,r)}finally{(...
function ot (line 1) | function ot(e,n,t,r){nt(et,it.bind(null,e,n,t,r))}
function it (line 1) | function it(e,n,t,r){if(tt)if(0<Rn.length&&-1<Bn.indexOf(e))e=In(null,e,...
function ct (line 1) | function ct(e,n,t,r){if(t=yn(r),t=Lt(t),null!==t){var a=ln(t);if(null===...
function dt (line 1) | function dt(e,n,t){return null==n||"boolean"===typeof n||""===n?"":t||"n...
function mt (line 1) | function mt(e,n){for(var t in e=e.style,n)if(n.hasOwnProperty(t)){var r=...
function ft (line 1) | function ft(e,n){if(n){if(pt[e]&&(null!=n.children||null!=n.dangerouslyS...
function ht (line 1) | function ht(e,n){if(-1===e.indexOf("-"))return"string"===typeof n.is;swi...
function gt (line 1) | function gt(e,n){e=9===e.nodeType||11===e.nodeType?e:e.ownerDocument;var...
function bt (line 1) | function bt(){}
function vt (line 1) | function vt(e){if(e=e||("undefined"!==typeof document?document:void 0),"...
function Et (line 1) | function Et(e){for(;e&&e.firstChild;)e=e.firstChild;return e}
function kt (line 1) | function kt(e,n){var t,r=Et(e);for(e=0;r;){if(3===r.nodeType){if(t=e+r.t...
function xt (line 1) | function xt(e,n){return!(!e||!n)&&(e===n||(!e||3!==e.nodeType)&&(n&&3===...
function _t (line 1) | function _t(){for(var e=window,n=vt();n instanceof e.HTMLIFrameElement;)...
function wt (line 1) | function wt(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&(...
function Nt (line 1) | function Nt(e,n){switch(e){case"button":case"input":case"select":case"te...
function Pt (line 1) | function Pt(e,n){return"textarea"===e||"option"===e||"noscript"===e||"st...
function At (line 1) | function At(e){for(;null!=e;e=e.nextSibling){var n=e.nodeType;if(1===n||...
function Vt (line 1) | function Vt(e){e=e.previousSibling;for(var n=0;e;){if(8===e.nodeType){va...
function Lt (line 1) | function Lt(e){var n=e[Ut];if(n)return n;for(var t=e.parentNode;t;){if(n...
function Kt (line 1) | function Kt(e){return e=e[Ut]||e[Mt],!e||5!==e.tag&&6!==e.tag&&13!==e.ta...
function qt (line 1) | function qt(e){if(5===e.tag||6===e.tag)return e.stateNode;throw Error(o(...
function zt (line 1) | function zt(e){return e[Dt]||null}
function Gt (line 1) | function Gt(e){do{e=e.return}while(e&&5!==e.tag);return e||null}
function Wt (line 1) | function Wt(e,n){var t=e.stateNode;if(!t)return null;var r=h(t);if(!r)re...
function $t (line 1) | function $t(e,n,t){(n=Wt(e,t.dispatchConfig.phasedRegistrationNames[n]))...
function Ht (line 1) | function Ht(e){if(e&&e.dispatchConfig.phasedRegistrationNames){for(var n...
function Yt (line 1) | function Yt(e,n,t){e&&t&&t.dispatchConfig.registrationName&&(n=Wt(e,t.di...
function Xt (line 1) | function Xt(e){e&&e.dispatchConfig.registrationName&&Yt(e._targetInst,nu...
function Qt (line 1) | function Qt(e){mn(e,Ht)}
function nr (line 1) | function nr(){if(er)return er;var e,n,t=Jt,r=t.length,a="value"in Zt?Zt....
function tr (line 1) | function tr(){return!0}
function rr (line 1) | function rr(){return!1}
function ar (line 1) | function ar(e,n,t,r){for(var a in this.dispatchConfig=e,this._targetInst...
function lr (line 1) | function lr(e,n,t,r){if(this.eventPool.length){var a=this.eventPool.pop(...
function or (line 1) | function or(e){if(!(e instanceof this))throw Error(o(279));e.destructor(...
function ir (line 1) | function ir(e){e.eventPool=[],e.getPooled=lr,e.release=or}
function n (line 1) | function n(){}
function t (line 1) | function t(){return r.apply(this,arguments)}
function br (line 1) | function br(e,n){switch(e){case"keyup":return-1!==sr.indexOf(n.keyCode);...
function vr (line 1) | function vr(e){return e=e.detail,"object"===typeof e&&"data"in e?e.data:...
function kr (line 1) | function kr(e,n){switch(e){case"compositionend":return vr(n);case"keypre...
function xr (line 1) | function xr(e,n){if(Er)return"compositionend"===e||!dr&&br(e,n)?(e=nr(),...
function Sr (line 1) | function Sr(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return"inpu...
function Rr (line 1) | function Rr(e,n,t){return e=ar.getPooled(Cr.change,e,n,t),e.type="change...
function jr (line 1) | function jr(e){hn(e)}
function Nr (line 1) | function Nr(e){var n=qt(e);if(Re(n))return e}
function Pr (line 1) | function Pr(e,n){if("change"===e)return n}
function Br (line 1) | function Br(){Tr&&(Tr.detachEvent("onpropertychange",Ar),Or=Tr=null)}
function Ar (line 1) | function Ar(e){if("value"===e.propertyName&&Nr(Or))if(e=Rr(Or,e,yn(e)),D...
function Vr (line 1) | function Vr(e,n,t){"focus"===e?(Br(),Tr=n,Or=t,Tr.attachEvent("onpropert...
function Ir (line 1) | function Ir(e){if("selectionchange"===e||"keyup"===e||"keydown"===e)retu...
function Ur (line 1) | function Ur(e,n){if("click"===e)return Nr(n)}
function Dr (line 1) | function Dr(e,n){if("input"===e||"change"===e)return Nr(n)}
function qr (line 1) | function qr(e){var n=this.nativeEvent;return n.getModifierState?n.getMod...
function zr (line 1) | function zr(){return qr}
function Jr (line 1) | function Jr(e,n){return e===n&&(0!==e||1/e===1/n)||e!==e&&n!==n}
function ta (line 1) | function ta(e,n){if(ea(e,n))return!0;if("object"!==typeof e||null===e||"...
function ua (line 1) | function ua(e,n){var t=n.window===n?n.document:9===n.nodeType?n:n.ownerD...
function fa (line 1) | function fa(e){var n=e.keyCode;return"charCode"in e?(e=e.charCode,0===e&...
function Ca (line 1) | function Ca(e){0>Sa||(e.current=wa[Sa],wa[Sa]=null,Sa--)}
function Ra (line 1) | function Ra(e,n){Sa++,wa[Sa]=e.current,e.current=n}
function Pa (line 1) | function Pa(e,n){var t=e.type.contextTypes;if(!t)return Ta;var r=e.state...
function Fa (line 1) | function Fa(e){return e=e.childContextTypes,null!==e&&void 0!==e}
function Ba (line 1) | function Ba(){Ca(ja),Ca(Oa)}
function Aa (line 1) | function Aa(e,n,t){if(Oa.current!==Ta)throw Error(o(168));Ra(Oa,n),Ra(ja...
function Va (line 1) | function Va(e,n,t){var r=e.stateNode;if(e=n.childContextTypes,"function"...
function Ia (line 1) | function Ia(e){return e=(e=e.stateNode)&&e.__reactInternalMemoizedMerged...
function Ua (line 1) | function Ua(e,n,t){var r=e.stateNode;if(!r)throw Error(o(169));t?(e=Va(e...
function al (line 1) | function al(){switch(za()){case Ga:return 99;case Wa:return 98;case $a:r...
function ll (line 1) | function ll(e){switch(e){case 99:return Ga;case 98:return Wa;case 97:ret...
function ol (line 1) | function ol(e,n){return e=ll(e),Da(e,n)}
function il (line 1) | function il(e,n,t){return e=ll(e),Ma(e,n,t)}
function cl (line 1) | function cl(e){return null===Ja?(Ja=[e],el=Ma(Ga,sl)):Ja.push(e),Xa}
function ul (line 1) | function ul(){if(null!==el){var e=el;el=null,La(e)}sl()}
function sl (line 1) | function sl(){if(!nl&&null!==Ja){nl=!0;var e=0;try{var n=Ja;ol(99,(funct...
function dl (line 1) | function dl(e,n,t){return t/=10,1073741821-(1+((1073741821-e+n/10)/t|0))*t}
function ml (line 1) | function ml(e,n){if(e&&e.defaultProps)for(var t in n=a({},n),e=e.default...
function gl (line 1) | function gl(){yl=hl=fl=null}
function bl (line 1) | function bl(e){var n=pl.current;Ca(pl),e.type._context._currentValue=n}
function vl (line 1) | function vl(e,n){for(;null!==e;){var t=e.alternate;if(e.childExpirationT...
function El (line 1) | function El(e,n){fl=e,yl=hl=null,e=e.dependencies,null!==e&&null!==e.fir...
function kl (line 1) | function kl(e,n){if(yl!==e&&!1!==n&&0!==n)if("number"===typeof n&&107374...
function _l (line 1) | function _l(e){e.updateQueue={baseState:e.memoizedState,baseQueue:null,s...
function wl (line 1) | function wl(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={base...
function Sl (line 1) | function Sl(e,n){return e={expirationTime:e,suspenseConfig:n,tag:0,paylo...
function Cl (line 1) | function Cl(e,n){if(e=e.updateQueue,null!==e){e=e.shared;var t=e.pending...
function Rl (line 1) | function Rl(e,n){var t=e.alternate;null!==t&&wl(t,e),e=e.updateQueue,t=e...
function Tl (line 1) | function Tl(e,n,t,r){var l=e.updateQueue;xl=!1;var o=l.baseQueue,i=l.sha...
function Ol (line 1) | function Ol(e,n,t){if(e=n.effects,n.effects=null,null!==e)for(n=0;n<e.le...
function Pl (line 1) | function Pl(e,n,t,r){n=e.memoizedState,t=t(r,n),t=null===t||void 0===t?n...
function Bl (line 1) | function Bl(e,n,t,r,a,l,o){return e=e.stateNode,"function"===typeof e.sh...
function Al (line 1) | function Al(e,n,t){var r=!1,a=Ta,l=n.contextType;return"object"===typeof...
function Vl (line 1) | function Vl(e,n,t,r){e=n.state,"function"===typeof n.componentWillReceiv...
function Il (line 1) | function Il(e,n,t,r){var a=e.stateNode;a.props=t,a.state=e.memoizedState...
function Dl (line 1) | function Dl(e,n,t){if(e=t.ref,null!==e&&"function"!==typeof e&&"object"!...
function Ml (line 1) | function Ml(e,n){if("textarea"!==e.type)throw Error(o(31,"[object Object...
function Ll (line 1) | function Ll(e){function n(n,t){if(e){var r=n.lastEffect;null!==r?(r.next...
function Hl (line 1) | function Hl(e){if(e===zl)throw Error(o(174));return e}
function Yl (line 1) | function Yl(e,n){switch(Ra($l,n),Ra(Wl,e),Ra(Gl,zl),e=n.nodeType,e){case...
function Xl (line 1) | function Xl(){Ca(Gl),Ca(Wl),Ca($l)}
function Ql (line 1) | function Ql(e){Hl($l.current);var n=Hl(Gl.current),t=qe(n,e.type);n!==t&...
function Zl (line 1) | function Zl(e){Wl.current===e&&(Ca(Gl),Ca(Wl))}
function eo (line 1) | function eo(e){for(var n=e;null!==n;){if(13===n.tag){var t=n.memoizedSta...
function no (line 1) | function no(e,n){return{responder:e,props:n}}
function uo (line 1) | function uo(){throw Error(o(321))}
function so (line 1) | function so(e,n){if(null===n)return!1;for(var t=0;t<n.length&&t<e.length...
function mo (line 1) | function mo(e,n,t,r,a,l){if(ao=l,lo=n,n.memoizedState=null,n.updateQueue...
function po (line 1) | function po(){var e={memoizedState:null,baseState:null,baseQueue:null,qu...
function fo (line 1) | function fo(){if(null===oo){var e=lo.alternate;e=null!==e?e.memoizedStat...
function ho (line 1) | function ho(e,n){return"function"===typeof n?n(e):n}
function yo (line 1) | function yo(e){var n=fo(),t=n.queue;if(null===t)throw Error(o(311));t.la...
function go (line 1) | function go(e){var n=fo(),t=n.queue;if(null===t)throw Error(o(311));t.la...
function bo (line 1) | function bo(e){var n=po();return"function"===typeof e&&(e=e()),n.memoize...
function vo (line 1) | function vo(e,n,t,r){return e={tag:e,create:n,destroy:t,deps:r,next:null...
function Eo (line 1) | function Eo(){return fo().memoizedState}
function ko (line 1) | function ko(e,n,t,r){var a=po();lo.effectTag|=e,a.memoizedState=vo(1|n,t...
function xo (line 1) | function xo(e,n,t,r){var a=fo();r=void 0===r?null:r;var l=void 0;if(null...
function _o (line 1) | function _o(e,n){return ko(516,4,e,n)}
function wo (line 1) | function wo(e,n){return xo(516,4,e,n)}
function So (line 1) | function So(e,n){return xo(4,2,e,n)}
function Co (line 1) | function Co(e,n){return"function"===typeof n?(e=e(),n(e),function(){n(nu...
function Ro (line 1) | function Ro(e,n,t){return t=null!==t&&void 0!==t?t.concat([e]):null,xo(4...
function To (line 1) | function To(){}
function Oo (line 1) | function Oo(e,n){return po().memoizedState=[e,void 0===n?null:n],e}
function jo (line 1) | function jo(e,n){var t=fo();n=void 0===n?null:n;var r=t.memoizedState;re...
function No (line 1) | function No(e,n){var t=fo();n=void 0===n?null:n;var r=t.memoizedState;re...
function Po (line 1) | function Po(e,n,t){var r=al();ol(98>r?98:r,(function(){e(!0)})),ol(97<r?...
function Fo (line 1) | function Fo(e,n,t){var r=xc(),a=jl.suspense;r=_c(r,e,a),a={expirationTim...
function Lo (line 1) | function Lo(e,n){var t=tu(5,null,null,0);t.elementType="DELETED",t.type=...
function Ko (line 1) | function Ko(e,n){switch(e.tag){case 5:var t=e.type;return n=1!==n.nodeTy...
function qo (line 1) | function qo(e){if(Mo){var n=Do;if(n){var t=n;if(!Ko(e,n)){if(n=At(t.next...
function zo (line 1) | function zo(e){for(e=e.return;null!==e&&5!==e.tag&&3!==e.tag&&13!==e.tag...
function Go (line 1) | function Go(e){if(e!==Uo)return!1;if(!Mo)return zo(e),Mo=!0,!1;var n=e.t...
function Wo (line 1) | function Wo(){Do=Uo=null,Mo=!1}
function Yo (line 1) | function Yo(e,n,t,r){n.child=null===e?ql(n,null,t,r):Kl(n,e.child,t,r)}
function Xo (line 1) | function Xo(e,n,t,r,a){t=t.render;var l=n.ref;return El(n,a),r=mo(e,n,t,...
function Qo (line 1) | function Qo(e,n,t,r,a,l){if(null===e){var o=t.type;return"function"!==ty...
function Zo (line 1) | function Zo(e,n,t,r,a,l){return null!==e&&ta(e.memoizedProps,r)&&e.ref==...
function Jo (line 1) | function Jo(e,n){var t=n.ref;(null===e&&null!==t||null!==e&&e.ref!==t)&&...
function ei (line 1) | function ei(e,n,t,r,a){var l=Fa(t)?Na:Oa.current;return l=Pa(n,l),El(n,a...
function ni (line 1) | function ni(e,n,t,r,a){if(Fa(t)){var l=!0;Ia(n)}else l=!1;if(El(n,a),nul...
function ti (line 1) | function ti(e,n,t,r,a,l){Jo(e,n);var o=0!==(64&n.effectTag);if(!r&&!o)re...
function ri (line 1) | function ri(e){var n=e.stateNode;n.pendingContext?Aa(e,n.pendingContext,...
function ui (line 1) | function ui(e,n,t){var r,a=n.mode,l=n.pendingProps,o=Jl.current,i=!1;if(...
function si (line 1) | function si(e,n){e.expirationTime<n&&(e.expirationTime=n);var t=e.altern...
function di (line 1) | function di(e,n,t,r,a,l){var o=e.memoizedState;null===o?e.memoizedState=...
function mi (line 1) | function mi(e,n,t){var r=n.pendingProps,a=r.revealOrder,l=r.tail;if(Yo(e...
function pi (line 1) | function pi(e,n,t){null!==e&&(n.dependencies=e.dependencies);var r=n.exp...
function fi (line 1) | function fi(e,n){switch(e.tailMode){case"hidden":n=e.tail;for(var t=null...
function hi (line 1) | function hi(e,n,t){var r=n.pendingProps;switch(n.tag){case 2:case 16:cas...
function yi (line 1) | function yi(e){switch(e.tag){case 1:Fa(e.type)&&Ba();var n=e.effectTag;r...
function gi (line 1) | function gi(e,n){return{value:e,source:n,stack:xe(n)}}
function vi (line 1) | function vi(e,n){var t=n.source,r=n.stack;null===r&&null!==t&&(r=xe(t)),...
function Ei (line 1) | function Ei(e,n){try{n.props=e.memoizedProps,n.state=e.memoizedState,n.c...
function ki (line 1) | function ki(e){var n=e.ref;if(null!==n)if("function"===typeof n)try{n(nu...
function xi (line 1) | function xi(e,n){switch(n.tag){case 0:case 11:case 15:case 22:return;cas...
function _i (line 1) | function _i(e,n){if(n=n.updateQueue,n=null!==n?n.lastEffect:null,null!==...
function wi (line 1) | function wi(e,n){if(n=n.updateQueue,n=null!==n?n.lastEffect:null,null!==...
function Si (line 1) | function Si(e,n,t){switch(t.tag){case 0:case 11:case 15:case 22:return v...
function Ci (line 1) | function Ci(e,n,t){switch("function"===typeof Jc&&Jc(n),n.tag){case 0:ca...
function Ri (line 1) | function Ri(e){var n=e.alternate;e.return=null,e.child=null,e.memoizedSt...
function Ti (line 1) | function Ti(e){return 5===e.tag||3===e.tag||4===e.tag}
function Oi (line 1) | function Oi(e){e:{for(var n=e.return;null!==n;){if(Ti(n)){var t=n;break ...
function ji (line 1) | function ji(e,n,t){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.sta...
function Ni (line 1) | function Ni(e,n,t){var r=e.tag,a=5===r||6===r;if(a)e=a?e.stateNode:e.sta...
function Pi (line 1) | function Pi(e,n,t){for(var r,a,l=n,i=!1;;){if(!i){i=l.return;e:for(;;){i...
function Fi (line 1) | function Fi(e,n){switch(n.tag){case 0:case 11:case 14:case 15:case 22:re...
function Bi (line 1) | function Bi(e){var n=e.updateQueue;if(null!==n){e.updateQueue=null;var t...
function Vi (line 1) | function Vi(e,n,t){t=Sl(t,null),t.tag=3,t.payload={element:null};var r=n...
function Ii (line 1) | function Ii(e,n,t){t=Sl(t,null),t.tag=3;var r=e.type.getDerivedStateFrom...
function xc (line 1) | function xc(){return(Zi&(zi|Gi))!==Ki?1073741821-(rl()/10|0):0!==kc?kc:k...
function _c (line 1) | function _c(e,n,t){if(n=n.mode,0===(2&n))return 1073741823;var r=al();if...
function wc (line 1) | function wc(e,n){if(50<vc)throw vc=0,Ec=null,Error(o(185));if(e=Sc(e,n),...
function Sc (line 1) | function Sc(e,n){e.expirationTime<n&&(e.expirationTime=n);var t=e.altern...
function Cc (line 1) | function Cc(e){var n=e.lastExpiredTime;if(0!==n)return n;if(n=e.firstPen...
function Rc (line 1) | function Rc(e){if(0!==e.lastExpiredTime)e.callbackExpirationTime=1073741...
function Tc (line 1) | function Tc(e,n){if(kc=0,n)return n=xc(),fu(e,n),Rc(e),null;var t=Cc(e);...
function Oc (line 1) | function Oc(e){var n=e.lastExpiredTime;if(n=0!==n?n:1073741823,(Zi&(zi|G...
function jc (line 1) | function jc(){if(null!==bc){var e=bc;bc=null,e.forEach((function(e,n){fu...
function Nc (line 1) | function Nc(e,n){var t=Zi;Zi|=1;try{return e(n)}finally{Zi=t,Zi===Ki&&ul...
function Pc (line 1) | function Pc(e,n){var t=Zi;Zi&=-2,Zi|=qi;try{return e(n)}finally{Zi=t,Zi=...
function Fc (line 1) | function Fc(e,n){e.finishedWork=null,e.finishedExpirationTime=0;var t=e....
function Bc (line 1) | function Bc(e,n){do{try{if(gl(),to.current=Bo,co)for(var t=lo.memoizedSt...
function Ac (line 1) | function Ac(){var e=Mi.current;return Mi.current=Bo,null===e?Bo:e}
function Vc (line 1) | function Vc(e,n){e<ac&&2<e&&(ac=e),null!==n&&e<lc&&2<e&&(lc=e,oc=n)}
function Ic (line 1) | function Ic(e){e>ic&&(ic=e)}
function Uc (line 1) | function Uc(){for(;null!==ec;)ec=Mc(ec)}
function Dc (line 1) | function Dc(){for(;null!==ec&&!Qa();)ec=Mc(ec)}
function Mc (line 1) | function Mc(e){var n=Ui(e.alternate,e,nc);return e.memoizedProps=e.pendi...
function Lc (line 1) | function Lc(e){ec=e;do{var n=ec.alternate;if(e=ec.return,0===(2048&ec.ef...
function Kc (line 1) | function Kc(e){var n=e.expirationTime;return e=e.childExpirationTime,n>e...
function qc (line 1) | function qc(e){var n=al();return ol(99,zc.bind(null,e,n)),null}
function zc (line 1) | function zc(e,n){do{Wc()}while(null!==yc);if((Zi&(zi|Gi))!==Ki)throw Err...
function Gc (line 1) | function Gc(){for(;null!==dc;){var e=dc.effectTag;0!==(256&e)&&xi(dc.alt...
function Wc (line 1) | function Wc(){if(90!==gc){var e=97<gc?97:gc;return gc=90,ol(e,$c)}}
function $c (line 1) | function $c(){if(null===yc)return!1;var e=yc;if(yc=null,(Zi&(zi|Gi))!==K...
function Hc (line 1) | function Hc(e,n,t){n=gi(t,n),n=Vi(e,n,1073741823),Cl(e,n),e=Sc(e,1073741...
function Yc (line 1) | function Yc(e,n){if(3===e.tag)Hc(e,e,n);else for(var t=e.return;null!==t...
function Xc (line 1) | function Xc(e,n,t){var r=e.pingCache;null!==r&&r.delete(n),Ji===e&&nc===...
function Qc (line 1) | function Qc(e,n){var t=e.stateNode;null!==t&&t.delete(n),n=0,0===n&&(n=x...
function eu (line 1) | function eu(e){if("undefined"===typeof __REACT_DEVTOOLS_GLOBAL_HOOK__)re...
function nu (line 1) | function nu(e,n,t,r){this.tag=e,this.key=t,this.sibling=this.child=this....
function tu (line 1) | function tu(e,n,t,r){return new nu(e,n,t,r)}
function ru (line 1) | function ru(e){return e=e.prototype,!(!e||!e.isReactComponent)}
function au (line 1) | function au(e){if("function"===typeof e)return ru(e)?1:0;if(void 0!==e&&...
function lu (line 1) | function lu(e,n){var t=e.alternate;return null===t?(t=tu(e.tag,n,e.key,e...
function ou (line 1) | function ou(e,n,t,r,a,l){var i=2;if(r=e,"function"===typeof e)ru(e)&&(i=...
function iu (line 1) | function iu(e,n,t,r){return e=tu(7,e,r,n),e.expirationTime=t,e}
function cu (line 1) | function cu(e,n,t){return e=tu(6,e,null,n),e.expirationTime=t,e}
function uu (line 1) | function uu(e,n,t){return n=tu(4,null!==e.children?e.children:[],e.key,n...
function su (line 1) | function su(e,n,t){this.tag=n,this.current=null,this.containerInfo=e,thi...
function du (line 1) | function du(e,n){var t=e.firstSuspendedTime;return e=e.lastSuspendedTime...
function mu (line 1) | function mu(e,n){var t=e.firstSuspendedTime,r=e.lastSuspendedTime;t<n&&(...
function pu (line 1) | function pu(e,n){n>e.firstPendingTime&&(e.firstPendingTime=n);var t=e.fi...
function fu (line 1) | function fu(e,n){var t=e.lastExpiredTime;(0===t||t>n)&&(e.lastExpiredTim...
function hu (line 1) | function hu(e,n,t,r){var a=n.current,l=xc(),i=jl.suspense;l=_c(l,a,i);e:...
function yu (line 1) | function yu(e){if(e=e.current,!e.child)return null;switch(e.child.tag){c...
function gu (line 1) | function gu(e,n){e=e.memoizedState,null!==e&&null!==e.dehydrated&&e.retr...
function bu (line 1) | function bu(e,n){gu(e,n),(e=e.alternate)&&gu(e,n)}
function vu (line 1) | function vu(e,n,t){t=null!=t&&!0===t.hydrate;var r=new su(e,n,t),a=tu(3,...
function Eu (line 1) | function Eu(e){return!(!e||1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeTy...
function ku (line 1) | function ku(e,n){if(n||(n=e?9===e.nodeType?e.documentElement:e.firstChil...
function xu (line 1) | function xu(e,n,t,r,a){var l=t._reactRootContainer;if(l){var o=l._intern...
function _u (line 1) | function _u(e,n,t){var r=3<arguments.length&&void 0!==arguments[3]?argum...
function wu (line 1) | function wu(e,n){var t=2<arguments.length&&void 0!==arguments[2]?argumen...
function t (line 1) | function t(n){return"function"===typeof Symbol&&"symbol"===typeof Symbol...
function r (line 1) | function r(e,n){if(null==e)return{};var t,r,a={},l=Object.keys(e);for(r=...
function l (line 1) | function l(e){return e&&"object"===a(e)&&"default"in e?e["default"]:e}
function d (line 1) | function d(e,n,t,r,a,l,o){try{var i=e[l](o),c=i.value}catch(u){return vo...
function m (line 1) | function m(e){return function(){var n=this,t=arguments;return new Promis...
function p (line 1) | function p(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enume...
function f (line 1) | function f(){return f=Object.assign||function(e){for(var n=1;n<arguments...
function h (line 1) | function h(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){va...
function y (line 1) | function y(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[...
function g (line 1) | function g(e,n){if(null==e)return{};var t,r,a={},l=Object.keys(e);for(r=...
function b (line 1) | function b(e,n){if(null==e)return{};var t,r,a=g(e,n);if(Object.getOwnPro...
function v (line 1) | function v(e,n){return E(e)||k(e,n)||x(e,n)||w()}
function E (line 1) | function E(e){if(Array.isArray(e))return e}
function k (line 1) | function k(e,n){if("undefined"!==typeof Symbol&&Symbol.iterator in Objec...
function x (line 1) | function x(e,n){if(e){if("string"===typeof e)return _(e,n);var t=Object....
function _ (line 1) | function _(e,n){(null==n||n>e.length)&&(n=e.length);for(var t=0,r=new Ar...
function w (line 1) | function w(){throw new TypeError("Invalid attempt to destructure non-ite...
function S (line 1) | function S(e){if("undefined"===typeof Symbol||null==e[Symbol.iterator]){...
function C (line 1) | function C(e){return c.createElement(u.__RouterContext.Consumer,null,(fu...
function R (line 1) | function R(e){return c.createElement(u.__RouterContext.Consumer,null,(fu...
function T (line 1) | function T(e,n){e.component;var t=b(e,["component"]),a=e.component;funct...
function O (line 1) | function O(e){var n=e.route,t=e.opts,r=e.props,a=N(y({},t,{routes:n.rout...
function j (line 1) | function j(e){var n,t,r,a=e.route,l=e.index,o=e.opts,i={key:a.key||l,exa...
function N (line 1) | function N(e){return e.routes?c.createElement(C,null,e.routes.map((funct...
function P (line 1) | function P(e){var n=e.history,t=b(e,["history"]);return i.useEffect((fun...
function F (line 1) | function F(e){return B.apply(this,arguments)}
function B (line 1) | function B(){return B=m(r.mark((function e(n){var t,a,l,o,i,c,u,d,m=argu...
function A (line 1) | function A(e){var n=e.plugin.applyPlugins({type:u.ApplyPluginsType.modif...
FILE: typings/index.d.ts
type Path (line 12) | type Path = unknown;
Condensed preview — 331 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,038K chars).
[
{
"path": ".eslintignore",
"chars": 264,
"preview": "# don't ever lint node_modules\nnode_modules\n# don't lint site\nsite\n# don't lint scripts\nscripts\n# don't lint build outpu"
},
{
"path": ".eslintrc.js",
"chars": 1002,
"preview": "module.exports = {\n root: true,\n parser: '@typescript-eslint/parser',\n plugins: [\n '@typescript-eslint',\n 'reac"
},
{
"path": ".gitignore",
"chars": 141,
"preview": "node_modules/\ncjs/\nweb/\n!components/web/\nesm/\ndist/\npackage-lock.json\nyarn.lock\nyarn-error.log\n.umi/\ndocs-source/\nreport"
},
{
"path": ".nojekyll",
"chars": 0,
"preview": ""
},
{
"path": ".prettierrc.js",
"chars": 146,
"preview": "module.exports = {\n singleQuote: true,\n trailingComma: 'all',\n printWidth: 100,\n proseWrap: 'never',\n arrowParens: "
},
{
"path": ".umirc.ts",
"chars": 3243,
"preview": "import { defineConfig } from 'dumi';\nimport path from 'path';\n\nprocess.env.BABEL_ENV = 'dumi';\n\nexport default defineCon"
},
{
"path": "CHANGELOG.md",
"chars": 8399,
"preview": "## [1.2.6](https://github.com/AnnaSearl/anna-remax-ui/compare/v1.2.5...v1.2.6) (2020-03-28)\n\n\n### Features\n\n* :sparkles:"
},
{
"path": "README.md",
"chars": 2426,
"preview": "<p align=\"center\">\r\n <img width=\"100\" src=\"https://smebimage.fuliaoyi.com/Fger7VZclDUaXDJuqg42MlsUqV-w\">\r\n</p>\r\n\r\n<h1 a"
},
{
"path": "babel.config.js",
"chars": 1332,
"preview": "const presets = ['@babel/preset-env', '@babel/preset-react', '@babel/preset-typescript'];\nconst plugins = [\n '@babel/pl"
},
{
"path": "build/loaders/jsxPx2Rem.js",
"chars": 806,
"preview": "const loaderUtils = require('loader-utils');\n\n// 默认参数\nconst defaultopts = {\n remUnit: 32, // rem unit value (default: 1"
},
{
"path": "components/_util/children.ts",
"chars": 605,
"preview": "// import React from 'react';\n// import { isFragment } from 'react-is';\n\n// export const toArray = (children: React.Reac"
},
{
"path": "components/_util/index.ts",
"chars": 122,
"preview": "import to from './to';\nimport sync from './sync';\n\nexport * from './type';\nexport * from './utils';\n\nexport { sync, to }"
},
{
"path": "components/_util/sync.ts",
"chars": 589,
"preview": "const sync = (fn: Function, ...args: any[]): Promise<any> => {\n return new Promise((resolve, reject) => {\n const obj"
},
{
"path": "components/_util/to.ts",
"chars": 490,
"preview": "const to = (promise: Promise<any>): Promise<any> => {\n // eslint-disable-next-line no-prototype-builtins\n if (!promise"
},
{
"path": "components/_util/type.ts",
"chars": 319,
"preview": "export type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>;\n// https://stackoverflow.com/questions/46176165/w"
},
{
"path": "components/_util/utils.ts",
"chars": 5251,
"preview": "export interface Obj {\n [key: string]: any;\n}\n\nexport const guid = () => {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxx"
},
{
"path": "components/action-sheet/index.tsx",
"chars": 3631,
"preview": "import React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport Popup from '../"
},
{
"path": "components/action-sheet/style/index.scss",
"chars": 2909,
"preview": "@import '../../style/theme/index';\n\n$action-sheet-prefix-cls: #{$anna-prefix}-action-sheet;\n\n.#{$action-sheet-prefix-cls"
},
{
"path": "components/action-sheet/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/button/index.tsx",
"chars": 3753,
"preview": "import * as React from 'react';\nimport { View, Text, Button } from 'remax/one';\nimport classNames from 'classnames';\nimp"
},
{
"path": "components/button/style/index.scss",
"chars": 5545,
"preview": "@import '../../style/theme/index';\n\n$button-prefix-cls: #{$anna-prefix}-btn;\n\n$large-height: 80px;\n\n.#{$button-prefix-cl"
},
{
"path": "components/button/style/index.ts",
"chars": 103,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../loading/style';\n"
},
{
"path": "components/card/index.tsx",
"chars": 2278,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/card/style/index.scss",
"chars": 1071,
"preview": "@import '../../style/theme/index';\n\n$card-prefix-cls: #{$anna-prefix}-card;\n\n.#{$card-prefix-cls} {\n position: relative"
},
{
"path": "components/card/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/cascade/index.tsx",
"chars": 4767,
"preview": "import React, { useState, useEffect } from 'react';\nimport { View, Text } from 'remax/one';\nimport { ScrollView } from '"
},
{
"path": "components/cascade/style/index.scss",
"chars": 1974,
"preview": "@import '../../style/theme/index';\n\n$cascade-prefix-cls: #{$anna-prefix}-cascade;\n\n$radius: 30px;\n\n.#{$cascade-prefix-cl"
},
{
"path": "components/cascade/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/cascade-popup/index.tsx",
"chars": 2006,
"preview": "import * as React from 'react';\nimport { useState } from 'react';\nimport { View } from 'remax/one';\nimport Cascade from "
},
{
"path": "components/cascade-popup/style/index.scss",
"chars": 989,
"preview": "@import '../../style/theme/index';\n\n$cascade-popup-prefix-cls: #{$anna-prefix}-cascade-popup;\n\n.#{$cascade-popup-prefix-"
},
{
"path": "components/cascade-popup/style/index.ts",
"chars": 221,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../cascade/style';\nimport '../../loa"
},
{
"path": "components/cell/index.tsx",
"chars": 3051,
"preview": "import * as React from 'react';\nimport { View, Text } from 'remax/one';\nimport classNames from 'classnames';\nimport Icon"
},
{
"path": "components/cell/style/index.scss",
"chars": 1721,
"preview": "@import '../../style/theme/index';\r\n\r\n$cell-prefix-cls: #{$anna-prefix}-cell;\r\n\r\n.#{$cell-prefix-cls} {\r\n position: rel"
},
{
"path": "components/cell/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../cell/style';\n"
},
{
"path": "components/checkbox/index.tsx",
"chars": 2537,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport { getPrefixCls } from '../common';\nimport Icon "
},
{
"path": "components/checkbox/style/index.scss",
"chars": 482,
"preview": "@import '../../style/theme/index';\n\n$checkbox-prefix-cls: #{$anna-prefix}-checkbox;\n\n.#{$checkbox-prefix-cls} {\n displa"
},
{
"path": "components/checkbox/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/col/index.tsx",
"chars": 803,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/col/style/index.scss",
"chars": 363,
"preview": "@import '../../style/theme/index';\n\n$col-prefix-cls: #{$anna-prefix}-col;\n$span: 100% / 24;\n\n.#{$col-prefix-cls} {\n pos"
},
{
"path": "components/col/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/common/index.ts",
"chars": 106,
"preview": "export const annaPrefix = 'anna';\n\nexport const getPrefixCls = (name: string) => `${annaPrefix}-${name}`;\n"
},
{
"path": "components/config-provider/index.tsx",
"chars": 112,
"preview": "import React from 'react';\n\nconst configProvider = React.createContext('anna');\n\nexport default configProvider;\n"
},
{
"path": "components/date-picker/index.tsx",
"chars": 1114,
"preview": "import * as React from 'react';\nimport dayjs from 'dayjs';\nimport { View } from 'remax/one';\nimport { datePicker, showTo"
},
{
"path": "components/date-picker/style/index.ts",
"chars": 0,
"preview": ""
},
{
"path": "components/dropdown/index.tsx",
"chars": 1088,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport { getPrefixCls } from '../common';\n\nconst prefi"
},
{
"path": "components/dropdown/style/index.scss",
"chars": 605,
"preview": "@import '../../style/theme/index';\n\n$dropdown-prefix-cls: #{$anna-prefix}-dropdown;\n\n.#{$dropdown-prefix-cls} {\n &-cont"
},
{
"path": "components/dropdown/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/filter/filter.tsx",
"chars": 2244,
"preview": "import React, { useState, useRef } from 'react';\nimport { View } from 'remax/one';\nimport Mask from '../mask';\nimport Fi"
},
{
"path": "components/filter/index.ts",
"chars": 272,
"preview": "import InternalFilter from './filter';\nimport Item from './item';\n\ntype InternalFilter = typeof InternalFilter;\ninterfac"
},
{
"path": "components/filter/item.tsx",
"chars": 3321,
"preview": "import React, { useImperativeHandle, useState } from 'react';\nimport { View, Text } from 'remax/one';\nimport classNames "
},
{
"path": "components/filter/style/filter.scss",
"chars": 400,
"preview": "@import '../../style/theme/index';\n\n$filter-prefix-cls: #{$anna-prefix}-filter;\n\n.#{$filter-prefix-cls} {\n position: re"
},
{
"path": "components/filter/style/index.scss",
"chars": 39,
"preview": "@import './filter';\n@import './item';\n\n"
},
{
"path": "components/filter/style/index.ts",
"chars": 159,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../mask/style';\nimport '../../popup/"
},
{
"path": "components/filter/style/item.scss",
"chars": 1075,
"preview": "@import '../../style/theme/index';\n\n$filter-item-prefix-cls: #{$anna-prefix}-filter-item;\n\n.#{$filter-item-prefix-cls} {"
},
{
"path": "components/form-value/index.tsx",
"chars": 615,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport { getPrefixCls } from '../common';\n\nconst prefi"
},
{
"path": "components/form-value/style/index.scss",
"chars": 229,
"preview": "@import '../../style/theme/index';\n\n$form-value-prefix-cls: #{$anna-prefix}-form-value;\n\n.#{$form-value-prefix-cls} {\n "
},
{
"path": "components/form-value/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/grid/index.tsx",
"chars": 2125,
"preview": "import React, { useMemo } from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport Ro"
},
{
"path": "components/grid/style/index.scss",
"chars": 149,
"preview": "@import '../../style/theme/index';\n\n$grid-prefix-cls: #{$anna-prefix}-grid;\n\n.#{$grid-prefix-cls} {\n &-row-border {\n\n "
},
{
"path": "components/grid/style/index.ts",
"chars": 125,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../row/style';\nimport '../../col/sty"
},
{
"path": "components/hooks/index.ts",
"chars": 48,
"preview": "export { default as useRefs } from './useRefs';\n"
},
{
"path": "components/hooks/useRefs.ts",
"chars": 582,
"preview": "import * as React from 'react';\nimport { useRef } from 'react';\n\nexport default function useRefs<RefType>(): [\n (key: R"
},
{
"path": "components/icon/index.tsx",
"chars": 664,
"preview": "import * as React from 'react';\nimport { Text } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/icon/style/index.scss",
"chars": 259,
"preview": "@import '../../style/theme/index';\r\n@import '../../style/iconfont/index';\r\n\r\n\r\n$icon-prefix-cls: #{$anna-prefix}-icon;\r\n"
},
{
"path": "components/icon/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/image-upload/index.tsx",
"chars": 3717,
"preview": "import * as React from 'react';\nimport { View, Image } from 'remax/one';\nimport { previewImage, chooseImage } from '../o"
},
{
"path": "components/image-upload/style/index.scss",
"chars": 954,
"preview": "@import '../../style/theme/index';\n\n$image-upload-prefix-cls: #{$anna-prefix}-image-upload;\n\n.#{$image-upload-prefix-cls"
},
{
"path": "components/image-upload/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/images/index.tsx",
"chars": 1244,
"preview": "import * as React from 'react';\nimport { View, Image } from 'remax/one';\nimport { previewImage } from '../one';\nimport {"
},
{
"path": "components/images/style/index.scss",
"chars": 538,
"preview": "@import '../../style/theme/index';\n\n$images-prefix-cls: #{$anna-prefix}-images;\n\n.#{$images-prefix-cls} {\n display: gri"
},
{
"path": "components/images/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/index.ts",
"chars": 1961,
"preview": "// 通用\n\nexport { default as Button } from './button';\n\nexport { default as Icon } from './icon';\n\nexport { default as Pop"
},
{
"path": "components/input/index.tsx",
"chars": 1785,
"preview": "import * as React from 'react';\nimport { Input, View } from 'remax/one';\nimport classNames from 'classnames';\nimport Cel"
},
{
"path": "components/input/style/index.scss",
"chars": 510,
"preview": "@import '../../style/theme/index';\n\n$input-prefix-cls: #{$anna-prefix}-input;\n\n.#{$input-prefix-cls} {\n display: block;"
},
{
"path": "components/input/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../cell/style';\n"
},
{
"path": "components/loading/index.tsx",
"chars": 1672,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport { getPrefixCls } from '../common';\n\nconst prefi"
},
{
"path": "components/loading/style/index.scss",
"chars": 2831,
"preview": "@import '../../style/theme/index';\n\n$loading-prefix-cls: #{$anna-prefix}-loading;\n\n.#{$loading-prefix-cls} {\n box-sizin"
},
{
"path": "components/loading/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/mask/index.tsx",
"chars": 796,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/mask/style/index.scss",
"chars": 430,
"preview": "@import '../../style/theme/index';\n\n$mask-prefix-cls: #{$anna-prefix}-mask;\n\n.#{$mask-prefix-cls} {\n position: fixed;\n "
},
{
"path": "components/mask/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/one/api/chooseImage/index.ts",
"chars": 70,
"preview": "import { chooseImage } from 'remax/ali';\n\nexport default chooseImage;\n"
},
{
"path": "components/one/api/chooseImage/index.web.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/one/api/chooseImage/index.wechat.ts",
"chars": 121,
"preview": "import { chooseImage } from 'remax/wechat';\n\nexport default (options: any) => {\n chooseImage({\n ...options,\n });\n};"
},
{
"path": "components/one/api/createSelectorQuery/index.ts",
"chars": 86,
"preview": "import { createSelectorQuery } from 'remax/ali';\n\nexport default createSelectorQuery;\n"
},
{
"path": "components/one/api/createSelectorQuery/index.web.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/one/api/createSelectorQuery/index.wechat.ts",
"chars": 89,
"preview": "import { createSelectorQuery } from 'remax/wechat';\n\nexport default createSelectorQuery;\n"
},
{
"path": "components/one/api/datePicker/index.ts",
"chars": 68,
"preview": "import { datePicker } from 'remax/ali';\n\nexport default datePicker;\n"
},
{
"path": "components/one/api/datePicker/index.web.ts",
"chars": 151,
"preview": "/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n"
},
{
"path": "components/one/api/datePicker/index.wechat.ts",
"chars": 69,
"preview": "import { showToast } from 'remax/wechat';\n\nexport default showToast;\n"
},
{
"path": "components/one/api/hideLoading/index.ts",
"chars": 70,
"preview": "import { hideLoading } from 'remax/ali';\n\nexport default hideLoading;\n"
},
{
"path": "components/one/api/hideLoading/index.web.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/one/api/hideLoading/index.wechat.ts",
"chars": 73,
"preview": "import { hideLoading } from 'remax/wechat';\n\nexport default hideLoading;\n"
},
{
"path": "components/one/api/index.ts",
"chars": 410,
"preview": "export { default as createSelectorQuery } from './createSelectorQuery';\n\nexport { default as datePicker } from './datePi"
},
{
"path": "components/one/api/previewImage/index.ts",
"chars": 72,
"preview": "import { previewImage } from 'remax/ali';\n\nexport default previewImage;\n"
},
{
"path": "components/one/api/previewImage/index.web.ts",
"chars": 151,
"preview": "/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n"
},
{
"path": "components/one/api/previewImage/index.wechat.ts",
"chars": 75,
"preview": "import { previewImage } from 'remax/wechat';\n\nexport default previewImage;\n"
},
{
"path": "components/one/api/showLoading/index.ts",
"chars": 70,
"preview": "import { showLoading } from 'remax/ali';\n\nexport default showLoading;\n"
},
{
"path": "components/one/api/showLoading/index.web.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/one/api/showLoading/index.wechat.ts",
"chars": 73,
"preview": "import { showLoading } from 'remax/wechat';\n\nexport default showLoading;\n"
},
{
"path": "components/one/api/showToast/index.ts",
"chars": 66,
"preview": "import { showToast } from 'remax/ali';\n\nexport default showToast;\n"
},
{
"path": "components/one/api/showToast/index.web.ts",
"chars": 151,
"preview": "/* eslint-disable @typescript-eslint/no-unused-vars */\n// eslint-disable-next-line @typescript-eslint/no-empty-function\n"
},
{
"path": "components/one/api/showToast/index.wechat.ts",
"chars": 69,
"preview": "import { showToast } from 'remax/wechat';\n\nexport default showToast;\n"
},
{
"path": "components/one/base/checkbox/index.tsx",
"chars": 64,
"preview": "import { Checkbox } from 'remax/ali';\n\nexport default Checkbox;\n"
},
{
"path": "components/one/base/checkbox/index.web.tsx",
"chars": 150,
"preview": "import * as React from 'react';\n\ntype Props = any;\n\nexport default function Checkbox(props: Props) {\n return <input {.."
},
{
"path": "components/one/base/checkbox/index.wechat.tsx",
"chars": 67,
"preview": "import { Checkbox } from 'remax/wechat';\n\nexport default Checkbox;\n"
},
{
"path": "components/one/base/index.ts",
"chars": 153,
"preview": "export { default as ScrollView } from './scroll-view';\n\nexport { default as Checkbox } from './checkbox';\n\nexport { defa"
},
{
"path": "components/one/base/picker/index.tsx",
"chars": 60,
"preview": "import { Picker } from 'remax/ali';\n\nexport default Picker;\n"
},
{
"path": "components/one/base/picker/index.web.tsx",
"chars": 143,
"preview": "import * as React from 'react';\n\n// 自定义 Props\ntype Props = any;\n\nexport default function Picker(props: Props) {\n return"
},
{
"path": "components/one/base/picker/index.wechat.tsx",
"chars": 63,
"preview": "import { Picker } from 'remax/wechat';\n\nexport default Picker;\n"
},
{
"path": "components/one/base/scroll-view/index.tsx",
"chars": 68,
"preview": "import { ScrollView } from 'remax/ali';\n\nexport default ScrollView;\n"
},
{
"path": "components/one/base/scroll-view/index.web.tsx",
"chars": 193,
"preview": "import * as React from 'react';\n// 自定义 Props\ntype Props = any;\n\nexport default function ScrollView(props: Props) {\n ret"
},
{
"path": "components/one/base/scroll-view/index.wechat.tsx",
"chars": 71,
"preview": "import { ScrollView } from 'remax/wechat';\n\nexport default ScrollView;\n"
},
{
"path": "components/one/index.ts",
"chars": 47,
"preview": "export * from './api';\nexport * from './base';\n"
},
{
"path": "components/picker/index.tsx",
"chars": 1665,
"preview": "import * as React from 'react';\nimport { Picker as APicker } from '../one';\nimport Cell from '../cell';\nimport FormValue"
},
{
"path": "components/picker/style/index.ts",
"chars": 115,
"preview": "import '../../web/base/picker/style';\n\n// dependencies\nimport '../../cell/style';\nimport '../../form-value/style';\n"
},
{
"path": "components/popup/index.tsx",
"chars": 1763,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport Mask from "
},
{
"path": "components/popup/style/index.scss",
"chars": 2071,
"preview": "@import '../../style/theme/index';\r\n\r\n$popup-prefix-cls: #{$anna-prefix}-popup;\r\n\r\n.#{$popup-prefix-cls} {\r\n &-containe"
},
{
"path": "components/popup/style/index.ts",
"chars": 127,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../mask/style';\nimport '../../icon/s"
},
{
"path": "components/progress-bar/index.tsx",
"chars": 1675,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport Loading fr"
},
{
"path": "components/progress-bar/style/index.scss",
"chars": 851,
"preview": "@import '../../style/theme/index';\n\n$progress_bar-prefix-cls: #{$anna-prefix}-progress_bar;\n\n\n$height: 50px;\n\n.#{$progre"
},
{
"path": "components/progress-bar/style/index.ts",
"chars": 103,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../loading/style';\n"
},
{
"path": "components/radio/index.tsx",
"chars": 2558,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/radio/style/index.scss",
"chars": 991,
"preview": "@import '../../style/theme/index';\n\n$radio-prefix-cls: #{$anna-prefix}-radio;\n\n.#{$radio-prefix-cls} {\n display: inline"
},
{
"path": "components/radio/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/rate/index.tsx",
"chars": 1561,
"preview": "import * as React from 'react';\nimport { useMemo } from 'react';\nimport { View } from 'remax/one';\nimport Icon from '../"
},
{
"path": "components/rate/style/index.scss",
"chars": 429,
"preview": "@import '../../style/theme/index';\n\n$rate-prefix-cls: #{$anna-prefix}-rate;\n\n.#{$rate-prefix-cls} {\n display: flex;\n a"
},
{
"path": "components/rate/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/result/index.tsx",
"chars": 2122,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport Icon from '../icon';\nimport { getPrefixCls } fr"
},
{
"path": "components/result/style/index.scss",
"chars": 800,
"preview": "@import '../../style/theme/index';\n\n$result-prefix-cls: #{$anna-prefix}-result;\n\n.#{$result-prefix-cls} {\n box-sizing: "
},
{
"path": "components/result/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/row/index.tsx",
"chars": 1434,
"preview": "import React, { useMemo } from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { "
},
{
"path": "components/row/style/index.scss",
"chars": 574,
"preview": "@import '../../style/theme/index';\n\n$row-prefix-cls: #{$anna-prefix}-row;\n\n.#{$row-prefix-cls} {\n display: flex;\n &-ju"
},
{
"path": "components/row/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/search-bar/index.tsx",
"chars": 3863,
"preview": "import * as React from 'react';\nimport { useState } from 'react';\nimport { View, Input } from 'remax/one';\nimport classN"
},
{
"path": "components/search-bar/style/index.scss",
"chars": 2042,
"preview": "@import '../../style/theme/index';\n\n$search_bar-prefix-cls: #{$anna-prefix}-search_bar;\n\n.#{$search_bar-prefix-cls} {\n "
},
{
"path": "components/search-bar/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/selector/index.tsx",
"chars": 3105,
"preview": "import * as React from 'react';\nimport { useState, useEffect } from 'react';\nimport { View } from 'remax/one';\nimport cl"
},
{
"path": "components/selector/style/index.scss",
"chars": 1349,
"preview": "@import '../../style/theme/index';\n\n$selector-prefix-cls: #{$anna-prefix}-selector;\n\n.#{$selector-prefix-cls} {\n displa"
},
{
"path": "components/selector/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/selector-popup/index.tsx",
"chars": 1466,
"preview": "import * as React from 'react';\nimport { useState } from 'react';\nimport { View } from 'remax/one';\nimport Popup from '."
},
{
"path": "components/selector-popup/style/index.scss",
"chars": 311,
"preview": "@import '../../style/theme/index';\n\n$selector-popup-prefix-cls: #{$anna-prefix}-selector-popup;\n\n.#{$selector-popup-pref"
},
{
"path": "components/selector-popup/style/index.ts",
"chars": 165,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../popup/style';\nimport '../../selec"
},
{
"path": "components/skeleton/index.tsx",
"chars": 5099,
"preview": "import React, { useEffect, useMemo } from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames'"
},
{
"path": "components/skeleton/style/index.scss",
"chars": 1632,
"preview": "@import '../../style/theme/index';\n\n$skeleton-prefix-cls: #{$anna-prefix}-skeleton;\n\n.#{$skeleton-prefix-cls} {\n positi"
},
{
"path": "components/skeleton/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/space/__test__/index.test.js",
"chars": 286,
"preview": "import React from 'react';\nimport { mount } from 'enzyme';\nimport Space from '..';\n\ndescribe('Space', () => {\n it('shou"
},
{
"path": "components/space/index.tsx",
"chars": 1704,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/space/s.jsx",
"chars": 104,
"preview": "import React from 'react';\n\nconst Space = () => {\n return <div>aaaaaa</div>;\n};\n\nexport default Space;\n"
},
{
"path": "components/space/style/index.scss",
"chars": 848,
"preview": "@import '../../style/theme/index';\n\n$space-prefix-cls: #{$anna-prefix}-space;\n\n.#{$space-prefix-cls} {\n display: inline"
},
{
"path": "components/space/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/spin/index.tsx",
"chars": 794,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/spin/style/index.scss",
"chars": 547,
"preview": "@import '../../style/theme/index';\n\n$spin-prefix-cls: #{$anna-prefix}-spin;\n\n.#{$spin-prefix-cls} {\n display: flex;\n j"
},
{
"path": "components/spin/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/stepper/index.tsx",
"chars": 3687,
"preview": "import * as React from 'react';\nimport { View, Input } from 'remax/one';\nimport classNames from 'classnames';\nimport Ico"
},
{
"path": "components/stepper/style/index.scss",
"chars": 1946,
"preview": "@import '../../style/theme/index';\n\n$stepper-prefix-cls: #{$anna-prefix}-stepper;\n\n$small: 48px;\n$default: 56px;\n\n.#{$st"
},
{
"path": "components/stepper/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/steps/index.tsx",
"chars": 3371,
"preview": "import * as React from 'react';\nimport { View, Text } from 'remax/one';\nimport classNames from 'classnames';\nimport Icon"
},
{
"path": "components/steps/style/index.scss",
"chars": 3504,
"preview": "@import '../../style/theme/index';\n\n$steps-prefix-cls: #{$anna-prefix}-steps;\n\n.#{$steps-prefix-cls} {\n &-first_step{\n "
},
{
"path": "components/steps/style/index.ts",
"chars": 100,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n\n// dependencies\nimport '../../icon/style';\n"
},
{
"path": "components/style/iconfont/index.scss",
"chars": 21527,
"preview": "@font-face {font-family: \"iconfont\";\n src: url('//at.alicdn.com/t/font_1623975_p5xdzibs32b.woff2') format('woff2'),\n u"
},
{
"path": "components/style/index.scss",
"chars": 55,
"preview": "@import './reset/index.scss';\n@import './theme/index';\n"
},
{
"path": "components/style/index.ts",
"chars": 23,
"preview": "import './index.scss';\n"
},
{
"path": "components/style/reset/index.scss",
"chars": 1833,
"preview": "/* \nhtml5doctor.com Reset Stylesheet\nv1.4.1 \n2010-03-01\nAuthor: Richard Clark - http://richclarkdesign.com\n*/\nview, text"
},
{
"path": "components/style/theme/index.scss",
"chars": 1766,
"preview": "// The prefix to use on all css classes from anna.\n$anna-prefix: anna;\n\n// color\n$pink-base: rgba(255, 119, 119, 1); // "
},
{
"path": "components/swipe-action/index.tsx",
"chars": 4120,
"preview": "import React, { useState, useEffect, useMemo } from 'react';\nimport { View } from 'remax/one';\nimport { createSelectorQu"
},
{
"path": "components/swipe-action/style/index.scss",
"chars": 657,
"preview": "@import '../../style/theme/index';\n\n$swipe-prefix-cls: #{$anna-prefix}-swipe;\n\n.#{$swipe-prefix-cls} {\n position: relat"
},
{
"path": "components/swipe-action/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/switch/index.tsx",
"chars": 1230,
"preview": "import * as React from 'react';\nimport classNames from 'classnames';\nimport { View } from 'remax/one';\nimport { Checkbox"
},
{
"path": "components/switch/style/index.scss",
"chars": 2580,
"preview": "@import '../../style/theme/index';\n\n$switch-prefix-cls: #{$anna-prefix}-switch;\n\n.#{$switch-prefix-cls} {\n box-sizing: "
},
{
"path": "components/switch/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/tabs/index.tsx",
"chars": 10158,
"preview": "import React, { useMemo, useState, useEffect } from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'c"
},
{
"path": "components/tabs/style/index.scss",
"chars": 4795,
"preview": "@import '../../style/theme/index';\n\n$tabs-prefix-cls: #{$anna-prefix}-tabs;\n\n.#{$tabs-prefix-cls} {\n height: 100%;\n &-"
},
{
"path": "components/tabs/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/tag/index.tsx",
"chars": 2161,
"preview": "import * as React from 'react';\nimport { View } from 'remax/one';\nimport classNames from 'classnames';\nimport { getPrefi"
},
{
"path": "components/tag/style/index.scss",
"chars": 1767,
"preview": "@import '../../style/theme/index';\n\n$tag-prefix-cls: #{$anna-prefix}-tag;\n\n.#{$tag-prefix-cls} {\n box-sizing: border-bo"
},
{
"path": "components/tag/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/textarea/index.tsx",
"chars": 1642,
"preview": "import * as React from 'react';\nimport { View, Textarea } from 'remax/one';\nimport classNames from 'classnames';\nimport "
},
{
"path": "components/textarea/style/index.scss",
"chars": 363,
"preview": "@import '../../style/theme/index';\n\n$textarea-prefix-cls: #{$anna-prefix}-textarea;\n\n.#{$textarea-prefix-cls} {\n &-defa"
},
{
"path": "components/textarea/style/index.ts",
"chars": 56,
"preview": "import '../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/web/api/chooseImage/index.ts",
"chars": 1269,
"preview": "export default (obj: any) => {\n const body = document.getElementsByTagName('body')[0];\n const imgUploadInput = documen"
},
{
"path": "components/web/api/createSelectorQuery/index.ts",
"chars": 2044,
"preview": "export interface QueryProps {\n select?: (selector: string) => any;\n selectAll?: (selector: string) => any;\n boundingC"
},
{
"path": "components/web/api/datePicker/index.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/web/api/hideLoading/index.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/web/api/index.ts",
"chars": 410,
"preview": "export { default as createSelectorQuery } from './createSelectorQuery';\n\nexport { default as datePicker } from './datePi"
},
{
"path": "components/web/api/previewImage/index.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/web/api/showLoading/index.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/web/api/showToast/index.ts",
"chars": 90,
"preview": "// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {};\n"
},
{
"path": "components/web/base/checkbox/index.tsx",
"chars": 150,
"preview": "import * as React from 'react';\n\ntype Props = any;\n\nexport default function Checkbox(props: Props) {\n return <input {.."
},
{
"path": "components/web/base/image/index.tsx",
"chars": 90,
"preview": "import Image from '@remax/one/esm/hostComponents/Image/index.web';\n\nexport default Image;\n"
},
{
"path": "components/web/base/index.ts",
"chars": 393,
"preview": "export { default as ScrollView } from './scroll-view';\n\nexport { default as Checkbox } from './checkbox';\n\nexport { defa"
},
{
"path": "components/web/base/input/index.tsx",
"chars": 90,
"preview": "import Input from '@remax/one/esm/hostComponents/Input/index.web';\n\nexport default Input;\n"
},
{
"path": "components/web/base/picker/index.tsx",
"chars": 4778,
"preview": "import React, { useState, useEffect } from 'react';\nimport Popup from '../../../popup';\nimport { getPrefixCls } from '.."
},
{
"path": "components/web/base/picker/style/index.scss",
"chars": 1512,
"preview": "@import '../../../../style/theme/index';\n\n$picker-prefix-cls: #{$anna-prefix}-base-picker;\n\n\n.#{$picker-prefix-cls} {\n "
},
{
"path": "components/web/base/picker/style/index.ts",
"chars": 62,
"preview": "import '../../../../style/index.scss';\nimport './index.scss';\n"
},
{
"path": "components/web/base/scroll-view/index.tsx",
"chars": 193,
"preview": "import * as React from 'react';\n// 自定义 Props\ntype Props = any;\n\nexport default function ScrollView(props: Props) {\n ret"
},
{
"path": "components/web/base/text/index.tsx",
"chars": 87,
"preview": "import Text from '@remax/one/esm/hostComponents/Text/index.web';\n\nexport default Text;\n"
},
{
"path": "components/web/base/textarea/index.tsx",
"chars": 99,
"preview": "import Textarea from '@remax/one/esm/hostComponents/Textarea/index.web';\n\nexport default Textarea;\n"
},
{
"path": "components/web/base/view/index.tsx",
"chars": 87,
"preview": "import View from '@remax/one/esm/hostComponents/View/index.web';\n\nexport default View;\n"
},
{
"path": "components/web/index.ts",
"chars": 47,
"preview": "export * from './api';\nexport * from './base';\n"
}
]
// ... and 131 more files (download for full content)
About this extraction
This page contains the full source code of the AnnaSearl/anna-remax-ui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 331 files (1.8 MB), approximately 638.8k tokens, and a symbol index with 1066 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.