Full Code of niu-grandpa/rabbit-ui for AI

master 93164adfa7dc cached
674 files
3.1 MB
843.7k tokens
902 symbols
1 requests
Download .txt
Showing preview only (3,498K chars total). Download the full file or copy to clipboard to get everything.
Repository: niu-grandpa/rabbit-ui
Branch: master
Commit: 93164adfa7dc
Files: 674
Total size: 3.1 MB

Directory structure:
gitextract_ibke3ltz/

├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   └── CONTRIBUTING.md
├── .gitignore
├── .npmignore
├── LICENSE
├── README.en-US.md
├── README.md
├── config/
│   ├── webpack.common.js
│   ├── webpack.dev.js
│   ├── webpack.dist.dev.js
│   └── webpack.dist.prod.js
├── dist/
│   ├── rabbit.js
│   └── styles/
│       └── rabbit.css
├── docs/
│   ├── affix.md
│   ├── alert.md
│   ├── avatar.md
│   ├── back-top.md
│   ├── badge.md
│   ├── breadcrumb.md
│   ├── button.md
│   ├── card.md
│   ├── carousel.md
│   ├── checkbox.md
│   ├── circle.md
│   ├── collapse.md
│   ├── count-down.md
│   ├── divider.md
│   ├── drawer.md
│   ├── dropdown.md
│   ├── empty.md
│   ├── input-number.md
│   ├── jumbotron.md
│   ├── loading-bar.md
│   ├── message.md
│   ├── mini-modal.md
│   ├── modal.md
│   ├── notice.md
│   ├── page-header.md
│   ├── poptip.md
│   ├── progress.md
│   ├── radio.md
│   ├── result.md
│   ├── skeleton.md
│   ├── spin.md
│   ├── steps.md
│   ├── switch.md
│   ├── tabs.md
│   ├── tag.md
│   ├── time.md
│   ├── timeline.md
│   └── tooltip.md
├── examples/
│   ├── README.md
│   ├── affix/
│   │   ├── index.html
│   │   └── index.ts
│   ├── alert/
│   │   ├── index.html
│   │   └── index.ts
│   ├── avatar/
│   │   ├── index.html
│   │   └── index.ts
│   ├── back-top/
│   │   ├── index.html
│   │   └── index.ts
│   ├── badge/
│   │   ├── index.html
│   │   └── index.ts
│   ├── breadcrumb/
│   │   ├── index.html
│   │   └── index.ts
│   ├── button/
│   │   ├── index.html
│   │   └── index.ts
│   ├── card/
│   │   ├── index.html
│   │   └── index.ts
│   ├── carousel/
│   │   ├── index.html
│   │   └── index.ts
│   ├── checkbox/
│   │   ├── index.html
│   │   └── index.ts
│   ├── circle/
│   │   ├── index.html
│   │   └── index.ts
│   ├── collapse/
│   │   ├── index.html
│   │   └── index.ts
│   ├── count-down/
│   │   ├── index.html
│   │   └── index.ts
│   ├── divider/
│   │   ├── index.html
│   │   └── index.ts
│   ├── drawer/
│   │   ├── index.html
│   │   └── index.ts
│   ├── dropdown/
│   │   ├── index.html
│   │   └── index.ts
│   ├── empty/
│   │   ├── index.html
│   │   └── index.ts
│   ├── input-number/
│   │   ├── index.html
│   │   └── index.ts
│   ├── jumbotron/
│   │   ├── index.html
│   │   └── index.ts
│   ├── loading-bar/
│   │   ├── index.html
│   │   └── index.ts
│   ├── main.ts
│   ├── message/
│   │   ├── index.html
│   │   └── index.ts
│   ├── mini-modal/
│   │   ├── index.html
│   │   └── index.ts
│   ├── modal/
│   │   ├── index.html
│   │   └── index.ts
│   ├── notice/
│   │   ├── index.html
│   │   └── index.ts
│   ├── page-header/
│   │   ├── index.html
│   │   └── index.ts
│   ├── poptip/
│   │   ├── index.html
│   │   └── index.ts
│   ├── progress/
│   │   ├── index.html
│   │   └── index.ts
│   ├── radio/
│   │   ├── index.html
│   │   └── index.ts
│   ├── result/
│   │   ├── index.html
│   │   └── index.ts
│   ├── skeleton/
│   │   ├── index.html
│   │   └── index.ts
│   ├── spin/
│   │   ├── index.html
│   │   └── index.ts
│   ├── steps/
│   │   ├── index.html
│   │   └── index.ts
│   ├── switch/
│   │   ├── index.html
│   │   └── index.ts
│   ├── tabs/
│   │   ├── index.html
│   │   └── index.ts
│   ├── tag/
│   │   ├── index.html
│   │   └── index.ts
│   ├── time/
│   │   ├── index.html
│   │   └── index.ts
│   ├── timeline/
│   │   ├── index.html
│   │   └── index.ts
│   └── tooltip/
│       ├── index.html
│       └── index.ts
├── package.json
├── postcss.config.js
├── prettier.config.js
├── site/
│   ├── .babelrc
│   ├── .eslintrc.js
│   ├── .gitignore
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── prettier.config.js
│   ├── src/
│   │   ├── App.vue
│   │   ├── components/
│   │   │   ├── Anchor.vue
│   │   │   ├── CodeBox.vue
│   │   │   ├── ColorCard.vue
│   │   │   ├── ExampleHeaderArea.vue
│   │   │   ├── NavLogo.vue
│   │   │   ├── RowCol.vue
│   │   │   ├── SearchInput.vue
│   │   │   └── index.ts
│   │   ├── examples-code/
│   │   │   ├── components/
│   │   │   │   ├── affix/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── FixedBottom.vue
│   │   │   │   │   ├── Offset.vue
│   │   │   │   │   ├── StatusChange.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── alert/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── WithBanner.vue
│   │   │   │   │   ├── WithClose.vue
│   │   │   │   │   ├── WithDesc.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── avatar/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoFontSize.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── back-top/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CustomStyle.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── badge/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Alone.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Colors.vue
│   │   │   │   │   ├── CustomContent.vue
│   │   │   │   │   ├── CustomPosition.vue
│   │   │   │   │   ├── MaxCount.vue
│   │   │   │   │   ├── PresetColor.vue
│   │   │   │   │   ├── RedDot.vue
│   │   │   │   │   ├── StatusDot.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── breadcrumb/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Separator.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── button/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Ghost.vue
│   │   │   │   │   ├── Group.vue
│   │   │   │   │   ├── IconWithCircle.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── Long.vue
│   │   │   │   │   ├── Placement.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── card/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── DisHover.vue
│   │   │   │   │   ├── NoBorder.vue
│   │   │   │   │   ├── Shadow.vue
│   │   │   │   │   ├── Simple.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── carousel/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoPlay.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Fade.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── checkbox/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Border.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Group.vue
│   │   │   │   │   ├── Indeterminate.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── circle/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CustomStyle.vue
│   │   │   │   │   ├── Dashboard.vue
│   │   │   │   │   ├── UseWithOther.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── collapse/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── According.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Ghost.vue
│   │   │   │   │   ├── HiddenArrow.vue
│   │   │   │   │   ├── Simple.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── count-down/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── divider/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── HeaderPosition.vue
│   │   │   │   │   ├── Horizontal.vue
│   │   │   │   │   ├── TextStyle.vue
│   │   │   │   │   ├── Vertical.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── drawer/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── Inner.vue
│   │   │   │   │   ├── Multilayer.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── dropdown/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Nested.vue
│   │   │   │   │   ├── Placement.vue
│   │   │   │   │   ├── Trigger.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── empty/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── NoDesc.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── input-number/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── ControlsOutside.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Editable.vue
│   │   │   │   │   ├── Formatter.vue
│   │   │   │   │   ├── ReadOnly.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── Step.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── jumbotron/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Appearance.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── loading-bar/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── UseInAsync.vue
│   │   │   │   │   ├── UsedInRoute.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── message/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Background.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Closable.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── Promise.vue
│   │   │   │   │   ├── Time.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   ├── UseHTML.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── mini-modal/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Confirm.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── modal/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Aysnc.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── DisabledClose.vue
│   │   │   │   │   ├── FullScreen.vue
│   │   │   │   │   ├── Position.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── notice/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Closable.vue
│   │   │   │   │   ├── Promise.vue
│   │   │   │   │   ├── Time.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   ├── UseHTML.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── page-header/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── poptip/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoNewLine.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Complex.vue
│   │   │   │   │   ├── Confirm.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── InsideClosed.vue
│   │   │   │   │   ├── Placement.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── progress/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── FDJDT.vue
│   │   │   │   │   ├── Percent.vue
│   │   │   │   │   ├── StrokeColor.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── radio/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Border.vue
│   │   │   │   │   ├── Button.vue
│   │   │   │   │   ├── ButtonStyle.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Group.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── Vertical.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── result/
│   │   │   │   │   ├── 403.vue
│   │   │   │   │   ├── 404.vue
│   │   │   │   │   ├── 500.vue
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── CustomIcon.vue
│   │   │   │   │   ├── Error.vue
│   │   │   │   │   ├── Info.vue
│   │   │   │   │   ├── Success.vue
│   │   │   │   │   ├── Warning.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── skeleton/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Complex.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── WithAnimation.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── spin/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── ChangeState.vue
│   │   │   │   │   ├── CustomContent.vue
│   │   │   │   │   ├── FixCenter.vue
│   │   │   │   │   ├── FullScreen.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── steps/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── ChangeStep.vue
│   │   │   │   │   ├── Error.vue
│   │   │   │   │   ├── Mini.vue
│   │   │   │   │   ├── Vertical.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── switch/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CustomColor.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── TextAndIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── tabs/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Animated.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CardType.vue
│   │   │   │   │   ├── Closable.vue
│   │   │   │   │   ├── CustomStyle.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Small.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── tag/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CanSelect.vue
│   │   │   │   │   ├── Colors.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── StyleTypes.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── time/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoUpdate.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Types.vue
│   │   │   │   │   ├── WithAnchor.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── timeline/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Colors.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── Pending.vue
│   │   │   │   │   └── index.ts
│   │   │   │   └── tooltip/
│   │   │   │       ├── APITable.vue
│   │   │   │       ├── AutoNewLine.vue
│   │   │   │       ├── Basic.vue
│   │   │   │       ├── CustomContent.vue
│   │   │   │       ├── Delay.vue
│   │   │   │       ├── Disabled.vue
│   │   │   │       ├── Placement.vue
│   │   │   │       ├── Theme.vue
│   │   │   │       └── index.ts
│   │   │   └── docs/
│   │   │       ├── install/
│   │   │       │   ├── CDNAZ.vue
│   │   │       │   ├── SL.vue
│   │   │       │   └── index.ts
│   │   │       ├── introduce/
│   │   │       │   ├── AZ.vue
│   │   │       │   ├── AZ2.vue
│   │   │       │   ├── SL.vue
│   │   │       │   └── index.ts
│   │   │       └── start/
│   │   │           ├── Code1.vue
│   │   │           ├── Code2.vue
│   │   │           ├── Code3.vue
│   │   │           └── index.ts
│   │   ├── main.ts
│   │   ├── markdown.css
│   │   ├── pages/
│   │   │   ├── app/
│   │   │   │   ├── Index/
│   │   │   │   │   ├── Index.vue
│   │   │   │   │   ├── content/
│   │   │   │   │   │   └── Content.vue
│   │   │   │   │   ├── header/
│   │   │   │   │   │   ├── Header.vue
│   │   │   │   │   │   ├── NavBar.vue
│   │   │   │   │   │   ├── NavBarDropdown.vue
│   │   │   │   │   │   ├── NavMore.vue
│   │   │   │   │   │   └── NavRouterLink.vue
│   │   │   │   │   └── sider/
│   │   │   │   │       ├── Sider.vue
│   │   │   │   │       └── SiderMenu.vue
│   │   │   │   └── views/
│   │   │   │       ├── Affix.vue
│   │   │   │       ├── Alert.vue
│   │   │   │       ├── Avatar.vue
│   │   │   │       ├── BackTop.vue
│   │   │   │       ├── Badge.vue
│   │   │   │       ├── Breadcrumb.vue
│   │   │   │       ├── Button.vue
│   │   │   │       ├── Card.vue
│   │   │   │       ├── Carousel.vue
│   │   │   │       ├── Checkbox.vue
│   │   │   │       ├── Circle.vue
│   │   │   │       ├── Collapse.vue
│   │   │   │       ├── Color.vue
│   │   │   │       ├── CountDown.vue
│   │   │   │       ├── Divider.vue
│   │   │   │       ├── Drawer.vue
│   │   │   │       ├── Dropdown.vue
│   │   │   │       ├── Empty.vue
│   │   │   │       ├── FAQ.vue
│   │   │   │       ├── Icon.vue
│   │   │   │       ├── InputNumber.vue
│   │   │   │       ├── Install.vue
│   │   │   │       ├── Introduce.vue
│   │   │   │       ├── Jumbotron.vue
│   │   │   │       ├── LoadingBar.vue
│   │   │   │       ├── Message.vue
│   │   │   │       ├── MiniModal.vue
│   │   │   │       ├── Modal.vue
│   │   │   │       ├── Notice.vue
│   │   │   │       ├── PageHeader.vue
│   │   │   │       ├── Poptip.vue
│   │   │   │       ├── Progress.vue
│   │   │   │       ├── Radio.vue
│   │   │   │       ├── Result.vue
│   │   │   │       ├── Skeleton.vue
│   │   │   │       ├── Spin.vue
│   │   │   │       ├── Sponsor.vue
│   │   │   │       ├── Start.vue
│   │   │   │       ├── Steps.vue
│   │   │   │       ├── Switch.vue
│   │   │   │       ├── Tabs.vue
│   │   │   │       ├── Tag.vue
│   │   │   │       ├── Time.vue
│   │   │   │       ├── Timeline.vue
│   │   │   │       ├── Tooltip.vue
│   │   │   │       └── Update.vue
│   │   │   ├── home/
│   │   │   │   └── Home.vue
│   │   │   └── index.ts
│   │   ├── plugins/
│   │   │   └── antd.ts
│   │   ├── router-link-list.ts
│   │   ├── routers/
│   │   │   └── index.ts
│   │   └── shims-vue.d.ts
│   ├── tsconfig.json
│   └── vite.config.ts
├── some-log.md
├── src/
│   ├── build-umd.ts
│   ├── components/
│   │   ├── affix/
│   │   │   ├── affix.ts
│   │   │   └── index.ts
│   │   ├── alert/
│   │   │   ├── alert.ts
│   │   │   └── index.ts
│   │   ├── avatar/
│   │   │   ├── avatar.ts
│   │   │   └── index.ts
│   │   ├── back-top/
│   │   │   ├── back-top.ts
│   │   │   └── index.ts
│   │   ├── badge/
│   │   │   ├── badge.ts
│   │   │   └── index.ts
│   │   ├── breadcrumb/
│   │   │   ├── breadcrumb.ts
│   │   │   └── index.ts
│   │   ├── button/
│   │   │   ├── button.ts
│   │   │   └── index.ts
│   │   ├── card/
│   │   │   ├── card.ts
│   │   │   └── index.ts
│   │   ├── carousel/
│   │   │   ├── carousel.ts
│   │   │   └── index.ts
│   │   ├── checkbox/
│   │   │   ├── checkbox.ts
│   │   │   └── index.ts
│   │   ├── circle/
│   │   │   ├── circle.ts
│   │   │   └── index.ts
│   │   ├── collapse/
│   │   │   ├── collapse.ts
│   │   │   └── index.ts
│   │   ├── count-down/
│   │   │   ├── count-down.ts
│   │   │   └── index.ts
│   │   ├── divider/
│   │   │   ├── divider.ts
│   │   │   └── index.ts
│   │   ├── drawer/
│   │   │   ├── drawer.ts
│   │   │   └── index.ts
│   │   ├── dropdown/
│   │   │   ├── dropdown.ts
│   │   │   └── index.ts
│   │   ├── empty/
│   │   │   ├── empty.ts
│   │   │   └── index.ts
│   │   ├── input-number/
│   │   │   ├── index.ts
│   │   │   └── input-number.ts
│   │   ├── jumbotron/
│   │   │   ├── index.ts
│   │   │   └── jumbotron.ts
│   │   ├── loading-bar/
│   │   │   ├── index.ts
│   │   │   └── loading-bar.ts
│   │   ├── message/
│   │   │   ├── index.ts
│   │   │   ├── instance.ts
│   │   │   └── message.ts
│   │   ├── mini-modal/
│   │   │   ├── index.ts
│   │   │   └── mini-modal.ts
│   │   ├── modal/
│   │   │   ├── index.ts
│   │   │   └── modal.ts
│   │   ├── notice/
│   │   │   ├── index.ts
│   │   │   └── notice.ts
│   │   ├── page-header/
│   │   │   ├── index.ts
│   │   │   └── page-header.ts
│   │   ├── poptip/
│   │   │   ├── index.ts
│   │   │   └── poptip.ts
│   │   ├── prefix.ts
│   │   ├── progress/
│   │   │   ├── index.ts
│   │   │   └── progress.ts
│   │   ├── radio/
│   │   │   ├── index.ts
│   │   │   └── radio.ts
│   │   ├── result/
│   │   │   ├── index.ts
│   │   │   └── result.ts
│   │   ├── skeleton/
│   │   │   ├── index.ts
│   │   │   └── skeleton.ts
│   │   ├── spin/
│   │   │   ├── index.ts
│   │   │   └── spin.ts
│   │   ├── steps/
│   │   │   ├── index.ts
│   │   │   └── steps.ts
│   │   ├── switch/
│   │   │   ├── index.ts
│   │   │   └── switch.ts
│   │   ├── tabs/
│   │   │   ├── index.ts
│   │   │   └── tabs.ts
│   │   ├── tag/
│   │   │   ├── index.ts
│   │   │   └── tag.ts
│   │   ├── time/
│   │   │   ├── index.ts
│   │   │   └── time.ts
│   │   ├── timeline/
│   │   │   ├── index.ts
│   │   │   └── timeline.ts
│   │   └── tooltip/
│   │       ├── index.ts
│   │       └── tooltip.ts
│   ├── dom-utils/
│   │   ├── bind.ts
│   │   ├── elem.ts
│   │   ├── index.ts
│   │   ├── prev&next.ts
│   │   ├── remove-attrs.ts
│   │   ├── siblings.ts
│   │   └── slide.ts
│   ├── images.d.ts
│   ├── index.ts
│   ├── mixins/
│   │   ├── arrow.ts
│   │   ├── cb-promise.ts
│   │   ├── clickoutside.ts
│   │   ├── css-transition.ts
│   │   ├── index.ts
│   │   ├── one-node.ts
│   │   ├── scrollable.ts
│   │   ├── tooltip.ts
│   │   └── warn.ts
│   ├── rabbit-simple-ui.ts
│   ├── styles/
│   │   ├── README.md
│   │   ├── animation/
│   │   │   ├── ease.less
│   │   │   ├── fade.less
│   │   │   ├── index.less
│   │   │   ├── move.less
│   │   │   ├── slide.less
│   │   │   └── zoom.less
│   │   ├── color/
│   │   │   ├── bezierEasing.less
│   │   │   ├── colorPalette.less
│   │   │   ├── colors.less
│   │   │   └── tinyColor.less
│   │   ├── common/
│   │   │   ├── article.less
│   │   │   ├── base.less
│   │   │   ├── iconfont/
│   │   │   │   ├── icons-font.less
│   │   │   │   ├── icons-icons.less
│   │   │   │   ├── icons-variables.less
│   │   │   │   └── icons.less
│   │   │   ├── index.less
│   │   │   └── normalize.less
│   │   ├── components/
│   │   │   ├── affix.less
│   │   │   ├── alert.less
│   │   │   ├── avatar.less
│   │   │   ├── back-top.less
│   │   │   ├── badge.less
│   │   │   ├── breadcrumb.less
│   │   │   ├── button.less
│   │   │   ├── card.less
│   │   │   ├── carousel.less
│   │   │   ├── checkbox.less
│   │   │   ├── circle.less
│   │   │   ├── collapse.less
│   │   │   ├── count-down.less
│   │   │   ├── divider.less
│   │   │   ├── drawer.less
│   │   │   ├── dropdown.less
│   │   │   ├── empty.less
│   │   │   ├── index.less
│   │   │   ├── input-number.less
│   │   │   ├── jumbotron.less
│   │   │   ├── loading-bar.less
│   │   │   ├── message.less
│   │   │   ├── modal.less
│   │   │   ├── notice.less
│   │   │   ├── page-header.less
│   │   │   ├── poptip.less
│   │   │   ├── progress.less
│   │   │   ├── radio.less
│   │   │   ├── result.less
│   │   │   ├── skeleton.less
│   │   │   ├── spin.less
│   │   │   ├── steps.less
│   │   │   ├── switch.less
│   │   │   ├── tabs.less
│   │   │   ├── tag.less
│   │   │   ├── time.less
│   │   │   ├── timeline.less
│   │   │   └── tooltip.less
│   │   ├── copyright.less
│   │   ├── custom.less
│   │   ├── index.less
│   │   └── mixins/
│   │       ├── button.less
│   │       ├── caret.less
│   │       ├── checkbox.less
│   │       ├── clearfix.less
│   │       ├── close.less
│   │       ├── common.less
│   │       ├── content.less
│   │       ├── index.less
│   │       ├── input.less
│   │       ├── layout.less
│   │       ├── loading.less
│   │       ├── mask.less
│   │       ├── select.less
│   │       ├── size.less
│   │       └── tooltip.less
│   └── utils/
│       ├── check-type.ts
│       ├── destroy.ts
│       ├── index.ts
│       ├── random-str.ts
│       ├── use-html-string.ts
│       └── validComps.ts
├── tsconfig.json
├── tsconfig.tsbuildinfo
└── workspace.code-workspace

================================================
FILE CONTENTS
================================================

================================================
FILE: .editorconfig
================================================
# 该文件用于统一不同编辑器和ide的编码风格
# https://editorconfig.org

# 最顶端的编辑器配置文件
root = true

# 所有文件
[*]
charset = utf-8
indent_style = space
indent_size = 4
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true

[*.md]
insert_final_newline = false
trim_trailing_whitespace = false

# 制表符缩进(未指定大小)
[Makefile]
indent_style = tab

================================================
FILE: .eslintignore
================================================
dist
site
config
example-static
node_modules

================================================
FILE: .eslintrc.js
================================================
module.exports = {
    env: {
        browser: true,
        commonjs: true,
        es6: true
    },
    extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended'],
    parser: '@typescript-eslint/parser',
    parserOptions: {
        ecmaFeatures: {
            experimentalObjectRestSpread: true
        },
        ecmaVersion: 12,
        sourceType: 'module'
    },
    plugins: ['@typescript-eslint'],
    rules: {
        indent: [
            'error',
            4,
            {
                SwitchCase: 1
            }
        ],
        quotes: ['error', 'single'],
        semi: ['error', 'always'],
        // 优先使用 interface 而不是 type
        '@typescript-eslint/consistent-type-definitions': ['error', 'interface'],
        // 忽略 ts 注释警告
        '@typescript-eslint/ban-ts-comment': 'off',
        // 忽略 any 类型警告
        '@typescript-eslint/no-explicit-any': 'off'
    }
};

================================================
FILE: .gitattributes
================================================
*.js linguist-language=TypeScript
*.css linguist-language= Less
*.html linguist-language=HTML
*.vue linguist-language=TypeScript

================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, sex characteristics, gender identity and expression,
level of experience, education, socio-economic status, nationality, personal
appearance, race, religion, or sexual identity and orientation.

## Our Standards

Examples of behavior that contributes to creating a positive environment
include:

* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members

Examples of unacceptable behavior by participants include:

* The use of sexualized language or imagery and unwelcome sexual attention or
 advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic
 address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
 professional setting

## Our Responsibilities

Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.

Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.

## Scope

This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at `2864103063@qq.com`. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.

Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the project's leadership.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html

[homepage]: https://www.contributor-covenant.org

For answers to common questions about this code of conduct, see
https://www.contributor-covenant.org/faq


================================================
FILE: .github/CONTRIBUTING.md
================================================
# Contributing to Rabbit UI

Looking to contribute something to RabbitUI? **Here's how you can help.**

Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.

Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.


================================================
FILE: .gitignore
================================================
# dependencies
debug.log
/node_modules
/examples-static
/site/node_modules

================================================
FILE: .npmignore
================================================
.*
*.md
*.log
node_modules/
config/
docs/
examples/
examples-static/
site/

================================================
FILE: LICENSE
================================================
MIT License

Copyright (c) 2020 niu-grandpa

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.


================================================
FILE: README.en-US.md
================================================
<p align="center">
    <a href="http://www.rabbitui.cn">
        <img width="200" src="./assets/logo.svg">
    </a>
</p>

English | [简体中文](./README.md)

# RabbitUI

### A simple UI component library based on JavaScrip

[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)
[![](https://img.shields.io/npm/v/rabbit-simple-ui.svg?style=flat-square)](https://www.npmjs.com/package/rabbit-simple-ui)
[![](https://data.jsdelivr.com/v1/package/npm/rabbit-simple-ui/badge)](https://www.jsdelivr.com/package/npm/rabbit-simple-ui) 

### Features

- Use semantic custom elements for easy resolution

- Elegant and simple, say goodbye to the huge and bloated dazzling structure

- Does not rely on any third party framework, the underlying base is native JavaScript, import out of the box

- Can be used in Vue, jQuery or other existing projects

- Rich components and features to suit most site scenarios

- Careful, beautiful UI

- Documents that are minutiae

### Install

- With NPM, you'll need to use 'TypeScript' and write and use code in TS files. Make sure you understand it and can use it in general

```bash
npm install rabbit-simple-ui --save
```

- Using a script tag for global use:

Import the file directly in the browser using the `script` and `link` tags, and use the global variable `Rabbit`.

```html
<!--import the style-->
<link rel="stylesheet" href="dist/styles/rabbit.css">
<!--import RabbitUI -->
<script type="text/javascript" src="rabbit.min.js"></script>
```

## Usage

With a CDN we can easily write an example using Rabbit UI:

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>RabbitUI demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/rabbit-simple-ui/dist/styles/rabbit.css">
</head>
<body>
    <button type="button" class="rab-btn" onclick="show()">Hello Rabbit UI</button>
    <r-modal title="Welcome" id="exampleModal">
       <p>Welcome to RabbitUI</p>
    </r-modal>
</body>
<script src="https://cdn.jsdelivr.net/npm/rabbit-simple-ui/dist/rabbit.min.js"></script>
<script>
    // 初始化modal
    const modal = new Rabbit.Modal();
    show = function() {
        modal.config('#exampleModal').visible = true;  
    }
</script>
</html>
```

NPM environment

Use NPM to install, enjoy the convenience of the tool, work better with Webpack, and ES2015 is recommended.

```js
import Alert from 'rabbit-simple-ui/src/components/alert';
import Tooltip from 'rabbit-simple-ui/src/components/alert';
import Collapse from 'rabbit-simple-ui/src/components/alert';

new Alert();   
new Tooltip();
new Collapse();  
```

Using css via import:

```js
import 'rabbit-simple-ui/dist/styles/rabbit.css';
```

## Import as needed

With the help of [babel-plugin-import](https://github.com/ant-design/babel-plugin-import), you can load components on demand and reduce file size. First install and configure it in file '.babelrc ':

```text
npm install babel-plugin-import --save-dev
```

```json
// .babelrc
{
  "plugins": [["import", {
    "libraryName": "rabbit-simple-ui",
    "libraryDirectory": "src/components"
  }]]
}
```

Then import the components as needed to reduce the size:

```js
import { Alert, Message } from 'rabbit-simple-ui';
```

### Especially remind

-According to the need to still need to import the reference style that the **main js** or the root component `import 'rabbit-simple-ui/dist/styles/rabbit.css';`

## Browser Support

Modern browsers and Internet Explorer 10+.

## Related links

- [TypeScript](https://www.tslang.cn/)
- [Webpack](http://webpack.github.io/)
- [Iconfont](https://www.iconfont.cn/)
- [ViewUI](https://www.iviewui.com/)
- [Ant Design](https://ant.design/index-cn)
- [Ant Design of Vue](https://2x.antdv.com/docs/vue/introduce-cn/)
- [Element](https://element.eleme.cn/)
- [Element-angular](https://element-angular.faas.ele.me/guide/install)

## Contribute

If you wish to participate in contribution, welcome [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls) or email contact 2864103063@qq.com, the contribution guide has not yet been produced

## LICENSE

[MIT](https://github.com/niu-grandpa/RabbitUI/blob/master/LICENSE)

================================================
FILE: README.md
================================================
<p align="center">
    <a href="http://www.rabbitui.cn">
        <img width="200" src="./assets/logo.svg">
    </a>
</p>

简体中文 | [English](./README.en-US.md)

# RabbitUI

> Tip:该项目于2021年完成,目前已不再更新,但具有学习意义,该组件库参考了各知名组件库进行开发

### 一个基于 JavaScript 的简洁 UI 组件库

[![Contributor Covenant](https://img.shields.io/badge/Contributor%20Covenant-2.0-4baaaa.svg)](code_of_conduct.md)
[![](https://img.shields.io/npm/v/rabbit-simple-ui.svg?style=flat-square)](https://www.npmjs.com/package/rabbit-simple-ui)
[![](https://data.jsdelivr.com/v1/package/npm/rabbit-simple-ui/badge)](https://www.jsdelivr.com/package/npm/rabbit-simple-ui) 

### 特性

- 使用语义化的自定义元素,易于分辨

- 优雅、简洁,与庞大且臃肿令人眼花缭乱的结构 say goodbye

- 不依赖任何第三方框架,底层基于原生 Javascript,引入即用

- 能够在 Vue、JQuery或者其他现有项目中配合使用

- 丰富的组件和功能,满足大部分网站场景

- 细致、漂亮的 UI

- 事无巨细的文档

### 安装

- 使用 npm,你将需要使用`TypeScript`,并在ts文件里编写和使用代码。 请确保你了解过它,并能够大致使用

```bash
npm install rabbit-simple-ui --save
```

- 浏览器引入

在浏览器中使用 `script` 和 `link` 标签直接引入文件,并使用全局变量 `Rabbit`。

```html
<!--引入样式库-->
<link rel="stylesheet" href="dist/styles/rabbit.css">
<!--引入脚本-->
<script type="text/javascript" src="rabbit.min.js"></script>
```

## 示例

通过 CDN 的方式我们可以很容易地使用 Rabbit UI 写出一个示例:

```html
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>RabbitUI demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/rabbit-simple-ui/dist/styles/rabbit.css">
</head>
<body>
    <button type="button" class="rab-btn" onclick="show()">Hello Rabbit UI</button>
    <r-modal title="Welcome" id="exampleModal">
       <p>Welcome to RabbitUI</p>
    </r-modal>
</body>
<script src="https://cdn.jsdelivr.net/npm/rabbit-simple-ui/dist/rabbit.min.js"></script>
<script>
    // 初始化modal
    const modal = new Rabbit.Modal();
    show = function() {
        modal.config('#exampleModal').visible = true;  
    }
</script>
</html>
```

NPM 环境

使用 npm 来安装,享受工具带来的便利,更好地和 webpack 配合使用,且推荐使用 ES2015。

```ts
import Alert from 'rabbit-simple-ui/src/components/alert';
import Tooltip from 'rabbit-simple-ui/src/components/alert';
import Collapse from 'rabbit-simple-ui/src/components/alert';

new Alert();   
new Tooltip();
new Collapse();  
```

引入样式:

```ts
import 'rabbit-simple-ui/dist/styles/rabbit.css';
```

## 按需引用

 借助插件 [babel-plugin-import](https://github.com/ant-design/babel-plugin-import)可以实现按需加载组件,减少文件体积。首先安装,并在文件 `.babelrc` 中配置:

```text
npm install babel-plugin-import --save-dev
```

```json
// .babelrc
{
  "plugins": [["import", {
    "libraryName": "rabbit-simple-ui",
    "libraryDirectory": "src/components"
  }]]
}
```

然后这样按需引入组件,就可以减小体积了:

```ts
import { Alert, Message } from 'rabbit-simple-ui';
```

### 特别提醒

- 按需引用仍然需要导入样式,即在 **main.js** 或根组件执行 `import 'rabbit-simple-ui/dist/styles/rabbit.css';`

## 浏览器支持

现代浏览器和Internet Explorer 10+。

## 相关链接

- [TypeScript](https://www.tslang.cn/)

- [Webpack](http://webpack.github.io/)
- [阿里巴巴矢量图标库](https://www.iconfont.cn/)
- [ViewUI](https://www.iviewui.com/)
- [Ant Design](https://ant.design/index-cn)

- [Ant Design of Vue](https://2x.antdv.com/docs/vue/introduce-cn/)
- [Element](https://element.eleme.cn/)
- [Element-angular](https://element-angular.faas.ele.me/guide/install)

## 如何贡献

如果你希望参与贡献,欢迎 [Pull Request](https://github.com/vueComponent/ant-design-vue/pulls)或者邮件联系 2864103063@qq.com ,贡献指南暂时还未制作

## LICENSE

[MIT](https://github.com/niu-grandpa/RabbitUI/blob/master/LICENSE)


================================================
FILE: config/webpack.common.js
================================================
/* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-var-requires */
/**
 * 公共配置
 */

const webpack = require('webpack');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');

module.exports = {
    module: {
        rules: [{
                test: /\.js$/,
                loader: 'babel-loader',
                options: {
                    sourceMap: true
                },
                exclude: /node_modules/
            },
            {
                test: /\.ts$/,
                exclude: /node_modules/,
                use: {
                    loader: 'ts-loader'
                }
            },
            {
                test: /\.css$/i,
                use: [
                    { loader: MiniCssExtractPlugin.loader },
                    { loader: 'css-loader' },
                    { loader: 'postcss-loader' }
                ]
            },
            {
                test: /\.less$/i,
                use: [
                    { loader: MiniCssExtractPlugin.loader },
                    {
                        loader: 'css-loader',
                        options: {
                            sourceMap: true
                        }
                    },
                    {
                        loader: 'less-loader',
                        options: {
                            sourceMap: true,
                            lessOptions: {
                                javascriptEnabled: true
                            }
                        }
                    },
                    { loader: 'postcss-loader' }
                ]
            },
            {
                test: /\.(png|jpe?g|gif|webp)$/i,
                use: [{
                    loader: 'file-loader',
                    options: {
                        name: 'images/[name].[ext]',
                        // 小于 2k 的图片转成 base64 编码
                        limit: 2024,
                        publicPath: '../'
                    }
                }]
            },
            {
                test: /\.(woff2?|eot|ttf|otf|svg)(\?.*)?$/i,
                use: {
                    loader: 'file-loader',
                    options: {
                        limit: 4096,
                        name: './fonts/[name].[ext]',
                        publicPath: '../'
                    }
                }
            },
            {
                test: /\.(html|tpl)$/,
                use: {
                    loader: 'html-loader'
                }
            }
        ]
    },

    resolve: {
        extensions: ['.ts', '.js']
    },

    plugins: [
        new webpack.optimize.ModuleConcatenationPlugin(),
        //分离出css文件
        new MiniCssExtractPlugin({
            filename: 'styles/rabbit.css',
            chunkFilename: '[id].css',
            ignoreOrder: false
        })
    ]
};

================================================
FILE: config/webpack.dev.js
================================================
/* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-var-requires */
const path = require('path');
const webpack = require('webpack');
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin');

module.exports = merge(common, {
    devtool: 'eval-source-map',
    entry: {
        main: './examples/main.ts'
    },
    output: {
        path: path.join(__dirname, '../examples/dist'),
        publicPath: '',
        filename: '[name].js',
        chunkFilename: '[name].chunk.js'
    },
    devServer: {
        port: 8085,
        open: true,
        hot: true,
        inline: true,
        progress: true,
        compress: true
    },

    plugins: [
        new webpack.HotModuleReplacementPlugin(),
        new HtmlWebpackPlugin({
            inject: true,
            filename: path.join(__dirname, '../examples/dist/index.html'),
            template: path.join(__dirname, '../examples/message/index.html')
        }),
        new FriendlyErrorsPlugin()
    ]
});

================================================
FILE: config/webpack.dist.dev.js
================================================
/* eslint-disable @typescript-eslint/no-var-requires */
/**
 * 打包开发模式下的资源
 */

const path = require('path');
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');

module.exports = merge(common, {
    mode: 'development',
    devtool: 'source-map',

    entry: {
        main: './src/build-umd.ts'
    },
    output: {
        path: path.resolve(__dirname, '../dist'),
        publicPath: '/dist/',
        filename: 'rabbit.js',
        library: 'rabbit',
        libraryTarget: 'umd',
        umdNamedDefine: true
    }
});

================================================
FILE: config/webpack.dist.prod.js
================================================
/* eslint-disable no-undef */
/* eslint-disable @typescript-eslint/no-var-requires */
/**
 * 打包生产模式下的资源
 */

const path = require('path');
const webpack = require('webpack');
const { merge } = require('webpack-merge');
const common = require('./webpack.common.js');
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
const CompressionPlugin = require('compression-webpack-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');

module.exports = merge(common, {
    devtool: 'source-map',
    entry: {
        main: './src/build-umd.ts'
    },
    output: {
        path: path.resolve(__dirname, '../dist'),
        publicPath: '/dist/',
        filename: 'rabbit.min.js',
        library: 'rabbit',
        libraryTarget: 'umd',
        umdNamedDefine: true
    },

    plugins: [
        new CompressionPlugin({
            algorithm: 'gzip',
            test: /\.js$|\.css/,
            threshold: 10240,
            minRatio: 0.8
        }),
        new UglifyJsPlugin({
            sourceMap: true,
            parallel: true
        }),
        new webpack.DefinePlugin({
            'process.env.NODE_ENV': JSON.stringify('production')
        }),
        new OptimizeCSSAssetsPlugin({})
    ]
});

================================================
FILE: dist/rabbit.js
================================================
(function webpackUniversalModuleDefinition(root, factory) {
	if(typeof exports === 'object' && typeof module === 'object')
		module.exports = factory();
	else if(typeof define === 'function' && define.amd)
		define("rabbit", [], factory);
	else if(typeof exports === 'object')
		exports["rabbit"] = factory();
	else
		root["rabbit"] = factory();
})(self, function() {
return /******/ (function() { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ "./node_modules/dayjs/dayjs.min.js":
/*!*****************************************!*\
  !*** ./node_modules/dayjs/dayjs.min.js ***!
  \*****************************************/
/***/ (function(module) {

!function(t,e){ true?module.exports=e():0}(this,function(){"use strict";var t="millisecond",e="second",n="minute",r="hour",i="day",s="week",u="month",a="quarter",o="year",f="date",h=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[^0-9]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,c=/\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,d={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_")},$=function(t,e,n){var r=String(t);return!r||r.length>=e?t:""+Array(e+1-r.length).join(n)+t},l={s:$,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?"+":"-")+$(r,2,"0")+":"+$(i,2,"0")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,u),s=n-i<0,a=e.clone().add(r+(s?-1:1),u);return+(-(r+(n-i)/(s?i-a:a-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(h){return{M:u,y:o,w:s,d:i,D:f,h:r,m:n,s:e,ms:t,Q:a}[h]||String(h||"").toLowerCase().replace(/s$/,"")},u:function(t){return void 0===t}},y="en",M={};M[y]=d;var m=function(t){return t instanceof S},D=function(t,e,n){var r;if(!t)return y;if("string"==typeof t)M[t]&&(r=t),e&&(M[t]=e,r=t);else{var i=t.name;M[i]=t,r=i}return!n&&r&&(y=r),r||!n&&y},v=function(t,e){if(m(t))return t.clone();var n="object"==typeof e?e:{};return n.date=t,n.args=arguments,new S(n)},g=l;g.l=D,g.i=m,g.w=function(t,e){return v(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var S=function(){function d(t){this.$L=D(t.locale,null,!0),this.parse(t)}var $=d.prototype;return $.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(g.u(e))return new Date;if(e instanceof Date)return new Date(e);if("string"==typeof e&&!/Z$/i.test(e)){var r=e.match(h);if(r){var i=r[2]-1||0,s=(r[7]||"0").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.$x=t.x||{},this.init()},$.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},$.$utils=function(){return g},$.isValid=function(){return!("Invalid Date"===this.$d.toString())},$.isSame=function(t,e){var n=v(t);return this.startOf(e)<=n&&n<=this.endOf(e)},$.isAfter=function(t,e){return v(t)<this.startOf(e)},$.isBefore=function(t,e){return this.endOf(e)<v(t)},$.$g=function(t,e,n){return g.u(t)?this[e]:this.set(n,t)},$.unix=function(){return Math.floor(this.valueOf()/1e3)},$.valueOf=function(){return this.$d.getTime()},$.startOf=function(t,a){var h=this,c=!!g.u(a)||a,d=g.p(t),$=function(t,e){var n=g.w(h.$u?Date.UTC(h.$y,e,t):new Date(h.$y,e,t),h);return c?n:n.endOf(i)},l=function(t,e){return g.w(h.toDate()[t].apply(h.toDate("s"),(c?[0,0,0,0]:[23,59,59,999]).slice(e)),h)},y=this.$W,M=this.$M,m=this.$D,D="set"+(this.$u?"UTC":"");switch(d){case o:return c?$(1,0):$(31,11);case u:return c?$(1,M):$(0,M+1);case s:var v=this.$locale().weekStart||0,S=(y<v?y+7:y)-v;return $(c?m-S:m+(6-S),M);case i:case f:return l(D+"Hours",0);case r:return l(D+"Minutes",1);case n:return l(D+"Seconds",2);case e:return l(D+"Milliseconds",3);default:return this.clone()}},$.endOf=function(t){return this.startOf(t,!1)},$.$set=function(s,a){var h,c=g.p(s),d="set"+(this.$u?"UTC":""),$=(h={},h[i]=d+"Date",h[f]=d+"Date",h[u]=d+"Month",h[o]=d+"FullYear",h[r]=d+"Hours",h[n]=d+"Minutes",h[e]=d+"Seconds",h[t]=d+"Milliseconds",h)[c],l=c===i?this.$D+(a-this.$W):a;if(c===u||c===o){var y=this.clone().set(f,1);y.$d[$](l),y.init(),this.$d=y.set(f,Math.min(this.$D,y.daysInMonth())).$d}else $&&this.$d[$](l);return this.init(),this},$.set=function(t,e){return this.clone().$set(t,e)},$.get=function(t){return this[g.p(t)]()},$.add=function(t,a){var f,h=this;t=Number(t);var c=g.p(a),d=function(e){var n=v(h);return g.w(n.date(n.date()+Math.round(e*t)),h)};if(c===u)return this.set(u,this.$M+t);if(c===o)return this.set(o,this.$y+t);if(c===i)return d(1);if(c===s)return d(7);var $=(f={},f[n]=6e4,f[r]=36e5,f[e]=1e3,f)[c]||1,l=this.$d.getTime()+t*$;return g.w(l,this)},$.subtract=function(t,e){return this.add(-1*t,e)},$.format=function(t){var e=this;if(!this.isValid())return"Invalid Date";var n=t||"YYYY-MM-DDTHH:mm:ssZ",r=g.z(this),i=this.$locale(),s=this.$H,u=this.$m,a=this.$M,o=i.weekdays,f=i.months,h=function(t,r,i,s){return t&&(t[r]||t(e,n))||i[r].substr(0,s)},d=function(t){return g.s(s%12||12,t,"0")},$=i.meridiem||function(t,e,n){var r=t<12?"AM":"PM";return n?r.toLowerCase():r},l={YY:String(this.$y).slice(-2),YYYY:this.$y,M:a+1,MM:g.s(a+1,2,"0"),MMM:h(i.monthsShort,a,f,3),MMMM:h(f,a),D:this.$D,DD:g.s(this.$D,2,"0"),d:String(this.$W),dd:h(i.weekdaysMin,this.$W,o,2),ddd:h(i.weekdaysShort,this.$W,o,3),dddd:o[this.$W],H:String(s),HH:g.s(s,2,"0"),h:d(1),hh:d(2),a:$(s,u,!0),A:$(s,u,!1),m:String(u),mm:g.s(u,2,"0"),s:String(this.$s),ss:g.s(this.$s,2,"0"),SSS:g.s(this.$ms,3,"0"),Z:r};return n.replace(c,function(t,e){return e||l[t]||r.replace(":","")})},$.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},$.diff=function(t,f,h){var c,d=g.p(f),$=v(t),l=6e4*($.utcOffset()-this.utcOffset()),y=this-$,M=g.m(this,$);return M=(c={},c[o]=M/12,c[u]=M,c[a]=M/3,c[s]=(y-l)/6048e5,c[i]=(y-l)/864e5,c[r]=y/36e5,c[n]=y/6e4,c[e]=y/1e3,c)[d]||y,h?M:g.a(M)},$.daysInMonth=function(){return this.endOf(u).$D},$.$locale=function(){return M[this.$L]},$.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=D(t,e,!0);return r&&(n.$L=r),n},$.clone=function(){return g.w(this.$d,this)},$.toDate=function(){return new Date(this.valueOf())},$.toJSON=function(){return this.isValid()?this.toISOString():null},$.toISOString=function(){return this.$d.toISOString()},$.toString=function(){return this.$d.toUTCString()},d}(),p=S.prototype;return v.prototype=p,[["$ms",t],["$s",e],["$m",n],["$H",r],["$W",i],["$M",u],["$y",o],["$D",f]].forEach(function(t){p[t[1]]=function(e){return this.$g(e,t[0],t[1])}}),v.extend=function(t,e){return t.$i||(t(e,S,v),t.$i=!0),v},v.locale=D,v.isDayjs=m,v.unix=function(t){return v(1e3*t)},v.en=M[y],v.Ls=M,v.p={},v});


/***/ }),

/***/ "./node_modules/dayjs/locale/zh-cn.js":
/*!********************************************!*\
  !*** ./node_modules/dayjs/locale/zh-cn.js ***!
  \********************************************/
/***/ (function(module, __unused_webpack_exports, __webpack_require__) {

!function(_,e){ true?module.exports=e(__webpack_require__(/*! dayjs */ "./node_modules/dayjs/dayjs.min.js")):0}(this,function(_){"use strict";_=_&&_.hasOwnProperty("default")?_.default:_;var e={name:"zh-cn",weekdays:"星期日_星期一_星期二_星期三_星期四_星期五_星期六".split("_"),weekdaysShort:"周日_周一_周二_周三_周四_周五_周六".split("_"),weekdaysMin:"日_一_二_三_四_五_六".split("_"),months:"一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月".split("_"),monthsShort:"1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月".split("_"),ordinal:function(_,e){switch(e){case"W":return _+"周";default:return _+"日"}},weekStart:1,yearStart:4,formats:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY年M月D日",LLL:"YYYY年M月D日Ah点mm分",LLLL:"YYYY年M月D日ddddAh点mm分",l:"YYYY/M/D",ll:"YYYY年M月D日",lll:"YYYY年M月D日 HH:mm",llll:"YYYY年M月D日dddd HH:mm"},relativeTime:{future:"%s内",past:"%s前",s:"几秒",m:"1 分钟",mm:"%d 分钟",h:"1 小时",hh:"%d 小时",d:"1 天",dd:"%d 天",M:"1 个月",MM:"%d 个月",y:"1 年",yy:"%d 年"},meridiem:function(_,e){var t=100*_+e;return t<600?"凌晨":t<900?"早上":t<1100?"上午":t<1300?"中午":t<1800?"下午":"晚上"}};return _.locale(e,null,!0),e});


/***/ }),

/***/ "./node_modules/dayjs/plugin/relativeTime.js":
/*!***************************************************!*\
  !*** ./node_modules/dayjs/plugin/relativeTime.js ***!
  \***************************************************/
/***/ (function(module) {

!function(r,t){ true?module.exports=t():0}(this,function(){"use strict";return function(r,t,e){r=r||{};var n=t.prototype,o={future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function i(r,t,e,o){return n.fromToBase(r,t,e,o)}e.en.relativeTime=o,n.fromToBase=function(t,n,i,d,u){for(var a,f,s,l=i.$locale().relativeTime||o,h=r.thresholds||[{l:"s",r:44,d:"second"},{l:"m",r:89},{l:"mm",r:44,d:"minute"},{l:"h",r:89},{l:"hh",r:21,d:"hour"},{l:"d",r:35},{l:"dd",r:25,d:"day"},{l:"M",r:45},{l:"MM",r:10,d:"month"},{l:"y",r:17},{l:"yy",d:"year"}],m=h.length,c=0;c<m;c+=1){var y=h[c];y.d&&(a=d?e(t).diff(i,y.d,!0):i.diff(t,y.d,!0));var p=(r.rounding||Math.round)(Math.abs(a));if(s=a>0,p<=y.r||!y.r){p<=1&&c>0&&(y=h[c-1]);var v=l[y.l];u&&(p=u(""+p)),f="string"==typeof v?v.replace("%d",p):v(p,n,y.l,s);break}}if(n)return f;var M=s?l.future:l.past;return"function"==typeof M?M(f):M.replace("%s",f)},n.to=function(r,t){return i(r,t,this,!0)},n.from=function(r,t){return i(r,t,this)};var d=function(r){return r.$u?e.utc():e()};n.toNow=function(r){return this.to(d(this),r)},n.fromNow=function(r){return this.from(d(this),r)}}});


/***/ }),

/***/ "./src/build-umd.ts":
/*!***************************************!*\
  !*** ./src/build-umd.ts + 82 modules ***!
  \***************************************/
/***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {

"use strict";
// ESM COMPAT FLAG
__webpack_require__.r(__webpack_exports__);

// EXPORTS
__webpack_require__.d(__webpack_exports__, {
  "default": function() { return /* binding */ build_umd; }
});

// NAMESPACE OBJECT: ./src/rabbit-simple-ui.ts
var rabbit_simple_ui_namespaceObject = {};
__webpack_require__.r(rabbit_simple_ui_namespaceObject);
__webpack_require__.d(rabbit_simple_ui_namespaceObject, {
  "Affix": function() { return components_affix; },
  "Alert": function() { return components_alert; },
  "Avatar": function() { return components_avatar; },
  "BackTop": function() { return components_back_top; },
  "Badge": function() { return components_badge; },
  "Breadcrumb": function() { return components_breadcrumb; },
  "Button": function() { return components_button; },
  "Card": function() { return components_card; },
  "Carousel": function() { return components_carousel; },
  "Checkbox": function() { return components_checkbox; },
  "Circle": function() { return components_circle; },
  "Collapse": function() { return components_collapse; },
  "CountDown": function() { return components_count_down; },
  "Divider": function() { return components_divider; },
  "Drawer": function() { return components_drawer; },
  "Dropdown": function() { return components_dropdown; },
  "Empty": function() { return components_empty; },
  "InputNumber": function() { return components_input_number; },
  "Jumbotron": function() { return components_jumbotron; },
  "Loading": function() { return components_loading_bar; },
  "Message": function() { return components_message; },
  "MiniModal": function() { return components_mini_modal; },
  "Modal": function() { return components_modal; },
  "Notice": function() { return components_notice; },
  "PageHeader": function() { return components_page_header; },
  "Poptip": function() { return components_poptip; },
  "Progress": function() { return components_progress; },
  "Radio": function() { return components_radio; },
  "Result": function() { return components_result; },
  "Skeleton": function() { return components_skeleton; },
  "Spin": function() { return components_spin; },
  "Steps": function() { return components_steps; },
  "Switch": function() { return components_switch; },
  "Tabs": function() { return components_tabs; },
  "Tag": function() { return components_tag; },
  "Time": function() { return components_time; },
  "Timeline": function() { return components_timeline; },
  "Tooltip": function() { return components_tooltip; }
});

// EXTERNAL MODULE: ./src/dom-utils/index.ts + 5 modules
var dom_utils = __webpack_require__("./src/dom-utils/index.ts");
// EXTERNAL MODULE: ./src/utils/index.ts + 4 modules
var utils = __webpack_require__("./src/utils/index.ts");
// EXTERNAL MODULE: ./src/components/prefix.ts
var prefix = __webpack_require__("./src/components/prefix.ts");
;// CONCATENATED MODULE: ./src/components/affix/affix.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */



function getScroll(target, top) {
    var prop = top ? 'pageYOffset' : 'pageXOffset';
    var method = top ? 'scrollTop' : 'scrollLeft';
    var ret = target[prop];
    if (typeof ret !== 'number') {
        ret = window.document.documentElement[method];
    }
    return ret;
}
function getOffset(element) {
    var rect = element.getBoundingClientRect();
    var scrollTop = getScroll(window, true);
    var scrollLeft = getScroll(window);
    var docEl = window.document.body;
    var clientTop = docEl.clientTop || 0;
    var clientLeft = docEl.clientLeft || 0;
    return {
        top: rect.top + scrollTop - clientTop,
        left: rect.left + scrollLeft - clientLeft
    };
}
var Affix = /** @class */ (function () {
    function Affix() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-affix', { all: true });
        this._create(this.COMPONENTS);
    }
    Affix.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        var _a = Affix.prototype._attrs(target), offsetTop = _a.offsetTop, offsetBottom = _a.offsetBottom;
        var elOffset = getOffset(target);
        var elHeight = target.offsetHeight;
        var windowHeight = window.innerHeight;
        var affixed = false, offsetType = 'top';
        if (offsetBottom >= 0) {
            offsetType = 'bottom';
        }
        return {
            events: function (_a) {
                var onChange = _a.onChange;
                var handler = function () {
                    var isAffix = target.classList.contains("" + prefix.default.affix);
                    var scrollTop = getScroll(window, true);
                    // 固定到顶部时触发事件
                    if (elOffset.top - offsetTop < scrollTop && offsetType == 'top' && !isAffix) {
                        affixed = true;
                        onChange && utils.type.isFn(onChange, affixed);
                    }
                    else if (elOffset.top - offsetTop > scrollTop &&
                        offsetType == 'top' &&
                        affixed) {
                        affixed = false;
                        onChange && utils.type.isFn(onChange, affixed);
                    }
                    // 固定到底部时触发事件
                    if (elOffset.top + offsetBottom + elHeight > scrollTop + windowHeight &&
                        offsetType == 'bottom' &&
                        !affixed) {
                        affixed = true;
                        onChange && utils.type.isFn(onChange, affixed);
                    }
                    else if (elOffset.top + offsetBottom + elHeight < scrollTop + windowHeight &&
                        offsetType == 'bottom' &&
                        affixed) {
                        affixed = false;
                        onChange && utils.type.isFn(onChange, affixed);
                    }
                };
                handler();
                // 这里 useCapture 选项设置为 true 解决了被下面同样的滚动监听覆盖的 bug
                // 相当于提高了事件触发优先级
                window.addEventListener('scroll', handler, true);
                window.addEventListener('resize', handler, true);
            }
        };
    };
    Affix.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), offsetTop = _a.offsetTop, offsetBottom = _a.offsetBottom, useCapture = _a.useCapture;
            var wrapper = (0,dom_utils.createElem)('div');
            var cloneElm = _this._createCloneElm(wrapper);
            node.after(wrapper);
            wrapper.appendChild(node);
            _this._handleScroll(node, cloneElm, offsetTop, offsetBottom, useCapture);
            (0,dom_utils.removeAttrs)(node, ['offset-top', 'offset-bottom', 'use-capture']);
        });
    };
    Affix.prototype._createCloneElm = function (node) {
        var element = (0,dom_utils.createElem)('div');
        (0,dom_utils.setCss)(element, 'display', 'none');
        node.after(element);
        return element;
    };
    Affix.prototype._handleScroll = function (node, cloneElm, offsetTop, offsetBottom, useCapture) {
        var container = node.parentElement;
        var elOffset = getOffset(node);
        var elHeight = node.offsetHeight;
        var windowHeight = window.innerHeight;
        var affix = false, top, left, width, bottom, offsetType = 'top', cloneElmWidth, cloneElmHeight, display;
        if (offsetBottom >= 0) {
            offsetType = 'bottom';
        }
        var scroll = function () {
            var isAffix = node.classList.contains("" + prefix.default.affix);
            var scrollTop = getScroll(window, true);
            // 固定到顶部
            if (elOffset.top - offsetTop < scrollTop && offsetType == 'top' && !isAffix) {
                affix = true;
                display = '';
                top = offsetTop + "px";
                left = elOffset.left + "px";
                width = container.offsetWidth + "px";
                cloneElmWidth = node.clientWidth + "px";
                cloneElmHeight = node.clientHeight + "px";
                node.classList.add("" + prefix.default.affix);
            }
            else if (elOffset.top - offsetTop > scrollTop && offsetType == 'top' && affix) {
                top = '';
                left = '';
                width = '';
                affix = false;
                display = 'none';
                cloneElmWidth = '';
                cloneElmHeight = '';
                node.classList.remove("" + prefix.default.affix);
            }
            // 固定到底部
            if (elOffset.top + offsetBottom + elHeight > scrollTop + windowHeight &&
                offsetType == 'bottom' &&
                !affix) {
                affix = true;
                left = elOffset.left + "px";
                width = container.offsetWidth + "px";
                bottom = offsetBottom + "px";
                node.classList.add("" + prefix.default.affix);
            }
            else if (elOffset.top + offsetBottom + elHeight < scrollTop + windowHeight &&
                offsetType == 'bottom' &&
                affix) {
                affix = false;
                left = '';
                width = '';
                bottom = '';
                node.classList.remove("" + prefix.default.affix);
            }
            (0,dom_utils.setCss)(node, 'top', top);
            (0,dom_utils.setCss)(node, 'left', left);
            (0,dom_utils.setCss)(node, 'width', width);
            (0,dom_utils.setCss)(node, 'bottom', bottom);
            (0,dom_utils.setCss)(cloneElm, 'width', cloneElmWidth);
            (0,dom_utils.setCss)(cloneElm, 'height', cloneElmHeight);
            (0,dom_utils.setCss)(cloneElm, 'display', display);
        };
        scroll();
        window.addEventListener('scroll', scroll, useCapture);
        window.addEventListener('resize', scroll, useCapture);
    };
    Affix.prototype._attrs = function (node) {
        return {
            offsetTop: (0,dom_utils.getNumTypeAttr)(node, 'offset-top', 0),
            offsetBottom: (0,dom_utils.getNumTypeAttr)(node, 'offset-bottom'),
            useCapture: (0,dom_utils.getBooleanTypeAttr)(node, 'use-capture')
        };
    };
    return Affix;
}());
/* harmony default export */ var affix = (Affix);

;// CONCATENATED MODULE: ./src/components/affix/index.ts

/* harmony default export */ var components_affix = (affix);

// EXTERNAL MODULE: ./src/mixins/index.ts + 63 modules
var mixins = __webpack_require__("./src/mixins/index.ts");
;// CONCATENATED MODULE: ./src/components/alert/alert.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var Alert = /** @class */ (function () {
    function Alert() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-alert', { all: true });
        this._create(this.COMPONENTS);
    }
    Alert.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'alert');
        var AlertTitle = target.querySelector("." + prefix.default.alert + "-title");
        var AlertIcon = target.querySelector("." + prefix.default.alert + "-icon");
        return {
            get title() {
                return (0,dom_utils.setHtml)(AlertTitle);
            },
            set title(newVal) {
                if (newVal && !utils.type.isStr(newVal))
                    return;
                (0,dom_utils.setHtml)(AlertTitle, newVal);
            },
            get icon() {
                return (0,dom_utils.setHtml)(AlertIcon);
            },
            set icon(newVal) {
                if (!AlertIcon) {
                    (0,mixins.warn)("You need to set the \"show-icon\" attribute to \"true\" --> \"" + el + "\"");
                    return;
                }
                if (newVal && !utils.type.isStr(newVal))
                    return;
                (0,dom_utils.setHtml)(AlertIcon, newVal);
            },
            events: function (_a) {
                var onClose = _a.onClose;
                var AlertClose = target.querySelector("." + prefix.default.alert + "-close");
                if (!AlertClose)
                    return;
                (0,dom_utils.bind)(AlertClose, 'click', function (event) { return onClose && utils.type.isFn(onClose, event); });
            }
        };
    };
    Alert.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            if ((0,mixins.moreThanOneNode)(node))
                return;
            var _a = _this._attrs(node), icon = _a.icon, type = _a.type, title = _a.title, closable = _a.closable, banner = _a.banner, showIcon = _a.showIcon, closeText = _a.closeText;
            var placeholderNode = node.firstElementChild;
            _this._setMainTemplate(node, title);
            _this._setBanner(node, banner);
            _this._setIconType(node, type, showIcon, icon, placeholderNode);
            _this._setDescription(node, placeholderNode);
            _this._setClosable(node, closable, closeText);
            _this._handleClose(node);
            (0,dom_utils.removeAttrs)(node, ['title', 'icon', 'banner', 'closable', 'close-text', 'show-icon']);
        });
    };
    Alert.prototype._setMainTemplate = function (node, title) {
        var template = "\n         <div class=\"" + prefix.default.alert + "-title\">" + title + "</div>\n         <div class=\"" + prefix.default.alert + "-desc\"></div>\n        ";
        (0,dom_utils.setHtml)(node, template);
    };
    Alert.prototype._setBanner = function (node, banner) {
        if (!banner)
            return;
        node.classList.add(prefix.default.alert + "-with-banner");
    };
    Alert.prototype._setIconType = function (node, type, showIcon, icon, desc) {
        if (!showIcon)
            return;
        node.classList.add(prefix.default.alert + "-with-icon");
        var AlertIconWrap = (0,dom_utils.createElem)('span');
        AlertIconWrap.className = prefix.default.alert + "-icon";
        if (icon) {
            (0,dom_utils.setHtml)(AlertIconWrap, icon);
        }
        else {
            // 默认为 info 图标
            var iconType = 'information-circle';
            switch (type) {
                case 'success':
                    iconType = 'checkmark-circle';
                    break;
                case 'warning':
                    iconType = 'alert';
                    break;
                case 'error':
                    iconType = 'close-circle';
                    break;
            }
            if (desc) {
                iconType += '-outline';
            }
            var AlertIcon = "<i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-" + iconType + "\"></i>";
            (0,dom_utils.setHtml)(AlertIconWrap, AlertIcon);
        }
        node.appendChild(AlertIconWrap);
    };
    Alert.prototype._setDescription = function (node, placeholderNode) {
        if (!placeholderNode)
            return;
        node.classList.add(prefix.default.alert + "-with-desc");
        var AlertDesc = node.querySelector("." + prefix.default.alert + "-desc");
        AlertDesc.appendChild(placeholderNode);
    };
    Alert.prototype._setClosable = function (node, closable, closeText) {
        if (!closable)
            return;
        var AlertClose = "\n        <a class=\"" + prefix.default.alert + "-close\">\n          " + (!closeText ? " <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-close\"></i>" : closeText) + "\n        </a>";
        node.insertAdjacentHTML('beforeend', AlertClose);
    };
    Alert.prototype._handleClose = function (node) {
        var AlertIcon = node.querySelector("." + prefix.default.alert + "-close");
        if (!AlertIcon)
            return;
        (0,dom_utils.bind)(AlertIcon, 'click', function () { return (0,utils.destroyElem)(node, { fadeOut: true, destroy: true }); });
    };
    Alert.prototype._attrs = function (node) {
        return {
            icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''),
            type: (0,dom_utils.getStrTypeAttr)(node, 'type', 'info'),
            title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''),
            closeText: (0,dom_utils.getStrTypeAttr)(node, 'close-text', ''),
            banner: (0,dom_utils.getBooleanTypeAttr)(node, 'banner'),
            closable: (0,dom_utils.getBooleanTypeAttr)(node, 'closable'),
            showIcon: (0,dom_utils.getBooleanTypeAttr)(node, 'show-icon')
        };
    };
    return Alert;
}());
/* harmony default export */ var alert_alert = (Alert);

;// CONCATENATED MODULE: ./src/components/alert/index.ts

/* harmony default export */ var components_alert = (alert_alert);

;// CONCATENATED MODULE: ./src/components/avatar/avatar.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var Avatar = /** @class */ (function () {
    function Avatar() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-avatar', { all: true });
        this._create(this.COMPONENTS);
    }
    Avatar.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'avatar');
        var AvatarImage = target.querySelector('img');
        return {
            events: function (_a) {
                var onError = _a.onError;
                if (!AvatarImage) {
                    (0,mixins.warn)("Unable to add an event where the image failed to load for the current avatar --> \"" + el + "\"");
                    return;
                }
                (0,dom_utils.bind)(AvatarImage, 'error', function (event) { return onError && utils.type.isFn(onError, event); });
            }
        };
    };
    Avatar.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), icon = _a.icon, src = _a.src, alt = _a.alt, size = _a.size;
            _this._setSize(node, size);
            _this._setIcon(node, icon);
            _this._setImage(node, src, alt);
            _this._setText(node, icon, src);
            (0,dom_utils.removeAttrs)(node, ['icon', 'src', 'alt']);
        });
    };
    Avatar.prototype._setSize = function (node, size) {
        if (!size)
            return;
        var _size = Number(size);
        if (!_size)
            return;
        (0,dom_utils.setCss)(node, 'width', _size + "px");
        (0,dom_utils.setCss)(node, 'height', _size + "px");
        (0,dom_utils.setCss)(node, 'fontSize', _size / 2 + "px");
        node.removeAttribute('size');
    };
    Avatar.prototype._setIcon = function (node, icon) {
        if (!icon)
            return;
        node.classList.add(prefix.default.avatar + "-icon");
        var AvatarIcon = "<i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-" + icon + "\"></i>";
        (0,dom_utils.setHtml)(node, AvatarIcon);
    };
    Avatar.prototype._setImage = function (node, src, alt) {
        if (!src)
            return;
        node.classList.add(prefix.default.avatar + "-image");
        var AvatarImage = "<img src=\"" + src + "\" alt=\"" + alt + "\" />";
        (0,dom_utils.setHtml)(node, AvatarImage);
    };
    Avatar.prototype._setText = function (node, icon, src) {
        if (icon || src)
            return;
        if (!(0,dom_utils.setHtml)(node))
            return;
        var text = (0,dom_utils.setHtml)(node);
        var AvatarText = "<span class=\"" + prefix.default.avatar + "-string\">" + text + "</span>";
        (0,dom_utils.setHtml)(node, AvatarText);
        this._setScale(node);
    };
    // 防止字符型头像的字体溢出边界
    Avatar.prototype._setScale = function (node) {
        var children = node.querySelector("." + prefix.default.avatar + "-string");
        if (!children)
            return;
        var avatarWidth = node.getBoundingClientRect().width;
        var childrenWidth = children.offsetWidth;
        if (avatarWidth - 8 < childrenWidth) {
            var newScale = "scale(" + (avatarWidth - 8) / childrenWidth + ") translateX(-50%)";
            (0,dom_utils.setCss)(children, 'transform', "" + newScale);
        }
        else {
            (0,dom_utils.setCss)(children, 'transform', 'scale(1) translateX(-50%)');
        }
    };
    Avatar.prototype._attrs = function (node) {
        return {
            icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''),
            src: (0,dom_utils.getStrTypeAttr)(node, 'src', ''),
            alt: (0,dom_utils.getStrTypeAttr)(node, 'alt', ''),
            size: (0,dom_utils.getStrTypeAttr)(node, 'size', '')
        };
    };
    return Avatar;
}());
/* harmony default export */ var avatar = (Avatar);

;// CONCATENATED MODULE: ./src/components/avatar/index.ts

/* harmony default export */ var components_avatar = (avatar);

;// CONCATENATED MODULE: ./src/components/back-top/back-top.ts


var BackTop = /** @class */ (function () {
    function BackTop() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-back-top', { all: true });
        this._create(this.COMPONENTS);
    }
    BackTop.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), right = _a.right, bottom = _a.bottom, height = _a.height, duration = _a.duration;
            _this._setRight(node, right);
            _this._setBottom(node, bottom);
            _this._setAppearance(node);
            _this._handleScroll(node, height);
            _this._handleClick(node, duration);
            (0,dom_utils.removeAttrs)(node, ['right', 'bottom', 'height', 'duration']);
        });
    };
    BackTop.prototype._setRight = function (node, right) {
        (0,dom_utils.setCss)(node, 'right', right + "px");
    };
    BackTop.prototype._setBottom = function (node, bottom) {
        (0,dom_utils.setCss)(node, 'bottom', bottom + "px");
    };
    BackTop.prototype._setAppearance = function (node) {
        if ((0,dom_utils.setHtml)(node) && (0,dom_utils.setHtml)(node) !== ' ') {
            (0,dom_utils.setHtml)(node, node.innerHTML);
        }
        else {
            var template = "<div class=\"" + prefix.default.backtop + "-inner\">\n                                  <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-arrow-up\"></i>\n                              </div>";
            (0,dom_utils.setHtml)(node, template);
        }
    };
    BackTop.prototype._handleScroll = function (node, height) {
        var visable = function (y) {
            var scrollY = Math.floor(y);
            var visibilityHeight = Math.floor(height);
            // 判断页面是否滚动到指定显示的高度
            scrollY >= visibilityHeight
                ? (0,dom_utils.setCss)(node, 'display', 'block')
                : (0,dom_utils.setCss)(node, 'display', '');
        };
        (0,dom_utils.bind)(window, 'scroll', function () {
            visable(window.scrollY);
        });
    };
    BackTop.prototype._handleClick = function (node, duration) {
        var _this = this;
        (0,dom_utils.bind)(node, 'click', function () {
            var sTop = document.documentElement.scrollTop || document.body.scrollTop;
            _this._scrollTop(window, sTop, 0, duration);
        });
    };
    BackTop.prototype._scrollTop = function (el, from, to, duration) {
        if (!window.requestAnimationFrame) {
            window.requestAnimationFrame =
                window.webkitRequestAnimationFrame ||
                    // @ts-ignore
                    window.mozRequestAnimationFrame ||
                    // @ts-ignore
                    window.msRequestAnimationFrame ||
                    function (callback) {
                        return window.setTimeout(callback, 1000 / 60);
                    };
        }
        var difference = Math.abs(from - to);
        var step = Math.ceil((difference / duration) * 25);
        var scroll = function (start, end, step) {
            var d = start + step > end ? end : start + step;
            if (start <= end && d == 0)
                return;
            d = start - step < end ? end : start - step;
            el === window ? window.scrollTo(d, d) : (el.scrollTop = d);
            window.requestAnimationFrame(function () { return scroll(d, end, step); });
        };
        scroll(from, to, step);
    };
    BackTop.prototype._attrs = function (node) {
        return {
            right: (0,dom_utils.getNumTypeAttr)(node, 'right', 30),
            bottom: (0,dom_utils.getNumTypeAttr)(node, 'bottom', 30),
            height: (0,dom_utils.getNumTypeAttr)(node, 'height', 400),
            duration: (0,dom_utils.getNumTypeAttr)(node, 'duration', 500)
        };
    };
    return BackTop;
}());
/* harmony default export */ var back_top = (BackTop);

;// CONCATENATED MODULE: ./src/components/back-top/index.ts

/* harmony default export */ var components_back_top = (back_top);

;// CONCATENATED MODULE: ./src/components/badge/badge.ts




var Badge = /** @class */ (function () {
    function Badge() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-badge', { all: true });
        this._create(this.COMPONENTS);
    }
    Badge.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'badge');
        var countContainer = target.querySelector("." + prefix.default.badge + "-count");
        var dotContainer = target.querySelector("." + prefix.default.badge + "-dot");
        var _a = Badge.prototype, _getMaxCount = _a._getMaxCount, _showZero = _a._showZero, _setMaxCount = _a._setMaxCount;
        var maxCount = _getMaxCount(target);
        var showZero = _showZero(target);
        return {
            get count() {
                return countContainer === null || countContainer === void 0 ? void 0 : countContainer.textContent;
            },
            set count(newVal) {
                if (countContainer && utils.type.isNum(newVal)) {
                    if (newVal > maxCount) {
                        _setMaxCount(countContainer, maxCount);
                    }
                    else {
                        (0,dom_utils.setText)(countContainer, "" + newVal);
                        if (newVal <= 0 && !showZero) {
                            (0,dom_utils.setCss)(countContainer, 'display', 'none');
                        }
                        else {
                            (0,dom_utils.setCss)(countContainer, 'display', '');
                        }
                    }
                }
                else {
                    (0,mixins.warn)("The count value of this badge cannot be set --> \"" + el + "\"");
                }
            },
            get text() {
                return countContainer === null || countContainer === void 0 ? void 0 : countContainer.textContent;
            },
            set text(newVal) {
                if (!utils.type.isStr(newVal)) {
                    (0,mixins.warn)("The text value of this badge cannot be set --> \"" + el + "\"");
                    return;
                }
                (0,dom_utils.setText)(countContainer, newVal);
            },
            get dot() {
                return dotContainer;
            },
            set dot(newVal) {
                if (!dotContainer) {
                    (0,mixins.warn)("Unable to set this badge to dot --> \"" + el + "\"");
                    return;
                }
                if (utils.type.isBol(newVal) && newVal) {
                    (0,dom_utils.setCss)(dotContainer, 'display', '');
                }
                else {
                    (0,dom_utils.setCss)(dotContainer, 'display', 'none');
                }
            }
        };
    };
    Badge.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            _this._setCount(node);
            _this._setStatusWithColor(node);
            (0,dom_utils.removeAttrs)(node, [
                'count',
                'text',
                'status',
                'color',
                'show-zero',
                'max-count',
                'dot'
            ]);
        });
    };
    Badge.prototype._setCount = function (node) {
        var count = this._getCount(node);
        var maxCount = this._getMaxCount(node);
        var BadgeCount = (0,dom_utils.createElem)('sup');
        BadgeCount.className = prefix.default.badge + "-count";
        if (count || count === 0) {
            // 显示的数字大于maxCount时,显示${maxCount}+
            if (count > maxCount) {
                this._setMaxCount(BadgeCount, maxCount);
            }
            else {
                // 数字为 0 时隐藏或者展示 Badge
                if (count <= 0 && !this._showZero(node)) {
                    (0,dom_utils.setCss)(BadgeCount, 'display', 'none');
                }
                else {
                    (0,dom_utils.setText)(BadgeCount, "" + count);
                }
            }
            this._setDot(node, BadgeCount);
        }
        if (!this._getStatus(node) && !this._getColor(node)) {
            node.appendChild(BadgeCount);
            // 状态点外观不需要设置为独立展示
            this._setAlone(BadgeCount);
        }
        this._setText(node, BadgeCount);
        this._setOffset(node, BadgeCount);
    };
    Badge.prototype._setMaxCount = function (node, maxCount) {
        (0,dom_utils.setText)(node, maxCount + "+");
    };
    Badge.prototype._setDot = function (node, children) {
        if (!this._showDot(node))
            return;
        // 设置为小红点则不显示任何计数内容
        (0,dom_utils.setHtml)(children, '');
        (0,dom_utils.setCss)(children, 'display', '');
        children.className = prefix.default.badge + "-dot";
    };
    Badge.prototype._setText = function (parent, children) {
        // 区分与标签属性 status 或 color 配合的 text 属性
        if (!this._getStatus(parent) && !this._getColor(parent)) {
            var text = this._getText(parent);
            if (text) {
                (0,dom_utils.setCss)(children, 'display', '');
                (0,dom_utils.setText)(children, text);
            }
        }
    };
    Badge.prototype._setAlone = function (children) {
        if (!children.previousElementSibling) {
            children.classList.add(prefix.default.badge + "-count-alone");
        }
    };
    Badge.prototype._setOffset = function (parent, children) {
        var offset = this._getOffset(parent);
        (0,dom_utils.setCss)(children, 'marginTop', (offset === null || offset === void 0 ? void 0 : offset.x) + "px");
        (0,dom_utils.setCss)(children, 'marginRight', (offset === null || offset === void 0 ? void 0 : offset.y) + "px");
    };
    Badge.prototype._setStatusWithColor = function (node) {
        var status = this._getStatus(node);
        var color = this._getColor(node);
        var text = this._getText(node);
        if (!status && !color)
            return;
        var BadgeStatusDot = (0,dom_utils.createElem)('span');
        var BadgeStatusText = (0,dom_utils.createElem)('span');
        if ((text && status) || (text && color))
            (0,dom_utils.setText)(BadgeStatusText, text);
        var statusCls;
        var colorCls = '';
        status ? (statusCls = prefix.default.badge + "-status-" + status) : (statusCls = '');
        // 设置更多预设的状态点颜色,或者自定义颜色
        var colorType = [
            'blue',
            'green',
            'red',
            'yellow',
            'magenta',
            'volcano',
            'orange',
            'gold',
            'lime',
            'cyan',
            'geekblue',
            'purple'
        ];
        if (colorType.includes(color)) {
            colorCls = prefix.default.badge + "-status-" + color;
        }
        else {
            (0,dom_utils.setCss)(BadgeStatusDot, 'backgroundColor', color);
        }
        BadgeStatusDot.className = prefix.default.badge + "-status-dot " + statusCls + " " + colorCls;
        BadgeStatusText.className = prefix.default.badge + "-status-text";
        node.append(BadgeStatusDot, BadgeStatusText);
    };
    Badge.prototype._getCount = function (node) {
        return Number(node.getAttribute('count'));
    };
    Badge.prototype._getMaxCount = function (node) {
        return Number(node.getAttribute('max-count')) || 99;
    };
    Badge.prototype._getOffset = function (node) {
        // 转为真实数组,如果赋值是 offset = ['0','1'] 这样的则会报错
        var offset = JSON.parse(node.getAttribute('offset') || '[]');
        // 如果是数组,那么不论写了多少个值都只返回前两个
        if (utils.type.isArr(offset) && offset.length > 0) {
            return {
                x: offset[0],
                y: offset[1]
            };
        }
    };
    Badge.prototype._getStatus = function (node) {
        return node.getAttribute('status') || '';
    };
    Badge.prototype._getColor = function (node) {
        return node.getAttribute('color') || '';
    };
    Badge.prototype._getText = function (node) {
        return node.getAttribute('text') || '';
    };
    Badge.prototype._showZero = function (node) {
        return node.getAttribute('show-zero') === 'true';
    };
    Badge.prototype._showDot = function (node) {
        return node.getAttribute('dot') === 'true';
    };
    return Badge;
}());
/* harmony default export */ var badge = (Badge);

;// CONCATENATED MODULE: ./src/components/badge/index.ts

/* harmony default export */ var components_badge = (badge);

;// CONCATENATED MODULE: ./src/components/breadcrumb/breadcrumb.ts


var Breadcrumb = /** @class */ (function () {
    function Breadcrumb() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-breadcrumb', { all: true });
        this._create(this.COMPONENTS);
    }
    Breadcrumb.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var separator = _this._attrs(node).separator;
            _this._createItem(node, separator);
            (0,dom_utils.removeAttrs)(node, ['separator']);
        });
    };
    Breadcrumb.prototype._createItem = function (node, separator) {
        var children = node.children;
        var Fragment = document.createDocumentFragment();
        Array.from(children).forEach(function (child) {
            var Wrapper = (0,dom_utils.createElem)('span');
            var Separator = (0,dom_utils.createElem)('span');
            Separator.className = prefix.default.breadcrumb + "-item-separator";
            // 设置分隔符
            (0,dom_utils.setHtml)(Separator, "" + separator);
            child.classList.add(prefix.default.breadcrumb + "-item-link");
            // 初始化为行内块样式
            (0,dom_utils.setCss)(child, 'display', 'inline-block');
            Wrapper.append(child, Separator);
            Fragment.appendChild(Wrapper);
        });
        node.appendChild(Fragment);
    };
    Breadcrumb.prototype._attrs = function (node) {
        return {
            separator: (0,dom_utils.getStrTypeAttr)(node, 'separator', '/')
        };
    };
    return Breadcrumb;
}());
/* harmony default export */ var breadcrumb = (Breadcrumb);

;// CONCATENATED MODULE: ./src/components/breadcrumb/index.ts

/* harmony default export */ var components_breadcrumb = (breadcrumb);

;// CONCATENATED MODULE: ./src/components/button/button.ts



var Button = /** @class */ (function () {
    function Button() {
        this.VERSION = '1.1.1';
        this.COMPONENTS = (0,dom_utils.$el)("." + prefix.default.button, { all: true });
        this._getAllBtns(this.COMPONENTS);
    }
    Button.prototype.config = function (el) {
        var target = typeof el === 'string' ? (0,dom_utils.$el)(el) : el;
        (0,utils.validComps)(target, 'button');
        return {
            get loading() {
                return this.loading;
            },
            set loading(newVal) {
                if (newVal && !utils.type.isBol(newVal))
                    return;
                Button.prototype._setLoading(target, false, newVal);
            }
        };
    };
    Button.prototype._getAllBtns = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), icon = _a.icon, loading = _a.loading;
            _this._setIcon(node, icon);
            _this._setLoading(node, true, loading);
            (0,dom_utils.removeAttrs)(node, ['icon', 'loading']);
        });
    };
    Button.prototype._setIcon = function (node, icon) {
        if (!icon)
            return;
        if (node.innerHTML === '') {
            node.classList.add(prefix.default.button + "-icon-only");
            var ButtonIcon = "\n              <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-" + icon + "\"></i>\n            ";
            (0,dom_utils.setHtml)(node, ButtonIcon);
        }
        else {
            var Icon = (0,dom_utils.createElem)('i');
            Icon.className = prefix.default.icon + " " + prefix.default.icon + "-" + icon;
            node.prepend(Icon);
        }
    };
    // 2021.5.23
    // v1.1.0 修复按钮 loading 状态下加载中图标和原有图标并列显示的 bug
    Button.prototype._setLoading = function (node, firstRender, loading) {
        var _a;
        var OriginalIcon = node.querySelector('.rab-icon');
        var LoadingIcon = (0,dom_utils.createElem)('i');
        LoadingIcon.className = "rab-load-loop " + prefix.default.icon + " " + prefix.default.icon + "-loading-solid";
        if (loading) {
            if (OriginalIcon)
                (0,dom_utils.setCss)(OriginalIcon, 'display', 'none');
            if (node.innerHTML === '')
                node.classList.add(prefix.default.button + "-icon-only");
            node.classList.add(prefix.default.button + "-loading");
            node.prepend(LoadingIcon);
        }
        else {
            if (firstRender)
                return;
            // 2021.6.18
            // v1.1.1 修复在没有图标仅有文本的状态下,切换为loading状态并在状态结束后无法切换为原样 bug
            // setCss(node.children[1], 'display', '');
            if (node.children[1])
                (0,dom_utils.setCss)(node.children[1], 'display', '');
            if (node.classList.contains(prefix.default.button + "-loading"))
                node.classList.remove(prefix.default.button + "-loading");
            if (node.classList.contains(prefix.default.button + "-icon-only"))
                node.classList.remove(prefix.default.button + "-icon-only");
            (_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.remove();
        }
    };
    Button.prototype._attrs = function (node) {
        return {
            icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''),
            loading: (0,dom_utils.getBooleanTypeAttr)(node, 'loading')
        };
    };
    return Button;
}());
/* harmony default export */ var button_button = (Button);

;// CONCATENATED MODULE: ./src/components/button/index.ts

/* harmony default export */ var components_button = (button_button);

;// CONCATENATED MODULE: ./src/components/card/card.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var Card = /** @class */ (function () {
    function Card() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-card', { all: true });
        this._create(this.COMPONENTS);
    }
    Card.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'card');
        var CardHead = target.querySelector("." + prefix.default.card + "-head");
        var CardExtra = target.querySelector("." + prefix.default.card + "-extra");
        return {
            get title() {
                return (0,dom_utils.setHtml)(CardHead);
            },
            set title(newVal) {
                if (newVal && !utils.type.isStr(newVal))
                    return;
                (0,dom_utils.setHtml)(CardHead, newVal);
            },
            get extra() {
                return (0,dom_utils.setHtml)(CardExtra);
            },
            set extra(newVal) {
                if (newVal && !utils.type.isStr(newVal))
                    return;
                (0,dom_utils.setHtml)(CardExtra, newVal);
            }
        };
    };
    Card.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            if ((0,mixins.moreThanOneNode)(node))
                return;
            var placeholderNode = node.firstElementChild;
            var _a = _this._attrs(node), title = _a.title, extra = _a.extra, shadow = _a.shadow, noBorder = _a.noBorder, disHover = _a.disHover;
            _this._isShowBordered(node, noBorder);
            _this._isShowShadow(node, shadow);
            _this._isDisHover(node, disHover);
            _this._setHead(node, title);
            _this._setBody(node, placeholderNode);
            _this._setExtra(node, extra);
            (0,dom_utils.removeAttrs)(node, ['title', 'extra', 'shadow', 'dis-hover', 'bordered']);
        });
    };
    Card.prototype._isShowBordered = function (node, noBorder) {
        if (!noBorder)
            return;
        node.classList.add(prefix.default.card + "-no-border");
    };
    Card.prototype._isShowShadow = function (node, shadow) {
        if (!shadow)
            return;
        node.classList.add(prefix.default.card + "-shadow");
    };
    Card.prototype._isDisHover = function (node, disHover) {
        if (!disHover)
            return;
        node.classList.add(prefix.default.card + "-dis-hover");
    };
    Card.prototype._setHead = function (node, title) {
        if (!title)
            return;
        var CardHeadTemplate = "<div class=\"" + prefix.default.card + "-head\">" + title + "</div>";
        node.insertAdjacentHTML('afterbegin', CardHeadTemplate);
    };
    Card.prototype._setBody = function (node, placeholderNode) {
        var Fragment = document.createDocumentFragment();
        var CardBody = (0,dom_utils.createElem)('div');
        CardBody.className = prefix.default.card + "-body";
        CardBody.appendChild(placeholderNode);
        Fragment.appendChild(CardBody);
        node.appendChild(Fragment);
    };
    Card.prototype._setExtra = function (node, extra) {
        if (!extra)
            return;
        var CardExtraTemplate = "<div class=\"" + prefix.default.card + "-extra\">" + extra + "</div>";
        node.insertAdjacentHTML('beforeend', CardExtraTemplate);
    };
    Card.prototype._attrs = function (node) {
        return {
            title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''),
            extra: (0,dom_utils.getStrTypeAttr)(node, 'extra', ''),
            shadow: (0,dom_utils.getBooleanTypeAttr)(node, 'shadow'),
            disHover: (0,dom_utils.getBooleanTypeAttr)(node, 'dis-hover'),
            noBorder: (0,dom_utils.getBooleanTypeAttr)(node, 'no-border')
        };
    };
    return Card;
}());
/* harmony default export */ var card = (Card);

;// CONCATENATED MODULE: ./src/components/card/index.ts

/* harmony default export */ var components_card = (card);

;// CONCATENATED MODULE: ./src/components/carousel/carousel.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var AUTOPLAYSPEED = 2000;
var DURATION = 520;
var Carousel = /** @class */ (function () {
    function Carousel() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-carousel', { all: true });
        this._create(this.COMPONENTS);
    }
    Carousel.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'carousel');
        var _attrs = Carousel.prototype._attrs;
        var _a = _attrs(target), autoplay = _a.autoplay, autoplaySpeed = _a.autoplaySpeed, hoverPause = _a.hoverPause;
        return {
            events: function (_a) {
                var onClick = _a.onClick, onChange = _a.onChange;
                var elems = target.querySelectorAll("." + prefix.default.carousel + "-item");
                var LeftArrow = target.querySelector("." + prefix.default.carousel + "-arrow.left");
                var RightArrow = target.querySelector("." + prefix.default.carousel + "-arrow.right");
                var lastIndex = elems.length - 1;
                var handleChange = function (siblingType, newSetElem) {
                    var oldActiveElem = target.querySelector("." + prefix.default.carousel + "-item.active");
                    var activeElem = oldActiveElem[siblingType] || newSetElem;
                    var oldValue = Number(oldActiveElem.dataset['index']);
                    // @ts-ignore
                    var value = Number(activeElem.dataset['index']);
                    onChange && utils.type.isFn(onChange, [oldValue, value]);
                };
                var autoPlayUseChangeEvent = function () {
                    if (!autoplay)
                        return;
                    var eventTimer = null;
                    var startEvent = function () {
                        eventTimer = window.setInterval(function () {
                            handleChange('nextElementSibling', elems[0]);
                        }, autoplaySpeed);
                    };
                    var pauseEvent = function () {
                        return eventTimer ? window.clearInterval(eventTimer) : false;
                    };
                    startEvent();
                    if (hoverPause === 'false')
                        return;
                    (0,dom_utils.bind)(target, 'mouseenter', function () { return pauseEvent(); });
                    (0,dom_utils.bind)(target, 'mouseleave', function () { return startEvent(); });
                };
                var handleClick = function () {
                    elems.forEach(function (elem, index) {
                        (0,dom_utils.bind)(elem, 'click', function () { return onClick && utils.type.isFn(onClick, index); });
                    });
                };
                (0,dom_utils.bind)(LeftArrow, 'click', function () {
                    return handleChange('previousElementSibling', elems[lastIndex]);
                });
                (0,dom_utils.bind)(RightArrow, 'click', function () { return handleChange('nextElementSibling', elems[0]); });
                handleClick();
                autoPlayUseChangeEvent();
            }
        };
    };
    Carousel.prototype._create = function (components) {
        var _this = this;
        components.forEach(function (node) {
            if ((0,mixins.moreThanOneNode)(node))
                return;
            var placeholderNode = node.firstElementChild;
            if (!placeholderNode)
                return;
            var carouselItemCount = placeholderNode.childElementCount;
            var _a = _this._attrs(node), dots = _a.dots, arrow = _a.arrow, effect = _a.effect, easing = _a.easing, radiusDot = _a.radiusDot, trigger = _a.trigger, autoplay = _a.autoplay, hoverPause = _a.hoverPause, autoplaySpeed = _a.autoplaySpeed;
            _this._setMainTemplate(node, dots, arrow);
            _this._setFadeCls(node, effect);
            _this._setItem(node, placeholderNode, carouselItemCount, easing);
            _this._setIndicators(node, carouselItemCount, radiusDot, trigger);
            _this._autoPlay(autoplay, node, hoverPause, autoplaySpeed);
            _this._handleArrowClick(node, arrow);
            (0,dom_utils.removeAttrs)(node, [
                'dots',
                'arrow',
                'effect',
                'easing',
                'trigger',
                'radius-dot',
                'autoplay',
                'hover-pause',
                'autoplay-speed'
            ]);
        });
    };
    Carousel.prototype._setMainTemplate = function (node, dots, arrow) {
        var template = "\n        <button type=\"button\" class=\"left " + prefix.default.carousel + "-arrow " + prefix.default.carousel + "-arrow-" + arrow + "\">\n           <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-arrow-back\"></i>\n        </button>\n        <div class=\"" + prefix.default.carousel + "-list\"></div>\n        <button type=\"button\" class=\"right " + prefix.default.carousel + "-arrow " + prefix.default.carousel + "-arrow-" + arrow + "\">\n           <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-arrow-forward\"></i>\n        </button>\n        <ul class=\"" + prefix.default.carousel + "-dots " + prefix.default.carousel + "-dots-" + dots + "\"></ul>\n        ";
        (0,dom_utils.setHtml)(node, template);
    };
    Carousel.prototype._setFadeCls = function (node, effect) {
        effect === 'fade' ? node.classList.add(prefix.default.carousel + "-" + effect) : '';
    };
    Carousel.prototype._setItem = function (node, placeholderNode, carouselItemCount, esaing) {
        var _a;
        var CarouselList = node.querySelector("." + prefix.default.carousel + "-list");
        var Fragment = document.createDocumentFragment();
        var children = Array.from(placeholderNode.children);
        var i = 0;
        for (; i < carouselItemCount; i++) {
            var CarouselItem = (0,dom_utils.createElem)('div');
            CarouselItem.dataset['index'] = "" + i;
            CarouselItem.className = prefix.default.carousel + "-item";
            CarouselItem.appendChild(children[i]);
            this._setEasing(CarouselItem, esaing);
            Fragment.appendChild(CarouselItem);
            (_a = Fragment.firstElementChild) === null || _a === void 0 ? void 0 : _a.classList.add('active');
        }
        CarouselList === null || CarouselList === void 0 ? void 0 : CarouselList.appendChild(Fragment);
    };
    Carousel.prototype._setEasing = function (item, easing) {
        if (!easing)
            return;
        (0,dom_utils.setCss)(item, 'transitionTimingFunction', easing);
    };
    Carousel.prototype._setIndicators = function (node, carouselItemCount, radiusDot, trigger) {
        var _a;
        var CarouselDots = node.querySelector("." + prefix.default.carousel + "-dots");
        var Fragment = document.createDocumentFragment();
        var i = 0;
        for (; i < carouselItemCount; i++) {
            var CarouselDot = (0,dom_utils.createElem)('li');
            CarouselDot.dataset['slideTo'] = "" + i;
            (0,dom_utils.setHtml)(CarouselDot, "<button type=\"button\" class=" + (radiusDot ? 'radius' : '') + "></button>");
            this._handleDotChange(trigger, node, CarouselDot);
            Fragment.appendChild(CarouselDot);
            (_a = Fragment.firstElementChild) === null || _a === void 0 ? void 0 : _a.classList.add(prefix.default.carousel + "-active");
        }
        CarouselDots === null || CarouselDots === void 0 ? void 0 : CarouselDots.appendChild(Fragment);
    };
    Carousel.prototype._autoPlay = function (autoplay, node, hoverPause, autoplaySpeed) {
        var _this = this;
        if (!autoplay)
            return;
        var autoPlayTimer = null;
        var play = function () {
            var speed = autoplaySpeed;
            // 当轮播图自动播放的切换速度低于 650ms 会出现问题,
            // 因此低于这个数值的都会被重置为 650ms。
            if (speed < 650) {
                speed = 650;
                console.warn("[Rabbit warn] Please do not set the sliding speed of carousel to less than 650ms. There are known problems with doing so, so it has been reset to 650ms. --> " + autoplaySpeed + "ms");
            }
            autoPlayTimer = window.setInterval(function () { return _this._slide('next', node); }, speed);
        };
        play();
        if (hoverPause === 'false')
            return;
        var pause = function () { return (autoPlayTimer ? window.clearInterval(autoPlayTimer) : false); };
        (0,dom_utils.bind)(node, 'mouseenter', function () { return pause(); });
        (0,dom_utils.bind)(node, 'mouseleave', function () { return play(); });
    };
    Carousel.prototype._handleArrowClick = function (node, arrow) {
        var _this = this;
        if (arrow === 'none')
            return;
        var LeftArrow = node.querySelector("." + prefix.default.carousel + "-arrow.left");
        var RightArrow = node.querySelector("." + prefix.default.carousel + "-arrow.right");
        (0,dom_utils.bind)(LeftArrow, 'click', function () { return _this._slide('prev', node); });
        (0,dom_utils.bind)(RightArrow, 'click', function () { return _this._slide('next', node); });
    };
    Carousel.prototype._handleDotChange = function (trigger, node, dot) {
        var _this = this;
        var activeIndex, activeElem;
        var _C = function () {
            activeIndex = Number(dot.dataset['slideTo']);
            activeElem = node.querySelector("." + prefix.default.carousel + "-item[data-index=\"" + activeIndex + "\"]");
            if (activeElem.classList.contains('active'))
                return;
            _this._dotChange(node, activeIndex);
            _this._showActiveItem(activeElem);
            (0,dom_utils.siblings)(activeElem).forEach(function (otherElem) {
                return otherElem.classList.contains('active') ? _this._hideOldActiveItem(otherElem) : '';
            });
        };
        if (trigger === 'hover') {
            (0,dom_utils.bind)(dot, 'mouseenter', function () { return _C(); });
        }
        else {
            (0,dom_utils.bind)(dot, 'click', function () { return _C(); });
        }
    };
    Carousel.prototype._slide = function (type, node) {
        var _this = this;
        var direction = type === 'prev' ? 'right' : 'left';
        var CarouselList = node.querySelector("." + prefix.default.carousel + "-list");
        var firstIndex = 0;
        var lastIndex = CarouselList.childElementCount - 1;
        var ActiveItem = node.querySelector("." + prefix.default.carousel + "-item.active");
        var PrevItem = ActiveItem.previousElementSibling || CarouselList.children[lastIndex];
        var NextItem = ActiveItem.nextElementSibling || CarouselList.children[firstIndex];
        var __change = function (elem) { return _this._change(type, direction, node, ActiveItem, elem); };
        type === 'prev' ? __change(PrevItem) : __change(NextItem);
    };
    Carousel.prototype._change = function (type, direction, node, oldActiveItem, curActiveItem) {
        // @ts-ignore
        var activeIndex = Number(curActiveItem.dataset['index']);
        this._dotChange(node, activeIndex);
        this._showActiveItem(curActiveItem, type, direction);
        this._hideOldActiveItem(oldActiveItem, direction);
    };
    Carousel.prototype._dotChange = function (node, activeIndex) {
        var CarouselDots = node.querySelector("." + prefix.default.carousel + "-dots");
        var ActiveDot = CarouselDots.children[activeIndex];
        ActiveDot.classList.add(prefix.default.carousel + "-active");
        (0,dom_utils.siblings)(ActiveDot).forEach(function (dot) {
            return dot.classList.contains(prefix.default.carousel + "-active")
                ? dot.classList.remove(prefix.default.carousel + "-active")
                : '';
        });
    };
    Carousel.prototype._showActiveItem = function (activeElem, type, direction) {
        if (type === void 0) { type = 'next'; }
        if (direction === void 0) { direction = 'left'; }
        activeElem.classList.add(prefix.default.carousel + "-item-" + type);
        setTimeout(function () { return activeElem.classList.add(prefix.default.carousel + "-item-" + direction); }, 20);
        setTimeout(function () {
            activeElem.classList.add('active');
            activeElem.classList.remove(prefix.default.carousel + "-item-" + type);
            activeElem.classList.remove(prefix.default.carousel + "-item-" + direction);
        }, DURATION);
    };
    Carousel.prototype._hideOldActiveItem = function (oldElem, direction) {
        if (direction === void 0) { direction = 'left'; }
        setTimeout(function () { return oldElem.classList.add(prefix.default.carousel + "-item-" + direction); }, 20);
        setTimeout(function () {
            oldElem.classList.remove('active');
            oldElem.classList.remove(prefix.default.carousel + "-item-" + direction);
        }, DURATION);
    };
    Carousel.prototype._attrs = function (node) {
        return {
            dots: (0,dom_utils.getStrTypeAttr)(node, 'dots', 'inside'),
            arrow: (0,dom_utils.getStrTypeAttr)(node, 'arrow', 'hover'),
            effect: (0,dom_utils.getStrTypeAttr)(node, 'effect', ''),
            easing: (0,dom_utils.getStrTypeAttr)(node, 'easing', ''),
            trigger: (0,dom_utils.getStrTypeAttr)(node, 'trigger', 'click'),
            hoverPause: (0,dom_utils.getStrTypeAttr)(node, 'hover-pause', 'true'),
            radiusDot: (0,dom_utils.getBooleanTypeAttr)(node, 'radius-dot'),
            autoplay: (0,dom_utils.getBooleanTypeAttr)(node, 'autoplay'),
            autoplaySpeed: (0,dom_utils.getNumTypeAttr)(node, 'autoplay-speed', AUTOPLAYSPEED)
        };
    };
    return Carousel;
}());
/* harmony default export */ var carousel = (Carousel);

;// CONCATENATED MODULE: ./src/components/carousel/index.ts

/* harmony default export */ var components_carousel = (carousel);

;// CONCATENATED MODULE: ./src/components/checkbox/checkbox.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var Checkbox = /** @class */ (function () {
    function Checkbox() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-checkbox', { all: true });
        this._create(this.COMPONENTS);
    }
    Checkbox.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        var isGroup = target.tagName.toLowerCase() == 'r-checkbox-group';
        // 排除 group 项
        if (!isGroup) {
            (0,utils.validComps)(target, 'checkbox');
        }
        else {
            (0,utils.validComps)(target, 'checkbox-group');
        }
        var _a = Checkbox.prototype, _attrs = _a._attrs, _setChecked = _a._setChecked, _setIndeterminate = _a._setIndeterminate, _setMultipleChecks = _a._setMultipleChecks, _isDisabled = _a._isDisabled;
        var value = _attrs(target).value;
        return {
            get value() {
                return value;
            },
            set value(newVal) {
                if (!isGroup) {
                    (0,mixins.warn)("This checkbox is not a child of a group element -->\"" + el + "\"");
                    return;
                }
                if (newVal && !utils.type.isArr(newVal))
                    return;
                _setMultipleChecks(target, newVal);
            },
            get checked() {
                return target.dataset['value'] === 'true';
            },
            set checked(newVal) {
                if (newVal && !utils.type.isBol(newVal))
                    return;
                _setChecked(target, newVal);
            },
            get disabled() {
                return _isDisabled(target);
            },
            set disabled(newVal) {
                if (newVal && !utils.type.isBol(newVal))
                    return;
                if (isGroup)
                    return;
                newVal
                    ? target.setAttribute('disabled', 'disabled')
                    : target.removeAttribute('disabled');
                var CheckBoxInput = target.querySelector("." + prefix.default.checkbox + "-input");
                CheckBoxInput.disabled = newVal;
            },
            get indeterminate() {
                var isIndeterminate = target
                    .querySelector("." + prefix.default.checkbox)
                    .classList.contains(prefix.default.checkbox + "-indeterminate");
                return isIndeterminate;
            },
            set indeterminate(newVal) {
                if (newVal && !utils.type.isBol(newVal))
                    return;
                if (isGroup)
                    return;
                _setIndeterminate(target, newVal);
            },
            events: function (_a) {
                var onChange = _a.onChange;
                var CheckBox, checked;
                isGroup ? (CheckBox = target.querySelectorAll('r-checkbox')) : (CheckBox = target);
                var fn = function () {
                    if (isGroup) {
                        checked = [];
                        CheckBox.forEach(function (elm) {
                            elm.dataset['value'] === 'true'
                                ? checked.push(elm.dataset['label'])
                                : '';
                        });
                    }
                    else {
                        checked = target.dataset['value'] === 'true';
                    }
                    onChange && utils.type.isFn(onChange, checked);
                };
                (0,dom_utils.bind)(target, 'click', fn);
            }
        };
    };
    Checkbox.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), icon = _a.icon, name = _a.name, checked = _a.checked, label = _a.label, indeterminate = _a.indeterminate;
            var CheckboxGroupWrapper = _this._getGroupWrapper(node);
            _this._setChecked(node, checked);
            _this._setMainTemplate(node, name);
            _this._setLabel(node, label);
            _this._setDisabled(node);
            _this._setIcon(node, icon);
            _this._setIndeterminate(node, indeterminate);
            _this._handleChange(node);
            if (CheckboxGroupWrapper) {
                var value = _this._attrs(CheckboxGroupWrapper).value;
                _this._setMultipleChecks(CheckboxGroupWrapper, value);
                (0,dom_utils.removeAttrs)(CheckboxGroupWrapper, ['value']);
            }
            (0,dom_utils.removeAttrs)(node, ['icon', 'name', 'checked', 'label']);
        });
    };
    Checkbox.prototype._setChecked = function (node, checked) {
        // @ts-ignore
        node.dataset['value'] = "" + checked;
        if (!checked) {
            if (node.classList.contains(prefix.default.checkbox + "-checked")) {
                node.classList.remove(prefix.default.checkbox + "-checked");
            }
        }
        else {
            node.classList.add(prefix.default.checkbox + "-checked");
        }
    };
    Checkbox.prototype._setMainTemplate = function (node, name) {
        var content = (0,dom_utils.setHtml)(node);
        var template = "\n         <span class=\"" + prefix.default.checkbox + "\">\n            <span class=\"" + prefix.default.checkbox + "-inner\"></span>\n                <input type=\"checkbox\" class=\"" + prefix.default.checkbox + "-input\" name=\"" + name + "\">\n            </span>\n         <span>" + content + "</span>\n        ";
        (0,dom_utils.setHtml)(node, template);
    };
    Checkbox.prototype._setLabel = function (node, label) {
        if (!this._getGroupWrapper(node))
            return;
        // @ts-ignore
        node.dataset['label'] = label;
    };
    Checkbox.prototype._setDisabled = function (node) {
        if (!this._isDisabled(node))
            return;
        var CheckBoxInput = node.querySelector("." + prefix.default.checkbox + "-input");
        CheckBoxInput.disabled = true;
    };
    Checkbox.prototype._setIcon = function (node, icon) {
        if (!icon)
            return;
        var template = "<i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-" + icon + "\"></i>";
        node.querySelector("." + prefix.default.checkbox).insertAdjacentHTML('afterend', template);
    };
    Checkbox.prototype._setIndeterminate = function (node, indeterminate) {
        var Checkbox = node.querySelector("." + prefix.default.checkbox);
        if (!indeterminate) {
            if (Checkbox.classList.contains(prefix.default.checkbox + "-indeterminate")) {
                Checkbox.classList.remove(prefix.default.checkbox + "-indeterminate");
            }
        }
        else {
            Checkbox.classList.add(prefix.default.checkbox + "-indeterminate");
        }
    };
    Checkbox.prototype._setMultipleChecks = function (checkboxGroupWrapper, value) {
        var _setChecked = Checkbox.prototype._setChecked;
        var Checkboxs = checkboxGroupWrapper.querySelectorAll('r-checkbox');
        var length = value.length;
        if (length == 0) {
            Checkboxs.forEach(function (elm) { return _setChecked(elm, false); });
        }
        else {
            var i = 0;
            for (; i < length; i++) {
                var currentCheckbox = checkboxGroupWrapper.querySelector("[data-label=\"" + value[i] + "\"]");
                currentCheckbox ? _setChecked(currentCheckbox, true) : '';
            }
        }
    };
    Checkbox.prototype._handleChange = function (node) {
        var _this = this;
        var addFocusedState = function () {
            var CheckBoxInner = node.querySelector("." + prefix.default.checkbox + "-inner");
            CheckBoxInner.classList.add(prefix.default.checkbox + "-focus");
            setTimeout(function () { return CheckBoxInner.classList.remove(prefix.default.checkbox + "-focus"); }, 1500);
        };
        var toogle = function () {
            // @ts-ignore
            var isChecked = node.dataset['value'] === 'true' ? false : true;
            var isDisabled = _this._isDisabled(node);
            if (isDisabled)
                return false;
            addFocusedState();
            _this._setChecked(node, isChecked);
        };
        (0,dom_utils.bind)(node, 'click', toogle);
    };
    Checkbox.prototype._isDisabled = function (node) {
        return node.getAttribute('disabled') == '' || node.getAttribute('disabled') == 'true';
    };
    Checkbox.prototype._getGroupWrapper = function (node) {
        var parent = node.parentElement;
        return (parent === null || parent === void 0 ? void 0 : parent.tagName.toLowerCase()) === 'r-checkbox-group' ? parent : null;
    };
    Checkbox.prototype._attrs = function (node) {
        return {
            icon: (0,dom_utils.getStrTypeAttr)(node, 'icon', ''),
            name: (0,dom_utils.getStrTypeAttr)(node, 'name', ''),
            label: (0,dom_utils.getStrTypeAttr)(node, 'label', ''),
            value: (0,dom_utils.getArrTypeAttr)(node, 'value'),
            checked: (0,dom_utils.getBooleanTypeAttr)(node, 'checked'),
            indeterminate: (0,dom_utils.getBooleanTypeAttr)(node, 'indeterminate')
        };
    };
    return Checkbox;
}());
/* harmony default export */ var checkbox_checkbox = (Checkbox);

;// CONCATENATED MODULE: ./src/components/checkbox/index.ts

/* harmony default export */ var components_checkbox = (checkbox_checkbox);

;// CONCATENATED MODULE: ./src/components/circle/circle.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var Circle = /** @class */ (function () {
    function Circle() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-circle', { all: true });
        this._create(this.COMPONENTS);
    }
    Circle.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        var InnerCircle = target.querySelectorAll('path')[1];
        var _a = Circle.prototype, _attrs = _a._attrs, _setPercent = _a._setPercent, _setStrokeColor = _a._setStrokeColor;
        var _b = _attrs(target), percent = _b.percent, strokeWidth = _b.strokeWidth, dashboard = _b.dashboard, strokeColor = _b.strokeColor;
        return {
            get percent() {
                return percent;
            },
            set percent(newVal) {
                if (newVal && !utils.type.isNum(newVal))
                    return;
                _setPercent(InnerCircle, newVal, strokeWidth, dashboard);
            },
            get strokeColor() {
                return strokeColor;
            },
            set strokeColor(newVal) {
                if (newVal && !utils.type.isStr(newVal) && !utils.type.isArr(newVal))
                    return;
                _setStrokeColor(InnerCircle, newVal);
            }
        };
    };
    Circle.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            if ((0,mixins.moreThanOneNode)(node))
                return;
            var CircleContent = node.firstElementChild;
            var _a = _this._attrs(node), size = _a.size, percent = _a.percent, strokeLinecap = _a.strokeLinecap, strokeWidth = _a.strokeWidth, strokeColor = _a.strokeColor, trailColor = _a.trailColor, trailWidth = _a.trailWidth, dashboard = _a.dashboard;
            _this._setSize(node, size);
            _this._setMainTemplate(node, percent, trailColor, trailWidth, strokeLinecap, strokeWidth, strokeColor, dashboard);
            var InnerCircle = node.querySelectorAll('path')[1];
            _this._setPercent(InnerCircle, percent, strokeWidth, dashboard);
            _this._setStrokeColor(InnerCircle, strokeColor);
            _this._setInnerContent(node, CircleContent);
            (0,dom_utils.removeAttrs)(node, [
                'percent',
                'size',
                'stroke-linecap',
                'stroke-width',
                'stroke-color',
                'trail-width',
                'trail-color',
                'dashboard'
            ]);
        });
    };
    Circle.prototype._setSize = function (node, size) {
        (0,dom_utils.setCss)(node, 'width', size + "px");
        (0,dom_utils.setCss)(node, 'height', size + "px");
    };
    Circle.prototype._setMainTemplate = function (node, percent, trailColor, trailWidth, strokeLinecap, strokeWidth, strokeColor, dashboard) {
        var pathString = this._getPathString(strokeWidth, dashboard);
        var _a = this._getStyle(strokeWidth, dashboard), trailStyle = _a.trailStyle, pathStyle = _a.pathStyle;
        var computedStrokeWidth = percent === 0 && dashboard ? 0 : strokeWidth;
        var template = "\n        <svg viewBox=\"0 0 100 100\">\n          <path\n            d=\"" + pathString + "\"\n            stroke=\"" + trailColor + "\"\n            stroke-width=\"" + trailWidth + "\"\n            fill-opacity=\"0\"\n            stroke-linecap=\"" + strokeLinecap + "\"\n            style=\"" + trailStyle + "\"\n          ></path>\n          <path\n            d=\"" + pathString + "\"\n            stroke-linecap=\"" + strokeLinecap + "\"\n            stroke-width=\"" + computedStrokeWidth + "\"\n            fill-opacity=\"0\"\n            style=\"" + pathStyle + "\"\n          ></path>\n        </svg>\n        ";
        (0,dom_utils.setHtml)(node, template);
    };
    Circle.prototype._radius = function (strokeWidth) {
        return 50 - strokeWidth / 2;
    };
    Circle.prototype._setPercent = function (innerCircle, percent, strokeWidth, dashboard) {
        var _radius = Circle.prototype._radius;
        var len = Math.floor(Math.PI * 2 * _radius(strokeWidth));
        if (dashboard) {
            (0,dom_utils.setCss)(innerCircle, 'strokeDasharray', (percent / 100) * (len - 75) + "px " + len + "px");
        }
        else {
            (0,dom_utils.setCss)(innerCircle, 'strokeDashoffset', ((100 - percent) / 100) * len + "px");
        }
    };
    Circle.prototype._setStrokeColor = function (innerCircle, color) {
        var id = prefix.default.circle + "-" + (0,utils.randomStr)(3);
        var addDefs = function (color) {
            if (color.length > 2) {
                (0,mixins.warn)('👇 The stroke-color attribute of circle cannot pass an array of length greater than 2');
                console.error(innerCircle.parentElement.parentElement);
                return;
            }
            strokeValue = "url(#" + id + ")";
            var defs = Circle.prototype.showDefs(id, color);
            innerCircle.parentElement.insertAdjacentHTML('beforeend', defs);
        };
        var strokeValue;
        if (typeof color === 'string') {
            if (color.startsWith('[') && color.endsWith(']')) {
                addDefs(JSON.parse(color));
            }
            else {
                strokeValue = color;
            }
        }
        else if (Array.isArray(color)) {
            addDefs(color);
        }
        innerCircle.setAttribute('stroke', strokeValue);
    };
    Circle.prototype._getPathString = function (strokeWidth, dashboard) {
        var radius = this._radius(strokeWidth);
        if (dashboard) {
            return "M 50,50 m 0," + radius + "\n          a " + radius + "," + radius + " 0 1 1 0,-" + 2 * radius + "\n          a " + radius + "," + radius + " 0 1 1 0," + 2 * radius;
        }
        else {
            return "M 50,50 m 0,-" + radius + "\n          a " + radius + "," + radius + " 0 1 1 0," + 2 * radius + "\n          a " + radius + "," + radius + " 0 1 1 0,-" + 2 * radius;
        }
    };
    Circle.prototype._getStyle = function (strokeWidth, dashboard) {
        var len = Math.floor(Math.PI * 2 * this._radius(strokeWidth));
        var trailStyle, pathStyle;
        if (dashboard) {
            trailStyle = "\n            stroke-dasharray: " + (len - 75) + "px " + len + "px;\n            stroke-dashoffset: -" + 75 / 2 + "px;\n            transition: stroke-dashoffset .3s ease 0s, stroke-dasharray .3s ease 0s, stroke .3s\n            ";
            pathStyle = "\n            stroke-dashoffset: -" + 75 / 2 + "px;\n            transition:stroke-dashoffset .3s ease 0s, stroke-dasharray .6s ease 0s, stroke .6s, stroke-width .06s ease .6s\n            ";
        }
        else {
            trailStyle = '';
            pathStyle = "\n              stroke-dasharray: " + len + "px " + len + "px;\n              transition: stroke-dashoffset 0.6s ease 0s, stroke 0.6s ease\n              ";
        }
        return { trailStyle: trailStyle, pathStyle: pathStyle };
    };
    Circle.prototype.showDefs = function (id, color) {
        return "<defs>\n                 <linearGradient id=\"" + id + "\" x1=\"100%\" y1=\"0%\" x2=\"0%\" y2=\"0%\">\n                     <stop offset=\"0%\" stop-color=\"" + color[0] + "\"></stop>\n                     <stop offset=\"100%\" stop-color=\"" + color[1] + "\"></stop>\n                 </linearGradient>\n              </defs>\n              ";
    };
    Circle.prototype._setInnerContent = function (node, content) {
        if (!content)
            return;
        var CircleInner = (0,dom_utils.createElem)('div');
        CircleInner.className = prefix.default.circle + "-inner";
        CircleInner.appendChild(content);
        node.appendChild(CircleInner);
    };
    Circle.prototype._attrs = function (node) {
        return {
            size: (0,dom_utils.getNumTypeAttr)(node, 'size', 120),
            percent: (0,dom_utils.getNumTypeAttr)(node, 'percent', 0),
            strokeWidth: (0,dom_utils.getNumTypeAttr)(node, 'stroke-width', 6),
            trailWidth: (0,dom_utils.getNumTypeAttr)(node, 'trail-width', 5),
            trailColor: (0,dom_utils.getStrTypeAttr)(node, 'trail-color', '#eaeef2'),
            strokeColor: (0,dom_utils.getStrTypeAttr)(node, 'stroke-color', '#1890ff'),
            strokeLinecap: (0,dom_utils.getStrTypeAttr)(node, 'stroke-linecap', 'round'),
            dashboard: (0,dom_utils.getBooleanTypeAttr)(node, 'dashboard')
        };
    };
    return Circle;
}());
/* harmony default export */ var circle = (Circle);

;// CONCATENATED MODULE: ./src/components/circle/index.ts

/* harmony default export */ var components_circle = (circle);

// EXTERNAL MODULE: ./src/dom-utils/elem.ts
var elem = __webpack_require__("./src/dom-utils/elem.ts");
;// CONCATENATED MODULE: ./src/components/collapse/collapse.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var Collapse = /** @class */ (function () {
    function Collapse() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-collapse', { all: true });
        this._create(this.COMPONENTS);
    }
    Collapse.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'collapse');
        var _a = Collapse.prototype, _attrs = _a._attrs, _dataSetActiveKey = _a._dataSetActiveKey, _openByKey = _a._openByKey;
        var activeIndex = JSON.parse(target.dataset['activeIndex']);
        return {
            get activeIndex() {
                return activeIndex;
            },
            set activeIndex(newVal) {
                if (newVal == activeIndex)
                    return;
                _dataSetActiveKey(target, newVal);
                _openByKey(target, newVal, target.getAttribute('accordion'));
            },
            events: function (_a) {
                var onChange = _a.onChange;
                var panels = target.querySelectorAll('r-collapse-panel');
                // 储存已展开面板的 key
                var key = [];
                var pushKey = function (el, toggle) {
                    var accordion = _attrs(target).accordion;
                    // @ts-ignore
                    var panelKey = el.dataset.panelKey;
                    if (el.classList.contains(prefix.default.collapse + "-item-active")) {
                        key.push(panelKey);
                    }
                    else if (toggle) {
                        var idx = key.indexOf(panelKey);
                        idx > -1 ? key.splice(idx, 1) : '';
                    }
                    // 手风琴模式下每展开一个面板就删除其他的 key
                    if (accordion) {
                        (0,dom_utils.siblings)(el).forEach(function (o) {
                            var otherIdx = key.indexOf(o.dataset.panelKey);
                            otherIdx > -1 ? key.splice(otherIdx, 1) : '';
                        });
                    }
                };
                panels.forEach(function (panel) {
                    var header = panel.querySelector("." + prefix.default.collapse + "-header");
                    // 存放初始化面板时默认已展开的 key
                    pushKey(panel, false);
                    (0,dom_utils.bind)(header, 'click', function () {
                        // 这里用定时器是为了跟移除显示面板样式类名的时机同步
                        setTimeout(function () {
                            pushKey(panel, true);
                            onChange && utils.type.isFn(onChange, key);
                        }, 150);
                    });
                });
            }
        };
    };
    Collapse.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), simple = _a.simple, ghost = _a.ghost, activekey = _a.activekey, accordion = _a.accordion;
            _this._dataSetActiveKey(node, activekey);
            _this._setGhost(node, ghost);
            _this._setSimple(node, simple);
            _this._createChildNodes(node);
            _this._openByKey(node, activekey, accordion);
            (0,dom_utils.removeAttrs)(node, ['simple', 'ghost', 'active-key']);
        });
    };
    Collapse.prototype._dataSetActiveKey = function (node, activeIndex) {
        if (activeIndex) {
            // @ts-ignore
            node.dataset['activeIndex'] = Array.isArray(activeIndex)
                ? "[" + activeIndex + "]"
                : activeIndex;
        }
    };
    Collapse.prototype._setGhost = function (node, ghost) {
        ghost ? node.classList.add(prefix.default.collapse + "-ghost") : '';
    };
    Collapse.prototype._setSimple = function (node, simple) {
        simple ? node.classList.add(prefix.default.collapse + "-simple") : '';
    };
    Collapse.prototype._createChildNodes = function (node) {
        var collapsePanels = node.querySelectorAll('r-collapse-panel');
        this._setPanel(node, collapsePanels);
    };
    Collapse.prototype._setPanel = function (parent, panels) {
        var _this = this;
        // 遍历所有面板节点
        panels.forEach(function (panel, index) {
            var _a = _this._attrs(panel), key = _a.index, title = _a.title, hideArrow = _a.hideArrow;
            // @ts-ignore
            // 面板的 key 如果没填则默认为索引值
            panel.dataset.panelKey = !key ? index : key;
            // 保存面板原先的第一个节点,也就是要填充的内容
            var content = panel.firstElementChild;
            var arrowIcon = "<i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-arrow-forward\"></i>";
            var template = "\n                 <div class=\"" + prefix.default.collapse + "-header\">\n                    " + (!hideArrow ? arrowIcon : '') + " " + title + "\n                 </div>\n                 <div class=\"" + prefix.default.collapse + "-content\">\n                    <div class=\"" + prefix.default.collapse + "-content-box\"></div>\n                 </div>";
            // 清空面板原先的所有内容
            (0,elem.setHtml)(panel, '');
            // 追加html模板
            (0,elem.setHtml)(panel, template);
            // 将原先的占位内容填充至面板内容盒子
            var panelContentBox = panel.querySelector("." + prefix.default.collapse + "-content-box");
            content ? panelContentBox === null || panelContentBox === void 0 ? void 0 : panelContentBox.appendChild(content) : null;
            (0,elem.setCss)(panel, 'display', 'block');
            _this._handleToggle(parent, panel);
            (0,dom_utils.removeAttrs)(panel, ['index', 'title', 'hide-arrow']);
        });
    };
    Collapse.prototype._handleToggle = function (parent, panel) {
        var _this = this;
        var accordion = this._attrs(parent).accordion;
        var collapseHeader = panel.querySelector("." + prefix.default.collapse + "-header");
        var collapseContent = panel.querySelector("." + prefix.default.collapse + "-content");
        (0,dom_utils.bind)(collapseHeader, 'click', function () { return _this._slide(panel, collapseContent, accordion); });
    };
    Collapse.prototype._slide = function (p, c, accordion) {
        var activeCls = prefix.default.collapse + "-item-active";
        var slideUp = function (arg1, arg2) {
            dom_utils.slider.slideUp(arg2, 150);
            setTimeout(function () {
                arg1.classList.remove(activeCls);
            }, 150);
        };
        if (p.classList.contains(activeCls)) {
            slideUp(p, c);
        }
        else {
            dom_utils.slider.slideDown(c, 150);
            p.classList.add(activeCls);
        }
        // 手风琴模式
        if (accordion) {
            // 获取除了已展开的面板外的所有其他面板
            (0,dom_utils.siblings)(p).forEach(function (otherP) {
                var otherC = otherP.querySelector("." + prefix.default.collapse + "-content");
                slideUp(otherP, otherC);
            });
        }
    };
    Collapse.prototype._openByKey = function (node, key, accordion) {
        // 获取选中的 key 的面板
        var selected;
        var open = function () {
            if (selected) {
                selected.classList.add(prefix.default.collapse + "-item-active");
                if (accordion) {
                    (0,dom_utils.siblings)(selected).forEach(function (o) {
                        o.classList.remove(prefix.default.collapse + "-item-active");
                    });
                }
            }
        };
        // 如果 activeIndex 是数组则对其进行遍历获取所有面板
        // 且如果是手风琴模式则只选取数组的第一项,只展开一个面板
        if (Array.isArray(key)) {
            var length_1 = key.length;
            // length == 1 说明数组只有一项所以不必对其进行遍历
            if (accordion || length_1 == 1) {
                selected = node.querySelector("[data-panel-key=\"" + key[0] + "\"]");
                open();
            }
            else {
                var i = 0;
                for (; i < length_1; i++) {
                    selected = node.querySelector("[data-panel-key=\"" + key[i] + "\"]");
                    open();
                }
            }
        }
        else {
            selected = node.querySelector("[data-panel-key=\"" + key + "\"]");
            open();
        }
    };
    Collapse.prototype._attrs = function (node) {
        return {
            index: (0,elem.getStrTypeAttr)(node, 'index', ''),
            title: (0,elem.getStrTypeAttr)(node, 'title', ''),
            ghost: (0,elem.getBooleanTypeAttr)(node, 'ghost'),
            simple: (0,elem.getBooleanTypeAttr)(node, 'simple'),
            hideArrow: (0,elem.getBooleanTypeAttr)(node, 'hide-arrow'),
            accordion: (0,elem.getBooleanTypeAttr)(node, 'accordion'),
            activekey: (0,elem.getStrTypeAttr)(node, 'active-index', '') && (0,elem.getArrTypeAttr)(node, 'active-index')
        };
    };
    return Collapse;
}());
/* harmony default export */ var collapse = (Collapse);

;// CONCATENATED MODULE: ./src/components/collapse/index.ts

/* harmony default export */ var components_collapse = (collapse);

;// CONCATENATED MODULE: ./src/components/count-down/count-down.ts


var CountDown = /** @class */ (function () {
    function CountDown() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-count-down', { all: true });
        this._create(this.COMPONENTS);
    }
    CountDown.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'count-down');
        var _countTime = CountDown.prototype._countTime;
        return {
            get endTime() {
                return '';
            },
            set endTime(newVal) {
                if (newVal && !utils.type.isStr(newVal))
                    return;
                _countTime(target, newVal);
            },
            events: function (_a) {
                var onStop = _a.onStop;
                if (!onStop)
                    return;
                (0,dom_utils.bind)(target, 'DOMNodeInserted', function (e) {
                    if (e.target.textContent === '00:00:00') {
                        utils.type.isFn(onStop, true);
                    }
                });
            }
        };
    };
    CountDown.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var endTime = _this._attrs(node).endTime;
            _this._countTime(node, endTime);
            (0,dom_utils.removeAttrs)(node, ['endTime']);
        });
    };
    CountDown.prototype._countTime = function (node, endTime) {
        if (!endTime)
            return;
        var timer = null;
        var countDown = function () {
            //获取当前时间
            var date = new Date();
            var now = date.getTime();
            //设置截止时间
            var endDate = new Date(endTime);
            var _endTime = endDate.getTime();
            //时间差
            var diff = _endTime - now;
            //定义变量 d,h,m,s保存倒计时的时间
            var d = 0, h = 0, m = 0, s = 0;
            if (diff >= 0) {
                d = Math.floor(diff / 1000 / 60 / 60 / 24);
                h = Math.floor((diff / 1000 / 60 / 60) % 24);
                m = Math.floor((diff / 1000 / 60) % 60);
                s = Math.floor((diff / 1000) % 60);
            }
            var checkTime = function (t) {
                if (t < 10)
                    t = "0" + t;
                return t;
            };
            //将0-9的数字前面加上0,例1变为01
            d = checkTime(d);
            h = checkTime(h);
            m = checkTime(m);
            s = checkTime(s);
            node.textContent = h + ":" + m + ":" + s;
        };
        countDown();
        timer = window.setInterval(countDown, 1000);
        (0,dom_utils.bind)(node, 'DOMNodeInserted', function (e) {
            if (e.target.textContent === '00:00:00') {
                window.clearInterval(timer);
                return;
            }
        });
    };
    CountDown.prototype._attrs = function (node) {
        return {
            endTime: (0,dom_utils.getStrTypeAttr)(node, 'end-time', '')
        };
    };
    return CountDown;
}());
/* harmony default export */ var count_down = (CountDown);

;// CONCATENATED MODULE: ./src/components/count-down/index.ts

/* harmony default export */ var components_count_down = (count_down);

;// CONCATENATED MODULE: ./src/components/divider/divider.ts


var Divider = /** @class */ (function () {
    function Divider() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-divider', { all: true });
        this._create(this.COMPONENTS);
    }
    Divider.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            _this._setType(node);
            _this._setDashed(node);
            _this._setPlain(node);
            _this._setTitle(node);
            (0,dom_utils.removeAttrs)(node, ['dashed', 'plain', 'orientation']);
        });
    };
    Divider.prototype._setType = function (node) {
        var type = this._attrs(node).type;
        node.setAttribute('type', "" + type);
    };
    Divider.prototype._setDashed = function (node) {
        var dashed = this._attrs(node).dashed;
        if (dashed) {
            node.classList.add(prefix.default.divider + "-dashed");
        }
    };
    Divider.prototype._setPlain = function (node) {
        var plain = this._attrs(node).plain;
        if (plain) {
            node.classList.add(prefix.default.divider + "-plain");
        }
    };
    Divider.prototype._setOrientation = function (node) {
        var orientation = this._attrs(node).orientation;
        node.classList.add(prefix.default.divider + "-with-text-" + orientation);
    };
    Divider.prototype._setTitle = function (node) {
        if (node.innerHTML == '' || node.innerHTML == ' ')
            return;
        this._setOrientation(node);
        var DividerText = (0,dom_utils.createElem)('span');
        DividerText.className = prefix.default.divider + "-inner-text";
        DividerText.innerHTML = node.innerHTML;
        node.classList.add(prefix.default.divider + "-with-text");
        node.innerHTML = '';
        node.appendChild(DividerText);
    };
    Divider.prototype._attrs = function (node) {
        return {
            type: (0,dom_utils.getStrTypeAttr)(node, 'type', 'horizontal'),
            orientation: (0,dom_utils.getStrTypeAttr)(node, 'orientation', 'center'),
            dashed: (0,dom_utils.getBooleanTypeAttr)(node, 'dashed'),
            plain: (0,dom_utils.getBooleanTypeAttr)(node, 'plain')
        };
    };
    return Divider;
}());
/* harmony default export */ var divider = (Divider);

;// CONCATENATED MODULE: ./src/components/divider/index.ts

/* harmony default export */ var components_divider = (divider);

;// CONCATENATED MODULE: ./src/components/drawer/drawer.ts




var Drawer = /** @class */ (function () {
    function Drawer() {
        this.VERSION = 'v1.1.1';
        this.COMPONENTS = (0,dom_utils.$el)('r-drawer', { all: true });
        this._create(this.COMPONENTS);
    }
    Drawer.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'drawer');
        var _a = Drawer.prototype, _handleVisable = _a._handleVisable, _attrs = _a._attrs;
        var DrawerMask = target.querySelector("." + prefix.default.drawer + "-mask");
        var DrawerWrap = target.querySelector("." + prefix.default.drawer + "-wrap");
        var _Drawer = target.querySelector("." + prefix.default.drawer);
        var DrawerTitle = target.querySelector("." + prefix.default.drawer + "-header-inner");
        var DrawerClose = target.querySelector("." + prefix.default.drawer + "-close");
        return {
            get title() {
                return (0,dom_utils.setHtml)(DrawerTitle);
            },
            set title(newVal) {
                if (!utils.type.isStr(newVal))
                    return;
                (0,dom_utils.setHtml)(DrawerTitle, newVal);
            },
            get visable() {
                return false;
            },
            set visable(newVal) {
                if (!utils.type.isBol(newVal))
                    return;
                _handleVisable(newVal, target, [DrawerMask, DrawerWrap, _Drawer]);
            },
            events: function (_a) {
                var onClose = _a.onClose;
                // v1.0.1 改用on事件绑定,防止触发回调事件的次数随着每次点击而不断的重复叠加
                if (DrawerClose)
                    DrawerClose.onclick = function () { return onClose && utils.type.isFn(onClose); };
                if (_attrs(target).maskClosable === 'true')
                    DrawerWrap.onclick = function () { return onClose && utils.type.isFn(onClose); };
            }
        };
    };
    Drawer.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            _this._createDrawerNodes(node);
            (0,dom_utils.setCss)(node, 'display', 'block');
            (0,dom_utils.removeAttrs)(node, [
                'title',
                'width',
                'height',
                'mask',
                'visible',
                'closable',
                'scrollable',
                'lock-scroll'
            ]);
        });
    };
    Drawer.prototype._createDrawerNodes = function (node) {
        var DrawerMask = (0,dom_utils.createElem)('div');
        var DrawerWrap = (0,dom_utils.createElem)('div');
        var Drawer = (0,dom_utils.createElem)('div');
        var DrawerContent = (0,dom_utils.createElem)('div');
        var DrawerClose = (0,dom_utils.createElem)('a');
        var DrawerHeader = (0,dom_utils.createElem)('div');
        var DrawerHeaderInner = (0,dom_utils.createElem)('div');
        var DrawerBody = (0,dom_utils.createElem)('div');
        this._setCls([
            DrawerMask,
            DrawerWrap,
            Drawer,
            DrawerContent,
            DrawerClose,
            DrawerHeader,
            DrawerHeaderInner,
            DrawerBody
        ]);
        this._setSize(node, Drawer);
        this._setPlacement(node, Drawer);
        this._setOpenInContainer(node, DrawerMask, DrawerWrap, Drawer);
        this._initVisible(node, DrawerMask, DrawerWrap, Drawer);
        this._handleClose(node, [DrawerMask, DrawerWrap, Drawer], DrawerClose);
        DrawerWrap.appendChild(Drawer);
        Drawer.appendChild(DrawerContent);
        this._setClosable(node, DrawerContent, DrawerClose);
        this._setHeader(node, DrawerContent, DrawerHeader, DrawerHeaderInner);
        DrawerContent.appendChild(DrawerBody);
        this._setBodyContent(node, DrawerBody);
        this._setMask(node, DrawerMask, DrawerWrap, DrawerContent);
        node.appendChild(DrawerWrap);
    };
    Drawer.prototype._setCls = function (elms) {
        var elmsCls = [
            prefix.default.drawer + "-mask",
            prefix.default.drawer + "-wrap",
            "" + prefix.default.drawer,
            prefix.default.drawer + "-content",
            prefix.default.drawer + "-close",
            prefix.default.drawer + "-header",
            prefix.default.drawer + "-header-inner",
            prefix.default.drawer + "-body"
        ];
        var i = 0;
        var length = elms.length;
        for (; i < length; i++) {
            var elm = elms[i];
            elm.className = elmsCls[i];
        }
    };
    Drawer.prototype._setSize = function (parent, children) {
        var _a = this._attrs(parent), width = _a.width, height = _a.height, placement = _a.placement;
        if (placement === 'top' || placement === 'bottom') {
            (0,dom_utils.setCss)(children, 'height', height);
        }
        else if (placement === 'left' || placement === 'right') {
            children.style.width = width;
            (0,dom_utils.setCss)(children, 'width', width);
        }
    };
    Drawer.prototype._setPlacement = function (parent, children) {
        var placement = this._attrs(parent).placement;
        children.classList.add(prefix.default.drawer + "-" + placement);
    };
    Drawer.prototype._setOpenInContainer = function (parent, drawerMask, drawerWrap, drawer) {
        var inner = this._attrs(parent).inner;
        if (!inner)
            return;
        drawerMask.classList.add(prefix.default.drawer + "-mask-inner");
        drawerWrap.classList.add(prefix.default.drawer + "-wrap-inner");
        drawer.classList.add(prefix.default.drawer + "-inner");
    };
    Drawer.prototype._setMask = function (parent, drawerMask, drawerWrap, drawerContent) {
        var mask = this._attrs(parent).mask;
        if (parent.getAttribute('mask') == null)
            mask = true;
        if (!mask) {
            drawerWrap.classList.add(prefix.default.drawer + "-no-mask");
            drawerContent.classList.add(prefix.default.drawer + "-content-no-mask");
            return;
        }
        parent.appendChild(drawerMask);
    };
    Drawer.prototype._setClosable = function (parent, children, drawerClose) {
        var closable = this._attrs(parent).closable;
        if (!closable)
            return;
        (0,dom_utils.setHtml)(drawerClose, "<i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-close\"></i>");
        children.appendChild(drawerClose);
    };
    Drawer.prototype._setHeader = function (parent, drawerContent, drawerHeader, drawerTitle) {
        var _a;
        var title = this._attrs(parent).title;
        if (!title) {
            (_a = drawerContent.parentElement) === null || _a === void 0 ? void 0 : _a.classList.add(prefix.default.drawer + "-no-header");
            return;
        }
        (0,dom_utils.setHtml)(drawerTitle, title);
        drawerHeader.appendChild(drawerTitle);
        drawerContent.appendChild(drawerHeader);
    };
    Drawer.prototype._setBodyContent = function (parent, children) {
        // v1.1.1 增加占位节点的组成数量判断
        if ((0,mixins.moreThanOneNode)(parent))
            return;
        var placeholderNode = parent.firstElementChild;
        if (placeholderNode)
            children.appendChild(placeholderNode);
    };
    Drawer.prototype._initVisible = function (parent, drawerMask, drawerWrap, drawer) {
        var visible = this._attrs(parent).visible;
        // @ts-ignore
        parent.dataset.drawerVisable = "" + visible;
        if (visible)
            return;
        drawerWrap.classList.add(prefix.default.drawer + "-hidden");
        (0,dom_utils.setCss)(drawerMask, 'display', 'none');
        (0,dom_utils.setCss)(drawer, 'display', 'none');
    };
    Drawer.prototype._handleVisable = function (visable, target, children) {
        var _a = Drawer.prototype, _show = _a._show, _hide = _a._hide;
        visable ? _show(target, children) : _hide(target, children);
    };
    Drawer.prototype._handleClose = function (parent, hiddenElm, triggerElm) {
        var _hide = Drawer.prototype._hide;
        // triggerElm 表示右上角关闭按钮
        (0,dom_utils.bind)(triggerElm, 'click', function () { return _hide(parent, hiddenElm); });
        (0,dom_utils.bind)(hiddenElm[1], 'click', function () { return _hide(parent, hiddenElm); });
        (0,dom_utils.bind)(hiddenElm[2], 'click', function (e) { return e.stopPropagation(); });
    };
    Drawer.prototype._show = function (parent, showElm) {
        var _attrs = Drawer.prototype._attrs;
        var _a = _attrs(parent), inner = _a.inner, placement = _a.placement, scrollable = _a.scrollable;
        var lockScroll = _attrs(parent).lockScroll;
        !parent.getAttribute('lock-scroll') ? (lockScroll = true) : lockScroll;
        // 设置为在当前 dom 里打开则不隐藏 body 滚动条
        if (!inner)
            (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll });
        // @ts-ignore
        // 设置当前为显示状态
        parent.dataset.drawerVisable = 'true';
        // showElm[0] 表示遮盖层
        // showElm[1] 表示抽屉的父容器wrap
        // showElm[2] 表示抽屉主体
        showElm[1].classList.contains(prefix.default.drawer + "-hidden") &&
            showElm[1].classList.remove(prefix.default.drawer + "-hidden");
        (0,mixins.CssTransition)(showElm[0], {
            inOrOut: 'in',
            enterCls: 'rab-fade-in',
            rmCls: true,
            timeout: 250
        });
        (0,mixins.CssTransition)(showElm[2], {
            inOrOut: 'in',
            enterCls: prefix.default.drawer + "-" + placement + "-move-enter",
            rmCls: true,
            timeout: 550
        });
    };
    Drawer.prototype._hide = function (parent, hiddenElm) {
        var placement = Drawer.prototype._attrs(parent).placement;
        // @ts-ignore
        // 设置为隐藏状态
        parent.dataset.drawerVisable = 'false';
        // hiddenElm[0] 表示遮盖层
        // hiddenElm[1] 表示抽屉的父容器wrap
        // hiddenElm[2] 表示抽屉主体
        (0,mixins.CssTransition)(hiddenElm[0], {
            inOrOut: 'out',
            leaveCls: 'rab-fade-out',
            rmCls: true,
            timeout: 250
        });
        (0,mixins.CssTransition)(hiddenElm[2], {
            inOrOut: 'out',
            leaveCls: prefix.default.drawer + "-" + placement + "-move-leave",
            rmCls: true,
            timeout: 490
        });
        setTimeout(function () {
            hiddenElm[1].classList.add(prefix.default.drawer + "-hidden");
            (0,dom_utils.setCss)(hiddenElm[2], 'display', 'none');
            (0,mixins.Scrollable)({ scroll: true, lock: true, node: parent, tagName: 'drawer' });
        }, 490);
    };
    Drawer.prototype._attrs = function (node) {
        return {
            title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''),
            width: (0,dom_utils.getStrTypeAttr)(node, 'width', '256px'),
            height: (0,dom_utils.getStrTypeAttr)(node, 'height', '256px'),
            placement: (0,dom_utils.getStrTypeAttr)(node, 'placement', 'right'),
            mask: (0,dom_utils.getBooleanTypeAttr)(node, 'mask'),
            inner: (0,dom_utils.getBooleanTypeAttr)(node, 'inner'),
            visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'),
            closable: (0,dom_utils.getBooleanTypeAttr)(node, 'closable'),
            scrollable: (0,dom_utils.getBooleanTypeAttr)(node, 'scrollable'),
            lockScroll: (0,dom_utils.getBooleanTypeAttr)(node, 'lock-scroll'),
            maskClosable: (0,dom_utils.getStrTypeAttr)(node, 'mask-closable', 'true')
        };
    };
    return Drawer;
}());
/* harmony default export */ var drawer = (Drawer);

;// CONCATENATED MODULE: ./src/components/drawer/index.ts

/* harmony default export */ var components_drawer = (drawer);

;// CONCATENATED MODULE: ./node_modules/tslib/tslib.es6.js
/*! *****************************************************************************
Copyright (c) Microsoft Corporation.

Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.

THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
/* global Reflect, Promise */

var extendStatics = function(d, b) {
    extendStatics = Object.setPrototypeOf ||
        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
    return extendStatics(d, b);
};

function __extends(d, b) {
    extendStatics(d, b);
    function __() { this.constructor = d; }
    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
}

var __assign = function() {
    __assign = Object.assign || function __assign(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
        }
        return t;
    }
    return __assign.apply(this, arguments);
}

function __rest(s, e) {
    var t = {};
    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
        t[p] = s[p];
    if (s != null && typeof Object.getOwnPropertySymbols === "function")
        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
                t[p[i]] = s[p[i]];
        }
    return t;
}

function __decorate(decorators, target, key, desc) {
    var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
    if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
    else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
    return c > 3 && r && Object.defineProperty(target, key, r), r;
}

function __param(paramIndex, decorator) {
    return function (target, key) { decorator(target, key, paramIndex); }
}

function __metadata(metadataKey, metadataValue) {
    if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
}

function __awaiter(thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
}

function __generator(thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
}

function __createBinding(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}

function __exportStar(m, exports) {
    for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];
}

function __values(o) {
    var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
    if (m) return m.call(o);
    if (o && typeof o.length === "number") return {
        next: function () {
            if (o && i >= o.length) o = void 0;
            return { value: o && o[i++], done: !o };
        }
    };
    throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
}

function __read(o, n) {
    var m = typeof Symbol === "function" && o[Symbol.iterator];
    if (!m) return o;
    var i = m.call(o), r, ar = [], e;
    try {
        while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
    }
    catch (error) { e = { error: error }; }
    finally {
        try {
            if (r && !r.done && (m = i["return"])) m.call(i);
        }
        finally { if (e) throw e.error; }
    }
    return ar;
}

function __spread() {
    for (var ar = [], i = 0; i < arguments.length; i++)
        ar = ar.concat(__read(arguments[i]));
    return ar;
}

function __spreadArrays() {
    for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
    for (var r = Array(s), k = 0, i = 0; i < il; i++)
        for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
            r[k] = a[j];
    return r;
};

function __await(v) {
    return this instanceof __await ? (this.v = v, this) : new __await(v);
}

function __asyncGenerator(thisArg, _arguments, generator) {
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
    var g = generator.apply(thisArg, _arguments || []), i, q = [];
    return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
    function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
    function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
    function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
    function fulfill(value) { resume("next", value); }
    function reject(value) { resume("throw", value); }
    function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
}

function __asyncDelegator(o) {
    var i, p;
    return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
    function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
}

function __asyncValues(o) {
    if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
    var m = o[Symbol.asyncIterator], i;
    return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
    function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
    function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
}

function __makeTemplateObject(cooked, raw) {
    if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
    return cooked;
};

function __importStar(mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];
    result.default = mod;
    return result;
}

function __importDefault(mod) {
    return (mod && mod.__esModule) ? mod : { default: mod };
}

function __classPrivateFieldGet(receiver, privateMap) {
    if (!privateMap.has(receiver)) {
        throw new TypeError("attempted to get private field on non-instance");
    }
    return privateMap.get(receiver);
}

function __classPrivateFieldSet(receiver, privateMap, value) {
    if (!privateMap.has(receiver)) {
        throw new TypeError("attempted to set private field on non-instance");
    }
    privateMap.set(receiver, value);
    return value;
}

;// CONCATENATED MODULE: ./src/components/dropdown/dropdown.ts

/* eslint-disable @typescript-eslint/no-non-null-assertion */



var DEFAULTDELAY = 80;
var STATEKEY = 'visibleState';
var ITEMKEY = 'itemKey';
var DROPENTERCLS = 'transition-drop-enter';
var DROPLEAVECLS = 'transition-drop-leave';
var VISIBLETIMER = null, EVENTTIMER = null;
var Dropdown = /** @class */ (function () {
    function Dropdown() {
        this.VERSION = 'v2.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-dropdown', { all: true });
        this._create(this.COMPONENTS);
    }
    Dropdown.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'dropdown');
        var _a = Dropdown.prototype, _attrs = _a._attrs, _setVisible = _a._setVisible, _getChildDisabled = _a._getChildDisabled;
        var _b = _attrs(target), trigger = _b.trigger, placement = _b.placement;
        var DropdownRefElm = target.firstElementChild;
        var DropdownMenu = target.querySelector('r-dropdown-menu');
        var DropdownItem = DropdownMenu.querySelectorAll('r-dropdown-item');
        return {
            get visible() {
                return DropdownMenu.dataset[STATEKEY] === 'visible';
            },
            set visible(newVal) {
                if (newVal && !utils.type.isBol(newVal))
                    return;
                _setVisible(target, DropdownMenu, newVal, placement);
            },
            events: function (_a) {
                var onClick = _a.onClick, onVisibleChange = _a.onVisibleChange, onClickOutside = _a.onClickOutside;
                // onVisibleChange
                var visibleChange = function () {
                    setTimeout(function () {
                        var visible = DropdownMenu.dataset[STATEKEY] === 'visible';
                        onVisibleChange && utils.type.isFn(onVisibleChange, visible);
                    }, DEFAULTDELAY);
                };
                // onClick
                var itemClickEv = function (elem) {
                    if (_getChildDisabled(elem))
                        return false;
                    // @ts-ignore
                    var key = elem.dataset[ITEMKEY];
                    visibleChange();
                    onClick && utils.type.isFn(onClick, key);
                };
                if (trigger === 'hover') {
                    (0,dom_utils.bind)(target, 'mouseenter', function () {
                        if (EVENTTIMER)
                            clearTimeout(EVENTTIMER);
                        EVENTTIMER = setTimeout(visibleChange, DEFAULTDELAY);
                    });
                    (0,dom_utils.bind)(target, 'mouseleave', function () {
                        if (EVENTTIMER)
                            clearTimeout(EVENTTIMER);
                        if (DropdownMenu.dataset[STATEKEY] === 'visible')
                            setTimeout(visibleChange, DEFAULTDELAY);
                    });
                }
                if (trigger === 'click' || trigger === 'contextMenu') {
                    onClickOutside &&
                        (0,mixins.clickoutside)(target, onClickOutside, DropdownMenu, STATEKEY, 'visible');
                }
                if (trigger === 'click') {
                    (0,dom_utils.bind)(DropdownRefElm, 'click', visibleChange);
                }
                if (trigger === 'contextMenu') {
                    (0,dom_utils.bind)(DropdownRefElm, 'contextmenu', visibleChange);
                }
                DropdownItem.forEach(function (child) { return (0,dom_utils.bind)(child, 'click', function () { return itemClickEv(child); }); });
            }
        };
    };
    Dropdown.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            if (!_this._correctCompositionNodes(node))
                return;
            var _a = _this._attrs(node), trigger = _a.trigger, placement = _a.placement, visible = _a.visible, stopPropagation = _a.stopPropagation;
            var DropdownMenu = node.querySelector('r-dropdown-menu');
            var DropdownItem = DropdownMenu.querySelector('r-dropdown-item');
            var key = _this._attrs(DropdownItem).key;
            _this._setVisible(node, DropdownMenu, visible, placement);
            _this._setChildKey(DropdownItem, key);
            _this._setStopPropagation(stopPropagation, node, DropdownMenu);
            _this._handleTrigger(trigger, placement, node, DropdownMenu);
            _this._handleItemClick(trigger, node, DropdownMenu, placement);
            (0,dom_utils.removeAttrs)(node, ['key', 'trigger', 'placement', 'visible', 'stop-propagation']);
        });
    };
    Dropdown.prototype._correctCompositionNodes = function (node) {
        var _a;
        if (((_a = node.firstElementChild) === null || _a === void 0 ? void 0 : _a.tagName) === 'R-DROPDOWN-MENU') {
            (0,mixins.warn)('👇 The first child element must be the reference element used to trigger the menu display hidden, not r-dropdown-menu');
            console.error(node);
            return false;
        }
        if (node.lastElementChild.tagName !== 'R-DROPDOWN-MENU') {
            (0,mixins.warn)('👇 The last child element tag must be made up of r-dropdown-menu');
            console.error(node);
            return false;
        }
        if (node.childElementCount > 2) {
            (0,mixins.warn)('👇 The number of child element nodes in this r-dropdown tag cannot exceed two');
            console.error(node);
            return false;
        }
        return true;
    };
    Dropdown.prototype._setStopPropagation = function (stop, node, child) {
        if (!stop)
            return;
        (0,dom_utils.bind)(node, 'click', function (e) { return e.stopPropagation(); });
        (0,dom_utils.bind)(child, 'click', function (e) { return e.stopPropagation(); });
    };
    Dropdown.prototype._handleTrigger = function (type, placement, node, child) {
        var _this = this;
        if (type === 'custom')
            return;
        var referenceElem = node.firstElementChild;
        // 触发菜单显示隐藏的引用元素如果是禁用状态则不做操作
        if (/disabled/.test(referenceElem.className))
            return;
        if (this._getChildDisabled(referenceElem))
            return;
        var showMenu = function () {
            if (VISIBLETIMER)
                clearTimeout(VISIBLETIMER);
            if (child.dataset[STATEKEY] === 'visible')
                return;
            VISIBLETIMER = setTimeout(function () { return _this._setVisible(node, child, true, placement); }, DEFAULTDELAY);
        };
        var hidenMenu = function () {
            if (VISIBLETIMER)
                clearTimeout(VISIBLETIMER);
            if (child.dataset[STATEKEY] === 'visible') {
                setTimeout(function () { return _this._setVisible(node, child, false, placement); }, DEFAULTDELAY);
            }
        };
        var clickIsShow = function (e) {
            e.stopPropagation();
            if (child.dataset[STATEKEY] === 'hidden') {
                showMenu();
            }
            else {
                hidenMenu();
            }
        };
        if (type === 'hover') {
            (0,dom_utils.bind)(node, 'mouseenter', showMenu);
            (0,dom_utils.bind)(node, 'mouseleave', hidenMenu);
        }
        // 点击菜单栏以外的地方隐藏
        if (type === 'click' || type === 'contextMenu') {
            (0,mixins.clickoutside)(node, hidenMenu);
        }
        if (type === 'click') {
            (0,dom_utils.bind)(referenceElem, 'click', function (e) { return clickIsShow(e); });
        }
        if (type === 'contextMenu') {
            (0,dom_utils.bind)(referenceElem, 'contextmenu', function (e) {
                e.preventDefault();
                clickIsShow(e);
            });
        }
    };
    Dropdown.prototype._handleItemClick = function (type, node, child, placement) {
        var _this = this;
        if (type === 'custom')
            return;
        var DropdownItems = child.querySelectorAll('r-dropdown-item');
        DropdownItems.forEach(function (item) {
            return (0,dom_utils.bind)(item, 'click', function () {
                if (_this._getChildDisabled(item))
                    return;
                _this._setVisible(node, child, false, placement);
            });
        });
    };
    Dropdown.prototype._setChildKey = function (child, key) {
        if (key) {
            child.dataset[ITEMKEY] = key;
            child.removeAttribute('key');
        }
    };
    Dropdown.prototype._setVisible = function (node, child, visible, placement) {
        var _a = Dropdown.prototype, _setPlacement = _a._setPlacement, _setTransitionDrop = _a._setTransitionDrop;
        if (visible) {
            child.dataset[STATEKEY] = 'visible';
            _setPlacement(node, child, placement);
            _setTransitionDrop('in', child);
        }
        else {
            child.dataset[STATEKEY] = 'hidden';
            setTimeout(function () {
                child.dataset[STATEKEY] === 'hidden' && _setTransitionDrop('out', child);
            }, 0);
        }
    };
    Dropdown.prototype._setPlacement = function (node, child, placement) {
        var popperPlacement = child.dataset['popperPlacement'] || placement;
        if (/^top|right-end|left-end/.test(popperPlacement)) {
            (0,dom_utils.setCss)(child, 'transformOrigin', 'center bottom');
        }
        if (/^bottom|right-start|left-start/.test(popperPlacement)) {
            (0,dom_utils.setCss)(child, 'transformOrigin', 'center top');
        }
        mixins._Popper._newCreatePopper(node, child, placement, 0);
    };
    Dropdown.prototype._setTransitionDrop = function (type, child) {
        var transitionCls = type === 'in' ? { enterCls: DROPENTERCLS } : { leaveCls: DROPLEAVECLS };
        (0,mixins.CssTransition)(child, __assign(__assign({ inOrOut: type }, transitionCls), { rmCls: true, timeout: 290 }));
    };
    Dropdown.prototype._getChildDisabled = function (elem) {
        if (elem.getAttribute('disabled') === 'disabled' ||
            elem.getAttribute('disabled') === 'true' ||
            elem.getAttribute('disabled') === '') {
            return true;
        }
        return false;
    };
    Dropdown.prototype._attrs = function (node) {
        return {
            key: (0,dom_utils.getStrTypeAttr)(node, 'key', ''),
            trigger: (0,dom_utils.getStrTypeAttr)(node, 'trigger', 'hover'),
            placement: (0,dom_utils.getStrTypeAttr)(node, 'placement', 'bottom'),
            visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'),
            stopPropagation: (0,dom_utils.getBooleanTypeAttr)(node, 'stop-propagation')
        };
    };
    return Dropdown;
}());
/* harmony default export */ var dropdown = (Dropdown);

;// CONCATENATED MODULE: ./src/components/dropdown/index.ts

/* harmony default export */ var components_dropdown = (dropdown);

;// CONCATENATED MODULE: ./assets/empty.svg
/* harmony default export */ var empty = (".././fonts/empty.svg");
;// CONCATENATED MODULE: ./src/components/empty/empty.ts



var Empty = /** @class */ (function () {
    function Empty() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-empty', { all: true });
        this._create(this.COMPONENTS);
    }
    Empty.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            var _a = _this._attrs(node), desc = _a.desc, image = _a.image, imageStyle = _a.imageStyle;
            var footerElm = node.firstElementChild;
            _this._setMainTemplate(node, desc, image, imageStyle);
            _this._setFooter(node, footerElm);
            (0,dom_utils.removeAttrs)(node, ['desc', 'image', 'image-style']);
        });
    };
    Empty.prototype._setMainTemplate = function (node, desc, image, imageStyle) {
        var template = " \n         <div class=\"" + prefix.default.empty + "-image\" style=\"" + imageStyle + "\">\n            <img src=\"" + image + "\" alt=\"empty\" />\n         </div>\n         <div class=\"" + prefix.default.empty + "-description\">" + (desc == 'false' ? '' : desc) + "</div>";
        (0,dom_utils.setHtml)(node, template);
    };
    Empty.prototype._setFooter = function (node, footerElm) {
        if (!footerElm)
            return;
        var footerTpl = "<div class=\"" + prefix.default.empty + "-footer\"></div>";
        node.insertAdjacentHTML('beforeend', footerTpl);
        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
        node.querySelector("." + prefix.default.empty + "-footer").appendChild(footerElm);
    };
    Empty.prototype._attrs = function (node) {
        return {
            desc: (0,dom_utils.getStrTypeAttr)(node, 'desc', '暂无数据'),
            image: (0,dom_utils.getStrTypeAttr)(node, 'image', "" + empty),
            imageStyle: (0,dom_utils.getStrTypeAttr)(node, 'image-style', '')
        };
    };
    return Empty;
}());
/* harmony default export */ var empty_empty = (Empty);

;// CONCATENATED MODULE: ./src/components/empty/index.ts

/* harmony default export */ var components_empty = (empty_empty);

// EXTERNAL MODULE: ./src/components/input-number/input-number.ts
var input_number = __webpack_require__("./src/components/input-number/input-number.ts");
;// CONCATENATED MODULE: ./src/components/input-number/index.ts

/* harmony default export */ var components_input_number = (input_number.default);

;// CONCATENATED MODULE: ./src/components/jumbotron/jumbotron.ts



var Jumbotron = /** @class */ (function () {
    function Jumbotron() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)('r-jumbotron', { all: true });
        this._create(this.COMPONENTS);
    }
    Jumbotron.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            if ((0,mixins.moreThanOneNode)(node))
                return;
            var placeholderNode = node.firstElementChild;
            var _a = _this._attrs(node), title = _a.title, subTitle = _a.subTitle;
            _this._setMainTemplate(node, title, subTitle);
            _this._setExtraContent(node, placeholderNode);
            (0,dom_utils.removeAttrs)(node, ['title', 'sub-title']);
        });
    };
    Jumbotron.prototype._setMainTemplate = function (node, title, subTitle) {
        var template = "\n         <div class=\"" + prefix.default.jumbotron + "-container\">\n             <h1 class=\"" + prefix.default.jumbotron + "-title\">" + title + "</h1>\n             <div class=\"" + prefix.default.jumbotron + "-subtitle\">" + subTitle + "</div>\n         </div>";
        (0,dom_utils.setHtml)(node, template);
    };
    Jumbotron.prototype._setExtraContent = function (node, placeholderNode) {
        if (!placeholderNode)
            return;
        var JumbotronContainer = node.querySelector("." + prefix.default.jumbotron + "-container");
        JumbotronContainer === null || JumbotronContainer === void 0 ? void 0 : JumbotronContainer.appendChild(placeholderNode);
    };
    Jumbotron.prototype._attrs = function (node) {
        return {
            title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''),
            subTitle: (0,dom_utils.getStrTypeAttr)(node, 'sub-title', '')
        };
    };
    return Jumbotron;
}());
/* harmony default export */ var jumbotron = (Jumbotron);

;// CONCATENATED MODULE: ./src/components/jumbotron/index.ts

/* harmony default export */ var components_jumbotron = (jumbotron);

;// CONCATENATED MODULE: ./src/components/loading-bar/loading-bar.ts

/* eslint-disable @typescript-eslint/no-non-null-assertion */




// 全局配置
var DEFAULT_LOADINGBAR = {
    color: 'primary',
    height: 2,
    duration: 800,
    failedColor: 'error'
};
var timer;
function createLoadingBarInstance() {
    var LoadingBar = (0,dom_utils.createElem)('div');
    var LoadingBarInner = (0,dom_utils.createElem)('div');
    LoadingBar.className = "" + prefix.default.loadingBar;
    LoadingBarInner.className = prefix.default.loadingBar + "-inner";
    setColor('primary', LoadingBarInner);
    // 初始进度
    (0,dom_utils.setCss)(LoadingBarInner, 'width', '0%');
    // 设置进度条高度为全局配置的高度
    window.setTimeout(function () {
        var height = DEFAULT_LOADINGBAR.height + "px";
        (0,dom_utils.setCss)(LoadingBar, 'height', height);
    }, 0);
    LoadingBar.appendChild(LoadingBarInner);
    document.body.appendChild(LoadingBar);
    return LoadingBar;
}
// 设置进度函数
function r_update(options) {
    var LBar = (0,dom_utils.$el)("." + prefix.default.loadingBar);
    var LBarInner = (0,dom_utils.$el)("." + prefix.default.loadingBar + "-inner");
    // 设置进度
    (0,dom_utils.setCss)(LBarInner, 'width', options.percent + "%");
    var transitionConfig = {
        rmCls: true,
        timeout: 200,
        enterCls: 'rab-fade-in',
        leaveCls: 'rab-fade-out',
        hiddenParent: LBar
    };
    // 是否显示隐藏
    if (options.show) {
        (0,mixins.CssTransition)(LBarInner, __assign({ inOrOut: 'in' }, transitionConfig));
    }
    else {
        (0,mixins.CssTransition)(LBarInner, __assign({ inOrOut: 'out' }, transitionConfig));
    }
    setColor(options.status, LBarInner);
}
// 隐藏进度条
function hide() {
    window.setTimeout(function () {
        r_update({
            show: false
        });
        window.setTimeout(function () {
            r_update({
                percent: 0
            });
        }, 200);
    }, DEFAULT_LOADINGBAR.duration);
}
function clearTimer() {
    if (timer) {
        window.clearInterval(timer);
        timer = null;
    }
}
// 设置进度条状态背景颜色
function setColor(status, elem) {
    if (status === 'error') {
        // 是否使用全局配置的 failedColor
        if (DEFAULT_LOADINGBAR.failedColor && DEFAULT_LOADINGBAR.failedColor !== 'error') {
            (0,dom_utils.setCss)(elem, 'backgroundColor', DEFAULT_LOADINGBAR.failedColor);
            // 在隐藏的持续时间后初始化背景色
            window.setTimeout(function () {
                (0,dom_utils.setCss)(elem, 'backgroundColor', '');
            }, DEFAULT_LOADINGBAR.duration);
        }
        else {
            elem.classList.add(prefix.default.loadingBar + "-inner-failed-color-error");
            // 在隐藏的持续时间后设为初始颜色
            window.setTimeout(function () {
                elem.classList.remove(prefix.default.loadingBar + "-inner-failed-color-error");
            }, DEFAULT_LOADINGBAR.duration + 200);
        }
    }
    else if (status === 'primary') {
        // 是否使用全局配置的 color
        if (DEFAULT_LOADINGBAR.color && DEFAULT_LOADINGBAR.color !== 'primary') {
            (0,dom_utils.setCss)(elem, 'backgroundColor', DEFAULT_LOADINGBAR.color);
        }
        else {
            elem.classList.add(prefix.default.loadingBar + "-inner-color-primary");
        }
    }
}
var $LoadingBar = /** @class */ (function () {
    function $LoadingBar() {
        this.VERSION = 'v1.0';
        this.COMPONENTS = (0,dom_utils.$el)("." + prefix.default.loadingBar);
        createLoadingBarInstance();
    }
    $LoadingBar.prototype.start = function () {
        if (timer)
            return;
        var percent = 0;
        timer = window.setInterval(function () {
            // 计算随机进度
            percent += Math.floor(Math.random() * 3 + 1);
            // 终止
            if (percent > 95) {
                clearTimer();
            }
            r_update({
                percent: percent,
                status: 'primary',
                show: true
            });
        }, 200);
    };
    $LoadingBar.prototype.update = function (percent) {
        clearTimer();
        r_update({
            percent: percent,
            status: 'success',
            show: true
        });
    };
    $LoadingBar.prototype.finish = function () {
        clearTimer();
        r_update({
            percent: 100,
            status: 'primary',
            show: true
        });
        hide();
    };
    $LoadingBar.prototype.error = function () {
        clearTimer();
        r_update({
            percent: 100,
            status: 'error',
            show: true
        });
        hide();
    };
    $LoadingBar.prototype.config = function (options) {
        if (options.color && utils.type.isStr(options.color)) {
            DEFAULT_LOADINGBAR.color = options.color;
        }
        if (options.height && utils.type.isNum(options.height)) {
            DEFAULT_LOADINGBAR.height = options.height;
        }
        if (options.duration && utils.type.isNum(options.duration)) {
            DEFAULT_LOADINGBAR.duration = options.duration;
        }
        if (options.failedColor && utils.type.isStr(options.failedColor)) {
            DEFAULT_LOADINGBAR.failedColor = options.failedColor;
        }
    };
    $LoadingBar.prototype.destroy = function () {
        clearTimer();
        // @ts-ignore
        document.body.removeChild((0,dom_utils.$el)("." + prefix.default.loadingBar));
    };
    return $LoadingBar;
}());
/* harmony default export */ var loading_bar = ($LoadingBar);

;// CONCATENATED MODULE: ./src/components/loading-bar/index.ts

var Loading = new loading_bar();
/* harmony default export */ var components_loading_bar = (Loading);

;// CONCATENATED MODULE: ./src/components/message/instance.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */




var PREFIX_KEY = 'rab-message-instance';
var EnterClass = prefix.default.message + "-move-enter";
var LeaveClass = prefix.default.message + "-move-leave";
var ICONTYPES = {
    info: 'ios-information-circle',
    success: 'ios-checkmark-circle',
    warning: 'ios-alert',
    error: 'ios-close-circle',
    loading: 'loading-solid'
};
var zIndex = 1010;
var instance_name = 0;
var CreateInstance = /** @class */ (function () {
    function CreateInstance() {
        this.INSTANCES = [];
    }
    CreateInstance.prototype._init = function (top) {
        var Wrapper = (0,dom_utils.createElem)('div');
        (0,dom_utils.setCss)(Wrapper, 'zIndex', "" + zIndex);
        Wrapper.setAttribute('class', "" + prefix.default.message);
        document.body.appendChild(Wrapper);
        setTimeout(function () { return (0,dom_utils.setCss)(Wrapper, 'top', top + "px"); }, 0);
    };
    CreateInstance.prototype._create = function (type, config, duration) {
        var Message = this._setMainTemplate(type);
        var MessageContent = Message.querySelector("." + prefix.default.messageChild + "-content");
        this._autoAddZIndex();
        this._setIcon(type, Message);
        this._setContent(Message, config);
        if (typeof config === 'object') {
            var key = config.key, closable = config.closable, onClose = config.onClose, background = config.background;
            this._setKey(Message, key);
            this._setClosable(Message, MessageContent, closable, onClose);
            this._setBackground(Message, MessageContent, background);
        }
        this.INSTANCES.push(Message);
        (0,dom_utils.$el)("." + prefix.default.message).appendChild(Message);
        this._autoClose(Message, config, duration);
    };
    CreateInstance.prototype._setMainTemplate = function (type) {
        var MessageNotice = (0,dom_utils.createElem)('div');
        var template = "\n        <div class=\"" + prefix.default.messageChild + "-content " + prefix.default.messageChild + "-content-" + type + "\">\n            <div class=\"" + prefix.default.messageChild + "-content-text\">\n                <div class=\"" + prefix.default.message + "-" + type + "\">\n                    <i class=\"" + prefix.default.icon + "\"></i>\n                    <span id=\"" + prefix.default.messageChild + "-text\"></span>\n                </div>\n            </div>\n        </div>\n      ";
        MessageNotice.dataset['thisName'] = "" + instance_name++;
        MessageNotice.className = prefix.default.message + "-notice";
        (0,dom_utils.setHtml)(MessageNotice, template);
        (0,mixins.CssTransition)(MessageNotice, {
            inOrOut: 'in',
            enterCls: EnterClass,
            rmCls: true,
            timeout: 250
        });
        return MessageNotice;
    };
    CreateInstance.prototype._setIcon = function (type, elem) {
        var MessageIcon = elem.querySelector("." + prefix.default.icon);
        if (type === 'loading') {
            MessageIcon.classList.add('rab-load-loop');
        }
        MessageIcon.classList.add(prefix.default.icon + "-" + ICONTYPES[type]);
    };
    CreateInstance.prototype._setContent = function (elem, content) {
        var MessageText = elem.querySelector("#" + prefix.default.messageChild + "-text");
        if (typeof content === 'string') {
            (0,utils.useHTMLString)(MessageText, content, false);
        }
        else if (typeof content === 'object' && content.content) {
            (0,utils.useHTMLString)(MessageText, content.content, content.dangerouslyUseHTMLString);
        }
    };
    CreateInstance.prototype._setKey = function (elem, key) {
        if (!key || (key && !utils.type.isStr(key) && !utils.type.isNum(key)))
            return;
        elem.setAttribute(PREFIX_KEY + "-key", "" + key);
    };
    CreateInstance.prototype._setClosable = function (elem, child, closable, onClose) {
        if (!closable || (closable && !utils.type.isBol(closable)))
            return;
        var template = "\n        <a class=\"" + prefix.default.messageChild + "-close\">\n          <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-close\"></i>\n        </a>\n        ";
        elem.classList.add(prefix.default.messageChild + "-closable");
        child.insertAdjacentHTML('beforeend', template);
        this._handleClose(elem, onClose);
    };
    CreateInstance.prototype._handleClose = function (elem, onClose) {
        var _this = this;
        var MessageCloseBtn = elem.querySelector("." + prefix.default.messageChild + "-close");
        (0,dom_utils.bind)(MessageCloseBtn, 'click', function () {
            _this._destroy(elem);
            onClose && utils.type.isFn(onClose);
        });
    };
    CreateInstance.prototype._setBackground = function (elem, child, background) {
        if (!background || (background && !utils.type.isBol(background)))
            return;
        elem.classList.add(prefix.default.messageChild + "-with-background");
        child.classList.add(prefix.default.messageChild + "-content-background");
    };
    CreateInstance.prototype._autoAddZIndex = function () {
        zIndex++;
        (0,dom_utils.setCss)((0,dom_utils.$el)("." + prefix.default.message), 'zIndex', "" + zIndex);
    };
    CreateInstance.prototype._autoClose = function (elem, config, duration) {
        var _this = this;
        if (duration || duration === 0 || !config) {
            if (duration === 0)
                return;
            setTimeout(function () {
                _this._destroy(elem);
            }, duration * 1000);
        }
        else {
            if (typeof config === 'object' && config.duration) {
                setTimeout(function () {
                    _this._destroy(elem);
                }, config.duration * 1000);
            }
        }
    };
    CreateInstance.prototype._destroy = function (elem) {
        (0,utils.destroyElem)(elem, {
            duration: 0.1,
            clsEnter: EnterClass,
            clsLeave: LeaveClass
        });
        this.INSTANCES.splice(Number(elem.dataset['thisName']), 1);
    };
    return CreateInstance;
}());


;// CONCATENATED MODULE: ./src/components/message/message.ts

/* eslint-disable @typescript-eslint/no-non-null-assertion */



var DEFAULTS = {
    top: 24,
    duration: 3
};
var Message = /** @class */ (function (_super) {
    __extends(Message, _super);
    function Message() {
        var _this = _super.call(this) || this;
        _this.VERSION = '2.0';
        setTimeout(function () { return _this._init(DEFAULTS.top); }, 0);
        return _this;
    }
    Message.prototype.info = function (config) {
        this._create('info', config, DEFAULTS.duration);
        return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config);
    };
    Message.prototype.success = function (config) {
        this._create('success', config, DEFAULTS.duration);
        return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config);
    };
    Message.prototype.warning = function (config) {
        this._create('warning', config, DEFAULTS.duration);
        return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config);
    };
    Message.prototype.error = function (config) {
        this._create('error', config, DEFAULTS.duration);
        return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config);
    };
    Message.prototype.loading = function (config) {
        this._create('loading', config, DEFAULTS.duration);
        return (0,mixins.usePromiseCallback)(DEFAULTS.duration, config);
    };
    Message.prototype.config = function (options) {
        if (options.top && utils.type.isNum(options.top)) {
            DEFAULTS.top = options.top;
        }
        if ((options.duration && utils.type.isNum(options.duration)) || options.duration === 0) {
            DEFAULTS.duration = options.duration;
        }
    };
    Message.prototype.destroy = function (key) {
        if (key && (utils.type.isStr(key) || utils.type.isNum(key))) {
            (0,utils.destroyElemByKey)({
                key: key,
                duration: 0.1,
                prefixKey: PREFIX_KEY,
                clsLeave: LeaveClass
            });
        }
        else {
            this.INSTANCES.forEach(function (instance) {
                (0,utils.destroyElem)(instance, {
                    duration: 0.1,
                    clsLeave: LeaveClass
                });
            });
            this.INSTANCES.length = 0;
        }
    };
    return Message;
}(CreateInstance));
/* harmony default export */ var message = (Message);

;// CONCATENATED MODULE: ./src/components/message/index.ts

var message_Message = new message();
/* harmony default export */ var components_message = (message_Message);

;// CONCATENATED MODULE: ./src/components/modal/modal.ts
/* eslint-disable @typescript-eslint/no-non-null-assertion */





var RABBIT_BTN = new components_button();
var Modal = /** @class */ (function () {
    function Modal() {
        this.VERSION = 'v1.1';
        this.COMPONENTS = (0,dom_utils.$el)('r-modal', { all: true });
        this._create(this.COMPONENTS);
    }
    Modal.prototype.config = function (el) {
        var target = (0,dom_utils.$el)(el);
        (0,utils.validComps)(target, 'modal');
        var _a = Modal.prototype, _attrs = _a._attrs, _getModalNode = _a._getModalNode, _handleVisable = _a._handleVisable;
        var loading = _attrs(target).loading;
        var M_Child = _getModalNode(target);
        return {
            get title() {
                return (0,dom_utils.setHtml)(M_Child.modalTitle);
            },
            set title(newVal) {
                if (utils.type.isStr(newVal))
                    (0,dom_utils.setHtml)(M_Child.modalTitle, newVal);
            },
            get visible() {
                return false;
            },
            set visible(newVal) {
                if (utils.type.isBol(newVal)) {
                    // 当设置modal为隐藏状态并且确定按钮是加载中的状态则初始化它
                    if (!newVal) {
                        if (loading)
                            RABBIT_BTN.config(M_Child.modalOkBtn).loading = newVal;
                    }
                    _handleVisable(newVal, target, [
                        M_Child.modalMask,
                        M_Child.modalWrap,
                        M_Child.modal
                    ]);
                }
            },
            events: function (_a) {
                var onOk = _a.onOk, onCancel = _a.onCancel;
                var _b = _attrs(target), closable = _b.closable, maskClosable = _b.maskClosable;
                var okEv = function () {
                    // 是否设置按钮为加载中状态
                    if (loading)
                        RABBIT_BTN.config(M_Child.modalOkBtn).loading = loading;
                    onOk && utils.type.isFn(onOk);
                };
                var cancelEv = function () {
                    // 如果按钮为加载中状态则初始化其状态
                    if (loading)
                        RABBIT_BTN.config(M_Child.modalOkBtn).loading = !loading;
                    // 防止关闭modal后按键esc依然可以触发事件
                    window.onkeydown = function (e) { return (e.key === 'Escape' ? false : ''); };
                    onCancel && utils.type.isFn(onCancel);
                };
                // 由于内部的_handleClose方法使用addEventListener为触发关闭模态框的元素绑定点击事件,
                // 从而与这里绑定的事件造成冲突,一个回调事件同时多次触发的问题
                // 因此使用on事件绑定,防止触发回调事件的次数随着每次点击而不断的重复叠加
                if (maskClosable === 'true') {
                    // @ts-ignore
                    M_Child.modalWrap.onclick = function () { return cancelEv(); };
                    // @ts-ignore
                    M_Child.modal.onclick = function (e) { return e.stopPropagation(); };
                }
                if (closable === 'true') {
                    // @ts-ignore
                    M_Child.modalClose.onclick = function () { return cancelEv(); };
                    window.onkeydown = function (e) { return (e.key === 'Escape' ? cancelEv() : ''); };
                }
                // @ts-ignore
                M_Child.modalOkBtn.onclick = function () { return okEv(); };
                // @ts-ignore
                M_Child.modalCancelBtn.onclick = function () { return cancelEv(); };
            }
        };
    };
    Modal.prototype._create = function (COMPONENTS) {
        var _this = this;
        COMPONENTS.forEach(function (node) {
            _this._createTemplate(node);
            (0,dom_utils.setCss)(node, 'display', 'block');
            (0,dom_utils.removeAttrs)(node, [
                'width',
                'title',
                'ok-text',
                'class-name',
                'cancel-text',
                'mask',
                'visible',
                'scrollable',
                'fullscreen',
                'lock-scroll',
                'footer-hide'
            ]);
        });
    };
    Modal.prototype._createTemplate = function (node) {
        // v1.1 增加占位节点的组成数量判断
        if ((0,mixins.moreThanOneNode)(node))
            return;
        // 获取最初 modal容器下的占位内容
        var placeholderNode = node.firstElementChild;
        var _a = this._attrs(node), width = _a.width, title = _a.title, zIndex = _a.zIndex, okText = _a.okText, cancelText = _a.cancelText, className = _a.className;
        var template = "\n          <div class=\"" + prefix.default.modal + "-mask\" style=\"z-index:" + zIndex + "\"></div>\n          <div class=\"" + prefix.default.modal + "-wrap " + className + "\" style=\"z-index:" + zIndex + "\">\n              <div class=\"" + prefix.default.modal + "\" style=\"width: " + width + "\">\n                  <div class=\"" + prefix.default.modal + "-content\">\n                      <a class=\"" + prefix.default.modal + "-close\">\n                        <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-ios-close\"></i>\n                      </a>\n                      <div class=\"" + prefix.default.modal + "-header\">\n                          <div class=\"" + prefix.default.modal + "-header-inner\">" + title + "</div>\n                      </div>\n                      <div class=\"" + prefix.default.modal + "-body\"></div>\n                      <div class=\"" + prefix.default.modal + "-footer\">\n                          <button type=\"button\" class=\"rab-btn rab-btn-text\" id=\"modalBtn1\">" + cancelText + "</button>\n                          <button type=\"button\" class=\"rab-btn rab-btn-primary\" id=\"modalBtn2\">" + okText + "</button>\n                      </div>\n                  </div>\n              </div>\n          </div>\n      ";
        (0,dom_utils.setHtml)(node, template);
        this._initVisable(node);
        this._setHeader(node);
        // @ts-ignore
        this._setContent(node, placeholderNode);
        this._setMask(node);
        this._setFullScreen(node);
        this._setClosable(node);
        this._setFooterHide(node);
        this._handleClose(node);
    };
    Modal.prototype._initVisable = function (node) {
        var _a = this._attrs(node), visible = _a.visible, scrollable = _a.scrollable;
        var _b = this._getModalNode(node), modalMask = _b.modalMask, modalWrap = _b.modalWrap, modal = _b.modal;
        var lockScroll = this._attrs(node).lockScroll;
        !node.getAttribute('lock-scroll') ? (lockScroll = true) : lockScroll;
        if (visible) {
            (0,dom_utils.setCss)(modalMask, 'display', '');
            modalWrap.classList.remove(prefix.default.modal + "-hidden");
            (0,dom_utils.setCss)(modal, 'display', '');
            (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll });
        }
        else {
            (0,dom_utils.setCss)(modalMask, 'display', 'none');
            modalWrap.classList.add(prefix.default.modal + "-hidden");
            (0,dom_utils.setCss)(modal, 'display', 'none');
        }
        // @ts-ignore
        // 设置初始显示状态
        node.dataset.modalVisable = visible;
    };
    Modal.prototype._setHeader = function (node) {
        var title = this._attrs(node).title;
        if (!title) {
            var modalHeader = node.querySelector("." + prefix.default.modal + "-header");
            modalHeader === null || modalHeader === void 0 ? void 0 : modalHeader.remove();
        }
    };
    Modal.prototype._setContent = function (node, content) {
        var modalBody = node.querySelector("." + prefix.default.modal + "-body");
        if (content)
            modalBody === null || modalBody === void 0 ? void 0 : modalBody.appendChild(content);
    };
    Modal.prototype._setMask = function (node) {
        var _a = this, _attrs = _a._attrs, _getModalNode = _a._getModalNode;
        var mask = _attrs(node).mask;
        if (mask === 'false') {
            var _b = _getModalNode(node), modalMask = _b.modalMask, modalWrap = _b.modalWrap, modal = _b.modal;
            modalMask.remove();
            modalWrap.classList.add(prefix.default.modal + "-no-mask");
            modal.classList.add(prefix.default.modal + "-content-no-mask");
        }
    };
    Modal.prototype._setFullScreen = function (node) {
        var fullscreen = this._attrs(node).fullscreen;
        if (fullscreen) {
            var modal = this._getModalNode(node).modal;
            modal.classList.add(prefix.default.modal + "-fullscreen");
        }
    };
    Modal.prototype._setClosable = function (node) {
        var closable = this._attrs(node).closable;
        if (closable === 'false') {
            var modalClose = this._getModalNode(node).modalClose;
            modalClose.remove();
        }
    };
    Modal.prototype._setFooterHide = function (node) {
        var footerHide = this._attrs(node).footerHide;
        if (footerHide) {
            var modalFooter = node.querySelector("." + prefix.default.modal + "-footer");
            modalFooter === null || modalFooter === void 0 ? void 0 : modalFooter.remove();
        }
    };
    Modal.prototype._handleVisable = function (visible, target, children) {
        var _a = Modal.prototype, _show = _a._show, _hide = _a._hide;
        visible ? _show(target, children) : _hide(target, children);
    };
    Modal.prototype._handleClose = function (parent) {
        var _a = this, _attrs = _a._attrs, _hide = _a._hide, _getModalNode = _a._getModalNode;
        var _b = _attrs(parent), closable = _b.closable, maskClosable = _b.maskClosable, loading = _b.loading;
        var _c = _getModalNode(parent), modalMask = _c.modalMask, modalWrap = _c.modalWrap, modal = _c.modal, modalClose = _c.modalClose, modalOkBtn = _c.modalOkBtn, modalCancelBtn = _c.modalCancelBtn;
        var hidden = function () { return _hide(parent, [modalMask, modalWrap, modal]); };
        // 右上角关闭按钮
        // ESC 键关闭
        if (closable === 'true') {
            (0,dom_utils.bind)(modalClose, 'click', function () { return hidden(); });
            (0,dom_utils.bind)(window, 'keydown', function (e) { return (e.key === 'Escape' ? hidden() : ''); });
        }
        // 遮盖层关闭
        if (maskClosable === 'true') {
            (0,dom_utils.bind)(modalWrap, 'click', function () { return hidden(); });
            (0,dom_utils.bind)(modal, 'click', function (e) { return e.stopPropagation(); });
        }
        // 确定和取消按钮关闭
        //非加载中状态可以点击关闭模态框
        if (!loading)
            (0,dom_utils.bind)(modalOkBtn, 'click', function () { return hidden(); });
        (0,dom_utils.bind)(modalCancelBtn, 'click', function () { return hidden(); });
    };
    Modal.prototype._show = function (parent, showElm) {
        var _attrs = Modal.prototype._attrs;
        var scrollable = _attrs(parent).scrollable;
        var lockScroll = _attrs(parent).lockScroll;
        !parent.getAttribute('lock-scroll') ? (lockScroll = true) : lockScroll;
        // @ts-ignore
        // 设置当前为显示状态
        parent.dataset.modalVisable = 'true';
        // showElm[0] 表示遮盖层
        // showElm[1] 表示模态框的父容器wrap
        // showElm[2] 表示模态框主体
        showElm[1].classList.contains(prefix.default.modal + "-hidden") &&
            showElm[1].classList.remove(prefix.default.modal + "-hidden");
        (0,mixins.CssTransition)(showElm[0], {
            inOrOut: 'in',
            enterCls: 'rab-fade-in',
            timeout: 250,
            rmCls: true
        });
        (0,mixins.CssTransition)(showElm[2], {
            inOrOut: 'in',
            enterCls: 'zoom-big-enter',
            timeout: 250,
            rmCls: true
        });
        (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll });
    };
    Modal.prototype._hide = function (parent, hiddenElm) {
        // @ts-ignore
        // 设置当前为隐藏状态
        parent.dataset.modalVisable = 'false';
        // hiddenElm[0] 表示遮盖层
        // hiddenElm[1] 表示模态框的父容器wrap
        // hiddenElm[2] 表示模态框主体
        (0,mixins.CssTransition)(hiddenElm[0], {
            inOrOut: 'out',
            leaveCls: 'rab-fade-out',
            rmCls: true,
            timeout: 250
        });
        (0,mixins.CssTransition)(hiddenElm[2], {
            inOrOut: 'out',
            leaveCls: 'zoom-big-leave',
            rmCls: true,
            timeout: 250
        });
        setTimeout(function () {
            hiddenElm[1].classList.add(prefix.default.modal + "-hidden");
            (0,dom_utils.setCss)(hiddenElm[2], 'display', 'none');
            (0,mixins.Scrollable)({ scroll: true, lock: true, node: parent, tagName: 'modal' });
        }, 240);
    };
    Modal.prototype._getModalNode = function (node) {
        var modalMask = node.querySelector("." + prefix.default.modal + "-mask");
        var modalWrap = node.querySelector("." + prefix.default.modal + "-wrap");
        var modal = modalWrap.querySelector("." + prefix.default.modal);
        var modalClose = modalWrap.querySelector("." + prefix.default.modal + "-close");
        var modalTitle = modal.querySelector("." + prefix.default.modal + "-header-inner");
        var modalOkBtn = modal.querySelector('#modalBtn2');
        var modalCancelBtn = modal.querySelector('#modalBtn1');
        return {
            modalMask: modalMask,
            modalWrap: modalWrap,
            modal: modal,
            modalClose: modalClose,
            modalTitle: modalTitle,
            modalOkBtn: modalOkBtn,
            modalCancelBtn: modalCancelBtn
        };
    };
    Modal.prototype._attrs = function (node) {
        return {
            mask: (0,dom_utils.getStrTypeAttr)(node, 'mask', 'true'),
            width: (0,dom_utils.getStrTypeAttr)(node, 'width', '520px'),
            title: (0,dom_utils.getStrTypeAttr)(node, 'title', ''),
            okText: (0,dom_utils.getStrTypeAttr)(node, 'ok-text', '确定'),
            closable: (0,dom_utils.getStrTypeAttr)(node, 'closable', 'true'),
            className: (0,dom_utils.getStrTypeAttr)(node, 'class-name', ''),
            cancelText: (0,dom_utils.getStrTypeAttr)(node, 'cancel-text', '取消'),
            maskClosable: (0,dom_utils.getStrTypeAttr)(node, 'mask-closable', 'true'),
            zIndex: (0,dom_utils.getNumTypeAttr)(node, 'z-index', 1000),
            visible: (0,dom_utils.getBooleanTypeAttr)(node, 'visible'),
            loading: (0,dom_utils.getBooleanTypeAttr)(node, 'loading'),
            scrollable: (0,dom_utils.getBooleanTypeAttr)(node, 'scrollable'),
            lockScroll: (0,dom_utils.getBooleanTypeAttr)(node, 'lock-scroll'),
            fullscreen: (0,dom_utils.getBooleanTypeAttr)(node, 'fullscreen'),
            footerHide: (0,dom_utils.getBooleanTypeAttr)(node, 'footer-hide')
        };
    };
    return Modal;
}());
/* harmony default export */ var modal = (Modal);

;// CONCATENATED MODULE: ./src/components/modal/index.ts

/* harmony default export */ var components_modal = (modal);

;// CONCATENATED MODULE: ./src/components/mini-modal/mini-modal.ts

/* eslint-disable @typescript-eslint/no-non-null-assertion */





var MiniModalBtn = new components_button();
var ICONTYPE = {
    info: 'ios-information-circle',
    success: 'ios-checkmark-circle',
    warning: 'ios-alert',
    error: 'ios-close-circle',
    confirm: 'ios-help-circle',
    loading: 'loading-solid'
};
var DEFAULT_ZINDEX = 1010;
var MiniModal = /** @class */ (function () {
    function MiniModal() {
        this.VERSION = 'v1.0';
    }
    MiniModal.prototype.info = function (config) {
        this._create('info', config);
    };
    MiniModal.prototype.success = function (config) {
        this._create('success', config);
    };
    MiniModal.prototype.warning = function (config) {
        this._create('warning', config);
    };
    MiniModal.prototype.error = function (config) {
        this._create('error', config);
    };
    MiniModal.prototype.confirm = function (config) {
        this._create('confirm', config);
    };
    MiniModal.prototype.remove = function () {
        var _a = this._getNode(), ModalParent = _a.ModalParent, ModalMask = _a.ModalMask, ModalWrap = _a.ModalWrap;
        this._destroy(ModalParent, ModalMask, ModalWrap);
    };
    MiniModal.prototype._create = function (type, config) {
        DEFAULT_ZINDEX++;
        var _a = config.width, width = _a === void 0 ? 416 : _a, _b = config.title, title = _b === void 0 ? '' : _b, _c = config.content, content = _c === void 0 ? '' : _c, _d = config.okText, okText = _d === void 0 ? '确定' : _d, _e = config.cancelText, cancelText = _e === void 0 ? '取消' : _e, _f = config.loading, loading = _f === void 0 ? false : _f, _g = config.keyboard, keyboard = _g === void 0 ? false : _g, _h = config.scrollable, scrollable = _h === void 0 ? false : _h, _j = config.lockScroll, lockScroll = _j === void 0 ? true : _j, onOk = config.onOk, onCancel = config.onCancel, _k = config.dangerouslyUseHTMLString, dangerouslyUseHTMLString = _k === void 0 ? false : _k;
        // @ts-ignore
        var icon = ICONTYPE[type];
        var isShowCancelBtn = type === 'confirm'
            ? "<button type=\"button\" class=\"" + prefix.default.button + " " + prefix.default.button + "-text\">" + cancelText + "</button>"
            : '';
        var template = "\n        <div class=\"" + prefix.default.modal + "-mini-modal\">\n          <div class=\"" + prefix.default.modal + "-mask\" style=\"z-index: " + DEFAULT_ZINDEX + ";\"></div>\n          <div class=\"" + prefix.default.modal + "-wrap\" style=\"z-index: " + DEFAULT_ZINDEX + ";\">\n              <div class=\"" + prefix.default.modal + "\" style=\"width: " + width + "px;\">\n                  <div class=\"" + prefix.default.modal + "-content\">\n                      <div class=\"" + prefix.default.modal + "-body\">\n                          <div class=\"" + prefix.default.modal + "-confirm\">\n                              <div class=\"" + prefix.default.modal + "-confirm-head\">\n                                  <div class=\"" + prefix.default.modal + "-confirm-head-icon " + prefix.default.modal + "-confirm-head-icon-" + type + "\">\n                                      <i class=\"" + prefix.default.icon + " " + prefix.default.icon + "-" + icon + "\"></i>\n                                  </div>\n                                  <div class=\"" + prefix.default.modal + "-confirm-head-title\"></div>\n                              </div>\n                              <div class=\"" + prefix.default.modal + "-confirm-body\"></div>\n                              <div class=\"" + prefix.default.modal + "-confirm-footer\">\n                                  " + isShowCancelBtn + "\n                                  <button type=\"button\" class=\"" + prefix.default.button + " " + prefix.default.button + "-primary\"><span>" + okText + "</span></button>\n                              </div>\n                          </div>\n                      </div>\n                  </div>\n              </div>\n          </div>\n        </div>";
        document.body.insertAdjacentHTML('beforeend', template);
        var _l = this._getNode(), ModalParent = _l.ModalParent, ModalMask = _l.ModalMask, ModalWrap = _l.ModalWrap, Modal = _l.Modal;
        this._setMainContent(Modal, title, content, dangerouslyUseHTMLString);
        this._setAnimation('in', ModalMask, ModalWrap);
        this._setScrollable(scrollable, lockScroll);
        this._handleBtnClick(ModalParent, ModalMask, ModalWrap, Modal, loading, onOk, onCancel);
        this._keyboardClosed(type, keyboard, ModalParent, ModalMask, ModalWrap, onCancel);
    };
    MiniModal.prototype._setMainContent = function (modal, title, content, isUseHTML) {
        var ModalHead = modal.querySelector("." + prefix.default.modal + "-confirm-head-title");
        var ModalBody = modal.querySelector("." + prefix.default.modal + "-confirm-body");
        (0,utils.useHTMLString)(ModalHead, title, isUseHTML);
        (0,utils.useHTMLString)(ModalBody, content, isUseHTML);
    };
    MiniModal.prototype._handleBtnClick = function (parent, mask, wrap, modal, loading, onOk, onCancel) {
        var _this = this;
        var ModalOkBtn = modal.querySelector("." + prefix.default.button + "-primary");
        var ModalCacnelBtn = modal.querySelector("." + prefix.default.button + "-text");
        var remove = function () { return _this._destroy(parent, mask, wrap); };
        var okEv = function () {
            onOk && utils.type.isFn(onOk);
            if (loading) {
                MiniModalBtn.config(ModalOkBtn).loading = loading;
                return;
            }
            remove();
        };
        var cancelEv = function () {
            remove();
            onCancel && utils.type.isFn(onCancel);
        };
        (0,dom_utils.bind)(ModalOkBtn, 'click', okEv);
        if (ModalCacnelBtn)
            (0,dom_utils.bind)(ModalCacnelBtn, 'click', cancelEv);
    };
    MiniModal.prototype._keyboardClosed = function (_type, keyboard, parent, mask, wrap, onCancel) {
        var _this = this;
        if (!keyboard)
            return;
        var event = function (e) {
            if (e.key === 'Escape') {
                e.stopPropagation();
                // 判断页面是否有modal实例,如果有才执行事件,避免重复执行
                if (document.body.contains(parent)) {
                    // 取消的回调,只在MinModal.confirm()下有效
                    if (_type === 'confirm')
                        onCancel && utils.type.isFn(onCancel);
                    setTimeout(function () { return _this._destroy(parent, mask, wrap); }, 0);
                }
            }
        };
        window.onkeydown = function (e) { return event(e); };
    };
    MiniModal.prototype._destroy = function (parent, mask, wrap) {
        var _this = this;
        this._setAnimation('out', mask, wrap);
        setTimeout(function () {
            parent.remove();
            _this._setScrollable(true, false);
        }, 150);
    };
    MiniModal.prototype._setAnimation = function (type, elem1, elem2) {
        var maskAniCls = type === 'in' ? { enterCls: 'rab-fade-in' } : { leaveCls: 'rab-fade-out' };
        var modalAniCls = type === 'in' ? { enterCls: 'zoom-big-enter' } : { leaveCls: 'zoom-big-leave' };
        (0,mixins.CssTransition)(elem1, __assign(__assign({ inOrOut: type }, maskAniCls), { timeout: 250, rmCls: true }));
        (0,mixins.CssTransition)(elem2, __assign(__assign({ inOrOut: type }, modalAniCls), { timeout: 200, rmCls: true }));
    };
    MiniModal.prototype._setScrollable = function (scrollable, lockScroll) {
        (0,mixins.Scrollable)({ scroll: scrollable, lock: lockScroll });
    };
    MiniModal.prototype._getNode = function () {
        var ModalParent = (0,dom_utils.$el)("." + prefix.default.modal + "-mini-modal");
        var ModalMask = ModalParent.querySelector("." + prefix.default.modal + "-mask");
        var ModalWrap = ModalParent.querySelector("." + prefix.default.modal + "-wrap");
        var Modal = ModalWrap.querySelector("." + prefix.default.modal);
        return {
            ModalParent: ModalParent,
            ModalMask: ModalMask,
            ModalWrap: ModalWrap,
            Modal: Modal
        };
    };
    return MiniModal;
}());
/* harmony default export */ var mini_modal = (MiniModal);

;// CONCATENATED MODULE: ./src/components/mini-modal/index.ts

/* harmony default export */ var components_mini_modal = (new mini_modal());

;// CONCATENATED MODULE: ./src/components/notice/notice.ts





var NotPrefixKey = 'rab-notice';
var NotMoveEnter = prefix.default.notice + "-move-enter";
var NotMoveLeave = prefix.default.notice + "-move-leave";
var iconTypes = {
    info: 'ios-information-circle',
    success: 'ios-checkmark-circle',
    warning: 'ios-alert',
    error: 'ios-close-circle',
    loading: 'loading-solid'
};
var DEFAULT_NOTICE = {
    top: 24,
    duration: 4.5
};
var notice_zIndex = 1180;
// 创建实例的最外层父容器
function createNoticeInsanceWrapper() {
    var NoticeWrapper = (0,dom_utils.createElem)('div');
    NoticeWrapper.className = "" + prefix.default.notice;
    (0,dom_utils.setCss)(NoticeWrapper, 'zIndex', "" + notice_zIndex);
    (0,dom_utils.setCss)(NoticeWrapper, 'right', '0');
    setTimeout(function () { return (0,dom_utils.setCss)(NoticeWrapper, 'top', DEFAULT_NOTICE.top + "px"); }, 0);
    document.body.appendChild(NoticeWrapper);
    return NoticeWrapper;
}
var $Notice = /** @class */ (function () {
    function $Notice() {
        this.VERSION = 'v1.0';
        // 存储已经创建的实例,在 destroy方法里需要用到
        this.instances = [];
        createNoticeInsanceWrapper();
    }
    $Notice.prototype.open = function (config) {
        this._createInstance('normal', config);
        return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration);
    };
    $Notice.prototype.info = function (config) {
        this._createInstance('info', config);
        return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration);
    };
    $Notice.prototype.success = function (config) {
        this._createInstance('success', config);
        return (0,mixins.usePromiseCallback)(DEFAULT_NOTICE.duration, config.duration);
    };
    $Notice.prototype.warning = function (config) {
        this._createInstance('warning', config);
        return (0,mixins.usePromiseCallback)(DEFAULT_NO
Download .txt
gitextract_ibke3ltz/

├── .editorconfig
├── .eslintignore
├── .eslintrc.js
├── .gitattributes
├── .github/
│   ├── CODE_OF_CONDUCT.md
│   └── CONTRIBUTING.md
├── .gitignore
├── .npmignore
├── LICENSE
├── README.en-US.md
├── README.md
├── config/
│   ├── webpack.common.js
│   ├── webpack.dev.js
│   ├── webpack.dist.dev.js
│   └── webpack.dist.prod.js
├── dist/
│   ├── rabbit.js
│   └── styles/
│       └── rabbit.css
├── docs/
│   ├── affix.md
│   ├── alert.md
│   ├── avatar.md
│   ├── back-top.md
│   ├── badge.md
│   ├── breadcrumb.md
│   ├── button.md
│   ├── card.md
│   ├── carousel.md
│   ├── checkbox.md
│   ├── circle.md
│   ├── collapse.md
│   ├── count-down.md
│   ├── divider.md
│   ├── drawer.md
│   ├── dropdown.md
│   ├── empty.md
│   ├── input-number.md
│   ├── jumbotron.md
│   ├── loading-bar.md
│   ├── message.md
│   ├── mini-modal.md
│   ├── modal.md
│   ├── notice.md
│   ├── page-header.md
│   ├── poptip.md
│   ├── progress.md
│   ├── radio.md
│   ├── result.md
│   ├── skeleton.md
│   ├── spin.md
│   ├── steps.md
│   ├── switch.md
│   ├── tabs.md
│   ├── tag.md
│   ├── time.md
│   ├── timeline.md
│   └── tooltip.md
├── examples/
│   ├── README.md
│   ├── affix/
│   │   ├── index.html
│   │   └── index.ts
│   ├── alert/
│   │   ├── index.html
│   │   └── index.ts
│   ├── avatar/
│   │   ├── index.html
│   │   └── index.ts
│   ├── back-top/
│   │   ├── index.html
│   │   └── index.ts
│   ├── badge/
│   │   ├── index.html
│   │   └── index.ts
│   ├── breadcrumb/
│   │   ├── index.html
│   │   └── index.ts
│   ├── button/
│   │   ├── index.html
│   │   └── index.ts
│   ├── card/
│   │   ├── index.html
│   │   └── index.ts
│   ├── carousel/
│   │   ├── index.html
│   │   └── index.ts
│   ├── checkbox/
│   │   ├── index.html
│   │   └── index.ts
│   ├── circle/
│   │   ├── index.html
│   │   └── index.ts
│   ├── collapse/
│   │   ├── index.html
│   │   └── index.ts
│   ├── count-down/
│   │   ├── index.html
│   │   └── index.ts
│   ├── divider/
│   │   ├── index.html
│   │   └── index.ts
│   ├── drawer/
│   │   ├── index.html
│   │   └── index.ts
│   ├── dropdown/
│   │   ├── index.html
│   │   └── index.ts
│   ├── empty/
│   │   ├── index.html
│   │   └── index.ts
│   ├── input-number/
│   │   ├── index.html
│   │   └── index.ts
│   ├── jumbotron/
│   │   ├── index.html
│   │   └── index.ts
│   ├── loading-bar/
│   │   ├── index.html
│   │   └── index.ts
│   ├── main.ts
│   ├── message/
│   │   ├── index.html
│   │   └── index.ts
│   ├── mini-modal/
│   │   ├── index.html
│   │   └── index.ts
│   ├── modal/
│   │   ├── index.html
│   │   └── index.ts
│   ├── notice/
│   │   ├── index.html
│   │   └── index.ts
│   ├── page-header/
│   │   ├── index.html
│   │   └── index.ts
│   ├── poptip/
│   │   ├── index.html
│   │   └── index.ts
│   ├── progress/
│   │   ├── index.html
│   │   └── index.ts
│   ├── radio/
│   │   ├── index.html
│   │   └── index.ts
│   ├── result/
│   │   ├── index.html
│   │   └── index.ts
│   ├── skeleton/
│   │   ├── index.html
│   │   └── index.ts
│   ├── spin/
│   │   ├── index.html
│   │   └── index.ts
│   ├── steps/
│   │   ├── index.html
│   │   └── index.ts
│   ├── switch/
│   │   ├── index.html
│   │   └── index.ts
│   ├── tabs/
│   │   ├── index.html
│   │   └── index.ts
│   ├── tag/
│   │   ├── index.html
│   │   └── index.ts
│   ├── time/
│   │   ├── index.html
│   │   └── index.ts
│   ├── timeline/
│   │   ├── index.html
│   │   └── index.ts
│   └── tooltip/
│       ├── index.html
│       └── index.ts
├── package.json
├── postcss.config.js
├── prettier.config.js
├── site/
│   ├── .babelrc
│   ├── .eslintrc.js
│   ├── .gitignore
│   ├── README.md
│   ├── index.html
│   ├── package.json
│   ├── prettier.config.js
│   ├── src/
│   │   ├── App.vue
│   │   ├── components/
│   │   │   ├── Anchor.vue
│   │   │   ├── CodeBox.vue
│   │   │   ├── ColorCard.vue
│   │   │   ├── ExampleHeaderArea.vue
│   │   │   ├── NavLogo.vue
│   │   │   ├── RowCol.vue
│   │   │   ├── SearchInput.vue
│   │   │   └── index.ts
│   │   ├── examples-code/
│   │   │   ├── components/
│   │   │   │   ├── affix/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── FixedBottom.vue
│   │   │   │   │   ├── Offset.vue
│   │   │   │   │   ├── StatusChange.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── alert/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── WithBanner.vue
│   │   │   │   │   ├── WithClose.vue
│   │   │   │   │   ├── WithDesc.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── avatar/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoFontSize.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── back-top/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CustomStyle.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── badge/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Alone.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Colors.vue
│   │   │   │   │   ├── CustomContent.vue
│   │   │   │   │   ├── CustomPosition.vue
│   │   │   │   │   ├── MaxCount.vue
│   │   │   │   │   ├── PresetColor.vue
│   │   │   │   │   ├── RedDot.vue
│   │   │   │   │   ├── StatusDot.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── breadcrumb/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Separator.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── button/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Ghost.vue
│   │   │   │   │   ├── Group.vue
│   │   │   │   │   ├── IconWithCircle.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── Long.vue
│   │   │   │   │   ├── Placement.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── card/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── DisHover.vue
│   │   │   │   │   ├── NoBorder.vue
│   │   │   │   │   ├── Shadow.vue
│   │   │   │   │   ├── Simple.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── carousel/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoPlay.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Fade.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── checkbox/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Border.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Group.vue
│   │   │   │   │   ├── Indeterminate.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── circle/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CustomStyle.vue
│   │   │   │   │   ├── Dashboard.vue
│   │   │   │   │   ├── UseWithOther.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── collapse/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── According.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Ghost.vue
│   │   │   │   │   ├── HiddenArrow.vue
│   │   │   │   │   ├── Simple.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── count-down/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── divider/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── HeaderPosition.vue
│   │   │   │   │   ├── Horizontal.vue
│   │   │   │   │   ├── TextStyle.vue
│   │   │   │   │   ├── Vertical.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── drawer/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── Inner.vue
│   │   │   │   │   ├── Multilayer.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── dropdown/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Nested.vue
│   │   │   │   │   ├── Placement.vue
│   │   │   │   │   ├── Trigger.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── empty/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── NoDesc.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── input-number/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── ControlsOutside.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Editable.vue
│   │   │   │   │   ├── Formatter.vue
│   │   │   │   │   ├── ReadOnly.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── Step.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── jumbotron/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Appearance.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── loading-bar/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── UseInAsync.vue
│   │   │   │   │   ├── UsedInRoute.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── message/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Background.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Closable.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── Promise.vue
│   │   │   │   │   ├── Time.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   ├── UseHTML.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── mini-modal/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Confirm.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── modal/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Aysnc.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── DisabledClose.vue
│   │   │   │   │   ├── FullScreen.vue
│   │   │   │   │   ├── Position.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── notice/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Closable.vue
│   │   │   │   │   ├── Promise.vue
│   │   │   │   │   ├── Time.vue
│   │   │   │   │   ├── Type.vue
│   │   │   │   │   ├── UseHTML.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── page-header/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── poptip/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoNewLine.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Complex.vue
│   │   │   │   │   ├── Confirm.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── InsideClosed.vue
│   │   │   │   │   ├── Placement.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── progress/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── FDJDT.vue
│   │   │   │   │   ├── Percent.vue
│   │   │   │   │   ├── StrokeColor.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── radio/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Border.vue
│   │   │   │   │   ├── Button.vue
│   │   │   │   │   ├── ButtonStyle.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Group.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── Vertical.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── result/
│   │   │   │   │   ├── 403.vue
│   │   │   │   │   ├── 404.vue
│   │   │   │   │   ├── 500.vue
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── CustomIcon.vue
│   │   │   │   │   ├── Error.vue
│   │   │   │   │   ├── Info.vue
│   │   │   │   │   ├── Success.vue
│   │   │   │   │   ├── Warning.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── skeleton/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Complex.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── WithAnimation.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── spin/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── ChangeState.vue
│   │   │   │   │   ├── CustomContent.vue
│   │   │   │   │   ├── FixCenter.vue
│   │   │   │   │   ├── FullScreen.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── steps/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── ChangeStep.vue
│   │   │   │   │   ├── Error.vue
│   │   │   │   │   ├── Mini.vue
│   │   │   │   │   ├── Vertical.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── switch/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CustomColor.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Loading.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── TextAndIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── tabs/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Animated.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CardType.vue
│   │   │   │   │   ├── Closable.vue
│   │   │   │   │   ├── CustomStyle.vue
│   │   │   │   │   ├── Disabled.vue
│   │   │   │   │   ├── Small.vue
│   │   │   │   │   ├── WithIcon.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── tag/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── CanSelect.vue
│   │   │   │   │   ├── Colors.vue
│   │   │   │   │   ├── Size.vue
│   │   │   │   │   ├── StyleTypes.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── time/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── AutoUpdate.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Types.vue
│   │   │   │   │   ├── WithAnchor.vue
│   │   │   │   │   └── index.ts
│   │   │   │   ├── timeline/
│   │   │   │   │   ├── APITable.vue
│   │   │   │   │   ├── Basic.vue
│   │   │   │   │   ├── Colors.vue
│   │   │   │   │   ├── Custom.vue
│   │   │   │   │   ├── Pending.vue
│   │   │   │   │   └── index.ts
│   │   │   │   └── tooltip/
│   │   │   │       ├── APITable.vue
│   │   │   │       ├── AutoNewLine.vue
│   │   │   │       ├── Basic.vue
│   │   │   │       ├── CustomContent.vue
│   │   │   │       ├── Delay.vue
│   │   │   │       ├── Disabled.vue
│   │   │   │       ├── Placement.vue
│   │   │   │       ├── Theme.vue
│   │   │   │       └── index.ts
│   │   │   └── docs/
│   │   │       ├── install/
│   │   │       │   ├── CDNAZ.vue
│   │   │       │   ├── SL.vue
│   │   │       │   └── index.ts
│   │   │       ├── introduce/
│   │   │       │   ├── AZ.vue
│   │   │       │   ├── AZ2.vue
│   │   │       │   ├── SL.vue
│   │   │       │   └── index.ts
│   │   │       └── start/
│   │   │           ├── Code1.vue
│   │   │           ├── Code2.vue
│   │   │           ├── Code3.vue
│   │   │           └── index.ts
│   │   ├── main.ts
│   │   ├── markdown.css
│   │   ├── pages/
│   │   │   ├── app/
│   │   │   │   ├── Index/
│   │   │   │   │   ├── Index.vue
│   │   │   │   │   ├── content/
│   │   │   │   │   │   └── Content.vue
│   │   │   │   │   ├── header/
│   │   │   │   │   │   ├── Header.vue
│   │   │   │   │   │   ├── NavBar.vue
│   │   │   │   │   │   ├── NavBarDropdown.vue
│   │   │   │   │   │   ├── NavMore.vue
│   │   │   │   │   │   └── NavRouterLink.vue
│   │   │   │   │   └── sider/
│   │   │   │   │       ├── Sider.vue
│   │   │   │   │       └── SiderMenu.vue
│   │   │   │   └── views/
│   │   │   │       ├── Affix.vue
│   │   │   │       ├── Alert.vue
│   │   │   │       ├── Avatar.vue
│   │   │   │       ├── BackTop.vue
│   │   │   │       ├── Badge.vue
│   │   │   │       ├── Breadcrumb.vue
│   │   │   │       ├── Button.vue
│   │   │   │       ├── Card.vue
│   │   │   │       ├── Carousel.vue
│   │   │   │       ├── Checkbox.vue
│   │   │   │       ├── Circle.vue
│   │   │   │       ├── Collapse.vue
│   │   │   │       ├── Color.vue
│   │   │   │       ├── CountDown.vue
│   │   │   │       ├── Divider.vue
│   │   │   │       ├── Drawer.vue
│   │   │   │       ├── Dropdown.vue
│   │   │   │       ├── Empty.vue
│   │   │   │       ├── FAQ.vue
│   │   │   │       ├── Icon.vue
│   │   │   │       ├── InputNumber.vue
│   │   │   │       ├── Install.vue
│   │   │   │       ├── Introduce.vue
│   │   │   │       ├── Jumbotron.vue
│   │   │   │       ├── LoadingBar.vue
│   │   │   │       ├── Message.vue
│   │   │   │       ├── MiniModal.vue
│   │   │   │       ├── Modal.vue
│   │   │   │       ├── Notice.vue
│   │   │   │       ├── PageHeader.vue
│   │   │   │       ├── Poptip.vue
│   │   │   │       ├── Progress.vue
│   │   │   │       ├── Radio.vue
│   │   │   │       ├── Result.vue
│   │   │   │       ├── Skeleton.vue
│   │   │   │       ├── Spin.vue
│   │   │   │       ├── Sponsor.vue
│   │   │   │       ├── Start.vue
│   │   │   │       ├── Steps.vue
│   │   │   │       ├── Switch.vue
│   │   │   │       ├── Tabs.vue
│   │   │   │       ├── Tag.vue
│   │   │   │       ├── Time.vue
│   │   │   │       ├── Timeline.vue
│   │   │   │       ├── Tooltip.vue
│   │   │   │       └── Update.vue
│   │   │   ├── home/
│   │   │   │   └── Home.vue
│   │   │   └── index.ts
│   │   ├── plugins/
│   │   │   └── antd.ts
│   │   ├── router-link-list.ts
│   │   ├── routers/
│   │   │   └── index.ts
│   │   └── shims-vue.d.ts
│   ├── tsconfig.json
│   └── vite.config.ts
├── some-log.md
├── src/
│   ├── build-umd.ts
│   ├── components/
│   │   ├── affix/
│   │   │   ├── affix.ts
│   │   │   └── index.ts
│   │   ├── alert/
│   │   │   ├── alert.ts
│   │   │   └── index.ts
│   │   ├── avatar/
│   │   │   ├── avatar.ts
│   │   │   └── index.ts
│   │   ├── back-top/
│   │   │   ├── back-top.ts
│   │   │   └── index.ts
│   │   ├── badge/
│   │   │   ├── badge.ts
│   │   │   └── index.ts
│   │   ├── breadcrumb/
│   │   │   ├── breadcrumb.ts
│   │   │   └── index.ts
│   │   ├── button/
│   │   │   ├── button.ts
│   │   │   └── index.ts
│   │   ├── card/
│   │   │   ├── card.ts
│   │   │   └── index.ts
│   │   ├── carousel/
│   │   │   ├── carousel.ts
│   │   │   └── index.ts
│   │   ├── checkbox/
│   │   │   ├── checkbox.ts
│   │   │   └── index.ts
│   │   ├── circle/
│   │   │   ├── circle.ts
│   │   │   └── index.ts
│   │   ├── collapse/
│   │   │   ├── collapse.ts
│   │   │   └── index.ts
│   │   ├── count-down/
│   │   │   ├── count-down.ts
│   │   │   └── index.ts
│   │   ├── divider/
│   │   │   ├── divider.ts
│   │   │   └── index.ts
│   │   ├── drawer/
│   │   │   ├── drawer.ts
│   │   │   └── index.ts
│   │   ├── dropdown/
│   │   │   ├── dropdown.ts
│   │   │   └── index.ts
│   │   ├── empty/
│   │   │   ├── empty.ts
│   │   │   └── index.ts
│   │   ├── input-number/
│   │   │   ├── index.ts
│   │   │   └── input-number.ts
│   │   ├── jumbotron/
│   │   │   ├── index.ts
│   │   │   └── jumbotron.ts
│   │   ├── loading-bar/
│   │   │   ├── index.ts
│   │   │   └── loading-bar.ts
│   │   ├── message/
│   │   │   ├── index.ts
│   │   │   ├── instance.ts
│   │   │   └── message.ts
│   │   ├── mini-modal/
│   │   │   ├── index.ts
│   │   │   └── mini-modal.ts
│   │   ├── modal/
│   │   │   ├── index.ts
│   │   │   └── modal.ts
│   │   ├── notice/
│   │   │   ├── index.ts
│   │   │   └── notice.ts
│   │   ├── page-header/
│   │   │   ├── index.ts
│   │   │   └── page-header.ts
│   │   ├── poptip/
│   │   │   ├── index.ts
│   │   │   └── poptip.ts
│   │   ├── prefix.ts
│   │   ├── progress/
│   │   │   ├── index.ts
│   │   │   └── progress.ts
│   │   ├── radio/
│   │   │   ├── index.ts
│   │   │   └── radio.ts
│   │   ├── result/
│   │   │   ├── index.ts
│   │   │   └── result.ts
│   │   ├── skeleton/
│   │   │   ├── index.ts
│   │   │   └── skeleton.ts
│   │   ├── spin/
│   │   │   ├── index.ts
│   │   │   └── spin.ts
│   │   ├── steps/
│   │   │   ├── index.ts
│   │   │   └── steps.ts
│   │   ├── switch/
│   │   │   ├── index.ts
│   │   │   └── switch.ts
│   │   ├── tabs/
│   │   │   ├── index.ts
│   │   │   └── tabs.ts
│   │   ├── tag/
│   │   │   ├── index.ts
│   │   │   └── tag.ts
│   │   ├── time/
│   │   │   ├── index.ts
│   │   │   └── time.ts
│   │   ├── timeline/
│   │   │   ├── index.ts
│   │   │   └── timeline.ts
│   │   └── tooltip/
│   │       ├── index.ts
│   │       └── tooltip.ts
│   ├── dom-utils/
│   │   ├── bind.ts
│   │   ├── elem.ts
│   │   ├── index.ts
│   │   ├── prev&next.ts
│   │   ├── remove-attrs.ts
│   │   ├── siblings.ts
│   │   └── slide.ts
│   ├── images.d.ts
│   ├── index.ts
│   ├── mixins/
│   │   ├── arrow.ts
│   │   ├── cb-promise.ts
│   │   ├── clickoutside.ts
│   │   ├── css-transition.ts
│   │   ├── index.ts
│   │   ├── one-node.ts
│   │   ├── scrollable.ts
│   │   ├── tooltip.ts
│   │   └── warn.ts
│   ├── rabbit-simple-ui.ts
│   ├── styles/
│   │   ├── README.md
│   │   ├── animation/
│   │   │   ├── ease.less
│   │   │   ├── fade.less
│   │   │   ├── index.less
│   │   │   ├── move.less
│   │   │   ├── slide.less
│   │   │   └── zoom.less
│   │   ├── color/
│   │   │   ├── bezierEasing.less
│   │   │   ├── colorPalette.less
│   │   │   ├── colors.less
│   │   │   └── tinyColor.less
│   │   ├── common/
│   │   │   ├── article.less
│   │   │   ├── base.less
│   │   │   ├── iconfont/
│   │   │   │   ├── icons-font.less
│   │   │   │   ├── icons-icons.less
│   │   │   │   ├── icons-variables.less
│   │   │   │   └── icons.less
│   │   │   ├── index.less
│   │   │   └── normalize.less
│   │   ├── components/
│   │   │   ├── affix.less
│   │   │   ├── alert.less
│   │   │   ├── avatar.less
│   │   │   ├── back-top.less
│   │   │   ├── badge.less
│   │   │   ├── breadcrumb.less
│   │   │   ├── button.less
│   │   │   ├── card.less
│   │   │   ├── carousel.less
│   │   │   ├── checkbox.less
│   │   │   ├── circle.less
│   │   │   ├── collapse.less
│   │   │   ├── count-down.less
│   │   │   ├── divider.less
│   │   │   ├── drawer.less
│   │   │   ├── dropdown.less
│   │   │   ├── empty.less
│   │   │   ├── index.less
│   │   │   ├── input-number.less
│   │   │   ├── jumbotron.less
│   │   │   ├── loading-bar.less
│   │   │   ├── message.less
│   │   │   ├── modal.less
│   │   │   ├── notice.less
│   │   │   ├── page-header.less
│   │   │   ├── poptip.less
│   │   │   ├── progress.less
│   │   │   ├── radio.less
│   │   │   ├── result.less
│   │   │   ├── skeleton.less
│   │   │   ├── spin.less
│   │   │   ├── steps.less
│   │   │   ├── switch.less
│   │   │   ├── tabs.less
│   │   │   ├── tag.less
│   │   │   ├── time.less
│   │   │   ├── timeline.less
│   │   │   └── tooltip.less
│   │   ├── copyright.less
│   │   ├── custom.less
│   │   ├── index.less
│   │   └── mixins/
│   │       ├── button.less
│   │       ├── caret.less
│   │       ├── checkbox.less
│   │       ├── clearfix.less
│   │       ├── close.less
│   │       ├── common.less
│   │       ├── content.less
│   │       ├── index.less
│   │       ├── input.less
│   │       ├── layout.less
│   │       ├── loading.less
│   │       ├── mask.less
│   │       ├── select.less
│   │       ├── size.less
│   │       └── tooltip.less
│   └── utils/
│       ├── check-type.ts
│       ├── destroy.ts
│       ├── index.ts
│       ├── random-str.ts
│       ├── use-html-string.ts
│       └── validComps.ts
├── tsconfig.json
├── tsconfig.tsbuildinfo
└── workspace.code-workspace
Download .txt
SYMBOL INDEX (902 symbols across 97 files)

FILE: dist/rabbit.js
  function d (line 20) | function d(t){this.$L=D(t.locale,null,!0),this.parse(t)}
  function i (line 42) | function i(r,t,e,o){return n.fromToBase(r,t,e,o)}
  function getScroll (line 117) | function getScroll(target, top) {
  function getOffset (line 126) | function getOffset(element) {
  function Affix (line 139) | function Affix() {
  function Alert (line 299) | function Alert() {
  method title (line 310) | get title() {
  method title (line 313) | set title(newVal) {
  method icon (line 318) | get icon() {
  method icon (line 321) | set icon(newVal) {
  function Avatar (line 440) | function Avatar() {
  function BackTop (line 541) | function BackTop() {
  function Badge (line 639) | function Badge() {
  method count (line 653) | get count() {
  method count (line 656) | set count(newVal) {
  method text (line 675) | get text() {
  method text (line 678) | set text(newVal) {
  method dot (line 685) | get dot() {
  method dot (line 688) | set dot(newVal) {
  function Breadcrumb (line 860) | function Breadcrumb() {
  function Button (line 908) | function Button() {
  method loading (line 917) | get loading() {
  method loading (line 920) | set loading(newVal) {
  function Card (line 1001) | function Card() {
  method title (line 1012) | get title() {
  method title (line 1015) | set title(newVal) {
  method extra (line 1020) | get extra() {
  method extra (line 1023) | set extra(newVal) {
  function Carousel (line 1107) | function Carousel() {
  function Checkbox (line 1365) | function Checkbox() {
  method value (line 1383) | get value() {
  method value (line 1386) | set value(newVal) {
  method checked (line 1395) | get checked() {
  method checked (line 1398) | set checked(newVal) {
  method disabled (line 1403) | get disabled() {
  method disabled (line 1406) | set disabled(newVal) {
  method indeterminate (line 1417) | get indeterminate() {
  method indeterminate (line 1423) | set indeterminate(newVal) {
  function Circle (line 1583) | function Circle() {
  method percent (line 1594) | get percent() {
  method percent (line 1597) | set percent(newVal) {
  method strokeColor (line 1602) | get strokeColor() {
  method strokeColor (line 1605) | set strokeColor(newVal) {
  function Collapse (line 1749) | function Collapse() {
  method activeIndex (line 1760) | get activeIndex() {
  method activeIndex (line 1763) | set activeIndex(newVal) {
  function CountDown (line 1951) | function CountDown() {
  method endTime (line 1961) | get endTime() {
  method endTime (line 1964) | set endTime(newVal) {
  function Divider (line 2048) | function Divider() {
  function Drawer (line 2116) | function Drawer() {
  method title (line 2131) | get title() {
  method title (line 2134) | set title(newVal) {
  method visable (line 2139) | get visable() {
  method visable (line 2142) | set visable(newVal) {
  function __extends (line 2407) | function __extends(d, b) {
  function __rest (line 2424) | function __rest(s, e) {
  function __decorate (line 2436) | function __decorate(decorators, target, key, desc) {
  function __param (line 2443) | function __param(paramIndex, decorator) {
  function __metadata (line 2447) | function __metadata(metadataKey, metadataValue) {
  function __awaiter (line 2451) | function __awaiter(thisArg, _arguments, P, generator) {
  function __generator (line 2461) | function __generator(thisArg, body) {
  function __createBinding (line 2489) | function __createBinding(o, m, k, k2) {
  function __exportStar (line 2494) | function __exportStar(m, exports) {
  function __values (line 2498) | function __values(o) {
  function __read (line 2510) | function __read(o, n) {
  function __spread (line 2527) | function __spread() {
  function __spreadArrays (line 2533) | function __spreadArrays() {
  function __await (line 2541) | function __await(v) {
  function __asyncGenerator (line 2545) | function __asyncGenerator(thisArg, _arguments, generator) {
  function __asyncDelegator (line 2557) | function __asyncDelegator(o) {
  function __asyncValues (line 2563) | function __asyncValues(o) {
  function __makeTemplateObject (line 2571) | function __makeTemplateObject(cooked, raw) {
  function __importStar (line 2576) | function __importStar(mod) {
  function __importDefault (line 2584) | function __importDefault(mod) {
  function __classPrivateFieldGet (line 2588) | function __classPrivateFieldGet(receiver, privateMap) {
  function __classPrivateFieldSet (line 2595) | function __classPrivateFieldSet(receiver, privateMap, value) {
  function Dropdown (line 2616) | function Dropdown() {
  method visible (line 2630) | get visible() {
  method visible (line 2633) | set visible(newVal) {
  function Empty (line 2855) | function Empty() {
  function Jumbotron (line 2908) | function Jumbotron() {
  function createLoadingBarInstance (line 2964) | function createLoadingBarInstance() {
  function r_update (line 2982) | function r_update(options) {
  function hide (line 3004) | function hide() {
  function clearTimer (line 3016) | function clearTimer() {
  function setColor (line 3023) | function setColor(status, elem) {
  function $LoadingBar (line 3052) | function $LoadingBar() {
  function CreateInstance (line 3148) | function CreateInstance() {
  function Message (line 3276) | function Message() {
  function Modal (line 3347) | function Modal() {
  method title (line 3359) | get title() {
  method title (line 3362) | set title(newVal) {
  method visible (line 3366) | get visible() {
  method visible (line 3369) | set visible(newVal) {
  function MiniModal (line 3665) | function MiniModal() {
  function createNoticeInsanceWrapper (line 3808) | function createNoticeInsanceWrapper() {
  function $Notice (line 3818) | function $Notice() {
  function PageHeader (line 4023) | function PageHeader() {
  function Poptip (line 4078) | function Poptip() {
  method visible (line 4094) | get visible() {
  method visible (line 4097) | set visible(newVal) {
  method disabled (line 4102) | get disabled() {
  method disabled (line 4105) | set disabled(newVal) {
  method title (line 4110) | get title() {
  method title (line 4113) | set title(newVal) {
  method content (line 4118) | get content() {
  method content (line 4121) | set content(newVal) {
  function Progress (line 4367) | function Progress() {
  method percent (line 4379) | get percent() {
  method percent (line 4382) | set percent(newVal) {
  method successPercent (line 4389) | get successPercent() {
  method successPercent (line 4392) | set successPercent(newVal) {
  function Radio (line 4531) | function Radio() {
  method checked (line 4548) | get checked() {
  method checked (line 4551) | set checked(newVal) {
  method value (line 4556) | get value() {
  method value (line 4560) | set value(newVal) {
  function Result (line 4708) | function Result() {
  function Skeleton (line 4808) | function Skeleton() {
  function Spin (line 4925) | function Spin() {
  function Steps (line 4974) | function Steps() {
  method current (line 4993) | get current() {
  method current (line 4996) | set current(newVal) {
  method title (line 5001) | get title() {
  method title (line 5004) | set title(newVal) {
  method content (line 5007) | get content() {
  method content (line 5010) | set content(newVal) {
  method status (line 5013) | get status() {
  method status (line 5016) | set status(newVal) {
  method itemStatus (line 5022) | get itemStatus() {
  method itemStatus (line 5025) | set itemStatus(newVal) {
  function Switch (line 5208) | function Switch() {
  method checked (line 5231) | get checked() {
  method checked (line 5234) | set checked(newVal) {
  method disabled (line 5237) | get disabled() {
  method disabled (line 5240) | set disabled(newVal) {
  method loading (line 5243) | get loading() {
  method loading (line 5246) | set loading(newVal) {
  function Tabs (line 5395) | function Tabs() {
  method activeIndex (line 5408) | get activeIndex() {
  method activeIndex (line 5411) | set activeIndex(newVal) {
  function Tag (line 5652) | function Tag() {
  function Timeline (line 5816) | function Timeline() {
  function Tooltip (line 5898) | function Tooltip() {
  method content (line 5912) | get content() {
  method content (line 5915) | set content(newVal) {
  method always (line 5920) | get always() {
  method always (line 5923) | set always(newVal) {
  method disabled (line 5928) | get disabled() {
  method disabled (line 5931) | set disabled(newVal) {
  function addNum (line 6125) | function addNum(num1, num2) {
  function InputNumber (line 6143) | function InputNumber() {
  method value (line 6159) | get value() {
  method value (line 6162) | set value(newVal) {
  method step (line 6167) | get step() {
  method step (line 6170) | set step(newVal) {
  method disabled (line 6175) | get disabled() {
  method disabled (line 6178) | set disabled(newVal) {
  method readOnly (line 6183) | get readOnly() {
  method readOnly (line 6186) | set readOnly(newVal) {
  method editable (line 6201) | get editable() {
  method editable (line 6204) | set editable(newVal) {
  function Time (line 6547) | function Time() {
  function $el (line 6653) | function $el(node, options) {
  function createElem (line 6661) | function createElem(tagName) {
  function setCss (line 6664) | function setCss(node, styeName, value) {
  function setHtml (line 6667) | function setHtml(node, value) {
  function setText (line 6675) | function setText(node, value) {
  function getStrTypeAttr (line 6686) | function getStrTypeAttr(node, attrName, defaultVal) {
  function getBooleanTypeAttr (line 6690) | function getBooleanTypeAttr(node, attrName) {
  function getNumTypeAttr (line 6694) | function getNumTypeAttr(node, attrName, defaultVal) {
  function getArrTypeAttr (line 6698) | function getArrTypeAttr(node, attrName) {
  function bind (line 6746) | function bind(obj, type, callback) {
  function unbind (line 6762) | function unbind(obj, type, callback) {
  function prevAll (line 6777) | function prevAll(el) {
  function nextAll (line 6792) | function nextAll(el) {
  function removeAttrs (line 6816) | function removeAttrs(elem, attrs) {
  function siblings (line 6830) | function siblings(elem) {
  function TimerManager (line 6858) | function TimerManager() {
  function fnSlideDown (line 6893) | function fnSlideDown(element, time) {
  function fnSlideUp (line 6931) | function fnSlideUp(element, time) {
  function scrollUpdate (line 7038) | function scrollUpdate() {
  function usePromiseCallback (line 7066) | function usePromiseCallback(duration, compConfig) {
  function promiseCb (line 7080) | function promiseCb(duration) {
  function clickOutside (line 7099) | function clickOutside(elem, callback, child, datasetKey, datasetVal) {
  function CssTransition (line 7120) | function CssTransition(elem, _a) {
  function moreThanOneNode (line 7170) | function moreThanOneNode(node) {
  function scrollable (line 7180) | function scrollable(_a) {
  function getBoundingClientRect (line 7206) | function getBoundingClientRect(element) {
  function getWindow (line 7223) | function getWindow(node) {
  function getWindowScroll (line 7233) | function getWindowScroll(node) {
  function isElement (line 7247) | function isElement(node) {
  function isHTMLElement (line 7255) | function isHTMLElement(node) {
  function isShadowRoot (line 7263) | function isShadowRoot(node) {
  function getHTMLElementScroll (line 7270) | function getHTMLElementScroll(element) {
  function getNodeScroll (line 7281) | function getNodeScroll(node) {
  function getNodeName (line 7289) | function getNodeName(element) {
  function getDocumentElement (line 7294) | function getDocumentElement(element) {
  function getWindowScrollBarX (line 7303) | function getWindowScrollBarX(element) {
  function getComputedStyle (line 7315) | function getComputedStyle(element) {
  function isScrollParent (line 7320) | function isScrollParent(element) {
  function getCompositeRect (line 7339) | function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {
  function getLayoutRect (line 7381) | function getLayoutRect(element) {
  function getParentNode (line 7392) | function getParentNode(element) {
  function getScrollParent (line 7414) | function getScrollParent(node) {
  function listScrollParents (line 7439) | function listScrollParents(element, list) {
  function isTableElement (line 7454) | function isTableElement(element) {
  function getTrueOffsetParent (line 7466) | function getTrueOffsetParent(element) {
  function getContainingBlock (line 7487) | function getContainingBlock(element) {
  function getOffsetParent (line 7506) | function getOffsetParent(element) {
  function order (line 7555) | function order(modifiers) {
  function orderModifiers (line 7587) | function orderModifiers(modifiers) {
  function debounce (line 7598) | function debounce(fn) {
  function format (line 7614) | function format(str) {
  function validateModifiers (line 7629) | function validateModifiers(modifiers) {
  function uniqueBy (line 7701) | function uniqueBy(arr, fn) {
  function getBasePlacement (line 7714) | function getBasePlacement(placement) {
  function mergeByName (line 7718) | function mergeByName(modifiers) {
  function getViewportRect (line 7736) | function getViewportRect(element) {
  function getDocumentRect (line 7780) | function getDocumentRect(element) {
  function contains (line 7802) | function contains(parent, child) {
  function rectToClientRect (line 7825) | function rectToClientRect(rect) {
  function getInnerBoundingClientRect (line 7848) | function getInnerBoundingClientRect(element) {
  function getClientRectFromMixedType (line 7861) | function getClientRectFromMixedType(element, clippingParent) {
  function getClippingParents (line 7868) | function getClippingParents(element) {
  function getClippingRect (line 7885) | function getClippingRect(element, boundary, rootBoundary) {
  function getVariation (line 7904) | function getVariation(placement) {
  function getMainAxisFromPlacement (line 7908) | function getMainAxisFromPlacement(placement) {
  function computeOffsets (line 7916) | function computeOffsets(_ref) {
  function getFreshSideObject (line 7983) | function getFreshSideObject() {
  function mergePaddingObject (line 7993) | function mergePaddingObject(paddingObject) {
  function expandToHashMap (line 7997) | function expandToHashMap(value, keys) {
  function detectOverflow (line 8014) | function detectOverflow(state, options) {
  function areValidElements (line 8091) | function areValidElements() {
  function popperGenerator (line 8101) | function popperGenerator(generatorOptions) {
  function effect (line 8334) | function effect(_ref) {
  function popperOffsets (line 8380) | function popperOffsets(_ref) {
  function roundOffsetsByDPR (line 8420) | function roundOffsetsByDPR(_ref) {
  function mapToStyles (line 8431) | function mapToStyles(_ref2) {
  function computeStyles (line 8491) | function computeStyles(_ref4) {
  function applyStyles (line 8554) | function applyStyles(_ref) {
  function applyStyles_effect (line 8581) | function applyStyles_effect(_ref2) {
  function distanceAndSkiddingToXY (line 8636) | function distanceAndSkiddingToXY(placement, rects, offset) {
  function offset (line 8657) | function offset(_ref2) {
  function getOppositePlacement (line 8694) | function getOppositePlacement(placement) {
  function getOppositeVariationPlacement (line 8704) | function getOppositeVariationPlacement(placement) {
  function computeAutoPlacement (line 8718) | function computeAutoPlacement(state, options) {
  function getExpandedFallbackPlacements (line 8770) | function getExpandedFallbackPlacements(placement) {
  function flip (line 8779) | function flip(_ref) {
  function getAltAxis (line 8910) | function getAltAxis(axis) {
  function within (line 8914) | function within(min, value, max) {
  function preventOverflow (line 8929) | function preventOverflow(_ref) {
  function arrow (line 9049) | function arrow(_ref) {
  function arrow_effect (line 9085) | function arrow_effect(_ref2) {
  function getSideOffsets (line 9141) | function getSideOffsets(overflow, rect, preventedOffsets) {
  function isAnySideFullyClipped (line 9157) | function isAnySideFullyClipped(overflow) {
  function hide (line 9163) | function hide(_ref) {
  function _newCreatePopper (line 9244) | function _newCreatePopper(reference, popper, placement, offset) {
  function warn (line 9297) | function warn(msg) {
  function destroyElem (line 9388) | function destroyElem(elem, _a) {
  function destroyElemByKey (line 9424) | function destroyElemByKey(options) {
  function random_str (line 9435) | function random_str(len) {
  function isUseHTMLString (line 9456) | function isUseHTMLString(elem, content, use) {
  function validComps (line 9464) | function validComps(target, compName) {
  function __webpack_require__ (line 9492) | function __webpack_require__(moduleId) {

FILE: examples/affix/index.ts
  function affixTest (line 3) | function affixTest(): void {

FILE: examples/alert/index.ts
  function alertTest (line 3) | function alertTest(): void {

FILE: examples/avatar/index.ts
  function avatarTest (line 3) | function avatarTest(): void {

FILE: examples/back-top/index.ts
  function backtopTest (line 3) | function backtopTest(): void {

FILE: examples/badge/index.ts
  function badgeTest (line 3) | function badgeTest(): void {

FILE: examples/breadcrumb/index.ts
  function breadcrumbTest (line 3) | function breadcrumbTest(): void {

FILE: examples/button/index.ts
  function buttonTest (line 4) | function buttonTest(): void {

FILE: examples/card/index.ts
  function cardTest (line 3) | function cardTest(): void {

FILE: examples/carousel/index.ts
  function carouselTest (line 3) | function carouselTest(): void {

FILE: examples/checkbox/index.ts
  function checkboxTest (line 3) | function checkboxTest(): void {

FILE: examples/circle/index.ts
  function circleTest (line 3) | function circleTest(): void {

FILE: examples/collapse/index.ts
  function collapseTest (line 3) | function collapseTest(): void {

FILE: examples/count-down/index.ts
  function countDownTest (line 3) | function countDownTest(): void {

FILE: examples/divider/index.ts
  function dividerTest (line 3) | function dividerTest(): void {

FILE: examples/drawer/index.ts
  function drawerTest (line 3) | function drawerTest(): void {

FILE: examples/dropdown/index.ts
  function dropdownTest (line 3) | function dropdownTest(): void {

FILE: examples/empty/index.ts
  function emptyTest (line 3) | function emptyTest(): void {

FILE: examples/input-number/index.ts
  function inputNumberTest (line 3) | function inputNumberTest(): void {

FILE: examples/jumbotron/index.ts
  function jumbotronTest (line 3) | function jumbotronTest(): void {

FILE: examples/loading-bar/index.ts
  function loadingBarTest (line 4) | function loadingBarTest(): void {

FILE: examples/message/index.ts
  function messaest (line 4) | function messaest(): void {

FILE: examples/mini-modal/index.ts
  function miniModalTest (line 3) | function miniModalTest(): void {

FILE: examples/modal/index.ts
  function modalTest (line 3) | function modalTest(): void {

FILE: examples/notice/index.ts
  function noticeTest (line 4) | function noticeTest(): void {

FILE: examples/page-header/index.ts
  function pageHeaderTest (line 3) | function pageHeaderTest(): void {

FILE: examples/poptip/index.ts
  function poptipTest (line 3) | function poptipTest(): void {

FILE: examples/progress/index.ts
  function progressTest (line 3) | function progressTest(): void {

FILE: examples/radio/index.ts
  function radioTest (line 3) | function radioTest(): void {

FILE: examples/result/index.ts
  function resultTest (line 3) | function resultTest(): void {

FILE: examples/skeleton/index.ts
  function skeletonTest (line 3) | function skeletonTest(): void {

FILE: examples/spin/index.ts
  function spinTest (line 3) | function spinTest(): void {

FILE: examples/steps/index.ts
  function stepsTest (line 3) | function stepsTest(): void {

FILE: examples/switch/index.ts
  function switchTest (line 3) | function switchTest(): void {

FILE: examples/tabs/index.ts
  function tabsTest (line 3) | function tabsTest(): void {

FILE: examples/tag/index.ts
  function tagTest (line 3) | function tagTest(): void {

FILE: examples/time/index.ts
  function timeTest (line 4) | function timeTest(): void {

FILE: examples/timeline/index.ts
  function timelineTest (line 3) | function timelineTest(): void {

FILE: examples/tooltip/index.ts
  function tooltipTest (line 3) | function tooltipTest(): void {

FILE: site/src/router-link-list.ts
  type A (line 1) | interface A {
  constant DOCSLIST (line 6) | const DOCSLIST: A[] = [
  constant COMPONENTSLIST (line 15) | const COMPONENTSLIST: A[] = [

FILE: site/vite.config.ts
  method manualChunks (line 12) | manualChunks(id) {

FILE: src/components/affix/affix.ts
  function getScroll (line 13) | function getScroll(target: Window, top?: boolean): number {
  function getOffset (line 26) | function getOffset(
  type Config (line 47) | interface Config {
  type AffixEvent (line 55) | interface AffixEvent {
  class Affix (line 59) | class Affix implements Config {
    method constructor (line 63) | constructor() {
    method config (line 69) | public config(
    method _create (line 135) | private _create(COMPONENTS: NodeListOf<HTMLElement>): void {
    method _createCloneElm (line 151) | private _createCloneElm(node: HTMLElement): HTMLElement {
    method _handleScroll (line 158) | private _handleScroll(
    method _attrs (line 250) | private _attrs(node: HTMLElement) {

FILE: src/components/alert/alert.ts
  type Config (line 15) | interface Config {
  type AlertEvent (line 25) | interface AlertEvent {
  class Alert (line 29) | class Alert implements Config {
    method constructor (line 33) | constructor() {
    method config (line 39) | public config(
    method _create (line 82) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _setMainTemplate (line 100) | private _setMainTemplate(node: Element, title: string) {
    method _setBanner (line 108) | private _setBanner(node: Element, banner: boolean): void {
    method _setIconType (line 113) | private _setIconType(
    method _setDescription (line 157) | private _setDescription(node: Element, placeholderNode: Element | null) {
    method _setClosable (line 166) | private _setClosable(node: Element, closable: boolean, closeText: stri...
    method _handleClose (line 177) | private _handleClose(node: Element): void {
    method _attrs (line 183) | private _attrs(node: Element) {

FILE: src/components/avatar/avatar.ts
  type Config (line 7) | interface Config {
  type AvatarEvent (line 15) | interface AvatarEvent {
  class Avatar (line 19) | class Avatar implements Config {
    method constructor (line 23) | constructor() {
    method config (line 29) | public config(
    method _create (line 54) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setSize (line 67) | private _setSize(node: Element, size: string): void {
    method _setIcon (line 81) | private _setIcon(node: Element, icon: string): void {
    method _setImage (line 90) | private _setImage(node: Element, src: string, alt: string): void {
    method _setText (line 99) | private _setText(node: Element, icon: string, src: string): void {
    method _setScale (line 114) | private _setScale(node: Element) {
    method _attrs (line 130) | private _attrs(node: Element) {

FILE: src/components/back-top/back-top.ts
  class BackTop (line 4) | class BackTop {
    method constructor (line 8) | constructor() {
    method _create (line 14) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setRight (line 29) | private _setRight(node: Element, right: number): void {
    method _setBottom (line 33) | private _setBottom(node: Element, bottom: number): void {
    method _setAppearance (line 37) | private _setAppearance(node: Element): void {
    method _handleScroll (line 49) | private _handleScroll(node: Element, height: number): void {
    method _handleClick (line 65) | private _handleClick(node: Element, duration: number): void {
    method _scrollTop (line 72) | private _scrollTop(el: any, from: number, to: number, duration: number) {
    method _attrs (line 103) | private _attrs(node: Element) {

FILE: src/components/badge/badge.ts
  type Config (line 6) | interface Config {
  class Badge (line 16) | class Badge implements Config {
    method constructor (line 20) | constructor() {
    method config (line 26) | public config(
    method _create (line 95) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setCount (line 112) | private _setCount(node: Element): void {
    method _setMaxCount (line 144) | private _setMaxCount(node: Element, maxCount: number): void {
    method _setDot (line 148) | private _setDot(node: Element, children: HTMLElement): void {
    method _setText (line 158) | private _setText(parent: Element, children: HTMLElement): void {
    method _setAlone (line 169) | private _setAlone(children: Element): void {
    method _setOffset (line 175) | private _setOffset(parent: Element, children: HTMLElement) {
    method _setStatusWithColor (line 182) | private _setStatusWithColor(node: Element): void {
    method _getCount (line 227) | private _getCount(node: Element) {
    method _getMaxCount (line 231) | private _getMaxCount(node: Element): number {
    method _getOffset (line 235) | private _getOffset(
    method _getStatus (line 255) | private _getStatus(node: Element): string {
    method _getColor (line 259) | private _getColor(node: Element): string {
    method _getText (line 263) | private _getText(node: Element): string {
    method _showZero (line 267) | private _showZero(node: Element): boolean {
    method _showDot (line 271) | private _showDot(node: Element): boolean {

FILE: src/components/breadcrumb/breadcrumb.ts
  class Breadcrumb (line 4) | class Breadcrumb {
    method constructor (line 8) | constructor() {
    method _create (line 14) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _createItem (line 24) | private _createItem(node: Element, separator: string): void {
    method _attrs (line 47) | private _attrs(node: Element) {

FILE: src/components/button/button.ts
  type Config (line 13) | interface Config {
  class Button (line 21) | class Button implements Config {
    method constructor (line 25) | constructor() {
    method config (line 31) | public config(
    method _getAllBtns (line 50) | private _getAllBtns(COMPONENTS: NodeListOf<Element>): void {
    method _setIcon (line 59) | private _setIcon(node: Element, icon: string): void {
    method _setLoading (line 76) | private _setLoading(node: Element, firstRender: boolean, loading: bool...
    method _attrs (line 99) | private _attrs(node: Element) {

FILE: src/components/card/card.ts
  type Config (line 14) | interface Config {
  class Card (line 23) | class Card implements Config {
    method constructor (line 27) | constructor() {
    method config (line 33) | public config(
    method _create (line 64) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _isShowBordered (line 83) | private _isShowBordered(node: Element, noBorder: boolean): void {
    method _isShowShadow (line 88) | private _isShowShadow(node: Element, shadow: boolean): void {
    method _isDisHover (line 93) | private _isDisHover(node: Element, disHover: boolean): void {
    method _setHead (line 98) | private _setHead(node: Element, title: string): void {
    method _setBody (line 105) | private _setBody(node: Element, placeholderNode: Element): void {
    method _setExtra (line 116) | private _setExtra(node: Element, extra: string): void {
    method _attrs (line 123) | private _attrs(node: Element) {

FILE: src/components/carousel/carousel.ts
  type Config (line 18) | interface Config {
  type CarouselEvents (line 26) | interface CarouselEvents {
  constant AUTOPLAYSPEED (line 33) | const AUTOPLAYSPEED = 2000;
  constant DURATION (line 34) | const DURATION = 520;
  class Carousel (line 36) | class Carousel implements Config {
    method constructor (line 40) | constructor() {
    method config (line 46) | public config(
    method _create (line 121) | private _create(components: NodeListOf<Element>): void {
    method _setMainTemplate (line 165) | private _setMainTemplate(node: Element, dots: string, arrow: string): ...
    method _setFadeCls (line 180) | private _setFadeCls(node: Element, effect: string): void {
    method _setItem (line 184) | private _setItem(
    method _setEasing (line 211) | private _setEasing(item: HTMLElement, easing: string): void {
    method _setIndicators (line 216) | private _setIndicators(
    method _autoPlay (line 245) | private _autoPlay(
    method _handleArrowClick (line 280) | private _handleArrowClick(node: Element, arrow: string): void {
    method _handleDotChange (line 290) | private _handleDotChange(trigger: string, node: Element, dot: HTMLElem...
    method _slide (line 316) | private _slide(type: 'prev' | 'next', node: Element): void {
    method _change (line 332) | private _change(
    method _dotChange (line 347) | private _dotChange(node: Element, activeIndex: number): void {
    method _showActiveItem (line 360) | private _showActiveItem(activeElem: Element, type = 'next', direction ...
    method _hideOldActiveItem (line 370) | private _hideOldActiveItem(oldElem: Element, direction = 'left'): void {
    method _attrs (line 378) | private _attrs(node: Element) {

FILE: src/components/checkbox/checkbox.ts
  type Config (line 15) | interface Config {
  type CheckboxEvent (line 26) | interface CheckboxEvent {
  class Checkbox (line 30) | class Checkbox implements Config {
    method constructor (line 34) | constructor() {
    method config (line 40) | public config(
    method _create (line 150) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _setChecked (line 173) | private _setChecked(node: Element, checked: boolean): void {
    method _setMainTemplate (line 186) | private _setMainTemplate(node: Element, name: string) {
    method _setLabel (line 200) | private _setLabel(node: Element, label: string): void {
    method _setDisabled (line 206) | private _setDisabled(node: Element): void {
    method _setIcon (line 214) | private _setIcon(node: Element, icon: string): void {
    method _setIndeterminate (line 221) | private _setIndeterminate(node: Element, indeterminate: boolean) {
    method _setMultipleChecks (line 233) | private _setMultipleChecks(checkboxGroupWrapper: Element, value: (stri...
    method _handleChange (line 251) | private _handleChange(node: Element): void {
    method _isDisabled (line 275) | private _isDisabled(node: Element): boolean {
    method _getGroupWrapper (line 279) | private _getGroupWrapper(node: Element): Element | null {
    method _attrs (line 284) | private _attrs(node: Element) {

FILE: src/components/circle/circle.ts
  type Config (line 16) | interface Config {
  class Circle (line 25) | class Circle implements Config {
    method constructor (line 29) | constructor() {
    method config (line 35) | public config(
    method _create (line 65) | private _create(COMPONENTS: NodeListOf<HTMLElement>): void {
    method _setSize (line 112) | private _setSize(node: HTMLElement, size: number): void {
    method _setMainTemplate (line 117) | private _setMainTemplate(
    method _radius (line 154) | private _radius(strokeWidth: number): number {
    method _setPercent (line 158) | private _setPercent(
    method _setStrokeColor (line 174) | private _setStrokeColor(innerCircle: SVGPathElement, color: string | s...
    method _getPathString (line 205) | private _getPathString(strokeWidth: number, dashboard: boolean): string {
    method _getStyle (line 218) | private _getStyle(
    method showDefs (line 249) | private showDefs(id: string, color: string[]) {
    method _setInnerContent (line 259) | private _setInnerContent(node: HTMLElement, content: Element | null): ...
    method _attrs (line 270) | private _attrs(node: HTMLElement) {

FILE: src/components/collapse/collapse.ts
  type CollapseEvents (line 13) | interface CollapseEvents {
  type Config (line 17) | interface Config {
  class Collapse (line 26) | class Collapse implements Config {
    method constructor (line 30) | constructor() {
    method config (line 36) | public config(
    method _create (line 105) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _dataSetActiveKey (line 119) | private _dataSetActiveKey(
    method _setGhost (line 131) | private _setGhost(node: Element, ghost: boolean): void {
    method _setSimple (line 135) | private _setSimple(node: Element, simple: boolean): void {
    method _createChildNodes (line 139) | private _createChildNodes(node: Element): void {
    method _setPanel (line 144) | private _setPanel(parent: Element, panels: NodeListOf<Element>): void {
    method _handleToggle (line 184) | private _handleToggle(parent: Element, panel: Element): void {
    method _slide (line 193) | private _slide(p: Element, c: Element, accordion: boolean): void {
    method _openByKey (line 220) | private _openByKey(
    method _attrs (line 261) | private _attrs(node: Element) {

FILE: src/components/count-down/count-down.ts
  type Config (line 4) | interface Config {
  type CountDownEvent (line 13) | interface CountDownEvent {
  class CountDown (line 17) | class CountDown implements Config {
    method constructor (line 21) | constructor() {
    method config (line 27) | public config(
    method _create (line 60) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _countTime (line 70) | private _countTime(node: Element, endTime: string): void {
    method _attrs (line 126) | private _attrs(node: Element) {

FILE: src/components/divider/divider.ts
  class Divider (line 4) | class Divider {
    method constructor (line 8) | constructor() {
    method _create (line 14) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setType (line 24) | private _setType(node: Element): void {
    method _setDashed (line 29) | private _setDashed(node: Element): void {
    method _setPlain (line 36) | private _setPlain(node: Element): void {
    method _setOrientation (line 43) | private _setOrientation(node: Element): void {
    method _setTitle (line 48) | private _setTitle(node: Element): void {
    method _attrs (line 63) | private _attrs(node: Element) {

FILE: src/components/drawer/drawer.ts
  type DrawerEvents (line 15) | interface DrawerEvents {
  type Config (line 19) | interface Config {
  class Drawer (line 29) | class Drawer implements Config {
    method constructor (line 33) | constructor() {
    method config (line 39) | public config(
    method _create (line 83) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _createDrawerNodes (line 102) | private _createDrawerNodes(node: Element): void {
    method _setCls (line 144) | private _setCls(elms: HTMLElement[]): void {
    method _setSize (line 164) | private _setSize(parent: Element, children: HTMLElement): void {
    method _setPlacement (line 175) | private _setPlacement(parent: Element, children: HTMLElement): void {
    method _setOpenInContainer (line 181) | private _setOpenInContainer(
    method _setMask (line 196) | private _setMask(
    method _setClosable (line 215) | private _setClosable(parent: Element, children: HTMLElement, drawerClo...
    method _setHeader (line 225) | private _setHeader(
    method _setBodyContent (line 244) | private _setBodyContent(parent: Element, children: HTMLElement): void {
    method _initVisible (line 252) | private _initVisible(
    method _handleVisable (line 271) | private _handleVisable(visable: boolean, target: Element, children: El...
    method _handleClose (line 276) | private _handleClose(parent: Element, hiddenElm: Element[], triggerElm...
    method _show (line 285) | private _show(parent: Element, showElm: Element[]): void {
    method _hide (line 321) | private _hide(parent: Element, hiddenElm: Element[]): void {
    method _attrs (line 352) | private _attrs(node: Element) {

FILE: src/components/dropdown/dropdown.ts
  type Config (line 13) | interface Config {
  type DropdownEvents (line 22) | interface DropdownEvents {
  constant DEFAULTDELAY (line 28) | const DEFAULTDELAY = 80;
  constant STATEKEY (line 29) | const STATEKEY = 'visibleState';
  constant ITEMKEY (line 30) | const ITEMKEY = 'itemKey';
  constant DROPENTERCLS (line 31) | const DROPENTERCLS = 'transition-drop-enter';
  constant DROPLEAVECLS (line 32) | const DROPLEAVECLS = 'transition-drop-leave';
  constant VISIBLETIMER (line 34) | let VISIBLETIMER: any = null,
  constant EVENTTIMER (line 34) | let VISIBLETIMER: any = null,
  class Dropdown (line 37) | class Dropdown implements Config {
    method constructor (line 41) | constructor() {
    method config (line 47) | public config(
    method _create (line 117) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _correctCompositionNodes (line 138) | private _correctCompositionNodes(node: Element): boolean {
    method _setStopPropagation (line 160) | private _setStopPropagation(stop: boolean, node: Element, child: HTMLE...
    method _handleTrigger (line 166) | private _handleTrigger(
    method _handleItemClick (line 224) | private _handleItemClick(
    method _setChildKey (line 242) | private _setChildKey(child: HTMLElement, key: string): void {
    method _setVisible (line 249) | private _setVisible(
    method _setPlacement (line 269) | private _setPlacement(node: Element, child: HTMLElement, placement: st...
    method _setTransitionDrop (line 282) | private _setTransitionDrop(type: 'in' | 'out', child: HTMLElement): vo...
    method _getChildDisabled (line 294) | private _getChildDisabled(elem: Element): boolean {
    method _attrs (line 305) | private _attrs(node: Element) {

FILE: src/components/empty/empty.ts
  class Empty (line 5) | class Empty {
    method constructor (line 9) | constructor() {
    method _create (line 15) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _setMainTemplate (line 27) | private _setMainTemplate(node: Element, desc: string, image: string, i...
    method _setFooter (line 37) | private _setFooter(node: Element, footerElm: Element | null): void {
    method _attrs (line 48) | private _attrs(node: Element) {

FILE: src/components/input-number/input-number.ts
  type Config (line 15) | interface Config {
  type InputNumberEvents (line 28) | interface InputNumberEvents {
  function addNum (line 34) | function addNum(num1: number, num2: number): number {
  class InputNumber (line 52) | class InputNumber implements Config {
    method constructor (line 56) | constructor() {
    method config (line 62) | public config(
    method _create (line 175) | private _create(COMPONENTS: NodeListOf<HTMLElement>) {
    method _setMainTemplate (line 245) | private _setMainTemplate(node: HTMLElement): void {
    method _setOutSide (line 265) | private _setOutSide(node: HTMLElement, controlsOutside: boolean): void {
    method _setInput (line 285) | private _setInput(
    method _formatterVal (line 303) | private _formatterVal(input: HTMLInputElement, formatter: string, val:...
    method _parserVal (line 309) | private _parserVal(parser: string, val: string): string {
    method _handleChange (line 319) | private _handleChange(
    method _setValue (line 404) | private _setValue(
    method _setSize (line 425) | private _setSize(node: Element, size: string): void {
    method _setReadonlyAndEditable (line 430) | private _setReadonlyAndEditable(
    method _setDisabled (line 439) | private _setDisabled(node: HTMLElement, input: HTMLInputElement, disab...
    method _setHandler (line 449) | private _setHandler(
    method _attrs (line 478) | private _attrs(node: HTMLElement) {

FILE: src/components/jumbotron/jumbotron.ts
  class Jumbotron (line 5) | class Jumbotron {
    method constructor (line 9) | constructor() {
    method _create (line 15) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _setMainTemplate (line 29) | private _setMainTemplate(node: Element, title: string, subTitle: strin...
    method _setExtraContent (line 39) | private _setExtraContent(node: Element, placeholderNode: Element | nul...
    method _attrs (line 46) | private _attrs(node: Element) {

FILE: src/components/loading-bar/loading-bar.ts
  type UpdatelobalAPI (line 7) | interface UpdatelobalAPI {
  type UpdateAPI (line 15) | interface UpdateAPI {
  type Events (line 21) | interface Events {
  constant DEFAULT_LOADINGBAR (line 30) | const DEFAULT_LOADINGBAR: {
  function createLoadingBarInstance (line 44) | function createLoadingBarInstance(): HTMLElement {
  function r_update (line 69) | function r_update(options: UpdateAPI): void {
  function hide (line 101) | function hide() {
  function clearTimer (line 114) | function clearTimer() {
  function setColor (line 122) | function setColor(status: string, elem: any): void {
  class $LoadingBar (line 150) | class $LoadingBar implements Events {
    method constructor (line 154) | constructor() {
    method start (line 160) | public start(): void {
    method update (line 180) | public update(percent: number): void {
    method finish (line 189) | public finish(): void {
    method error (line 199) | public error(): void {
    method config (line 209) | public config(options: UpdatelobalAPI): void {
    method destroy (line 224) | public destroy(): void {

FILE: src/components/message/instance.ts
  type KeyType (line 7) | type KeyType = string | number;
  type MessageType (line 8) | type MessageType = 'info' | 'success' | 'warning' | 'error' | 'loading';
  type MessageConfig (line 9) | type MessageConfig = string | Options;
  constant PREFIX_KEY (line 10) | const PREFIX_KEY = 'rab-message-instance';
  type Options (line 14) | interface Options {
  constant ICONTYPES (line 24) | const ICONTYPES = {
  class CreateInstance (line 34) | class CreateInstance {
    method constructor (line 36) | constructor() {
    method _init (line 39) | public _init(top: number): void {
    method _create (line 46) | protected _create(type: MessageType, config: MessageConfig, duration: ...
    method _setMainTemplate (line 62) | private _setMainTemplate(type: MessageType): HTMLElement {
    method _setIcon (line 85) | private _setIcon(type: MessageType, elem: HTMLElement): void {
    method _setContent (line 92) | private _setContent(elem: HTMLElement, content: MessageConfig): void {
    method _setKey (line 100) | private _setKey(elem: HTMLElement, key?: KeyType): void {
    method _setClosable (line 104) | private _setClosable(
    method _handleClose (line 120) | private _handleClose(elem: HTMLElement, onClose?: () => void): void {
    method _setBackground (line 127) | private _setBackground(elem: HTMLElement, child: Element, background?:...
    method _autoAddZIndex (line 132) | private _autoAddZIndex(): void {
    method _autoClose (line 136) | private _autoClose(elem: HTMLElement, config: MessageConfig, duration:...
    method _destroy (line 150) | private _destroy(elem: HTMLElement): void {

FILE: src/components/message/message.ts
  type GlobalConfigs (line 6) | interface GlobalConfigs {
  type InstanceMethods (line 10) | interface InstanceMethods {
  constant DEFAULTS (line 20) | const DEFAULTS = {
  class Message (line 25) | class Message extends CreateInstance implements InstanceMethods {
    method constructor (line 27) | constructor() {
    method info (line 32) | public info(config: MessageConfig): Promise<void> {
    method success (line 36) | public success(config: MessageConfig): Promise<void> {
    method warning (line 40) | public warning(config: MessageConfig): Promise<void> {
    method error (line 44) | public error(config: MessageConfig): Promise<void> {
    method loading (line 48) | public loading(config: MessageConfig): Promise<void> {
    method config (line 52) | public config(options: GlobalConfigs): void {
    method destroy (line 60) | public destroy(key?: KeyType): void {

FILE: src/components/mini-modal/mini-modal.ts
  constant ICONTYPE (line 10) | const ICONTYPE = {
  constant DEFAULT_ZINDEX (line 19) | let DEFAULT_ZINDEX = 1010;
  type MinModalOptions (line 21) | interface MinModalOptions {
  class MiniModal (line 36) | class MiniModal {
    method constructor (line 39) | constructor() {
    method info (line 43) | public info(config: MinModalOptions): void {
    method success (line 47) | public success(config: MinModalOptions): void {
    method warning (line 51) | public warning(config: MinModalOptions): void {
    method error (line 55) | public error(config: MinModalOptions): void {
    method confirm (line 59) | public confirm(config: MinModalOptions): void {
    method remove (line 63) | public remove(): void {
    method _create (line 68) | private _create(type: string, config: MinModalOptions): void {
    method _setMainContent (line 131) | private _setMainContent(
    method _handleBtnClick (line 143) | private _handleBtnClick(
    method _keyboardClosed (line 173) | private _keyboardClosed(
    method _destroy (line 198) | private _destroy(parent: HTMLElement, mask: Element, wrap: Element): v...
    method _setAnimation (line 206) | private _setAnimation(type: 'in' | 'out', elem1: Element, elem2: Eleme...
    method _setScrollable (line 226) | private _setScrollable(scrollable: boolean, lockScroll: boolean): void {
    method _getNode (line 230) | private _getNode(): {

FILE: src/components/modal/modal.ts
  type ModalEvents (line 17) | interface ModalEvents {
  type Config (line 22) | interface Config {
  constant RABBIT_BTN (line 32) | const RABBIT_BTN = new Button();
  class Modal (line 34) | class Modal implements Config {
    method constructor (line 38) | constructor() {
    method config (line 44) | public config(
    method _create (line 127) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _createTemplate (line 149) | private _createTemplate(node: Element): void {
    method _initVisable (line 192) | private _initVisable(node: Element): void {
    method _setHeader (line 216) | private _setHeader(node: Element): void {
    method _setContent (line 225) | private _setContent(node: Element, content: Element): void {
    method _setMask (line 230) | private _setMask(node: Element): void {
    method _setFullScreen (line 243) | private _setFullScreen(node: Element): void {
    method _setClosable (line 252) | private _setClosable(node: Element): void {
    method _setFooterHide (line 261) | private _setFooterHide(node: Element): void {
    method _handleVisable (line 270) | private _handleVisable(visible: boolean, target: Element, children: El...
    method _handleClose (line 275) | private _handleClose(parent: Element): void {
    method _show (line 311) | private _show(parent: Element, showElm: Element[]): void {
    method _hide (line 346) | private _hide(parent: Element, hiddenElm: Element[]): void {
    method _getModalNode (line 376) | private _getModalNode(node: Element) {
    method _attrs (line 395) | private _attrs(node: Element) {

FILE: src/components/notice/notice.ts
  type NoticeGlobalAPI (line 7) | interface NoticeGlobalAPI {
  type NoticeOptions (line 12) | interface NoticeOptions {
  type Events (line 26) | interface Events {
  constant DEFAULT_NOTICE (line 49) | const DEFAULT_NOTICE: {
  function createNoticeInsanceWrapper (line 60) | function createNoticeInsanceWrapper(): HTMLElement {
  class $Notice (line 75) | class $Notice implements Events {
    method constructor (line 79) | constructor() {
    method open (line 86) | public open(config: NoticeOptions): Promise<void> {
    method info (line 91) | public info(config: NoticeOptions): Promise<void> {
    method success (line 96) | public success(config: NoticeOptions): Promise<void> {
    method warning (line 101) | public warning(config: NoticeOptions): Promise<void> {
    method error (line 106) | public error(config: NoticeOptions): Promise<void> {
    method config (line 111) | public config(options: NoticeGlobalAPI): void {
    method close (line 120) | public close(key: string): void {
    method destroy (line 129) | public destroy(): void {
    method _autoSetZindex (line 140) | private _autoSetZindex(): void {
    method _createInstance (line 145) | private _createInstance(type: string, config: NoticeOptions): HTMLElem...
    method _setCls (line 190) | private _setCls(type: string, nodes: Array<HTMLElement>, customCls?: s...
    method _setKey (line 209) | private _setKey(node: HTMLElement, key: any): void {
    method _setTitle (line 214) | private _setTitle(node: HTMLElement, title?: string, dangerouslyUseHTM...
    method _setDesc (line 225) | private _setDesc(
    method _setIcon (line 242) | private _setIcon(
    method _setClosable (line 274) | private _setClosable(parent: HTMLElement, closable?: boolean, onClose?...
    method _customStyle (line 295) | private _customStyle(node: HTMLElement, style?: string): void {
    method _handleNoticeClick (line 302) | private _handleNoticeClick(parent: HTMLElement, onClick?: () => void):...
    method _handleClose (line 310) | private _handleClose(parent: HTMLElement, closeBtn: HTMLElement, onClo...
    method _autoClose (line 323) | private _autoClose(instance: HTMLElement, duration?: number): void {

FILE: src/components/page-header/page-header.ts
  type Config (line 5) | interface Config {
  type PHEvent (line 13) | interface PHEvent {
  class PageHeader (line 17) | class PageHeader implements Config {
    method constructor (line 21) | constructor() {
    method config (line 27) | public config(
    method _create (line 47) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setMainTemplate (line 57) | private _setMainTemplate(node: Element, title: string, subTitle: strin...
    method _attrs (line 71) | private _attrs(node: Element) {

FILE: src/components/poptip/poptip.ts
  type Config (line 16) | interface Config {
  type PoptipEvents (line 28) | interface PoptipEvents {
  constant STATEKEY (line 35) | const STATEKEY = 'visibleState';
  constant DEFAULTDELAY (line 36) | const DEFAULTDELAY = 80;
  constant VISIBLETIMER (line 38) | let VISIBLETIMER: any = null,
  constant EVENTTIMER (line 38) | let VISIBLETIMER: any = null,
  class Poptip (line 41) | class Poptip implements Config {
    method constructor (line 45) | constructor() {
    method config (line 52) | public config(
    method _create (line 165) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method setMainTemplate (line 228) | private setMainTemplate(
    method addReferenceElem (line 252) | private addReferenceElem(child: Element, ReferenceElem: string | Eleme...
    method setConfirmTemplate (line 260) | private setConfirmTemplate(
    method _handleTrigger (line 286) | private _handleTrigger(
    method _handleBtnClick (line 343) | private _handleBtnClick(
    method _setVisible (line 360) | private _setVisible(
    method _setPlacement (line 381) | private _setPlacement(
    method _visibleTransition (line 390) | private _visibleTransition(type: 'in' | 'out', popper: HTMLElement): v...
    method _setWidthAndWordWrap (line 404) | private _setWidthAndWordWrap(child: Element, width: number, wordWrap: ...
    method _setPadding (line 413) | private _setPadding(node: Element, padding: string): void {
    method _attrs (line 419) | private _attrs(node: Element) {

FILE: src/components/progress/progress.ts
  type Config (line 5) | interface Config {
  class Progress (line 20) | class Progress implements Config {
    method constructor (line 24) | constructor() {
    method config (line 30) | public config(
    method _create (line 69) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _createChildNodes (line 84) | private _createChildNodes(wrapper: Element): void {
    method _setPercent (line 106) | private _setPercent(wrapper: Element, bar: HTMLElement, successBar: HT...
    method _setStrokeWidth (line 114) | private _setStrokeWidth(wrapper: Element, bar: HTMLElement, successBar...
    method _showText (line 121) | private _showText(wrapper: Element, PgrsBar: HTMLElement): void {
    method _setStrokeColor (line 153) | private _setStrokeColor(wrapper: Element, PgrsBar: HTMLElement): void {
    method _getStatus (line 163) | private _getStatus(node: Element): string | null {
    method _getPercent (line 167) | private _getPercent(node: Element): string {
    method _getSuccessPercent (line 171) | private _getSuccessPercent(node: Element): string {
    method _getStrokeWidth (line 175) | private _getStrokeWidth(node: Element): string {
    method _getStrokeColor (line 179) | private _getStrokeColor(
    method _isTextInside (line 205) | private _isTextInside(node: Element): boolean {
    method _isShowText (line 209) | private _isShowText(node: Element): boolean {

FILE: src/components/radio/radio.ts
  type Config (line 14) | interface Config {
  type ItemData (line 24) | interface ItemData {
  type RadioEvent (line 30) | interface RadioEvent {
  class Radio (line 34) | class Radio implements Config {
    method constructor (line 38) | constructor() {
    method config (line 44) | public config(
    method _create (line 117) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _setMainTemplate (line 137) | private _setMainTemplate(node: Element, content: string, name: string)...
    method _setSingleChecked (line 149) | private _setSingleChecked(
    method _setCurrentlyChecked (line 162) | private _setCurrentlyChecked(node: Element, value: string, label: stri...
    method _setIcon (line 174) | private _setIcon(node: Element, icon: string): void {
    method _handleClick (line 181) | private _handleClick(node: Element, groupWrapper: Element | null): void {
    method _getGroupElm (line 209) | private _getGroupElm(node: Element): Element | null {
    method _isDisabled (line 214) | private _isDisabled(node: Element) {
    method _isChecked (line 218) | private _isChecked(node: Element) {
    method _attrs (line 222) | private _attrs(node: Element) {

FILE: src/components/result/result.ts
  class Result (line 9) | class Result {
    method constructor (line 13) | constructor() {
    method _create (line 19) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setMainTemplate (line 39) | private _setMainTemplate(node: Element): void {
    method _setStatus (line 53) | private _setStatus(node: Element, status: string): void {
    method _setTitle (line 70) | private _setTitle(node: Element, title: string, subTitle: string): void {
    method _setExtraContent (line 78) | private _setExtraContent(node: Element, content: string): void {
    method _setCustomIcon (line 83) | private _setCustomIcon(node: Element, icon: string): void {
    method _setComplexDesc (line 90) | private _setComplexDesc(node: Element, child: Element): void {
    method _getStatusIcon (line 101) | private _getStatusIcon(status: string): string {
    method _attrs (line 116) | private _attrs(node: Element) {

FILE: src/components/skeleton/skeleton.ts
  class Skeleton (line 15) | class Skeleton {
    method constructor (line 19) | constructor() {
    method _create (line 25) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setActive (line 59) | private _setActive(node: Element, active: boolean): void {
    method _setMainTemplate (line 65) | private _setMainTemplate(node: Element): void {
    method _setTitle (line 80) | private _setTitle(node: Element, isShow: string, width: number): void {
    method _setTitleWidth (line 90) | private _setTitleWidth(titleElm: Element, titleWidth: number): void {
    method _showParagraph (line 94) | private _showParagraph(node: Element, isShow: string, rows: number, ro...
    method _setParagraphRows (line 105) | private _setParagraphRows(pgELm: Element, rows: number): void {
    method _setParagraphRowsWidth (line 121) | private _setParagraphRowsWidth(pgELm: Element, width: number | number[...
    method _showAvatar (line 138) | private _showAvatar(node: Element, avatar: boolean, size: string, shap...
    method _attrs (line 154) | private _attrs(node: Element) {

FILE: src/components/spin/spin.ts
  class Spin (line 8) | class Spin {
    method constructor (line 12) | constructor() {
    method show (line 18) | public show({ content = '' } = {}): void {
    method hide (line 41) | public hide(): void {
    method _create (line 49) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _createChildTemplate (line 59) | private _createChildTemplate(content: string): string {

FILE: src/components/steps/steps.ts
  type Config (line 16) | interface Config {
  class Steps (line 28) | class Steps implements Config {
    method constructor (line 32) | constructor() {
    method config (line 38) | public config(
    method _create (line 122) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setDirection (line 135) | private _setDirection(node: Element, direction: string): void {
    method _setStepChildren (line 139) | private _setStepChildren(stepItem: NodeListOf<Element>): void {
    method _setStatusFlag (line 172) | private _setStatusFlag(step: Element): void {
    method _setCurrentStep (line 182) | private _setCurrentStep(node: Element, current: number, status: string...
    method _setStatus (line 202) | private _setStatus(node: Element, currentStep: Element, status: string...
    method _setPrevAndNextStatus (line 227) | private _setPrevAndNextStatus(
    method _setStatusIcon (line 254) | private _setStatusIcon(status: string, step: Element): void {
    method _setCustomIcon (line 286) | private _setCustomIcon(step: Element, icon: string): void {
    method _setNextError (line 301) | private _setNextError(node: Element): void {
    method _attrs (line 317) | private _attrs(node: Element) {

FILE: src/components/switch/switch.ts
  type Config (line 14) | interface Config {
  type SwitchEvent (line 25) | interface SwitchEvent {
  class Switch (line 29) | class Switch implements Config {
    method constructor (line 33) | constructor() {
    method config (line 39) | public config(
    method _create (line 98) | private _create(COMPONENTS: NodeListOf<Element>) {
    method _setDisabled (line 145) | private _setDisabled(node: Element, disabled: boolean) {
    method _setLoading (line 150) | private _setLoading(node: Element, loading: boolean): void {
    method _setSize (line 155) | private _setSize(node: Element, size: string): void {
    method _setMainTemplate (line 160) | private _setMainTemplate(node: Element): void {
    method _handleChange (line 169) | private _handleChange(
    method _setChecked (line 199) | private _setChecked(node: Element, input: HTMLInputElement, checked: b...
    method _setStatusText (line 207) | private _setStatusText(elem: Element, checked: boolean, open: string, ...
    method _setStatusBgc (line 223) | private _setStatusBgc(
    method _attrs (line 243) | private _attrs(node: Element) {

FILE: src/components/tabs/tabs.ts
  type Config (line 16) | interface Config {
  type TabsEvents (line 25) | interface TabsEvents {
  class Tabs (line 30) | class Tabs implements Config {
    method constructor (line 34) | constructor() {
    method config (line 40) | public config(
    method _create (line 96) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setType (line 111) | private _setType(node: Element, type: string): void {
    method _setSize (line 116) | private _setSize(node: Element, type: string, size: string): void {
    method _setNoAnimation (line 121) | private _setNoAnimation(node: Element, animated: string): void {
    method _setBodyTemplate (line 126) | private _setBodyTemplate(node: Element): void {
    method _setTabPane (line 140) | private _setTabPane(
    method _setTab (line 177) | private _setTab(tabsNav: Element, content: string): HTMLElement {
    method _setTabIcon (line 189) | private _setTabIcon(tabElm: Element, icon: string): void {
    method _setTabClosable (line 198) | private _setTabClosable(args: [Element, string, boolean, string]): void {
    method _setTabDisabled (line 213) | private _setTabDisabled(tabsTab: Element, disabled: boolean): void {
    method _setPaneKey (line 218) | private _setPaneKey(pane: Element, key: string, idx: number): void {
    method _setActive (line 224) | private _setActive(args: [boolean, Element, Element, Element, string, ...
    method _handleToggle (line 242) | private _handleToggle(args: [boolean, Element, Element, number, boolea...
    method _handleRemove (line 253) | private _handleRemove(tabsTab: Element, pane: Element): void {
    method _changeTab (line 293) | private _changeTab(tabsTab: Element, siblingsChange = true): void {
    method _changePane (line 305) | private _changePane(args: [boolean, Element, number, string?, Element?...
    method _attrs (line 327) | private _attrs(node: Element) {
    method _paneAttrs (line 337) | private _paneAttrs(pane: Element) {

FILE: src/components/tag/tag.ts
  type Config (line 14) | interface Config {
  type TagEvents (line 22) | interface TagEvents {
  class Tag (line 27) | class Tag implements Config {
    method constructor (line 31) | constructor() {
    method config (line 37) | public config(
    method _create (line 68) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setMainTemplate (line 85) | private _setMainTemplate(node: Element): void {
    method _setType (line 90) | private _setType(node: Element, type: string) {
    method _setIsChecked (line 98) | private _setIsChecked(node: Element, checkable: string): void {
    method _setColor (line 103) | private _setColor(node: Element, type: string, checkable: boolean, col...
    method _setSize (line 128) | private _setSize(node: Element, size: string): void {
    method _setClosable (line 133) | private _setClosable(node: Element, closable: boolean): void {
    method _setCheckable (line 143) | private _setCheckable(node: Element, checkable: boolean): void {
    method _handleClose (line 159) | private _handleClose(node: Element, closable: boolean): void {
    method _defaultColors (line 168) | private _defaultColors(): string[] {
    method _attrs (line 192) | private _attrs(node: Element) {

FILE: src/components/time/time.ts
  class Time (line 8) | class Time {
    method constructor (line 13) | constructor() {
    method _create (line 27) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setTime (line 38) | private _setTime(node: Element, type: string, time: string, interval: ...
    method _handleClick (line 84) | private _handleClick(node: Element, hash: string): void {
    method _attrs (line 91) | private _attrs(node: Element) {

FILE: src/components/timeline/timeline.ts
  class Timeline (line 4) | class Timeline {
    method constructor (line 8) | constructor() {
    method _create (line 14) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setCls (line 33) | private _setCls(node1: HTMLElement, node2: HTMLElement, node3: HTMLEle...
    method _setContent (line 39) | private _setContent(parent: Element, node1: HTMLElement): void {
    method _setColor (line 45) | private _setColor(parent: Element, node: HTMLElement): void {
    method _setDot (line 58) | private _setDot(parent: Element, node: HTMLElement): void {
    method _getStatusColor (line 67) | private _getStatusColor(node: Element): string {
    method _getDotContent (line 71) | private _getDotContent(parent: Element): string {

FILE: src/components/tooltip/tooltip.ts
  constant STATEKEY (line 16) | const STATEKEY = 'tooltipState';
  constant DEFAULTDELAY (line 17) | const DEFAULTDELAY = 80;
  constant VISIBLETIMER (line 27) | let VISIBLETIMER: any, EVENTTIMER: any;
  constant EVENTTIMER (line 27) | let VISIBLETIMER: any, EVENTTIMER: any;
  type Config (line 29) | interface Config {
  type TooltipEvent (line 40) | interface TooltipEvent {
  class Tooltip (line 44) | class Tooltip implements Config {
    method constructor (line 48) | constructor() {
    method config (line 55) | public config(
    method _create (line 130) | private _create(COMPONENTS: NodeListOf<Element>): void {
    method _setMainTemplate (line 161) | private _setMainTemplate(
    method _setReferencesElem (line 180) | private _setReferencesElem(node: Element, children: Element | string):...
    method _setMaxWidth (line 190) | private _setMaxWidth(node: Element, width: string): void {
    method _setAlwaysShow (line 199) | private _setAlwaysShow(children: HTMLElement, always: boolean): void {
    method _handleMouseEv (line 204) | private _handleMouseEv(
    method _setPopper (line 237) | private _setPopper(
    method _attrs (line 246) | private _attrs(node: Element) {

FILE: src/dom-utils/bind.ts
  function bind (line 8) | function bind(obj: Element | HTMLElement | Window | any, type: string, c...
  function unbind (line 24) | function unbind(obj: Element | HTMLElement | Window | any, type: string,...

FILE: src/dom-utils/elem.ts
  function $el (line 6) | function $el(
  function createElem (line 17) | function createElem(tagName: string): HTMLElement {
  function setCss (line 21) | function setCss(node: Element | HTMLElement | any, styeName: string, val...
  function setHtml (line 25) | function setHtml(node: Element, value?: string): string {
  function setText (line 33) | function setText(node: Element, value?: string): string {
  function getStrTypeAttr (line 45) | function getStrTypeAttr(node: Element, attrName: string, defaultVal: str...
  function getBooleanTypeAttr (line 50) | function getBooleanTypeAttr(node: Element, attrName: string): boolean {
  function getNumTypeAttr (line 55) | function getNumTypeAttr(node: Element, attrName: string, defaultVal?: nu...
  function getArrTypeAttr (line 60) | function getArrTypeAttr(node: Element, attrName: string): Array<string |...

FILE: src/dom-utils/prev&next.ts
  function prevAll (line 2) | function prevAll(el: Element): Element[] {
  function nextAll (line 20) | function nextAll(el: Element): Element[] {

FILE: src/dom-utils/remove-attrs.ts
  function removeAttrs (line 7) | function removeAttrs(elem: Element, attrs: Array<string>): void {

FILE: src/dom-utils/siblings.ts
  function siblings (line 1) | function siblings(elem: Element): any[] {

FILE: src/dom-utils/slide.ts
  function TimerManager (line 19) | function TimerManager() {
  function fnSlideDown (line 60) | function fnSlideDown(element, time) {
  function fnSlideUp (line 100) | function fnSlideUp(element, time) {

FILE: src/mixins/arrow.ts
  function scrollUpdate (line 5) | function scrollUpdate(): void {

FILE: src/mixins/cb-promise.ts
  function usePromiseCallback (line 7) | function usePromiseCallback(duration: number, compConfig?: any): Promise...
  function promiseCb (line 23) | function promiseCb(duration: number): Promise<void> {

FILE: src/mixins/clickoutside.ts
  function clickOutside (line 11) | function clickOutside(

FILE: src/mixins/css-transition.ts
  type Config (line 3) | interface Config {
  function CssTransition (line 12) | function CssTransition(

FILE: src/mixins/one-node.ts
  function moreThanOneNode (line 7) | function moreThanOneNode(node: Element): boolean {

FILE: src/mixins/scrollable.ts
  type Options (line 3) | interface Options {
  function scrollable (line 10) | function scrollable({ scroll = false, lock = false, node, tagName }: Opt...

FILE: src/mixins/tooltip.ts
  function _newCreatePopper (line 3) | function _newCreatePopper(

FILE: src/mixins/warn.ts
  function warn (line 1) | function warn(msg: unknown): void {

FILE: src/utils/destroy.ts
  type Options (line 3) | interface Options {
  function destroyElem (line 14) | function destroyElem(
  function destroyElemByKey (line 64) | function destroyElemByKey(options: Options): void {

FILE: src/utils/use-html-string.ts
  function isUseHTMLString (line 9) | function isUseHTMLString(elem: Element, content: string, use?: boolean):...

FILE: src/utils/validComps.ts
  function validComps (line 4) | function validComps(target: Element, compName: string): void {
Condensed preview — 674 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (3,571K chars).
[
  {
    "path": ".editorconfig",
    "chars": 335,
    "preview": "# 该文件用于统一不同编辑器和ide的编码风格\n# https://editorconfig.org\n\n# 最顶端的编辑器配置文件\nroot = true\n\n# 所有文件\n[*]\ncharset = utf-8\nindent_style ="
  },
  {
    "path": ".eslintignore",
    "chars": 44,
    "preview": "dist\nsite\nconfig\nexample-static\nnode_modules"
  },
  {
    "path": ".eslintrc.js",
    "chars": 904,
    "preview": "module.exports = {\n    env: {\n        browser: true,\n        commonjs: true,\n        es6: true\n    },\n    extends: ['esl"
  },
  {
    "path": ".gitattributes",
    "chars": 128,
    "preview": "*.js linguist-language=TypeScript\n*.css linguist-language= Less\n*.html linguist-language=HTML\n*.vue linguist-language=Ty"
  },
  {
    "path": ".github/CODE_OF_CONDUCT.md",
    "chars": 3351,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
  },
  {
    "path": ".github/CONTRIBUTING.md",
    "chars": 484,
    "preview": "# Contributing to Rabbit UI\n\nLooking to contribute something to RabbitUI? **Here's how you can help.**\n\nPlease take a mo"
  },
  {
    "path": ".gitignore",
    "chars": 74,
    "preview": "# dependencies\ndebug.log\n/node_modules\n/examples-static\n/site/node_modules"
  },
  {
    "path": ".npmignore",
    "chars": 74,
    "preview": ".*\n*.md\n*.log\nnode_modules/\nconfig/\ndocs/\nexamples/\nexamples-static/\nsite/"
  },
  {
    "path": "LICENSE",
    "chars": 1068,
    "preview": "MIT License\n\nCopyright (c) 2020 niu-grandpa\n\nPermission is hereby granted, free of charge, to any person obtaining a cop"
  },
  {
    "path": "README.en-US.md",
    "chars": 4211,
    "preview": "<p align=\"center\">\n    <a href=\"http://www.rabbitui.cn\">\n        <img width=\"200\" src=\"./assets/logo.svg\">\n    </a>\n</p>"
  },
  {
    "path": "README.md",
    "chars": 3371,
    "preview": "<p align=\"center\">\n    <a href=\"http://www.rabbitui.cn\">\n        <img width=\"200\" src=\"./assets/logo.svg\">\n    </a>\n</p>"
  },
  {
    "path": "config/webpack.common.js",
    "chars": 2886,
    "preview": "/* eslint-disable no-undef */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/**\n * 公共配置\n */\n\nconst webpack = r"
  },
  {
    "path": "config/webpack.dev.js",
    "chars": 1151,
    "preview": "/* eslint-disable no-undef */\n/* eslint-disable @typescript-eslint/no-var-requires */\nconst path = require('path');\ncons"
  },
  {
    "path": "config/webpack.dist.dev.js",
    "chars": 562,
    "preview": "/* eslint-disable @typescript-eslint/no-var-requires */\n/**\n * 打包开发模式下的资源\n */\n\nconst path = require('path');\nconst { mer"
  },
  {
    "path": "config/webpack.dist.prod.js",
    "chars": 1245,
    "preview": "/* eslint-disable no-undef */\n/* eslint-disable @typescript-eslint/no-var-requires */\n/**\n * 打包生产模式下的资源\n */\n\nconst path "
  },
  {
    "path": "dist/rabbit.js",
    "chars": 405572,
    "preview": "(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object"
  },
  {
    "path": "dist/styles/rabbit.css",
    "chars": 190551,
    "preview": "/*!\n* RabbitUI\n* Web: https://www.rabbitui.cn\n* Github: https://github.com/niu-grandpa/rabbit-ui\n* Author: 钟瑞鸿 (Ryan Joh"
  },
  {
    "path": "docs/affix.md",
    "chars": 2132,
    "preview": "# Affix 固钉\n\n将页面元素钉在可视范围。\n\n## 何时使用\n\n- 当内容区域比较长,需要滚动页面时,这部分内容对应的操作或者导航需要在滚动范围内始终展现。常用于侧边菜单和按钮组合。\n- 页面可视范围过小时,慎用此功能以免遮挡页面内容"
  },
  {
    "path": "docs/alert.md",
    "chars": 4016,
    "preview": "# Alert 警告提示\n\n警告提示,展现需要关注的信息。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Alert()`\n\n## 何时使用\n\n- 当某个页面需要向用户显示警告的信息时。\n- 非浮层的静态展现形"
  },
  {
    "path": "docs/avatar.md",
    "chars": 2743,
    "preview": "# Avatar头像\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Avatar()`\n\n用来代表用户或事物,支持图片、图标或字符展示。\n\n## 代码示例\n\n- 基础用法\n\n头像有三种尺寸,两种形状可选。\n\n`"
  },
  {
    "path": "docs/back-top.md",
    "chars": 957,
    "preview": "# BackTop 回到顶部\n\n返回页面顶部的操作按钮。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.BackTop()`\n\n## 何时使用\n\n- 当页面内容区域比较长时;\n- 当用户需要频繁返回顶部查看相关"
  },
  {
    "path": "docs/badge.md",
    "chars": 5026,
    "preview": "# Badge 徽标数\n\n图标右上角的圆形徽标数字。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Badge()`\n\n## 何时使用\n\n- 一般出现在通知图标或头像的右上角,用于显示需要处理的消息条数,通过醒"
  },
  {
    "path": "docs/breadcrumb.md",
    "chars": 1200,
    "preview": "# Breadcrumb 面包屑\n\n显示当前页面在系统层级结构中的位置,并能向上返回。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Breadcrumb()`\n\n## 何时使用\n\n- 当系统拥有超过两级以上的"
  },
  {
    "path": "docs/button.md",
    "chars": 9261,
    "preview": "# Button 按钮\n\n按钮用于开始一个即时操作。\n\n## 何时使用\n\n- 标记了一个(或封装一组)操作命令,响应用户点击行为,触发相应的业务逻辑。\n\n## 代码示例\n\n- 按钮类型\n\n按钮类型有:默认按钮、主按钮、虚线按钮、文字按钮以及"
  },
  {
    "path": "docs/card.md",
    "chars": 2431,
    "preview": "# Card卡片\n\n通用卡片容器。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Card()`\n\n## 何时使用\n\n最基础的卡片容器,可承载文字、列表、图片、段落,常用于后台概览页面。\n\n## 代码示例\n\n基"
  },
  {
    "path": "docs/carousel.md",
    "chars": 3372,
    "preview": "# Carousel走马灯\n\n旋转木马,一组轮播的区域。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Carousel()`。\n>\n> 该元素标签能够添加额外的子元素节点作为内容部分,并自动追加到指定的内部节"
  },
  {
    "path": "docs/checkbox.md",
    "chars": 5309,
    "preview": "# Checkbox 多选框\n\n多选框。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Card()`\n\n## 何时使用\n\n- 在一组可选项中进行多项选择时;\n- 单独使用可以表示两种状态之间的切换,和 `sw"
  },
  {
    "path": "docs/circle.md",
    "chars": 4428,
    "preview": "# Circle 进度环\n\n通过图表展示操作的当前进度。\n\n## 何时使用\n\n图表类组件。一般有两种用途:\n\n- 显示某项任务进度的百分比;\n\n- 统计某些指标的占比。\n\n## 代码示例\n\n基础用法\n\n* 圆形进度环有一系列的参数可配置,具"
  },
  {
    "path": "docs/collapse.md",
    "chars": 4587,
    "preview": "# Collapse折叠面板\n\n可以折叠/展开的内容区域。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Collapse()`\n\n## 何时使用\n\n- 对复杂区域进行分组和隐藏,保持页面的整洁。\n- `手风琴"
  },
  {
    "path": "docs/count-down.md",
    "chars": 1777,
    "preview": "# CountDown 倒计时\n\n根据设置目标时间来倒计时的组件。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.CountDown()`\n\n## 何时使用\n\n- 当页面某个部分或功能需要进行倒计时\n\n\n## "
  },
  {
    "path": "docs/divider.md",
    "chars": 1915,
    "preview": "# Divider 分割线\n\n区隔内容的分割线。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Divider()`\n\n## 何时使用\n\n- 对不同章节的文本段落进行分割。\n- 对行内文字/链接进行分割,例如表"
  },
  {
    "path": "docs/drawer.md",
    "chars": 5652,
    "preview": "# Drawer 抽屉\n\n屏幕边缘滑出的浮层面板。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Drawer()`。\n>\n\n## 何时使用\n\n- 抽屉从父窗体边缘滑入,覆盖住部分父窗体内容。用户在抽屉内操作时"
  },
  {
    "path": "docs/dropdown.md",
    "chars": 7303,
    "preview": "# Dropdown 下拉菜单\n\n向下弹出的列表。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Dropdown()`\n\n## 何时使用\n\n- 当页面上的操作命令过多时,用此组件可以收纳操作元素。点击或移入触"
  },
  {
    "path": "docs/empty.md",
    "chars": 815,
    "preview": "# Empty 空状态\n\n空状态时的展示占位图。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Empty()`\n\n## 何时使用\n\n- 当目前没有数据时,用于显式的用户提示。\n- 初始化场景时的引导创建流程。"
  },
  {
    "path": "docs/input-number.md",
    "chars": 4624,
    "preview": "# InputNumber 数字输入框\n\n通过鼠标或键盘,输入范围内的数值。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.InputNumber()`\n\n## 何时使用\n\n- 当需要获取标准数值时。\n\n## "
  },
  {
    "path": "docs/jumbotron.md",
    "chars": 1163,
    "preview": "# Jumbotron 巨幕\n\n用于排版和分行,以便在较大的容器中分隔内容。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Jumbotron()`\n>\n\n## 何时使用\n\n- 当需要展示巨大的标题和段落时使用"
  },
  {
    "path": "docs/loading-bar.md",
    "chars": 2202,
    "preview": "# LoadingBar 加载进度条\n\n全局创建一个显示页面加载、异步请求、文件上传等的加载进度条。\n\n> LoadingBar 只会在全局创建一个,因此在任何位置调用的方法都会控制这同一个组件。主要使用场景是路由切换和Ajax,因为这两者"
  },
  {
    "path": "docs/message.md",
    "chars": 5009,
    "preview": "# Message 全局提示\n\n全局展示操作反馈信息。\n\n## 何时使用\n\n- 可提供成功、警告和错误等反馈信息。\n- 顶部居中显示并自动消失,是一种不打断用户操作的轻量级提示方式。\n\n## 代码示例\n\n普通提示\n\n- 最基本的提示,默认在"
  },
  {
    "path": "docs/mini-modal.md",
    "chars": 3113,
    "preview": "# MiniModal 轻量对话框\n\n创建一次性的轻量级对话框。\n\n## 何时使用\n\n- 当需要一个简洁的确认框询问用户时,可以调用 `Rabbit.MiniModal.confirm()` 实例方法创建。\n\n## 代码示例\n\n基本用法\n\n"
  },
  {
    "path": "docs/modal.md",
    "chars": 6793,
    "preview": "# Modal 对话框\n\n模态对话框。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Modal()`\n\n## 何时使用\n\n- 需要用户处理事务,又不希望跳转页面以致打断工作流程时,可以使用 `Modal` 在"
  },
  {
    "path": "docs/notice.md",
    "chars": 5862,
    "preview": "# Notice 通知提醒框\n\n全局展示通知提醒信息。\n\n## 何时使用\n\n在系统四个角显示通知提醒信息。经常用于以下情况:\n\n- 较为复杂的通知内容。\n- 带有交互的通知,给出用户下一步的行动点。\n- 系统主动推送。\n\n## 代码示例\n\n"
  },
  {
    "path": "docs/page-header.md",
    "chars": 1216,
    "preview": "# PageHeader 页头\n\n页头位于页容器中,页容器顶部,起到了内容概览和引导页级操作的作用。包括由面包屑、标题、页面内容简介、页面级操作等、页面级导航组成。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit"
  },
  {
    "path": "docs/poptip.md",
    "chars": 8149,
    "preview": "# Poptip 气泡提示\n\n点击/鼠标移入元素,弹出气泡式的卡片浮层。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Poptip()`\n\n## 何时使用\n\n- 当目标元素有进一步的描述和相关操作时,可以收纳"
  },
  {
    "path": "docs/progress.md",
    "chars": 2864,
    "preview": "# Progress 进度条\n\n用于展示操作进度,告知用户当前状态和预期。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Progress()`\n\n## 何时使用\n\n- 在操作需要较长时间才能完成时,为用户显示"
  },
  {
    "path": "docs/radio.md",
    "chars": 6065,
    "preview": "# Radio 单选框\n\n单选框。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Radio()`\n\n## 何时使用\n\n- 用于在多个备选项中选中单个状态。\n- 和 Select 的区别是,Radio 所有选项"
  },
  {
    "path": "docs/result.md",
    "chars": 2885,
    "preview": "# Result 结果\n\n用于反馈一系列操作任务的处理结果。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Result()`。\n>\n> 该元素标签能够添加额外的子元素节点作为内容部分,并自动追加到指定的内部节"
  },
  {
    "path": "docs/skeleton.md",
    "chars": 2784,
    "preview": "# Skeleton 骨架屏\n\n在需要等待加载内容的位置提供一个占位图形组合。\n\n>注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Skeleton()`\n\n## 何时使用\n\n- 网络较慢,需要长时间等待加载处理的情况"
  },
  {
    "path": "docs/spin.md",
    "chars": 3175,
    "preview": "# Spin 加载中\n\n用于页面和区块的加载中状态。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Spin()`\n\n## 何时使用\n\n页面局部处于等待异步数据或正在渲染过程时,合适的加载动效会有效缓解用户的焦"
  },
  {
    "path": "docs/steps.md",
    "chars": 4106,
    "preview": "# Steps 步骤条\n\n引导用户按照流程完成任务的导航条。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Steps()`\n\n## 何时使用\n\n- 当任务复杂或者存在先后关系时,将其分解成一系列步骤,从而简化"
  },
  {
    "path": "docs/switch.md",
    "chars": 3141,
    "preview": "# Switch 开关\n\n开关选择器\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Switch()`\n\n## 何时使用\n\n- 需要表示开关状态/两种状态之间的切换时\n- 和 `checkbox`的区别是,切换"
  },
  {
    "path": "docs/tabs.md",
    "chars": 5585,
    "preview": "# Tabs 标签页\n\n选项卡切换组件。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Tabs()`\n\n## 何时使用\n\n- 提供平级的区域将大块内容进行收纳和展现,保持界面整洁。\n\nRabbitUI 依次提"
  },
  {
    "path": "docs/tag.md",
    "chars": 4064,
    "preview": "# Tag 标签\n\n进行标记和分类的小标签。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Tag()`\n\n## 何时使用\n\n- 用于标记事物的属性和维度。\n- 进行分类。\n\n## 代码示例\n\n基本用法\n\n- "
  },
  {
    "path": "docs/time.md",
    "chars": 1516,
    "preview": "# Time 相对时间\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Time()`\n\n常用于表示几分钟前、几小时前等相对于此时此刻的时间描述。\n\n## 代码示例\n\n基础用法\n\n- 为属性 `time` 设置一"
  },
  {
    "path": "docs/timeline.md",
    "chars": 2547,
    "preview": "# Timeline 时间轴\n\n可视化地呈现时间流信息。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Timeline()`\n\n## 何时使用\n\n- 当有一系列信息需按时间排列时,可正序和倒序。\n- 需要有一"
  },
  {
    "path": "docs/tooltip.md",
    "chars": 7002,
    "preview": "# Tooltip 文字提示\n\n简单的文字提示气泡框。\n\n> 注意:使用前需要先全局实例化一次该构造函数  `new Rabbit.Tooltip()`\n\n## 何时使用\n\n- 鼠标移入则显示提示,移出消失,气泡浮层不承载复杂文本和操作。\n"
  },
  {
    "path": "examples/README.md",
    "chars": 166,
    "preview": "# 运行测试\n\n1. 修改config文件夹下的webpack.dev.js里的代码, `plugins` ->  `new HtmlWebpackPlugin` -> `template`,\n修改其路径\n\n2. 把要测试的组件在main."
  },
  {
    "path": "examples/affix/index.html",
    "chars": 1245,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/affix/index.ts",
    "chars": 256,
    "preview": "import Rabbit from '../../src';\n\nexport default function affixTest(): void {\n    const affix = new Rabbit.Affix();\n\n    "
  },
  {
    "path": "examples/alert/index.html",
    "chars": 2825,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/alert/index.ts",
    "chars": 232,
    "preview": "import Rabbit from '../../src';\n\nexport default function alertTest(): void {\n    const Alert = new Rabbit.Alert();\n    A"
  },
  {
    "path": "examples/avatar/index.html",
    "chars": 1648,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/avatar/index.ts",
    "chars": 105,
    "preview": "import Rabbit from '../../src';\n\nexport default function avatarTest(): void {\n    new Rabbit.Avatar();\n}\n"
  },
  {
    "path": "examples/back-top/index.html",
    "chars": 618,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/back-top/index.ts",
    "chars": 107,
    "preview": "import Rabbit from '../../src';\n\nexport default function backtopTest(): void {\n    new Rabbit.BackTop();\n}\n"
  },
  {
    "path": "examples/badge/index.html",
    "chars": 4515,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "examples/badge/index.ts",
    "chars": 103,
    "preview": "import Rabbit from '../../src';\n\nexport default function badgeTest(): void {\n    new Rabbit.Badge();\n}\n"
  },
  {
    "path": "examples/breadcrumb/index.html",
    "chars": 1629,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/breadcrumb/index.ts",
    "chars": 113,
    "preview": "import Rabbit from '../../src';\n\nexport default function breadcrumbTest(): void {\n    new Rabbit.Breadcrumb();\n}\n"
  },
  {
    "path": "examples/button/index.html",
    "chars": 12250,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/button/index.ts",
    "chars": 315,
    "preview": "// @ts-nocheck\nimport Rabbit from '../../src';\n\nexport default function buttonTest(): void {\n    const btn = new Rabbit."
  },
  {
    "path": "examples/card/index.html",
    "chars": 2446,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/card/index.ts",
    "chars": 114,
    "preview": "import Rabbit from '../../src';\n\nexport default function cardTest(): void {\n    const card = new Rabbit.Card();\n}\n"
  },
  {
    "path": "examples/carousel/index.html",
    "chars": 2013,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/carousel/index.ts",
    "chars": 366,
    "preview": "import Rabbit from '../../src';\n\nexport default function carouselTest(): void {\n    const carousel = new Rabbit.Carousel"
  },
  {
    "path": "examples/checkbox/index.html",
    "chars": 2254,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/checkbox/index.ts",
    "chars": 1178,
    "preview": "import Rabbit from '../../src';\n\nexport default function checkboxTest(): void {\n    const checkbox = new Rabbit.Checkbox"
  },
  {
    "path": "examples/circle/index.html",
    "chars": 2814,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/circle/index.ts",
    "chars": 792,
    "preview": "import Rabbit from '../../src';\n\nexport default function circleTest(): void {\n    const circle = new Rabbit.Circle();\n\n "
  },
  {
    "path": "examples/collapse/index.html",
    "chars": 5126,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/collapse/index.ts",
    "chars": 253,
    "preview": "import Rabbit from '../../src';\n\nexport default function collapseTest(): void {\n    const collapse = new Rabbit.Collapse"
  },
  {
    "path": "examples/count-down/index.html",
    "chars": 588,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/count-down/index.ts",
    "chars": 606,
    "preview": "import Rabbit from '../../src';\n\nexport default function countDownTest(): void {\n    const countDown = new Rabbit.CountD"
  },
  {
    "path": "examples/divider/index.html",
    "chars": 2153,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/divider/index.ts",
    "chars": 123,
    "preview": "import Rabbit from '../../src';\n\nexport default function dividerTest(): void {\n    const divider = new Rabbit.Divider();"
  },
  {
    "path": "examples/drawer/index.html",
    "chars": 3576,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/drawer/index.ts",
    "chars": 1673,
    "preview": "import Rabbit from '../../src';\n\nexport default function drawerTest(): void {\n    const drawer = new Rabbit.Drawer();\n\n "
  },
  {
    "path": "examples/dropdown/index.html",
    "chars": 6036,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/dropdown/index.ts",
    "chars": 523,
    "preview": "import Rabbit from '../../src';\n\nexport default function dropdownTest(): void {\n    const dropdown = new Rabbit.Dropdown"
  },
  {
    "path": "examples/empty/index.html",
    "chars": 854,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/empty/index.ts",
    "chars": 117,
    "preview": "import Rabbit from '../../src';\n\nexport default function emptyTest(): void {\n    const empty = new Rabbit.Empty();\n}\n"
  },
  {
    "path": "examples/input-number/index.html",
    "chars": 1657,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/input-number/index.ts",
    "chars": 452,
    "preview": "import Rabbit from '../../src';\n\nexport default function inputNumberTest(): void {\n    const inputNumber = new Rabbit.In"
  },
  {
    "path": "examples/jumbotron/index.html",
    "chars": 1178,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/jumbotron/index.ts",
    "chars": 129,
    "preview": "import Rabbit from '../../src';\n\nexport default function jumbotronTest(): void {\n    const jumbotron = new Rabbit.Jumbot"
  },
  {
    "path": "examples/loading-bar/index.html",
    "chars": 593,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-widt"
  },
  {
    "path": "examples/loading-bar/index.ts",
    "chars": 542,
    "preview": "/* eslint-disable @typescript-eslint/ban-ts-comment */\nimport Rabbit from '../../src';\n\nexport default function loadingB"
  },
  {
    "path": "examples/main.ts",
    "chars": 2094,
    "preview": "import affixTest from './affix';\nimport alertTest from './alert';\nimport avatarTest from './avatar';\nimport backtopTest "
  },
  {
    "path": "examples/message/index.html",
    "chars": 2156,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/message/index.ts",
    "chars": 1640,
    "preview": "// @ts-nocheck\nimport Rabbit from '../../src';\n\nexport default function messaest(): void {\n    // 全局配置\n    // Rabbit.Mes"
  },
  {
    "path": "examples/mini-modal/index.html",
    "chars": 1024,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/mini-modal/index.ts",
    "chars": 2075,
    "preview": "import Rabbit from '../../src';\n\nexport default function miniModalTest(): void {\n    const title = '对话框标题';\n    const co"
  },
  {
    "path": "examples/modal/index.html",
    "chars": 3373,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/modal/index.ts",
    "chars": 1693,
    "preview": "import Rabbit from '../../src';\n\nexport default function modalTest(): void {\n    const modal = new Rabbit.Modal();\n\n    "
  },
  {
    "path": "examples/notice/index.html",
    "chars": 1631,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/notice/index.ts",
    "chars": 3149,
    "preview": "//@ts-nocheck\nimport Rabbit from '../../src';\n\nexport default function noticeTest(): void {\n    // Rabbit.Notice.config("
  },
  {
    "path": "examples/page-header/index.html",
    "chars": 516,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=e"
  },
  {
    "path": "examples/page-header/index.ts",
    "chars": 244,
    "preview": "import Rabbit from '../../src';\n\nexport default function pageHeaderTest(): void {\n    const pageHeader = new Rabbit.Page"
  },
  {
    "path": "examples/poptip/index.html",
    "chars": 5077,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" title=\"width=device-widt"
  },
  {
    "path": "examples/poptip/index.ts",
    "chars": 1708,
    "preview": "import Rabbit from '../../src';\n\nexport default function poptipTest(): void {\n    const poptip = new Rabbit.Poptip();\n\n "
  },
  {
    "path": "examples/progress/index.html",
    "chars": 2459,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/progress/index.ts",
    "chars": 220,
    "preview": "import Rabbit from '../../src';\n\nexport default function progressTest(): void {\n    const progress = new Rabbit.Progress"
  },
  {
    "path": "examples/radio/index.html",
    "chars": 4326,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/radio/index.ts",
    "chars": 380,
    "preview": "import Rabbit from '../../src';\n\nexport default function radioTest(): void {\n    const radio = new Rabbit.Radio();\n\n    "
  },
  {
    "path": "examples/result/index.html",
    "chars": 2662,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/result/index.ts",
    "chars": 117,
    "preview": "import Rabbit from '../../src';\n\nexport default function resultTest(): void {\n    const res = new Rabbit.Result();\n}\n"
  },
  {
    "path": "examples/skeleton/index.html",
    "chars": 2148,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/skeleton/index.ts",
    "chars": 126,
    "preview": "import Rabbit from '../../src';\n\nexport default function skeletonTest(): void {\n    const skeleton = new Rabbit.Skeleton"
  },
  {
    "path": "examples/spin/index.html",
    "chars": 2288,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/spin/index.ts",
    "chars": 807,
    "preview": "import Rabbit from '../../src';\n\nexport default function spinTest(): void {\n    const spin = new Rabbit.Spin();\n    cons"
  },
  {
    "path": "examples/steps/index.html",
    "chars": 2403,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/steps/index.ts",
    "chars": 601,
    "preview": "import Rabbit from '../../src';\n\nexport default function stepsTest(): void {\n    const steps = new Rabbit.Steps();\n\n    "
  },
  {
    "path": "examples/switch/index.html",
    "chars": 1425,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/switch/index.ts",
    "chars": 439,
    "preview": "import Rabbit from '../../src';\n\nexport default function switchTest(): void {\n    const Switch = new Rabbit.Switch();\n\n "
  },
  {
    "path": "examples/tabs/index.html",
    "chars": 4561,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/tabs/index.ts",
    "chars": 310,
    "preview": "import Rabbit from '../../src';\n\nexport default function tabsTest(): void {\n    const tabs = new Rabbit.Tabs();\n    tabs"
  },
  {
    "path": "examples/tag/index.html",
    "chars": 2671,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE"
  },
  {
    "path": "examples/tag/index.ts",
    "chars": 227,
    "preview": "import Rabbit from '../../src';\n\nexport default function tagTest(): void {\n    const tag = new Rabbit.Tag();\n    tag.con"
  },
  {
    "path": "examples/time/index.html",
    "chars": 1091,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/time/index.ts",
    "chars": 169,
    "preview": "import Rabbit from '../../src';\n// import 'dayjs/locale/af';\n\nexport default function timeTest(): void {\n    const time "
  },
  {
    "path": "examples/timeline/index.html",
    "chars": 3854,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/timeline/index.ts",
    "chars": 109,
    "preview": "import Rabbit from '../../src';\n\nexport default function timelineTest(): void {\n    new Rabbit.Timeline();\n}\n"
  },
  {
    "path": "examples/tooltip/index.html",
    "chars": 6509,
    "preview": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n    <meta charset=\"UTF-8\" />\n    <meta name=\"viewport\" content=\"width=device-wi"
  },
  {
    "path": "examples/tooltip/index.ts",
    "chars": 331,
    "preview": "import Rabbit from '../../src';\n\nexport default function tooltipTest(): void {\n    const tooltip = new Rabbit.Tooltip();"
  },
  {
    "path": "package.json",
    "chars": 2680,
    "preview": "{\n    \"name\": \"rabbit-simple-ui\",\n    \"version\": \"1.8.0\",\n    \"title\": \"RabbitUI\",\n    \"description\": \"A simple UI compo"
  },
  {
    "path": "postcss.config.js",
    "chars": 60,
    "preview": "module.exports = {\n    plugins: [require('autoprefixer')]\n};"
  },
  {
    "path": "prettier.config.js",
    "chars": 705,
    "preview": "// prettier.config.js or .prettierrc.js\nmodule.exports = {\n    // 一行最多 100 字符\n    printWidth: 100,\n    // 使用 4 个空格缩进\n   "
  },
  {
    "path": "site/.babelrc",
    "chars": 145,
    "preview": "{\n  \"plugins\": [\n    [\"import\", { \"libraryName\": \"ant-design-vue\", \"libraryDirectory\": \"es\", \"style\": true }] // `style:"
  },
  {
    "path": "site/.eslintrc.js",
    "chars": 1832,
    "preview": "module.exports = {\n    parser: 'vue-eslint-parser',\n    parserOptions: {\n        parser: '@typescript-eslint/parser',\n  "
  },
  {
    "path": "site/.gitignore",
    "chars": 45,
    "preview": "node_modules\n.DS_Store\ndist\ndist-ssr\n*.local\n"
  },
  {
    "path": "site/README.md",
    "chars": 1570,
    "preview": "# Vue 3 + Typescript + Vite\n\nThis template should help get you started developing with Vue 3 and Typescript in Vite.\n\n##"
  },
  {
    "path": "site/index.html",
    "chars": 666,
    "preview": "<!DOCTYPE html>\n\n<html lang=\"en\">\n  <head>\n    <meta charset=\"UTF-8\" />\n    <meta http-equiv=\"X-UA-Compatible\" content=\""
  },
  {
    "path": "site/package.json",
    "chars": 972,
    "preview": "{\n    \"name\": \"rabbitui-website\",\n    \"version\": \"1.0.0\",\n    \"scripts\": {\n        \"dev\": \"vite\",\n        \"build\": \"vue-"
  },
  {
    "path": "site/prettier.config.js",
    "chars": 479,
    "preview": "module.exports = {\n    printWidth: 100,\n    tabWidth: 2,\n    useTabs: false,\n    semi: false, // 未尾逗号\n    vueIndentScrip"
  },
  {
    "path": "site/src/App.vue",
    "chars": 1146,
    "preview": "<template>\n  <HomePage v-if=\"show\" />\n  <AppPage v-else />\n  <r-back-top />\n</template>\n\n<script lang=\"ts\" setup>\n  impo"
  },
  {
    "path": "site/src/components/Anchor.vue",
    "chars": 715,
    "preview": "<template>\n  <a-anchor wrapperClass=\"toc-affix\" showInkInFixed :affix=\"false\">\n    <a-anchor-link v-for=\"link in linkLis"
  },
  {
    "path": "site/src/components/CodeBox.vue",
    "chars": 2982,
    "preview": "<template>\n  <a-row class=\"code-box\">\n    <a-col class=\"code-box-demo\" :span=\"24\">\n      <section class=\"code-box-case\">"
  },
  {
    "path": "site/src/components/ColorCard.vue",
    "chars": 1113,
    "preview": "<template>\n  <a-row style=\"margin-left: -8px; margin-right: -8px\">\n    <a-col\n      :span=\"props.span\"\n      v-for=\"item"
  },
  {
    "path": "site/src/components/ExampleHeaderArea.vue",
    "chars": 956,
    "preview": "<template>\n  <h1>{{ props.name }} {{ props.title }}</h1>\n  <p>{{ desc }}</p>\n  <blockquote v-if=\"props.showTip\">\n    特别提"
  },
  {
    "path": "site/src/components/NavLogo.vue",
    "chars": 642,
    "preview": "<template>\n  <h1 class=\"header-nav-logo\">\n    <router-link to=\"/\" class=\"header-nav-logo-link\">\n      <img :src=\"Logo\" w"
  },
  {
    "path": "site/src/components/RowCol.vue",
    "chars": 134,
    "preview": "<template>\n  <a-row>\n    <a-col :xs=\"24\" :sm=\"24\" :md=\"6\" :lg=\"6\" :xl=\"4\" :xxl=\"4\">\n      <slot />\n    </a-col>\n  </a-ro"
  },
  {
    "path": "site/src/components/SearchInput.vue",
    "chars": 1001,
    "preview": "<template>\n  <a-select\n    v-model=\"value\"\n    show-search\n    placeholder=\"搜索组件...\"\n    not-found-content=\"没有找到相关组件\"\n  "
  },
  {
    "path": "site/src/components/index.ts",
    "chars": 326,
    "preview": "import NavLogo from './NavLogo.vue'\nimport Anchor from './Anchor.vue'\nimport CodeBox from './CodeBox.vue'\nimport ColorCa"
  },
  {
    "path": "site/src/examples-code/components/affix/APITable.vue",
    "chars": 2833,
    "preview": "<template>\n  <div class=\"\">\n    <h3><a name=\"affix\" class=\"md-header-anchor\"></a><span>Affix</span></h3>\n    <figure>\n  "
  },
  {
    "path": "site/src/examples-code/components/affix/Basic.vue",
    "chars": 4768,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/affix/FixedBottom.vue",
    "chars": 2746,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/affix/Offset.vue",
    "chars": 2743,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/affix/StatusChange.vue",
    "chars": 5153,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/affix/index.ts",
    "chars": 257,
    "preview": "import Basic from './Basic.vue'\nimport Offset from './Offset.vue'\nimport FixedBottom from './FixedBottom.vue'\nimport Sta"
  },
  {
    "path": "site/src/examples-code/components/alert/APITable.vue",
    "chars": 3837,
    "preview": "<template>\n  <div\n    ><h4><a name=\"alert\" class=\"md-header-anchor\"></a><span>Alert</span></h4\n    ><figure\n      ><tabl"
  },
  {
    "path": "site/src/examples-code/components/alert/Basic.vue",
    "chars": 3562,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/alert/WithBanner.vue",
    "chars": 3556,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/alert/WithClose.vue",
    "chars": 6415,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/alert/WithDesc.vue",
    "chars": 5798,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/alert/WithIcon.vue",
    "chars": 9519,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/alert/index.ts",
    "chars": 299,
    "preview": "import Basic from './Basic.vue'\nimport WithDesc from './WithDesc.vue'\nimport WithIcon from './WithIcon.vue'\nimport WithC"
  },
  {
    "path": "site/src/examples-code/components/avatar/APITable.vue",
    "chars": 3030,
    "preview": "<template>\n  <div\n    ><h3><a name=\"avatar\" class=\"md-header-anchor\"></a><span>Avatar</span></h3\n    ><figure\n      ><ta"
  },
  {
    "path": "site/src/examples-code/components/avatar/AutoFontSize.vue",
    "chars": 3588,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/avatar/Basic.vue",
    "chars": 5815,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/avatar/Type.vue",
    "chars": 4276,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/avatar/index.ts",
    "chars": 194,
    "preview": "import Basic from './Basic.vue'\nimport Type from './Type.vue'\nimport AutoFontSize from './AutoFontSize.vue'\nimport APITa"
  },
  {
    "path": "site/src/examples-code/components/back-top/APITable.vue",
    "chars": 1012,
    "preview": "<template>\n  <div class=\"\"\n    ><h3><a name=\"backtop\" class=\"md-header-anchor\"></a><span>BackTop</span></h3\n    ><figure"
  },
  {
    "path": "site/src/examples-code/components/back-top/Basic.vue",
    "chars": 2029,
    "preview": "<template>\n  <pre\n    spellcheck=\"false\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    lang=\""
  },
  {
    "path": "site/src/examples-code/components/back-top/CustomStyle.vue",
    "chars": 4944,
    "preview": "<template>\n  <pre\n    spellcheck=\"false\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    lang=\""
  },
  {
    "path": "site/src/examples-code/components/back-top/index.ts",
    "chars": 155,
    "preview": "import Basic from './Basic.vue'\nimport CustomStyle from './CustomStyle.vue'\nimport APITable from './APITable.vue'\n\nexpor"
  },
  {
    "path": "site/src/examples-code/components/badge/APITable.vue",
    "chars": 3576,
    "preview": "<template>\n  <div class=\"\"\n    ><h3><a name=\"badge\" class=\"md-header-anchor\"></a><span>Badge</span></h3\n    ><figure\n   "
  },
  {
    "path": "site/src/examples-code/components/badge/Alone.vue",
    "chars": 3869,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/Basic.vue",
    "chars": 5802,
    "preview": "<template>\n  <div>\n    <pre\n      lang=\"html\"\n      class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n   "
  },
  {
    "path": "site/src/examples-code/components/badge/Colors.vue",
    "chars": 11598,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/CustomContent.vue",
    "chars": 3620,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/CustomPosition.vue",
    "chars": 2472,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/MaxCount.vue",
    "chars": 5731,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/PresetColor.vue",
    "chars": 7991,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/RedDot.vue",
    "chars": 4689,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/StatusDot.vue",
    "chars": 7807,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/badge/index.ts",
    "chars": 526,
    "preview": "import Basic from './Basic.vue'\nimport RedDot from './RedDot.vue'\nimport MaxCount from './MaxCount.vue'\nimport Alone fro"
  },
  {
    "path": "site/src/examples-code/components/breadcrumb/APITable.vue",
    "chars": 543,
    "preview": "<template>\n  <div class=\"\"\n    ><h3><a name=\"breadcrumb\" class=\"md-header-anchor\"></a><span>Breadcrumb</span></h3\n    ><"
  },
  {
    "path": "site/src/examples-code/components/breadcrumb/Basic.vue",
    "chars": 3465,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/breadcrumb/Separator.vue",
    "chars": 7238,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/breadcrumb/WithIcon.vue",
    "chars": 6296,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/breadcrumb/index.ts",
    "chars": 197,
    "preview": "import Basic from './Basic.vue'\nimport WithIcon from './WithIcon.vue'\nimport Separator from './Separator.vue'\nimport API"
  },
  {
    "path": "site/src/examples-code/components/button/APITable.vue",
    "chars": 2088,
    "preview": "<template>\n  <div class=\"\">\n    <h3><a name=\"button\" class=\"md-header-anchor\"></a><span>Button</span></h3>\n    <figure>\n"
  },
  {
    "path": "site/src/examples-code/components/button/Disabled.vue",
    "chars": 4030,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Ghost.vue",
    "chars": 6842,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Group.vue",
    "chars": 38678,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/IconWithCircle.vue",
    "chars": 6699,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Loading.vue",
    "chars": 8308,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Long.vue",
    "chars": 2825,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Placement.vue",
    "chars": 4602,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Size.vue",
    "chars": 3326,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  },
  {
    "path": "site/src/examples-code/components/button/Type.vue",
    "chars": 6004,
    "preview": "<template>\n  <pre\n    lang=\"html\"\n    class=\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\"\n    spellcheck=\"f"
  }
]

// ... and 474 more files (download for full content)

About this extraction

This page contains the full source code of the niu-grandpa/rabbit-ui GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 674 files (3.1 MB), approximately 843.7k tokens, and a symbol index with 902 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.

Copied to clipboard!