@haoyulong1112/jh-ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/alert/index.d.ts +125 -0
- package/dist/components/alert/src/alert.vue.d.ts +73 -0
- package/dist/components/alert/src/props.d.ts +32 -0
- package/dist/components/alert/src/types.d.ts +2 -0
- package/dist/components/backtop/index.d.ts +102 -0
- package/dist/components/backtop/src/backtop.vue.d.ts +57 -0
- package/dist/components/backtop/src/props.d.ts +22 -0
- package/dist/components/backtop/src/types.d.ts +3 -0
- package/dist/components/badge/index.d.ts +101 -0
- package/dist/components/badge/src/badge.vue.d.ts +59 -0
- package/dist/components/badge/src/props.d.ts +24 -0
- package/dist/components/badge/src/types.d.ts +2 -0
- package/dist/components/button/index.d.ts +123 -0
- package/dist/components/button/src/button.vue.d.ts +69 -0
- package/dist/components/button/src/props.d.ts +33 -0
- package/dist/components/button/src/types.d.ts +3 -0
- package/dist/components/carousel/index.d.ts +187 -0
- package/dist/components/carousel/src/carousel-item.vue.d.ts +24 -0
- package/dist/components/carousel/src/carousel.vue.d.ts +86 -0
- package/dist/components/carousel/src/props.d.ts +44 -0
- package/dist/components/carousel/src/types.d.ts +11 -0
- package/dist/components/cascader/index.d.ts +68 -0
- package/dist/components/cascader/src/cascader.vue.d.ts +67 -0
- package/dist/components/cascader/src/props.d.ts +33 -0
- package/dist/components/cascader/src/types.d.ts +13 -0
- package/dist/components/checkbox/index.d.ts +139 -0
- package/dist/components/checkbox/src/checkbox-group.vue.d.ts +34 -0
- package/dist/components/checkbox/src/checkbox.vue.d.ts +44 -0
- package/dist/components/checkbox/src/props.d.ts +31 -0
- package/dist/components/checkbox/src/types.d.ts +8 -0
- package/dist/components/collapse/index.d.ts +120 -0
- package/dist/components/collapse/src/collapse-item.vue.d.ts +37 -0
- package/dist/components/collapse/src/collapse.vue.d.ts +33 -0
- package/dist/components/collapse/src/props.d.ts +24 -0
- package/dist/components/collapse/src/types.d.ts +8 -0
- package/dist/components/date-picker/index.d.ts +32 -0
- package/dist/components/date-picker/src/date-picker.vue.d.ts +30 -0
- package/dist/components/date-picker/src/props.d.ts +16 -0
- package/dist/components/date-picker/src/types.d.ts +1 -0
- package/dist/components/date-time-picker/index.d.ts +32 -0
- package/dist/components/date-time-picker/src/date-time-picker.vue.d.ts +30 -0
- package/dist/components/date-time-picker/src/props.d.ts +16 -0
- package/dist/components/date-time-picker/src/types.d.ts +1 -0
- package/dist/components/dialog/index.d.ts +97 -0
- package/dist/components/dialog/src/dialog.vue.d.ts +54 -0
- package/dist/components/dialog/src/props.d.ts +22 -0
- package/dist/components/dialog/src/types.d.ts +1 -0
- package/dist/components/drawer/index.d.ts +139 -0
- package/dist/components/drawer/src/drawer.vue.d.ts +79 -0
- package/dist/components/drawer/src/props.d.ts +33 -0
- package/dist/components/drawer/src/types.d.ts +2 -0
- package/dist/components/dropdown/index.d.ts +115 -0
- package/dist/components/dropdown/src/dropdown.vue.d.ts +67 -0
- package/dist/components/dropdown/src/props.d.ts +30 -0
- package/dist/components/dropdown/src/types.d.ts +9 -0
- package/dist/components/form/index.d.ts +127 -0
- package/dist/components/form/src/form-item.vue.d.ts +27 -0
- package/dist/components/form/src/form.vue.d.ts +45 -0
- package/dist/components/form/src/props.d.ts +24 -0
- package/dist/components/form/src/types.d.ts +19 -0
- package/dist/components/icon/index.d.ts +53 -0
- package/dist/components/icon/src/icon.vue.d.ts +31 -0
- package/dist/components/icon/src/props.d.ts +13 -0
- package/dist/components/icon/src/types.d.ts +1 -0
- package/dist/components/index.d.ts +6387 -0
- package/dist/components/infinite-scroll/index.d.ts +107 -0
- package/dist/components/infinite-scroll/src/infinite-scroll.vue.d.ts +59 -0
- package/dist/components/infinite-scroll/src/props.d.ts +21 -0
- package/dist/components/infinite-scroll/src/types.d.ts +5 -0
- package/dist/components/input/index.d.ts +110 -0
- package/dist/components/input/src/input.vue.d.ts +58 -0
- package/dist/components/input/src/props.d.ts +26 -0
- package/dist/components/input/src/types.d.ts +1 -0
- package/dist/components/link/index.d.ts +84 -0
- package/dist/components/link/src/link.vue.d.ts +48 -0
- package/dist/components/link/src/props.d.ts +23 -0
- package/dist/components/link/src/types.d.ts +2 -0
- package/dist/components/message/index.d.ts +7 -0
- package/dist/components/message/src/message.vue.d.ts +79 -0
- package/dist/components/message/src/props.d.ts +33 -0
- package/dist/components/message/src/types.d.ts +32 -0
- package/dist/components/message-box/index.d.ts +7 -0
- package/dist/components/message-box/src/message-box.vue.d.ts +101 -0
- package/dist/components/message-box/src/props.d.ts +42 -0
- package/dist/components/message-box/src/types.d.ts +27 -0
- package/dist/components/notification/index.d.ts +7 -0
- package/dist/components/notification/src/notification.vue.d.ts +95 -0
- package/dist/components/notification/src/props.d.ts +46 -0
- package/dist/components/notification/src/types.d.ts +36 -0
- package/dist/components/pagination/index.d.ts +45 -0
- package/dist/components/pagination/src/pagination.vue.d.ts +43 -0
- package/dist/components/pagination/src/props.d.ts +23 -0
- package/dist/components/pagination/src/types.d.ts +4 -0
- package/dist/components/radio/index.d.ts +112 -0
- package/dist/components/radio/src/props.d.ts +25 -0
- package/dist/components/radio/src/radio-group.vue.d.ts +27 -0
- package/dist/components/radio/src/radio.vue.d.ts +36 -0
- package/dist/components/radio/src/types.d.ts +8 -0
- package/dist/components/scrollbar/index.d.ts +60 -0
- package/dist/components/scrollbar/src/props.d.ts +14 -0
- package/dist/components/scrollbar/src/scrollbar.vue.d.ts +33 -0
- package/dist/components/scrollbar/src/types.d.ts +4 -0
- package/dist/components/select/index.d.ts +43 -0
- package/dist/components/select/src/props.d.ts +22 -0
- package/dist/components/select/src/select.vue.d.ts +42 -0
- package/dist/components/select/src/types.d.ts +6 -0
- package/dist/components/table/index.d.ts +147 -0
- package/dist/components/table/src/props.d.ts +31 -0
- package/dist/components/table/src/table.vue.d.ts +88 -0
- package/dist/components/table/src/types.d.ts +11 -0
- package/dist/components/tabs/index.d.ts +112 -0
- package/dist/components/tabs/src/props.d.ts +23 -0
- package/dist/components/tabs/src/tab-pane.vue.d.ts +35 -0
- package/dist/components/tabs/src/tabs.vue.d.ts +31 -0
- package/dist/components/tabs/src/types.d.ts +14 -0
- package/dist/components/text/index.d.ts +86 -0
- package/dist/components/text/src/props.d.ts +23 -0
- package/dist/components/text/src/text.vue.d.ts +51 -0
- package/dist/components/text/src/types.d.ts +3 -0
- package/dist/components/time-select/index.d.ts +64 -0
- package/dist/components/time-select/src/props.d.ts +29 -0
- package/dist/components/time-select/src/time-select.vue.d.ts +63 -0
- package/dist/components/time-select/src/types.d.ts +4 -0
- package/dist/components/tree/index.d.ts +167 -0
- package/dist/components/tree/src/props.d.ts +39 -0
- package/dist/components/tree/src/tree.vue.d.ts +97 -0
- package/dist/components/tree/src/types.d.ts +21 -0
- package/dist/components/upload/index.d.ts +89 -0
- package/dist/components/upload/src/props.d.ts +41 -0
- package/dist/components/upload/src/types.d.ts +11 -0
- package/dist/components/upload/src/upload.vue.d.ts +88 -0
- package/dist/components/waterfall/index.d.ts +195 -0
- package/dist/components/waterfall/src/props.d.ts +42 -0
- package/dist/components/waterfall/src/types.d.ts +17 -0
- package/dist/components/waterfall/src/waterfall.vue.d.ts +122 -0
- package/dist/es/components/alert/style/css.js +1 -0
- package/dist/es/components/alert/style/style.css +128 -0
- package/dist/es/components/backtop/style/css.js +1 -0
- package/dist/es/components/backtop/style/style.css +67 -0
- package/dist/es/components/badge/style/css.js +1 -0
- package/dist/es/components/badge/style/style.css +88 -0
- package/dist/es/components/button/style/css.js +1 -0
- package/dist/es/components/button/style/style.css +207 -0
- package/dist/es/components/carousel/style/css.js +1 -0
- package/dist/es/components/carousel/style/style.css +118 -0
- package/dist/es/components/cascader/style/css.js +1 -0
- package/dist/es/components/cascader/style/style.css +172 -0
- package/dist/es/components/checkbox/style/css.js +1 -0
- package/dist/es/components/checkbox/style/style.css +95 -0
- package/dist/es/components/collapse/style/css.js +1 -0
- package/dist/es/components/collapse/style/style.css +91 -0
- package/dist/es/components/date-picker/style/css.js +1 -0
- package/dist/es/components/date-picker/style/style.css +78 -0
- package/dist/es/components/date-time-picker/style/css.js +1 -0
- package/dist/es/components/date-time-picker/style/style.css +78 -0
- package/dist/es/components/dialog/style/css.js +1 -0
- package/dist/es/components/dialog/style/style.css +129 -0
- package/dist/es/components/drawer/style/css.js +1 -0
- package/dist/es/components/drawer/style/style.css +162 -0
- package/dist/es/components/dropdown/style/css.js +1 -0
- package/dist/es/components/dropdown/style/style.css +138 -0
- package/dist/es/components/form/style/css.js +1 -0
- package/dist/es/components/form/style/style.css +73 -0
- package/dist/es/components/icon/style/css.js +1 -0
- package/dist/es/components/icon/style/style.css +61 -0
- package/dist/es/components/infinite-scroll/style/css.js +1 -0
- package/dist/es/components/infinite-scroll/style/style.css +54 -0
- package/dist/es/components/input/style/css.js +1 -0
- package/dist/es/components/input/style/style.css +152 -0
- package/dist/es/components/link/style/css.js +1 -0
- package/dist/es/components/link/style/style.css +82 -0
- package/dist/es/components/message/style/css.js +1 -0
- package/dist/es/components/message/style/style.css +111 -0
- package/dist/es/components/message-box/style/css.js +1 -0
- package/dist/es/components/message-box/style/style.css +156 -0
- package/dist/es/components/notification/style/css.js +1 -0
- package/dist/es/components/notification/style/style.css +128 -0
- package/dist/es/components/pagination/style/css.js +1 -0
- package/dist/es/components/pagination/style/style.css +89 -0
- package/dist/es/components/radio/style/css.js +1 -0
- package/dist/es/components/radio/style/style.css +91 -0
- package/dist/es/components/scrollbar/style/css.js +1 -0
- package/dist/es/components/scrollbar/style/style.css +75 -0
- package/dist/es/components/select/style/css.js +1 -0
- package/dist/es/components/select/style/style.css +140 -0
- package/dist/es/components/table/style/css.js +1 -0
- package/dist/es/components/table/style/style.css +177 -0
- package/dist/es/components/tabs/style/css.js +1 -0
- package/dist/es/components/tabs/style/style.css +85 -0
- package/dist/es/components/text/style/css.js +1 -0
- package/dist/es/components/text/style/style.css +84 -0
- package/dist/es/components/time-select/style/css.js +1 -0
- package/dist/es/components/time-select/style/style.css +153 -0
- package/dist/es/components/tree/style/css.js +1 -0
- package/dist/es/components/tree/style/style.css +113 -0
- package/dist/es/components/upload/style/css.js +1 -0
- package/dist/es/components/upload/style/style.css +148 -0
- package/dist/es/components/waterfall/style/css.js +1 -0
- package/dist/es/components/waterfall/style/style.css +85 -0
- package/dist/index.cjs +2 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +63 -0
- package/dist/index.mjs +3341 -0
- package/dist/index.mjs.map +1 -0
- package/dist/resolver.cjs +2 -0
- package/dist/resolver.cjs.map +1 -0
- package/dist/resolver.d.ts +14 -0
- package/dist/resolver.mjs +59 -0
- package/dist/resolver.mjs.map +1 -0
- package/dist/utils/src/index.d.ts +1 -0
- package/dist/utils/src/install.d.ts +3 -0
- package/package.json +70 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../../utils/src/install.ts","../../components/icon/src/props.ts","../../components/icon/src/icon.vue","../../components/icon/index.ts","../../components/alert/src/props.ts","../../components/alert/src/alert.vue","../../components/alert/index.ts","../../components/backtop/src/props.ts","../../components/backtop/src/backtop.vue","../../components/backtop/index.ts","../../components/badge/src/props.ts","../../components/badge/src/badge.vue","../../components/badge/index.ts","../../components/button/src/props.ts","../../components/button/src/button.vue","../../components/button/index.ts","../../components/cascader/src/props.ts","../../components/cascader/src/cascader.vue","../../components/cascader/index.ts","../../components/carousel/src/types.ts","../../components/carousel/src/props.ts","../../components/carousel/src/carousel.vue","../../components/carousel/src/carousel-item.vue","../../components/carousel/index.ts","../../components/checkbox/src/props.ts","../../components/checkbox/src/types.ts","../../components/checkbox/src/checkbox.vue","../../components/checkbox/src/checkbox-group.vue","../../components/checkbox/index.ts","../../components/collapse/src/types.ts","../../components/collapse/src/props.ts","../../components/collapse/src/collapse.vue","../../components/collapse/src/collapse-item.vue","../../components/collapse/index.ts","../../components/date-picker/src/props.ts","../../components/date-picker/src/date-picker.vue","../../components/date-picker/index.ts","../../components/date-time-picker/src/props.ts","../../components/date-time-picker/src/date-time-picker.vue","../../components/date-time-picker/index.ts","../../components/dialog/src/props.ts","../../components/dialog/src/dialog.vue","../../components/dialog/index.ts","../../components/drawer/src/props.ts","../../components/drawer/src/drawer.vue","../../components/drawer/index.ts","../../components/dropdown/src/props.ts","../../components/dropdown/src/dropdown.vue","../../components/dropdown/index.ts","../../components/form/src/props.ts","../../components/form/src/types.ts","../../components/form/src/form.vue","../../components/form/src/form-item.vue","../../components/form/index.ts","../../components/infinite-scroll/src/props.ts","../../components/infinite-scroll/src/infinite-scroll.vue","../../components/infinite-scroll/index.ts","../../components/input/src/props.ts","../../components/input/src/input.vue","../../components/input/index.ts","../../components/link/src/props.ts","../../components/link/src/link.vue","../../components/link/index.ts","../../components/message/src/props.ts","../../components/message/src/message.vue","../../components/message/index.ts","../../components/message-box/src/props.ts","../../components/message-box/src/message-box.vue","../../components/message-box/index.ts","../../components/notification/src/props.ts","../../components/notification/src/notification.vue","../../components/notification/index.ts","../../components/pagination/src/props.ts","../../components/pagination/src/pagination.vue","../../components/pagination/index.ts","../../components/radio/src/props.ts","../../components/radio/src/types.ts","../../components/radio/src/radio.vue","../../components/radio/src/radio-group.vue","../../components/radio/index.ts","../../components/scrollbar/src/props.ts","../../components/scrollbar/src/scrollbar.vue","../../components/scrollbar/index.ts","../../components/select/src/props.ts","../../components/select/src/select.vue","../../components/select/index.ts","../../components/table/src/props.ts","../../components/table/src/table.vue","../../components/table/index.ts","../../components/tabs/src/types.ts","../../components/tabs/src/props.ts","../../components/tabs/src/tabs.vue","../../components/tabs/src/tab-pane.vue","../../components/tabs/index.ts","../../components/text/src/props.ts","../../components/text/src/text.vue","../../components/text/index.ts","../../components/time-select/src/props.ts","../../components/time-select/src/time-select.vue","../../components/time-select/index.ts","../../components/tree/src/props.ts","../../components/tree/src/tree.vue","../../components/tree/index.ts","../../components/upload/src/props.ts","../../components/upload/src/upload.vue","../../components/upload/index.ts","../../components/waterfall/src/props.ts","../../components/waterfall/src/waterfall.vue","../../components/waterfall/index.ts","../../components/index.ts","../src/index.ts"],"sourcesContent":["import type { App, Component, Plugin } from 'vue'\n\nexport type SFCWithInstall<T> = T & Plugin\n\nexport const withInstall = <T extends Component>(component: T) => {\n ;(component as SFCWithInstall<T>).install = (app: App) => {\n const name = component.name\n if (name) app.component(name, component)\n }\n\n return component as SFCWithInstall<T>\n}\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { IconName } from './types'\n\nexport const iconNames: IconName[] = [\n 'plus',\n 'close',\n 'search',\n 'eye',\n 'eye-off',\n 'loading',\n 'arrow-left',\n 'arrow-right'\n]\n\nexport const iconProps = {\n name: String as PropType<IconName>,\n size: {\n type: [Number, String] as PropType<number | string>,\n default: undefined\n },\n color: String,\n spin: Boolean\n} as const\n\nexport type IconProps = ExtractPropTypes<typeof iconProps>\n","<template>\n <span class=\"jh-icon\" :class=\"{ 'is-spin': spin || name === 'loading' }\" :style=\"iconStyle\">\n <svg\n v-if=\"name\"\n class=\"jh-icon__svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <template v-if=\"name === 'plus'\">\n <path d=\"M12 5v14\" />\n <path d=\"M5 12h14\" />\n </template>\n <template v-else-if=\"name === 'close'\">\n <path d=\"M18 6 6 18\" />\n <path d=\"m6 6 12 12\" />\n </template>\n <template v-else-if=\"name === 'search'\">\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"m20 20-3.5-3.5\" />\n </template>\n <template v-else-if=\"name === 'eye'\">\n <path d=\"M2 12s3.5-6 10-6 10 6 10 6-3.5 6-10 6S2 12 2 12Z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </template>\n <template v-else-if=\"name === 'eye-off'\">\n <path d=\"M3 3l18 18\" />\n <path d=\"M10.6 10.6a3 3 0 0 0 4.2 4.2\" />\n <path d=\"M9.9 5.3A10.6 10.6 0 0 1 12 5c6.5 0 10 7 10 7a17.2 17.2 0 0 1-3.2 4.2\" />\n <path d=\"M6.6 6.6C3.6 8.6 2 12 2 12s3.5 7 10 7c1 0 1.9-.2 2.8-.5\" />\n </template>\n <template v-else-if=\"name === 'loading'\">\n <path d=\"M21 12a9 9 0 1 1-6.2-8.6\" />\n </template>\n <template v-else-if=\"name === 'arrow-left'\">\n <path d=\"m15 18-6-6 6-6\" />\n </template>\n <template v-else-if=\"name === 'arrow-right'\">\n <path d=\"m9 18 6-6-6-6\" />\n </template>\n </svg>\n <slot v-else />\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { iconProps } from './props'\n\ndefineOptions({\n name: 'JhIcon'\n})\n\nconst props = defineProps(iconProps)\n\nconst iconStyle = computed(() => ({\n color: props.color,\n fontSize: typeof props.size === 'number' ? `${props.size}px` : props.size\n}))\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Icon from './src/icon.vue'\n\nexport const JhIcon = withInstall(Icon)\nexport default JhIcon\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { AlertEffect, AlertType } from './types'\n\nexport const alertTypes: AlertType[] = ['success', 'warning', 'info', 'danger']\nexport const alertEffects: AlertEffect[] = ['light', 'dark']\n\nexport const alertProps = {\n title: {\n type: String,\n default: ''\n },\n description: {\n type: String,\n default: ''\n },\n type: {\n type: String as PropType<AlertType>,\n default: 'info',\n validator: (value: AlertType) => alertTypes.includes(value)\n },\n effect: {\n type: String as PropType<AlertEffect>,\n default: 'light',\n validator: (value: AlertEffect) => alertEffects.includes(value)\n },\n closable: {\n type: Boolean,\n default: true\n },\n showIcon: Boolean\n} as const\n\nexport const alertEmits = {\n close: () => true\n}\n","<template>\n <div v-if=\"visible\" class=\"jh-alert\" :class=\"[`jh-alert--${type}`, `jh-alert--${effect}`]\" role=\"alert\">\n <span v-if=\"showIcon\" class=\"jh-alert__icon\" aria-hidden=\"true\" />\n <div class=\"jh-alert__content\">\n <div v-if=\"title || $slots.title\" class=\"jh-alert__title\">\n <slot name=\"title\">{{ title }}</slot>\n </div>\n <div v-if=\"description || $slots.default\" class=\"jh-alert__description\">\n <slot>{{ description }}</slot>\n </div>\n </div>\n <button v-if=\"closable\" class=\"jh-alert__close\" type=\"button\" aria-label=\"Close alert\" @click=\"handleClose\">\n <JhIcon name=\"close\" />\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { alertEmits, alertProps } from './props'\n\ndefineOptions({\n name: 'JhAlert'\n})\n\ndefineProps(alertProps)\nconst emit = defineEmits(alertEmits)\nconst visible = ref(true)\n\nconst handleClose = () => {\n visible.value = false\n emit('close')\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Alert from './src/alert.vue'\n\nexport const JhAlert = withInstall(Alert)\nexport default JhAlert\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { BacktopClickPayload } from './types'\n\nexport const backtopProps = {\n target: {\n type: String,\n default: ''\n },\n visibilityHeight: {\n type: Number,\n default: 200\n },\n right: {\n type: Number,\n default: 40\n },\n bottom: {\n type: Number,\n default: 40\n }\n} as const\n\nexport const backtopEmits = {\n click: (payload: BacktopClickPayload) => Boolean(payload.target)\n}\n","<template>\n <Transition name=\"jh-backtop-fade\">\n <button\n v-show=\"visible\"\n class=\"jh-backtop\"\n type=\"button\"\n :style=\"backtopStyle\"\n aria-label=\"Back to top\"\n @click=\"handleClick\"\n >\n <slot>\n <JhIcon name=\"arrow-left\" />\n </slot>\n </button>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { backtopEmits, backtopProps } from './props'\n\ndefineOptions({\n name: 'JhBacktop'\n})\n\nconst props = defineProps(backtopProps)\nconst emit = defineEmits(backtopEmits)\nconst visible = ref(false)\nconst scrollTarget = ref<Window | HTMLElement>()\n\nconst backtopStyle = computed(() => ({\n right: `${props.right}px`,\n bottom: `${props.bottom}px`\n}))\n\nconst getScrollTop = () => {\n const target = scrollTarget.value\n if (!target) return 0\n if (typeof window !== 'undefined' && target === window) {\n return window.scrollY || document.documentElement.scrollTop\n }\n return (target as HTMLElement).scrollTop\n}\n\nconst handleScroll = () => {\n visible.value = getScrollTop() >= props.visibilityHeight\n}\n\nconst resolveTarget = () => {\n if (!props.target) return window\n return document.querySelector<HTMLElement>(props.target) || window\n}\n\nconst bindScroll = () => {\n if (typeof window === 'undefined') return\n scrollTarget.value = resolveTarget()\n scrollTarget.value.addEventListener('scroll', handleScroll)\n handleScroll()\n}\n\nconst unbindScroll = () => {\n scrollTarget.value?.removeEventListener('scroll', handleScroll)\n}\n\nconst handleClick = () => {\n const target = scrollTarget.value\n if (!target) return\n if (typeof window !== 'undefined' && target === window) {\n window.scrollTo({ top: 0, behavior: 'smooth' })\n } else {\n const element = target as HTMLElement\n element.scrollTo({ top: 0, behavior: 'smooth' })\n }\n emit('click', { target })\n}\n\nonMounted(() => {\n nextTick(bindScroll)\n})\n\nonBeforeUnmount(() => {\n unbindScroll()\n})\n\ndefineExpose({\n handleScroll\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Backtop from './src/backtop.vue'\n\nexport const JhBacktop = withInstall(Backtop)\nexport default JhBacktop\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { BadgeType, BadgeValue } from './types'\n\nexport const badgeTypes: BadgeType[] = ['primary', 'success', 'warning', 'danger', 'info']\n\nexport const badgeProps = {\n value: {\n type: [String, Number] as PropType<BadgeValue>,\n default: ''\n },\n max: {\n type: Number,\n default: 0\n },\n type: {\n type: String as PropType<BadgeType>,\n default: 'danger',\n validator: (value: BadgeType) => badgeTypes.includes(value)\n },\n color: {\n type: String,\n default: ''\n },\n hidden: Boolean,\n isDot: Boolean\n} as const\n","<template>\n <span class=\"jh-badge\">\n <slot />\n <sup\n v-if=\"!hidden && (isDot || displayValue !== '')\"\n class=\"jh-badge__content\"\n :class=\"[`jh-badge__content--${type}`, { 'is-dot': isDot, 'is-custom-color': color }]\"\n :style=\"badgeStyle\"\n >\n <template v-if=\"!isDot\">{{ displayValue }}</template>\n </sup>\n </span>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { badgeProps } from './props'\n\ndefineOptions({\n name: 'JhBadge'\n})\n\nconst props = defineProps(badgeProps)\n\nconst displayValue = computed(() => {\n if (props.isDot) return ''\n if (typeof props.value === 'number' && props.max > 0 && props.value > props.max) {\n return `${props.max}+`\n }\n return props.value\n})\n\nconst badgeStyle = computed(() => (props.color ? { backgroundColor: props.color } : undefined))\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Badge from './src/badge.vue'\n\nexport const JhBadge = withInstall(Badge)\nexport default JhBadge\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { IconName } from '../../icon'\nimport type { ButtonNativeType, ButtonSize, ButtonType } from './types'\n\nexport const buttonTypes: ButtonType[] = [\n 'default',\n 'primary',\n 'success',\n 'warning',\n 'danger',\n 'info'\n]\nexport const buttonSizes: ButtonSize[] = ['small', 'default', 'large']\nexport const buttonNativeTypes: ButtonNativeType[] = ['button', 'submit', 'reset']\n\nexport const buttonProps = {\n type: {\n type: String as PropType<ButtonType>,\n default: 'default',\n validator: (value: ButtonType) => buttonTypes.includes(value)\n },\n size: {\n type: String as PropType<ButtonSize>,\n default: 'default',\n validator: (value: ButtonSize) => buttonSizes.includes(value)\n },\n disabled: Boolean,\n loading: Boolean,\n plain: Boolean,\n round: Boolean,\n circle: Boolean,\n icon: String as PropType<IconName>,\n nativeType: {\n type: String as PropType<ButtonNativeType>,\n default: 'button',\n validator: (value: ButtonNativeType) => buttonNativeTypes.includes(value)\n }\n} as const\n\nexport const buttonEmits = {\n click: (event: MouseEvent) => event instanceof MouseEvent\n}\n\nexport type ButtonProps = ExtractPropTypes<typeof buttonProps>\n","<template>\n <button\n class=\"jh-button\"\n :class=\"buttonClasses\"\n :type=\"nativeType\"\n :disabled=\"disabled || loading\"\n :aria-disabled=\"disabled || loading\"\n @click=\"handleClick\"\n >\n <JhIcon v-if=\"loading\" class=\"jh-button__loading\" name=\"loading\" />\n <JhIcon v-else-if=\"icon\" class=\"jh-button__icon\" :name=\"icon\" />\n <span v-if=\"$slots.default\" class=\"jh-button__content\">\n <slot />\n </span>\n </button>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { buttonEmits, buttonProps } from './props'\n\ndefineOptions({\n name: 'JhButton'\n})\n\nconst props = defineProps(buttonProps)\nconst emit = defineEmits(buttonEmits)\n\nconst buttonClasses = computed(() => [\n `jh-button--${props.type}`,\n props.size !== 'default' ? `jh-button--${props.size}` : '',\n {\n 'is-disabled': props.disabled,\n 'is-loading': props.loading,\n 'is-plain': props.plain,\n 'is-round': props.round,\n 'is-circle': props.circle\n }\n])\n\nconst handleClick = (event: MouseEvent) => {\n if (props.disabled || props.loading) return\n emit('click', event)\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Button from './src/button.vue'\n\nexport const JhButton = withInstall(Button)\nexport default JhButton\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { CascaderFieldNames, CascaderOption, CascaderValue } from './types'\n\nexport const cascaderProps = {\n modelValue: {\n type: Array as PropType<CascaderValue[]>,\n default: () => []\n },\n options: {\n type: Array as PropType<CascaderOption[]>,\n default: () => []\n },\n placeholder: {\n type: String,\n default: 'Please select'\n },\n disabled: Boolean,\n clearable: Boolean,\n separator: {\n type: String,\n default: ' / '\n },\n fieldNames: {\n type: Object as PropType<CascaderFieldNames>,\n default: () => ({})\n }\n} as const\n\nexport const cascaderEmits = {\n 'update:modelValue': (_value: CascaderValue[]) => true,\n change: (_value: CascaderValue[], _selectedOptions: CascaderOption[]) => true,\n 'visible-change': (_visible: boolean) => true,\n clear: () => true\n}\n\nexport type CascaderProps = ExtractPropTypes<typeof cascaderProps>\n","<template>\n <div ref=\"cascaderRef\" class=\"jh-cascader\" :class=\"cascaderClasses\">\n <button\n class=\"jh-cascader__trigger\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-expanded=\"visible\"\n @click=\"toggleVisible\"\n >\n <span class=\"jh-cascader__label\" :class=\"{ 'is-placeholder': !displayLabel }\">\n {{ displayLabel || placeholder }}\n </span>\n <button\n v-if=\"showClear\"\n class=\"jh-cascader__clear\"\n type=\"button\"\n aria-label=\"Clear cascader\"\n @click.stop=\"handleClear\"\n >\n <JhIcon name=\"close\" />\n </button>\n <JhIcon v-else class=\"jh-cascader__arrow\" name=\"arrow-right\" />\n </button>\n\n <Transition name=\"jh-cascader-fade\">\n <div v-if=\"visible\" class=\"jh-cascader__panel\">\n <ul v-for=\"(menu, level) in menus\" :key=\"level\" class=\"jh-cascader__menu\">\n <li v-for=\"option in menu\" :key=\"String(getValue(option))\" class=\"jh-cascader__menu-item\">\n <button\n class=\"jh-cascader__option\"\n :class=\"{\n 'is-active': isActive(option, level),\n 'is-disabled': isDisabled(option)\n }\"\n type=\"button\"\n :disabled=\"isDisabled(option)\"\n @click=\"handleOptionClick(option, level)\"\n >\n <span>{{ getLabel(option) }}</span>\n <JhIcon v-if=\"hasChildren(option)\" name=\"arrow-right\" class=\"jh-cascader__option-arrow\" />\n </button>\n </li>\n </ul>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { cascaderEmits, cascaderProps } from './props'\nimport type { CascaderOption, CascaderValue } from './types'\n\ndefineOptions({\n name: 'JhCascader'\n})\n\nconst props = defineProps(cascaderProps)\nconst emit = defineEmits(cascaderEmits)\n\nconst visible = ref(false)\nconst activePath = ref<CascaderValue[]>([])\nconst cascaderRef = ref<HTMLElement>()\n\nconst cascaderClasses = computed(() => ({\n 'is-disabled': props.disabled,\n 'is-visible': visible.value\n}))\n\nconst labelKey = computed(() => props.fieldNames.label || 'label')\nconst valueKey = computed(() => props.fieldNames.value || 'value')\nconst childrenKey = computed(() => props.fieldNames.children || 'children')\nconst disabledKey = computed(() => props.fieldNames.disabled || 'disabled')\n\nconst getLabel = (option: CascaderOption) => String(option[labelKey.value as keyof CascaderOption] ?? '')\nconst getValue = (option: CascaderOption) =>\n option[valueKey.value as keyof CascaderOption] as CascaderValue\nconst getChildren = (option: CascaderOption) =>\n (option[childrenKey.value as keyof CascaderOption] as CascaderOption[] | undefined) || []\nconst isDisabled = (option: CascaderOption) =>\n Boolean(option[disabledKey.value as keyof CascaderOption])\nconst hasChildren = (option: CascaderOption) => getChildren(option).length > 0\n\nconst resolvePath = (path: CascaderValue[]) => {\n const selectedOptions: CascaderOption[] = []\n let currentOptions = props.options\n\n for (const value of path) {\n const matched = currentOptions.find((option) => getValue(option) === value)\n if (!matched) break\n\n selectedOptions.push(matched)\n currentOptions = getChildren(matched)\n }\n\n return selectedOptions\n}\n\nconst selectedOptions = computed(() => resolvePath(props.modelValue))\nconst displayLabel = computed(() =>\n selectedOptions.value.length\n ? selectedOptions.value.map((option) => getLabel(option)).join(props.separator)\n : ''\n)\n\nconst menus = computed(() => {\n const result: CascaderOption[][] = []\n let currentOptions = props.options\n\n result.push(currentOptions)\n\n for (const value of activePath.value) {\n const matched = currentOptions.find((option) => getValue(option) === value)\n if (!matched) break\n\n const children = getChildren(matched)\n if (!children.length) break\n\n result.push(children)\n currentOptions = children\n }\n\n return result.filter((menu) => menu.length)\n})\n\nconst showClear = computed(\n () => props.clearable && !props.disabled && props.modelValue.length > 0\n)\n\nconst setVisible = (nextVisible: boolean) => {\n if (props.disabled) return\n if (visible.value === nextVisible) return\n\n visible.value = nextVisible\n emit('visible-change', nextVisible)\n}\n\nconst toggleVisible = () => {\n setVisible(!visible.value)\n}\n\nconst close = () => {\n setVisible(false)\n}\n\nconst isActive = (option: CascaderOption, level: number) => activePath.value[level] === getValue(option)\n\nconst handleOptionClick = (option: CascaderOption, level: number) => {\n if (isDisabled(option)) return\n\n const nextPath = activePath.value.slice(0, level)\n nextPath.push(getValue(option))\n activePath.value = nextPath\n\n if (hasChildren(option)) return\n\n const nextSelectedOptions = resolvePath(nextPath)\n emit('update:modelValue', [...nextPath])\n emit('change', [...nextPath], nextSelectedOptions)\n close()\n}\n\nconst handleClear = () => {\n activePath.value = []\n emit('update:modelValue', [])\n emit('change', [], [])\n emit('clear')\n close()\n}\n\nconst handleDocumentClick = (event: MouseEvent) => {\n if (!visible.value) return\n if (cascaderRef.value?.contains(event.target as Node)) return\n close()\n}\n\nwatch(\n () => visible.value,\n (nextVisible) => {\n if (nextVisible) {\n activePath.value = [...props.modelValue]\n document.addEventListener('click', handleDocumentClick)\n } else {\n document.removeEventListener('click', handleDocumentClick)\n }\n }\n)\n\nwatch(\n () => props.modelValue,\n (value) => {\n activePath.value = [...value]\n },\n { immediate: true }\n)\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', handleDocumentClick)\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Cascader from './src/cascader.vue'\n\nexport const JhCascader = withInstall(Cascader)\nexport default JhCascader\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { InjectionKey, Ref } from 'vue'\n\nexport type CarouselArrow = 'always' | 'hover' | 'never'\n\nexport interface CarouselItemContext {\n uid: symbol\n}\n\nexport interface CarouselContext {\n activeUid: Ref<symbol | undefined>\n registerItem: (item: CarouselItemContext) => void\n unregisterItem: (item: CarouselItemContext) => void\n}\n\nexport const carouselContextKey: InjectionKey<CarouselContext> = Symbol('carouselContextKey')\n","import type { PropType } from 'vue'\nimport type { CarouselArrow } from './types'\n\nexport const carouselArrows: CarouselArrow[] = ['always', 'hover', 'never']\n\nexport const carouselProps = {\n modelValue: {\n type: Number,\n default: undefined\n },\n height: {\n type: String,\n default: '200px'\n },\n autoplay: {\n type: Boolean,\n default: true\n },\n interval: {\n type: Number,\n default: 3000\n },\n loop: {\n type: Boolean,\n default: true\n },\n arrow: {\n type: String as PropType<CarouselArrow>,\n default: 'hover',\n validator: (value: CarouselArrow) => carouselArrows.includes(value)\n },\n indicator: {\n type: Boolean,\n default: true\n }\n} as const\n\nexport const carouselEmits = {\n 'update:modelValue': (value: number) => Number.isInteger(value),\n change: (current: number, previous: number) => Number.isInteger(current) && Number.isInteger(previous)\n}\n\nexport const carouselItemProps = {\n name: {\n type: String,\n default: ''\n }\n} as const\n","<template>\n <div class=\"jh-carousel\" :class=\"[`jh-carousel--arrow-${arrow}`]\" @mouseenter=\"pause\" @mouseleave=\"start\">\n <div class=\"jh-carousel__container\" :style=\"{ height }\">\n <slot />\n\n <button\n v-if=\"arrow !== 'never' && items.length > 1\"\n class=\"jh-carousel__arrow jh-carousel__arrow--left\"\n type=\"button\"\n aria-label=\"Previous\"\n @click=\"prev\"\n >\n <JhIcon name=\"arrow-left\" />\n </button>\n <button\n v-if=\"arrow !== 'never' && items.length > 1\"\n class=\"jh-carousel__arrow jh-carousel__arrow--right\"\n type=\"button\"\n aria-label=\"Next\"\n @click=\"next\"\n >\n <JhIcon name=\"arrow-right\" />\n </button>\n </div>\n\n <div v-if=\"indicator && items.length > 1\" class=\"jh-carousel__indicators\">\n <button\n v-for=\"(_, index) in items\"\n :key=\"index\"\n class=\"jh-carousel__indicator\"\n :class=\"{ 'is-active': index === activeIndex }\"\n type=\"button\"\n :aria-label=\"`Go to slide ${index + 1}`\"\n @click=\"setActive(index)\"\n />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, provide, ref, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { carouselContextKey, type CarouselItemContext } from './types'\nimport { carouselEmits, carouselProps } from './props'\n\ndefineOptions({\n name: 'JhCarousel'\n})\n\nconst props = defineProps(carouselProps)\nconst emit = defineEmits(carouselEmits)\n\nconst items = ref<CarouselItemContext[]>([])\nconst innerIndex = ref(props.modelValue ?? 0)\nconst activeUid = computed(() => items.value[activeIndex.value]?.uid)\nlet timer: number | undefined\n\nconst activeIndex = computed(() => {\n if (items.value.length === 0) return 0\n return Math.min(Math.max(innerIndex.value, 0), items.value.length - 1)\n})\n\nconst emitChange = (nextIndex: number, previousIndex: number) => {\n innerIndex.value = nextIndex\n emit('update:modelValue', nextIndex)\n if (nextIndex !== previousIndex) emit('change', nextIndex, previousIndex)\n}\n\nconst setActive = (index: number) => {\n if (items.value.length === 0) return\n const previousIndex = activeIndex.value\n const maxIndex = items.value.length - 1\n let nextIndex = index\n\n if (nextIndex < 0) nextIndex = props.loop ? maxIndex : 0\n if (nextIndex > maxIndex) nextIndex = props.loop ? 0 : maxIndex\n\n emitChange(nextIndex, previousIndex)\n}\n\nconst prev = () => setActive(activeIndex.value - 1)\nconst next = () => setActive(activeIndex.value + 1)\n\nconst clearTimer = () => {\n if (!timer) return\n window.clearInterval(timer)\n timer = undefined\n}\n\nconst start = () => {\n clearTimer()\n if (!props.autoplay || props.interval <= 0 || items.value.length <= 1) return\n timer = window.setInterval(next, props.interval)\n}\n\nconst pause = () => clearTimer()\n\nconst registerItem = (item: CarouselItemContext) => {\n items.value.push(item)\n start()\n}\n\nconst unregisterItem = (item: CarouselItemContext) => {\n items.value = items.value.filter((current) => current.uid !== item.uid)\n if (innerIndex.value > items.value.length - 1) innerIndex.value = Math.max(items.value.length - 1, 0)\n start()\n}\n\nprovide(carouselContextKey, {\n activeUid,\n registerItem,\n unregisterItem\n})\n\nwatch(\n () => props.modelValue,\n (value) => {\n if (typeof value === 'number') innerIndex.value = value\n }\n)\n\nwatch(\n () => [props.autoplay, props.interval, items.value.length],\n () => start()\n)\n\nonBeforeUnmount(() => {\n clearTimer()\n})\n</script>\n","<template>\n <div v-show=\"isActive\" class=\"jh-carousel__item\" :class=\"{ 'is-active': isActive }\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, onBeforeUnmount, onMounted } from 'vue'\nimport { carouselContextKey } from './types'\nimport { carouselItemProps } from './props'\n\ndefineOptions({\n name: 'JhCarouselItem'\n})\n\ndefineProps(carouselItemProps)\n\nconst carousel = inject(carouselContextKey, undefined)\nconst uid = Symbol('carouselItem')\nconst isActive = computed(() => carousel?.activeUid.value === uid)\n\nconst item = {\n uid\n}\n\nonMounted(() => {\n carousel?.registerItem(item)\n})\n\nonBeforeUnmount(() => {\n carousel?.unregisterItem(item)\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Carousel from './src/carousel.vue'\nimport CarouselItem from './src/carousel-item.vue'\n\nexport const JhCarousel = withInstall(Carousel)\nexport const JhCarouselItem = withInstall(CarouselItem)\nexport default JhCarousel\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { CheckboxValue } from './types'\n\nexport const checkboxProps = {\n modelValue: {\n type: [Boolean, Array] as PropType<boolean | CheckboxValue[]>,\n default: false\n },\n value: {\n type: [String, Number, Boolean] as PropType<CheckboxValue>,\n default: true\n },\n label: String,\n disabled: Boolean\n} as const\n\nexport const checkboxGroupProps = {\n modelValue: {\n type: Array as PropType<CheckboxValue[]>,\n default: () => []\n },\n disabled: Boolean\n} as const\n\nexport const checkboxEmits = {\n 'update:modelValue': (_value: boolean | CheckboxValue[]) => true,\n change: (_value: boolean | CheckboxValue[]) => true\n}\n\nexport const checkboxGroupEmits = {\n 'update:modelValue': (_value: CheckboxValue[]) => true,\n change: (_value: CheckboxValue[]) => true\n}\n\nexport type CheckboxProps = ExtractPropTypes<typeof checkboxProps>\nexport type CheckboxGroupProps = ExtractPropTypes<typeof checkboxGroupProps>\n","import type { InjectionKey } from 'vue'\n\nexport type CheckboxValue = string | number | boolean\n\nexport interface CheckboxGroupContext {\n modelValue: () => CheckboxValue[]\n disabled: () => boolean\n changeValue: (value: CheckboxValue, checked: boolean) => void\n}\n\nexport const checkboxGroupKey: InjectionKey<CheckboxGroupContext> = Symbol('JhCheckboxGroup')\n","<template>\n <label class=\"jh-checkbox\" :class=\"{ 'is-checked': checked, 'is-disabled': mergedDisabled }\">\n <span class=\"jh-checkbox__input\">\n <input\n class=\"jh-checkbox__original\"\n type=\"checkbox\"\n :checked=\"checked\"\n :disabled=\"mergedDisabled\"\n @change=\"handleChange\"\n />\n <span class=\"jh-checkbox__inner\" />\n </span>\n <span v-if=\"$slots.default || label\" class=\"jh-checkbox__label\">\n <slot>{{ label }}</slot>\n </span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { checkboxEmits, checkboxProps } from './props'\nimport { checkboxGroupKey } from './types'\n\ndefineOptions({\n name: 'JhCheckbox'\n})\n\nconst props = defineProps(checkboxProps)\nconst emit = defineEmits(checkboxEmits)\nconst group = inject(checkboxGroupKey, undefined)\n\nconst mergedDisabled = computed(() => props.disabled || Boolean(group?.disabled()))\nconst checked = computed(() => {\n if (group) return group.modelValue().includes(props.value)\n if (Array.isArray(props.modelValue)) return props.modelValue.includes(props.value)\n return Boolean(props.modelValue)\n})\n\nconst handleChange = (event: Event) => {\n const nextChecked = (event.target as HTMLInputElement).checked\n\n if (group) {\n group.changeValue(props.value, nextChecked)\n return\n }\n\n if (Array.isArray(props.modelValue)) {\n const nextValue = nextChecked\n ? [...props.modelValue, props.value]\n : props.modelValue.filter((item) => item !== props.value)\n emit('update:modelValue', nextValue)\n emit('change', nextValue)\n return\n }\n\n emit('update:modelValue', nextChecked)\n emit('change', nextChecked)\n}\n</script>\n","<template>\n <div class=\"jh-checkbox-group\" :class=\"{ 'is-disabled': disabled }\" role=\"group\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { provide } from 'vue'\nimport { checkboxGroupEmits, checkboxGroupProps } from './props'\nimport { checkboxGroupKey, type CheckboxValue } from './types'\n\ndefineOptions({\n name: 'JhCheckboxGroup'\n})\n\nconst props = defineProps(checkboxGroupProps)\nconst emit = defineEmits(checkboxGroupEmits)\n\nconst changeValue = (value: CheckboxValue, checked: boolean) => {\n const nextValue = checked\n ? [...props.modelValue, value]\n : props.modelValue.filter((item) => item !== value)\n\n emit('update:modelValue', nextValue)\n emit('change', nextValue)\n}\n\nprovide(checkboxGroupKey, {\n modelValue: () => props.modelValue,\n disabled: () => props.disabled,\n changeValue\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Checkbox from './src/checkbox.vue'\nimport CheckboxGroup from './src/checkbox-group.vue'\n\nexport const JhCheckbox = withInstall(Checkbox)\nexport const JhCheckboxGroup = withInstall(CheckboxGroup)\nexport default JhCheckbox\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { InjectionKey } from 'vue'\n\nexport type CollapseName = string | number\n\nexport type CollapseModelValue = CollapseName | CollapseName[]\n\nexport interface CollapseContext {\n isActive: (name: CollapseName) => boolean\n toggle: (name: CollapseName) => void\n}\n\nexport const collapseContextKey: InjectionKey<CollapseContext> = Symbol('collapseContextKey')\n","import type { PropType } from 'vue'\nimport type { CollapseModelValue, CollapseName } from './types'\n\nexport const collapseProps = {\n modelValue: {\n type: [String, Number, Array] as PropType<CollapseModelValue>,\n default: () => []\n },\n accordion: Boolean\n} as const\n\nexport const collapseEmits = {\n 'update:modelValue': (value: CollapseModelValue) =>\n typeof value === 'string' || typeof value === 'number' || Array.isArray(value),\n change: (value: CollapseModelValue) =>\n typeof value === 'string' || typeof value === 'number' || Array.isArray(value)\n}\n\nexport const collapseItemProps = {\n name: {\n type: [String, Number] as PropType<CollapseName>,\n required: true\n },\n title: {\n type: String,\n default: ''\n },\n disabled: Boolean\n} as const\n","<template>\n <div class=\"jh-collapse\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { provide } from 'vue'\nimport { collapseContextKey, type CollapseName } from './types'\nimport { collapseEmits, collapseProps } from './props'\n\ndefineOptions({\n name: 'JhCollapse'\n})\n\nconst props = defineProps(collapseProps)\nconst emit = defineEmits(collapseEmits)\n\nconst getActiveNames = () => (Array.isArray(props.modelValue) ? props.modelValue : [props.modelValue])\n\nconst isActive = (name: CollapseName) => getActiveNames().includes(name)\n\nconst toggle = (name: CollapseName) => {\n if (props.accordion) {\n const nextValue = isActive(name) ? '' : name\n emit('update:modelValue', nextValue)\n emit('change', nextValue)\n return\n }\n\n const activeNames = getActiveNames().filter((item) => item !== '')\n const nextValue = isActive(name)\n ? activeNames.filter((item) => item !== name)\n : [...activeNames, name]\n\n emit('update:modelValue', nextValue)\n emit('change', nextValue)\n}\n\nprovide(collapseContextKey, {\n isActive,\n toggle\n})\n</script>\n","<template>\n <div\n class=\"jh-collapse-item\"\n :class=\"{ 'is-active': active, 'is-disabled': disabled }\"\n >\n <button class=\"jh-collapse-item__header\" type=\"button\" :disabled=\"disabled\" @click=\"handleClick\">\n <slot name=\"title\">{{ title }}</slot>\n <JhIcon class=\"jh-collapse-item__arrow\" name=\"arrow-right\" />\n </button>\n <div v-show=\"active\" class=\"jh-collapse-item__wrap\">\n <div class=\"jh-collapse-item__content\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { collapseContextKey } from './types'\nimport { collapseItemProps } from './props'\n\ndefineOptions({\n name: 'JhCollapseItem'\n})\n\nconst props = defineProps(collapseItemProps)\nconst collapse = inject(collapseContextKey, undefined)\n\nconst active = computed(() => collapse?.isActive(props.name) ?? false)\n\nconst handleClick = () => {\n if (props.disabled) return\n collapse?.toggle(props.name)\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Collapse from './src/collapse.vue'\nimport CollapseItem from './src/collapse-item.vue'\n\nexport const JhCollapse = withInstall(Collapse)\nexport const JhCollapseItem = withInstall(CollapseItem)\nexport default JhCollapse\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes } from 'vue'\n\nexport const datePickerProps = {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean\n} as const\n\nexport const datePickerEmits = {\n 'update:modelValue': (_value: string) => true,\n change: (_value: string) => true,\n clear: () => true\n}\n\nexport type DatePickerProps = ExtractPropTypes<typeof datePickerProps>\n","<template>\n <div class=\"jh-date-picker\" :class=\"{ 'is-disabled': disabled }\">\n <input\n class=\"jh-date-picker__inner\"\n type=\"date\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n />\n <button v-if=\"showClear\" class=\"jh-date-picker__clear\" type=\"button\" @click=\"handleClear\">\n <JhIcon name=\"close\" />\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { datePickerEmits, datePickerProps } from './props'\n\ndefineOptions({\n name: 'JhDatePicker'\n})\n\nconst props = defineProps(datePickerProps)\nconst emit = defineEmits(datePickerEmits)\n\nconst showClear = computed(() => props.clearable && !props.disabled && Boolean(props.modelValue))\n\nconst handleInput = (event: Event) => {\n emit('update:modelValue', (event.target as HTMLInputElement).value)\n}\n\nconst handleChange = (event: Event) => {\n emit('change', (event.target as HTMLInputElement).value)\n}\n\nconst handleClear = () => {\n emit('update:modelValue', '')\n emit('change', '')\n emit('clear')\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport DatePicker from './src/date-picker.vue'\n\nexport const JhDatePicker = withInstall(DatePicker)\nexport default JhDatePicker\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes } from 'vue'\n\nexport const dateTimePickerProps = {\n modelValue: {\n type: String,\n default: ''\n },\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean\n} as const\n\nexport const dateTimePickerEmits = {\n 'update:modelValue': (_value: string) => true,\n change: (_value: string) => true,\n clear: () => true\n}\n\nexport type DateTimePickerProps = ExtractPropTypes<typeof dateTimePickerProps>\n","<template>\n <div class=\"jh-date-picker\" :class=\"{ 'is-disabled': disabled }\">\n <input\n class=\"jh-date-picker__inner\"\n type=\"datetime-local\"\n :value=\"modelValue\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n />\n <button v-if=\"showClear\" class=\"jh-date-picker__clear\" type=\"button\" @click=\"handleClear\">\n <JhIcon name=\"close\" />\n </button>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { dateTimePickerEmits, dateTimePickerProps } from './props'\n\ndefineOptions({\n name: 'JhDateTimePicker'\n})\n\nconst props = defineProps(dateTimePickerProps)\nconst emit = defineEmits(dateTimePickerEmits)\n\nconst showClear = computed(() => props.clearable && !props.disabled && Boolean(props.modelValue))\n\nconst handleInput = (event: Event) => {\n emit('update:modelValue', (event.target as HTMLInputElement).value)\n}\n\nconst handleChange = (event: Event) => {\n emit('change', (event.target as HTMLInputElement).value)\n}\n\nconst handleClear = () => {\n emit('update:modelValue', '')\n emit('change', '')\n emit('clear')\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport DateTimePicker from './src/date-time-picker.vue'\n\nexport const JhDateTimePicker = withInstall(DateTimePicker)\nexport default JhDateTimePicker\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { DialogBeforeClose } from './types'\n\nexport const dialogProps = {\n modelValue: Boolean,\n title: String,\n width: {\n type: String,\n default: '50%'\n },\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n beforeClose: Function as PropType<DialogBeforeClose>\n} as const\n\nexport const dialogEmits = {\n 'update:modelValue': (_value: boolean) => true,\n open: () => true,\n close: () => true,\n closed: () => true\n}\n\nexport type DialogProps = ExtractPropTypes<typeof dialogProps>\n","<template>\n <Teleport to=\"body\">\n <Transition name=\"jh-dialog-fade\" @after-leave=\"emit('closed')\">\n <div v-if=\"modelValue\" class=\"jh-overlay\" @click=\"handleModalClick\">\n <div\n class=\"jh-dialog\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"title || 'Dialog'\"\n :style=\"dialogStyle\"\n @click.stop\n >\n <header class=\"jh-dialog__header\">\n <slot name=\"header\">\n <span class=\"jh-dialog__title\">{{ title }}</span>\n </slot>\n <button class=\"jh-dialog__close\" type=\"button\" aria-label=\"Close dialog\" @click=\"requestClose\">\n x\n </button>\n </header>\n\n <section class=\"jh-dialog__body\">\n <slot />\n </section>\n\n <footer v-if=\"$slots.footer\" class=\"jh-dialog__footer\">\n <slot name=\"footer\" />\n </footer>\n </div>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, watch } from 'vue'\nimport { dialogEmits, dialogProps } from './props'\n\ndefineOptions({\n name: 'JhDialog'\n})\n\nconst props = defineProps(dialogProps)\nconst emit = defineEmits(dialogEmits)\n\nconst dialogStyle = computed(() => ({\n width: props.width\n}))\n\nconst close = () => {\n emit('update:modelValue', false)\n emit('close')\n}\n\nconst requestClose = () => {\n if (props.beforeClose) {\n props.beforeClose(close)\n return\n }\n\n close()\n}\n\nconst handleModalClick = () => {\n if (!props.closeOnClickModal) return\n requestClose()\n}\n\nwatch(\n () => props.modelValue,\n (visible) => {\n if (visible) emit('open')\n }\n)\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Dialog from './src/dialog.vue'\n\nexport const JhDialog = withInstall(Dialog)\nexport default JhDialog\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { DrawerBeforeClose, DrawerDirection } from './types'\n\nexport const drawerDirections: DrawerDirection[] = ['rtl', 'ltr', 'ttb', 'btt']\n\nexport const drawerProps = {\n modelValue: Boolean,\n title: {\n type: String,\n default: ''\n },\n size: {\n type: String,\n default: '30%'\n },\n direction: {\n type: String as PropType<DrawerDirection>,\n default: 'rtl',\n validator: (value: DrawerDirection) => drawerDirections.includes(value)\n },\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n beforeClose: {\n type: Function as PropType<DrawerBeforeClose>,\n default: undefined\n }\n} as const\n\nexport const drawerEmits = {\n 'update:modelValue': (_value: boolean) => true,\n open: () => true,\n close: () => true,\n closed: () => true\n}\n","<template>\n <Teleport to=\"body\">\n <Transition name=\"jh-drawer-fade\" @after-leave=\"emit('closed')\">\n <div\n v-if=\"modelValue\"\n class=\"jh-drawer-overlay\"\n :class=\"`jh-drawer-overlay--${direction}`\"\n @click=\"handleModalClick\"\n >\n <aside\n class=\"jh-drawer\"\n :class=\"`jh-drawer--${direction}`\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"title || 'Drawer'\"\n :style=\"drawerStyle\"\n @click.stop\n >\n <header class=\"jh-drawer__header\">\n <slot name=\"header\">\n <span class=\"jh-drawer__title\">{{ title }}</span>\n </slot>\n <button\n class=\"jh-drawer__close\"\n type=\"button\"\n aria-label=\"Close drawer\"\n @click=\"requestClose\"\n >\n <JhIcon name=\"close\" />\n </button>\n </header>\n <section class=\"jh-drawer__body\">\n <slot />\n </section>\n <footer v-if=\"$slots.footer\" class=\"jh-drawer__footer\">\n <slot name=\"footer\" />\n </footer>\n </aside>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { drawerEmits, drawerProps } from './props'\n\ndefineOptions({\n name: 'JhDrawer'\n})\n\nconst props = defineProps(drawerProps)\nconst emit = defineEmits(drawerEmits)\n\nconst drawerStyle = computed(() => {\n if (props.direction === 'ttb' || props.direction === 'btt') return { height: props.size }\n return { width: props.size }\n})\n\nconst close = () => {\n emit('update:modelValue', false)\n emit('close')\n}\n\nconst requestClose = () => {\n if (props.beforeClose) {\n props.beforeClose(close)\n return\n }\n close()\n}\n\nconst handleModalClick = () => {\n if (!props.closeOnClickModal) return\n requestClose()\n}\n\nwatch(\n () => props.modelValue,\n (visible) => {\n if (visible) emit('open')\n }\n)\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Drawer from './src/drawer.vue'\n\nexport const JhDrawer = withInstall(Drawer)\nexport default JhDrawer\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { DropdownCommand, DropdownOption, DropdownPlacement, DropdownTrigger } from './types'\n\nexport const dropdownTriggers: DropdownTrigger[] = ['click', 'hover']\nexport const dropdownPlacements: DropdownPlacement[] = ['bottom-start', 'bottom-end']\n\nexport const dropdownProps = {\n options: {\n type: Array as PropType<DropdownOption[]>,\n default: () => []\n },\n trigger: {\n type: String as PropType<DropdownTrigger>,\n default: 'click',\n validator: (value: DropdownTrigger) => dropdownTriggers.includes(value)\n },\n placement: {\n type: String as PropType<DropdownPlacement>,\n default: 'bottom-start',\n validator: (value: DropdownPlacement) => dropdownPlacements.includes(value)\n },\n disabled: Boolean,\n hideOnClick: {\n type: Boolean,\n default: true\n }\n} as const\n\nexport const dropdownEmits = {\n command: (_command: DropdownCommand, _option: DropdownOption) => true,\n 'visible-change': (_visible: boolean) => true\n}\n\nexport type DropdownProps = ExtractPropTypes<typeof dropdownProps>\n","<template>\n <div\n ref=\"dropdownRef\"\n class=\"jh-dropdown\"\n :class=\"dropdownClasses\"\n @mouseenter=\"handleMouseEnter\"\n @mouseleave=\"handleMouseLeave\"\n >\n <button\n v-if=\"!$slots.default\"\n class=\"jh-dropdown__trigger\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-expanded=\"visible\"\n aria-haspopup=\"menu\"\n @click=\"handleTriggerClick\"\n >\n Dropdown\n <JhIcon name=\"arrow-right\" class=\"jh-dropdown__arrow\" />\n </button>\n <div\n v-else\n class=\"jh-dropdown__trigger\"\n :aria-expanded=\"visible\"\n aria-haspopup=\"menu\"\n @click=\"handleTriggerClick\"\n >\n <slot />\n </div>\n\n <Transition name=\"jh-dropdown-fade\">\n <div v-if=\"visible\" class=\"jh-dropdown__menu\" role=\"menu\">\n <slot name=\"dropdown\">\n <button\n v-for=\"option in options\"\n :key=\"option.command\"\n class=\"jh-dropdown__item\"\n :class=\"{ 'is-disabled': option.disabled, 'is-divided': option.divided }\"\n type=\"button\"\n role=\"menuitem\"\n :disabled=\"option.disabled\"\n @click=\"handleOptionClick(option)\"\n >\n {{ option.label }}\n </button>\n </slot>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { dropdownEmits, dropdownProps } from './props'\nimport type { DropdownOption } from './types'\n\ndefineOptions({\n name: 'JhDropdown'\n})\n\nconst props = defineProps(dropdownProps)\nconst emit = defineEmits(dropdownEmits)\n\nconst visible = ref(false)\nconst dropdownRef = ref<HTMLElement>()\n\nconst dropdownClasses = computed(() => ({\n 'is-disabled': props.disabled,\n 'is-visible': visible.value,\n [`jh-dropdown--${props.placement}`]: true\n}))\n\nconst setVisible = (nextVisible: boolean) => {\n if (props.disabled) return\n if (visible.value === nextVisible) return\n\n visible.value = nextVisible\n emit('visible-change', nextVisible)\n}\n\nconst close = () => setVisible(false)\nconst toggle = () => setVisible(!visible.value)\n\nconst handleTriggerClick = () => {\n if (props.trigger !== 'click') return\n toggle()\n}\n\nconst handleMouseEnter = () => {\n if (props.trigger !== 'hover') return\n setVisible(true)\n}\n\nconst handleMouseLeave = () => {\n if (props.trigger !== 'hover') return\n close()\n}\n\nconst handleOptionClick = (option: DropdownOption) => {\n if (option.disabled) return\n\n emit('command', option.command, option)\n if (props.hideOnClick) close()\n}\n\nconst handleDocumentClick = (event: MouseEvent) => {\n if (!visible.value) return\n if (dropdownRef.value?.contains(event.target as Node)) return\n close()\n}\n\nwatch(\n () => visible.value,\n (nextVisible) => {\n if (props.trigger !== 'click') return\n\n if (nextVisible) {\n document.addEventListener('click', handleDocumentClick)\n } else {\n document.removeEventListener('click', handleDocumentClick)\n }\n }\n)\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', handleDocumentClick)\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Dropdown from './src/dropdown.vue'\n\nexport const JhDropdown = withInstall(Dropdown)\nexport default JhDropdown\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { FormRule, FormRules } from './types'\n\nexport const formProps = {\n model: {\n type: Object as PropType<Record<string, unknown>>,\n default: () => ({})\n },\n rules: {\n type: Object as PropType<FormRules>,\n default: () => ({})\n },\n labelWidth: {\n type: String,\n default: '100px'\n }\n} as const\n\nexport const formItemProps = {\n label: String,\n prop: String,\n rules: [Object, Array] as PropType<FormRule | FormRule[]>,\n required: Boolean\n} as const\n\nexport type FormProps = ExtractPropTypes<typeof formProps>\nexport type FormItemProps = ExtractPropTypes<typeof formItemProps>\n","import type { InjectionKey } from 'vue'\n\nexport interface FormRule {\n required?: boolean\n message?: string\n validator?: (value: unknown, model: Record<string, unknown>) => boolean | string | Promise<boolean | string>\n}\n\nexport type FormRules = Record<string, FormRule | FormRule[]>\n\nexport interface FormItemContext {\n prop?: string\n validate: () => Promise<boolean>\n resetField: () => void\n}\n\nexport interface FormContext {\n model: Record<string, unknown>\n rules: FormRules\n registerItem: (item: FormItemContext) => void\n unregisterItem: (item: FormItemContext) => void\n}\n\nexport const formContextKey: InjectionKey<FormContext> = Symbol('JhForm')\n","<template>\n <form class=\"jh-form\" :style=\"{ '--jh-form-label-width': labelWidth }\" @submit.prevent>\n <slot />\n </form>\n</template>\n\n<script setup lang=\"ts\">\nimport { provide, ref } from 'vue'\nimport { formProps } from './props'\nimport { formContextKey, type FormItemContext } from './types'\n\ndefineOptions({\n name: 'JhForm'\n})\n\nconst props = defineProps(formProps)\nconst fields = ref<FormItemContext[]>([])\n\nconst registerItem = (item: FormItemContext) => {\n fields.value.push(item)\n}\n\nconst unregisterItem = (item: FormItemContext) => {\n fields.value = fields.value.filter((field) => field !== item)\n}\n\nconst validate = async () => {\n const results = await Promise.all(fields.value.map((field) => field.validate()))\n return results.every(Boolean)\n}\n\nconst resetFields = () => {\n fields.value.forEach((field) => field.resetField())\n}\n\nprovide(formContextKey, {\n model: props.model,\n rules: props.rules,\n registerItem,\n unregisterItem\n})\n\ndefineExpose({\n validate,\n resetFields\n})\n</script>\n","<template>\n <div class=\"jh-form-item\" :class=\"{ 'is-error': Boolean(errorMessage), 'is-required': isRequired }\">\n <label v-if=\"label\" class=\"jh-form-item__label\">{{ label }}</label>\n <div class=\"jh-form-item__content\">\n <slot />\n <div v-if=\"errorMessage\" class=\"jh-form-item__error\">{{ errorMessage }}</div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, onBeforeUnmount, onMounted, ref } from 'vue'\nimport { formItemProps } from './props'\nimport { formContextKey } from './types'\n\ndefineOptions({\n name: 'JhFormItem'\n})\n\nconst props = defineProps(formItemProps)\nconst form = inject(formContextKey, undefined)\nconst errorMessage = ref('')\n\nconst rules = computed(() => {\n const propRules = props.prop ? form?.rules[props.prop] : undefined\n const mergedRules = props.rules || propRules || []\n return Array.isArray(mergedRules) ? mergedRules : [mergedRules]\n})\n\nconst isRequired = computed(() => props.required || rules.value.some((rule) => rule.required))\n\nconst getValue = () => (props.prop ? form?.model[props.prop] : undefined)\n\nconst validate = async () => {\n errorMessage.value = ''\n\n for (const rule of rules.value) {\n const value = getValue()\n\n if ((props.required || rule.required) && (value === '' || value === undefined || value === null)) {\n errorMessage.value = rule.message || `${props.label || props.prop || 'Field'} is required`\n return false\n }\n\n if (rule.validator) {\n const result = await rule.validator(value, form?.model || {})\n if (result !== true) {\n errorMessage.value = typeof result === 'string' ? result : rule.message || 'Validation failed'\n return false\n }\n }\n }\n\n return true\n}\n\nconst resetField = () => {\n if (props.prop && form?.model) {\n form.model[props.prop] = ''\n }\n errorMessage.value = ''\n}\n\nconst context = {\n prop: props.prop,\n validate,\n resetField\n}\n\nonMounted(() => {\n form?.registerItem(context)\n})\n\nonBeforeUnmount(() => {\n form?.unregisterItem(context)\n})\n\ndefineExpose({\n validate,\n resetField\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Form from './src/form.vue'\nimport FormItem from './src/form-item.vue'\n\nexport const JhForm = withInstall(Form)\nexport const JhFormItem = withInstall(FormItem)\nexport default JhForm\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { InfiniteScrollLoadPayload } from './types'\n\nexport const infiniteScrollProps = {\n height: {\n type: String,\n default: '240px'\n },\n distance: {\n type: Number,\n default: 0\n },\n delay: {\n type: Number,\n default: 200\n },\n disabled: Boolean,\n loading: Boolean,\n immediate: Boolean\n} as const\n\nexport const infiniteScrollEmits = {\n load: (payload: InfiniteScrollLoadPayload) =>\n Number.isFinite(payload.scrollTop) &&\n Number.isFinite(payload.clientHeight) &&\n Number.isFinite(payload.scrollHeight)\n}\n","<template>\n <div\n ref=\"containerRef\"\n class=\"jh-infinite-scroll\"\n :class=\"{ 'is-disabled': disabled, 'is-loading': loading }\"\n :style=\"{ height }\"\n @scroll=\"handleScroll\"\n >\n <slot />\n <div v-if=\"$slots.loading || loading\" class=\"jh-infinite-scroll__loading\">\n <slot name=\"loading\">Loading...</slot>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { nextTick, onMounted, ref } from 'vue'\nimport { infiniteScrollEmits, infiniteScrollProps } from './props'\n\ndefineOptions({\n name: 'JhInfiniteScroll'\n})\n\nconst props = defineProps(infiniteScrollProps)\nconst emit = defineEmits(infiniteScrollEmits)\nconst containerRef = ref<HTMLElement>()\nlet timer: number | undefined\n\nconst clearTimer = () => {\n if (!timer) return\n window.clearTimeout(timer)\n timer = undefined\n}\n\nconst shouldLoad = (element: HTMLElement) =>\n element.scrollHeight - element.scrollTop - element.clientHeight <= props.distance\n\nconst emitLoad = (element: HTMLElement) => {\n if (props.disabled || props.loading) return\n emit('load', {\n scrollTop: element.scrollTop,\n clientHeight: element.clientHeight,\n scrollHeight: element.scrollHeight\n })\n}\n\nconst check = () => {\n const element = containerRef.value\n if (!element || !shouldLoad(element)) return\n emitLoad(element)\n}\n\nconst handleScroll = () => {\n clearTimer()\n timer = window.setTimeout(check, props.delay)\n}\n\nonMounted(() => {\n if (!props.immediate) return\n nextTick(check)\n})\n\ndefineExpose({\n check\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport InfiniteScroll from './src/infinite-scroll.vue'\n\nexport const JhInfiniteScroll = withInstall(InfiniteScroll)\nexport default JhInfiniteScroll\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { IconName } from '../../icon'\nimport type { InputModelValue } from './types'\n\nexport const inputProps = {\n modelValue: {\n type: [String, Number] as PropType<InputModelValue>,\n default: ''\n },\n placeholder: String,\n disabled: Boolean,\n clearable: Boolean,\n password: Boolean,\n prefixIcon: String as PropType<IconName>,\n suffixIcon: String as PropType<IconName>,\n name: String,\n autocomplete: String\n} as const\n\nexport const inputEmits = {\n 'update:modelValue': (_value: InputModelValue) => true,\n input: (_value: InputModelValue) => true,\n change: (_value: InputModelValue) => true,\n clear: () => true,\n focus: (event: FocusEvent) => event instanceof FocusEvent,\n blur: (event: FocusEvent) => event instanceof FocusEvent\n}\n\nexport type InputProps = ExtractPropTypes<typeof inputProps>\n","<template>\n <div class=\"jh-input\" :class=\"inputClasses\">\n <span v-if=\"$slots.prefix || prefixIcon\" class=\"jh-input__prefix\">\n <slot name=\"prefix\">\n <JhIcon v-if=\"prefixIcon\" class=\"jh-input__icon\" :name=\"prefixIcon\" />\n </slot>\n </span>\n\n <input\n ref=\"inputRef\"\n class=\"jh-input__inner\"\n :value=\"modelValue\"\n :type=\"nativeType\"\n :name=\"name\"\n :placeholder=\"placeholder\"\n :disabled=\"disabled\"\n :autocomplete=\"autocomplete\"\n @input=\"handleInput\"\n @change=\"handleChange\"\n @focus=\"handleFocus\"\n @blur=\"handleBlur\"\n />\n\n <span v-if=\"showSuffix\" class=\"jh-input__suffix\">\n <button\n v-if=\"showClear\"\n class=\"jh-input__action\"\n type=\"button\"\n :disabled=\"disabled\"\n aria-label=\"Clear input\"\n @mousedown.prevent\n @click=\"handleClear\"\n >\n <JhIcon name=\"close\" />\n </button>\n <button\n v-else-if=\"password\"\n class=\"jh-input__action\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-label=\"passwordVisible ? 'Hide password' : 'Show password'\"\n @mousedown.prevent\n @click=\"togglePasswordVisible\"\n >\n <JhIcon :name=\"passwordVisible ? 'eye-off' : 'eye'\" />\n </button>\n <slot v-else name=\"suffix\">\n <JhIcon v-if=\"suffixIcon\" class=\"jh-input__icon\" :name=\"suffixIcon\" />\n </slot>\n </span>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { inputEmits, inputProps } from './props'\nimport type { InputModelValue } from './types'\n\ndefineOptions({\n name: 'JhInput'\n})\n\nconst props = defineProps(inputProps)\nconst emit = defineEmits(inputEmits)\n\nconst inputRef = ref<HTMLInputElement>()\nconst passwordVisible = ref(false)\nconst isFocused = ref(false)\n\nconst slots = defineSlots<{\n prefix?: () => unknown\n suffix?: () => unknown\n}>()\n\nconst nativeType = computed(() => (props.password && !passwordVisible.value ? 'password' : 'text'))\nconst hasValue = computed(() => props.modelValue !== '' && props.modelValue !== undefined)\nconst showClear = computed(() => props.clearable && !props.disabled && hasValue.value)\nconst showSuffix = computed(\n () => showClear.value || props.password || Boolean(props.suffixIcon) || Boolean(slots.suffix)\n)\n\nconst inputClasses = computed(() => ({\n 'is-disabled': props.disabled,\n 'is-focus': isFocused.value,\n 'jh-input--prefix': Boolean(slots.prefix) || Boolean(props.prefixIcon),\n 'jh-input--suffix': showSuffix.value\n}))\n\nconst emitValue = (value: InputModelValue) => {\n emit('update:modelValue', value)\n emit('input', value)\n}\n\nconst handleInput = (event: Event) => {\n emitValue((event.target as HTMLInputElement).value)\n}\n\nconst handleChange = (event: Event) => {\n emit('change', (event.target as HTMLInputElement).value)\n}\n\nconst handleClear = () => {\n if (props.disabled) return\n emitValue('')\n emit('clear')\n inputRef.value?.focus()\n}\n\nconst togglePasswordVisible = () => {\n if (props.disabled) return\n passwordVisible.value = !passwordVisible.value\n inputRef.value?.focus()\n}\n\nconst handleFocus = (event: FocusEvent) => {\n isFocused.value = true\n emit('focus', event)\n}\n\nconst handleBlur = (event: FocusEvent) => {\n isFocused.value = false\n emit('blur', event)\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Input from './src/input.vue'\n\nexport const JhInput = withInstall(Input)\nexport default JhInput\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { IconName } from '../../icon'\nimport type { LinkTarget, LinkType } from './types'\n\nexport const linkTypes: LinkType[] = ['default', 'primary', 'success', 'warning', 'danger', 'info']\n\nexport const linkProps = {\n type: {\n type: String as PropType<LinkType>,\n default: 'default',\n validator: (value: LinkType) => linkTypes.includes(value)\n },\n href: String,\n target: String as PropType<LinkTarget>,\n disabled: Boolean,\n underline: {\n type: Boolean,\n default: true\n },\n icon: String as PropType<IconName>\n} as const\n\nexport const linkEmits = {\n click: (event: MouseEvent) => event instanceof MouseEvent\n}\n\nexport type LinkProps = ExtractPropTypes<typeof linkProps>\n","<template>\n <a\n class=\"jh-link\"\n :class=\"linkClasses\"\n :href=\"disabled ? undefined : href\"\n :target=\"disabled ? undefined : target\"\n :aria-disabled=\"disabled\"\n @click=\"handleClick\"\n >\n <JhIcon v-if=\"icon\" class=\"jh-link__icon\" :name=\"icon\" />\n <span v-if=\"$slots.default\" class=\"jh-link__inner\">\n <slot />\n </span>\n </a>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { linkEmits, linkProps } from './props'\n\ndefineOptions({\n name: 'JhLink'\n})\n\nconst props = defineProps(linkProps)\nconst emit = defineEmits(linkEmits)\n\nconst linkClasses = computed(() => [\n `jh-link--${props.type}`,\n {\n 'is-disabled': props.disabled,\n 'is-underline': props.underline\n }\n])\n\nconst handleClick = (event: MouseEvent) => {\n if (props.disabled) {\n event.preventDefault()\n return\n }\n\n emit('click', event)\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Link from './src/link.vue'\n\nexport const JhLink = withInstall(Link)\nexport default JhLink\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { MessageType } from './types'\n\nexport const messageTypes: MessageType[] = ['success', 'warning', 'info', 'danger']\n\nexport const messageProps = {\n id: {\n type: String,\n required: true\n },\n message: {\n type: String,\n default: ''\n },\n type: {\n type: String as PropType<MessageType>,\n default: 'info',\n validator: (value: MessageType) => messageTypes.includes(value)\n },\n duration: {\n type: Number,\n default: 3000\n },\n showClose: Boolean,\n offset: {\n type: Number,\n default: 20\n },\n zIndex: {\n type: Number,\n default: 3000\n },\n onClose: Function as PropType<() => void>,\n onDestroy: Function as PropType<() => void>\n} as const\n","<template>\n <Transition name=\"jh-message-fade\" @after-leave=\"handleAfterLeave\">\n <div\n v-show=\"visible\"\n class=\"jh-message\"\n :class=\"`jh-message--${type}`\"\n role=\"alert\"\n :style=\"messageStyle\"\n @mouseenter=\"clearTimer\"\n @mouseleave=\"startTimer\"\n >\n <span class=\"jh-message__icon\" aria-hidden=\"true\" />\n <span class=\"jh-message__content\">\n <slot>{{ message }}</slot>\n </span>\n <button\n v-if=\"showClose\"\n class=\"jh-message__close\"\n type=\"button\"\n aria-label=\"Close message\"\n @click=\"close\"\n >\n <JhIcon name=\"close\" />\n </button>\n </div>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { messageProps } from './props'\n\ndefineOptions({\n name: 'JhMessage'\n})\n\nconst props = defineProps(messageProps)\nconst visible = ref(false)\nlet timer: ReturnType<typeof setTimeout> | undefined\n\nconst messageStyle = computed(() => ({\n top: `${props.offset}px`,\n zIndex: props.zIndex\n}))\n\nconst clearTimer = () => {\n if (!timer) return\n clearTimeout(timer)\n timer = undefined\n}\n\nconst close = () => {\n if (!visible.value) return\n visible.value = false\n props.onClose?.()\n}\n\nconst startTimer = () => {\n if (props.duration <= 0) return\n clearTimer()\n timer = setTimeout(close, props.duration)\n}\n\nconst handleAfterLeave = () => {\n props.onDestroy?.()\n}\n\nonMounted(() => {\n visible.value = true\n startTimer()\n})\n\nonBeforeUnmount(() => {\n clearTimer()\n})\n\ndefineExpose({\n close\n})\n</script>\n","import { createVNode, render } from 'vue'\nimport type { App } from 'vue'\nimport Message from './src/message.vue'\nimport type {\n MessageFn,\n MessageHandler,\n MessageInstance,\n MessageOptions,\n MessageType\n} from './src/types'\n\nconst instances: MessageInstance[] = []\nlet seed = 1\n\nconst normalizeOptions = (options: string | MessageOptions = {}): MessageOptions => {\n if (typeof options === 'string') return { message: options }\n return options\n}\n\nconst getOffset = (baseOffset: number) => baseOffset + instances.length * 56\n\nconst createMessage = (options: string | MessageOptions = {}): MessageHandler => {\n if (typeof document === 'undefined') {\n return { close: () => undefined }\n }\n\n const normalized = normalizeOptions(options)\n const container = document.createElement('div')\n const id = `jh-message-${seed++}`\n\n const close = () => {\n const instance = instances.find((item) => item.id === id)\n instance?.close()\n }\n\n const props = {\n id,\n message: normalized.message ?? '',\n type: normalized.type ?? 'info',\n duration: normalized.duration ?? 3000,\n showClose: normalized.showClose ?? false,\n offset: getOffset(normalized.offset ?? 20),\n zIndex: normalized.zIndex ?? 3000,\n onClose: normalized.onClose,\n onDestroy: () => {\n const index = instances.findIndex((item) => item.id === id)\n if (index > -1) instances.splice(index, 1)\n render(null, container)\n container.remove()\n }\n }\n\n const vnode = createVNode(Message, props)\n render(vnode, container)\n document.body.appendChild(container)\n\n instances.push({\n id,\n close: () => {\n const exposed = vnode.component?.exposed as { close?: () => void } | undefined\n exposed?.close?.()\n }\n })\n\n return { close }\n}\n\nconst typedMessage =\n (type: MessageType) =>\n (options: string | Omit<MessageOptions, 'type'> = {}) =>\n createMessage({\n ...normalizeOptions(options),\n type\n })\n\nexport const JhMessage = createMessage as MessageFn\nJhMessage.success = typedMessage('success')\nJhMessage.warning = typedMessage('warning')\nJhMessage.info = typedMessage('info')\nJhMessage.danger = typedMessage('danger')\nJhMessage.closeAll = () => {\n ;[...instances].forEach((instance) => instance.close())\n}\n\nJhMessage.install = (app: App) => {\n app.config.globalProperties.$message = JhMessage\n}\n\nexport default JhMessage\nexport { Message }\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { MessageBoxAction, MessageBoxType } from './types'\n\nexport const messageBoxTypes: MessageBoxType[] = ['success', 'warning', 'info', 'danger']\n\nexport const messageBoxProps = {\n title: {\n type: String,\n default: 'Message'\n },\n message: {\n type: String,\n default: ''\n },\n type: {\n type: String as PropType<MessageBoxType>,\n default: 'info',\n validator: (value: MessageBoxType) => messageBoxTypes.includes(value)\n },\n confirmButtonText: {\n type: String,\n default: 'OK'\n },\n cancelButtonText: {\n type: String,\n default: 'Cancel'\n },\n showCancelButton: Boolean,\n showClose: {\n type: Boolean,\n default: true\n },\n closeOnClickModal: {\n type: Boolean,\n default: true\n },\n zIndex: {\n type: Number,\n default: 3000\n },\n beforeClose: Function as PropType<(action: MessageBoxAction, done: () => void) => void>,\n onAction: Function as PropType<(action: MessageBoxAction) => void>,\n onDestroy: Function as PropType<() => void>\n} as const\n","<template>\n <Teleport to=\"body\">\n <Transition name=\"jh-message-box-fade\" @after-leave=\"handleAfterLeave\">\n <div\n v-if=\"visible\"\n class=\"jh-message-box-overlay\"\n :style=\"{ zIndex }\"\n @click=\"handleModalClick\"\n >\n <section\n class=\"jh-message-box\"\n :class=\"`jh-message-box--${type}`\"\n role=\"dialog\"\n aria-modal=\"true\"\n :aria-label=\"title\"\n @click.stop\n >\n <header class=\"jh-message-box__header\">\n <div class=\"jh-message-box__title\">{{ title }}</div>\n <button\n v-if=\"showClose\"\n class=\"jh-message-box__close\"\n type=\"button\"\n aria-label=\"Close message box\"\n @click=\"handleAction('close')\"\n >\n <JhIcon name=\"close\" />\n </button>\n </header>\n <div class=\"jh-message-box__body\">\n <span class=\"jh-message-box__status\" aria-hidden=\"true\" />\n <div class=\"jh-message-box__message\">\n <slot>{{ message }}</slot>\n </div>\n </div>\n <footer class=\"jh-message-box__footer\">\n <JhButton v-if=\"showCancelButton\" @click=\"handleAction('cancel')\">\n {{ cancelButtonText }}\n </JhButton>\n <JhButton type=\"primary\" @click=\"handleAction('confirm')\">\n {{ confirmButtonText }}\n </JhButton>\n </footer>\n </section>\n </div>\n </Transition>\n </Teleport>\n</template>\n\n<script setup lang=\"ts\">\nimport { onMounted, ref } from 'vue'\nimport { JhButton } from '../../button'\nimport { JhIcon } from '../../icon'\nimport { messageBoxProps } from './props'\nimport type { MessageBoxAction } from './types'\n\ndefineOptions({\n name: 'JhMessageBox'\n})\n\nconst props = defineProps(messageBoxProps)\nconst visible = ref(false)\nlet actionTriggered = false\n\nconst close = () => {\n visible.value = false\n}\n\nconst handleAction = (action: MessageBoxAction) => {\n if (actionTriggered) return\n const done = () => {\n actionTriggered = true\n props.onAction?.(action)\n close()\n }\n\n if (props.beforeClose) {\n props.beforeClose(action, done)\n return\n }\n done()\n}\n\nconst handleModalClick = () => {\n if (!props.closeOnClickModal) return\n handleAction('close')\n}\n\nconst handleAfterLeave = () => {\n props.onDestroy?.()\n}\n\nonMounted(() => {\n visible.value = true\n})\n\ndefineExpose({\n close: () => handleAction('close')\n})\n</script>\n","import { createVNode, render } from 'vue'\nimport type { App } from 'vue'\nimport MessageBox from './src/message-box.vue'\nimport type {\n MessageBoxAction,\n MessageBoxFn,\n MessageBoxInput,\n MessageBoxOptions\n} from './src/types'\n\nconst normalizeOptions = (options: MessageBoxInput = {}): MessageBoxOptions => {\n if (typeof options === 'string') return { message: options }\n return options\n}\n\nconst createMessageBox = (options: MessageBoxInput = {}) => {\n if (typeof document === 'undefined') {\n return Promise.resolve('close' as MessageBoxAction)\n }\n\n const normalized = normalizeOptions(options)\n const container = document.createElement('div')\n\n return new Promise<MessageBoxAction>((resolve) => {\n const props = {\n title: normalized.title ?? 'Message',\n message: normalized.message ?? '',\n type: normalized.type ?? 'info',\n confirmButtonText: normalized.confirmButtonText ?? 'OK',\n cancelButtonText: normalized.cancelButtonText ?? 'Cancel',\n showCancelButton: normalized.showCancelButton ?? false,\n showClose: normalized.showClose ?? true,\n closeOnClickModal: normalized.closeOnClickModal ?? true,\n zIndex: normalized.zIndex ?? 3000,\n beforeClose: normalized.beforeClose,\n onAction: (action: MessageBoxAction) => {\n resolve(action)\n },\n onDestroy: () => {\n render(null, container)\n container.remove()\n }\n }\n\n const vnode = createVNode(MessageBox, props)\n render(vnode, container)\n document.body.appendChild(container)\n })\n}\n\nexport const JhMessageBox = createMessageBox as MessageBoxFn\nJhMessageBox.alert = (message, title = 'Message', options = {}) =>\n createMessageBox({\n ...options,\n title,\n message,\n showCancelButton: false\n })\nJhMessageBox.confirm = (message, title = 'Message', options = {}) =>\n createMessageBox({\n ...options,\n title,\n message,\n showCancelButton: true\n })\nJhMessageBox.install = (app: App) => {\n app.config.globalProperties.$messageBox = JhMessageBox\n}\n\nexport default JhMessageBox\nexport { MessageBox }\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { NotificationPosition, NotificationType } from './types'\n\nexport const notificationTypes: NotificationType[] = ['success', 'warning', 'info', 'danger']\nexport const notificationPositions: NotificationPosition[] = [\n 'top-right',\n 'top-left',\n 'bottom-right',\n 'bottom-left'\n]\n\nexport const notificationProps = {\n id: {\n type: String,\n required: true\n },\n title: {\n type: String,\n default: ''\n },\n message: {\n type: String,\n default: ''\n },\n type: {\n type: String as PropType<NotificationType>,\n default: 'info',\n validator: (value: NotificationType) => notificationTypes.includes(value)\n },\n duration: {\n type: Number,\n default: 4500\n },\n showClose: {\n type: Boolean,\n default: true\n },\n position: {\n type: String as PropType<NotificationPosition>,\n default: 'top-right',\n validator: (value: NotificationPosition) => notificationPositions.includes(value)\n },\n offset: {\n type: Number,\n default: 20\n },\n zIndex: {\n type: Number,\n default: 3000\n },\n onClose: Function as PropType<() => void>,\n onDestroy: Function as PropType<() => void>\n} as const\n","<template>\n <Transition :name=\"transitionName\" @after-leave=\"handleAfterLeave\">\n <section\n v-show=\"visible\"\n class=\"jh-notification\"\n :class=\"[`jh-notification--${type}`, `jh-notification--${position}`]\"\n role=\"alert\"\n :style=\"notificationStyle\"\n @mouseenter=\"clearTimer\"\n @mouseleave=\"startTimer\"\n >\n <span class=\"jh-notification__status\" aria-hidden=\"true\" />\n <div class=\"jh-notification__content\">\n <div v-if=\"title\" class=\"jh-notification__title\">{{ title }}</div>\n <div v-if=\"message\" class=\"jh-notification__message\">{{ message }}</div>\n </div>\n <button\n v-if=\"showClose\"\n class=\"jh-notification__close\"\n type=\"button\"\n aria-label=\"Close notification\"\n @click=\"close\"\n >\n <JhIcon name=\"close\" />\n </button>\n </section>\n </Transition>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { notificationProps } from './props'\n\ndefineOptions({\n name: 'JhNotification'\n})\n\nconst props = defineProps(notificationProps)\nconst visible = ref(false)\nlet timer: ReturnType<typeof setTimeout> | undefined\n\nconst isRight = computed(() => props.position.endsWith('right'))\nconst isBottom = computed(() => props.position.startsWith('bottom'))\nconst transitionName = computed(() =>\n isRight.value ? 'jh-notification-slide-right' : 'jh-notification-slide-left'\n)\nconst notificationStyle = computed(() => ({\n zIndex: props.zIndex,\n [isRight.value ? 'right' : 'left']: '20px',\n [isBottom.value ? 'bottom' : 'top']: `${props.offset}px`\n}))\n\nconst clearTimer = () => {\n if (!timer) return\n clearTimeout(timer)\n timer = undefined\n}\n\nconst close = () => {\n if (!visible.value) return\n visible.value = false\n props.onClose?.()\n}\n\nconst startTimer = () => {\n if (props.duration <= 0) return\n clearTimer()\n timer = setTimeout(close, props.duration)\n}\n\nconst handleAfterLeave = () => {\n props.onDestroy?.()\n}\n\nonMounted(() => {\n visible.value = true\n startTimer()\n})\n\nonBeforeUnmount(() => {\n clearTimer()\n})\n\ndefineExpose({\n close\n})\n</script>\n","import { createVNode, render } from 'vue'\nimport type { App } from 'vue'\nimport Notification from './src/notification.vue'\nimport type {\n NotificationFn,\n NotificationHandler,\n NotificationInstance,\n NotificationOptions,\n NotificationPosition,\n NotificationType\n} from './src/types'\n\nconst instances: NotificationInstance[] = []\nlet seed = 1\n\nconst normalizeOptions = (options: string | NotificationOptions = {}): NotificationOptions => {\n if (typeof options === 'string') return { message: options }\n return options\n}\n\nconst getOffset = (position: NotificationPosition, baseOffset: number) =>\n baseOffset + instances.filter((item) => item.position === position).length * 92\n\nconst createNotification = (options: string | NotificationOptions = {}): NotificationHandler => {\n if (typeof document === 'undefined') {\n return { close: () => undefined }\n }\n\n const normalized = normalizeOptions(options)\n const position = normalized.position ?? 'top-right'\n const id = `jh-notification-${seed++}`\n const container = document.createElement('div')\n\n const close = () => {\n instances.find((item) => item.id === id)?.close()\n }\n\n const props = {\n id,\n title: normalized.title ?? '',\n message: normalized.message ?? '',\n type: normalized.type ?? 'info',\n duration: normalized.duration ?? 4500,\n showClose: normalized.showClose ?? true,\n position,\n offset: getOffset(position, normalized.offset ?? 20),\n zIndex: normalized.zIndex ?? 3000,\n onClose: normalized.onClose,\n onDestroy: () => {\n const index = instances.findIndex((item) => item.id === id)\n if (index > -1) instances.splice(index, 1)\n render(null, container)\n container.remove()\n }\n }\n\n const vnode = createVNode(Notification, props)\n render(vnode, container)\n document.body.appendChild(container)\n\n instances.push({\n id,\n position,\n close: () => {\n const exposed = vnode.component?.exposed as { close?: () => void } | undefined\n exposed?.close?.()\n }\n })\n\n return { close }\n}\n\nconst typedNotification =\n (type: NotificationType) =>\n (options: string | Omit<NotificationOptions, 'type'> = {}) =>\n createNotification({\n ...normalizeOptions(options),\n type\n })\n\nexport const JhNotification = createNotification as NotificationFn\nJhNotification.success = typedNotification('success')\nJhNotification.warning = typedNotification('warning')\nJhNotification.info = typedNotification('info')\nJhNotification.danger = typedNotification('danger')\nJhNotification.closeAll = () => {\n ;[...instances].forEach((instance) => instance.close())\n}\nJhNotification.install = (app: App) => {\n app.config.globalProperties.$notify = JhNotification\n}\n\nexport default JhNotification\nexport { Notification }\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes } from 'vue'\nimport type { PaginationChangePayload } from './types'\n\nexport const paginationProps = {\n currentPage: {\n type: Number,\n default: 1\n },\n pageSize: {\n type: Number,\n default: 10\n },\n total: {\n type: Number,\n default: 0\n },\n disabled: Boolean\n} as const\n\nexport const paginationEmits = {\n 'update:currentPage': (_page: number) => true,\n 'update:pageSize': (_pageSize: number) => true,\n 'page-change': (_payload: PaginationChangePayload) => true\n}\n\nexport type PaginationProps = ExtractPropTypes<typeof paginationProps>\n","<template>\n <nav class=\"jh-pagination\" :class=\"{ 'is-disabled': disabled }\" aria-label=\"Pagination\">\n <button\n class=\"jh-pagination__button\"\n type=\"button\"\n :disabled=\"disabled || safeCurrentPage <= 1\"\n aria-label=\"Previous page\"\n @click=\"changePage(safeCurrentPage - 1)\"\n >\n <JhIcon name=\"arrow-left\" />\n </button>\n\n <button\n v-for=\"page in pages\"\n :key=\"page\"\n class=\"jh-pagination__pager\"\n :class=\"{ 'is-active': page === safeCurrentPage }\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-current=\"page === safeCurrentPage ? 'page' : undefined\"\n @click=\"changePage(page)\"\n >\n {{ page }}\n </button>\n\n <button\n class=\"jh-pagination__button\"\n type=\"button\"\n :disabled=\"disabled || safeCurrentPage >= pageCount\"\n aria-label=\"Next page\"\n @click=\"changePage(safeCurrentPage + 1)\"\n >\n <JhIcon name=\"arrow-right\" />\n </button>\n\n <span class=\"jh-pagination__total\">Total {{ total }}</span>\n </nav>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { paginationEmits, paginationProps } from './props'\n\ndefineOptions({\n name: 'JhPagination'\n})\n\nconst props = defineProps(paginationProps)\nconst emit = defineEmits(paginationEmits)\n\nconst normalizedPageSize = computed(() => Math.max(1, props.pageSize || 1))\nconst pageCount = computed(() => Math.max(1, Math.ceil(props.total / normalizedPageSize.value)))\nconst safeCurrentPage = computed(() => clampPage(props.currentPage))\n\nconst pages = computed(() => {\n const count = pageCount.value\n const current = safeCurrentPage.value\n const maxPagerCount = 7\n\n if (count <= maxPagerCount) {\n return Array.from({ length: count }, (_, index) => index + 1)\n }\n\n let start = Math.max(1, current - 3)\n const end = Math.min(count, start + maxPagerCount - 1)\n start = Math.max(1, end - maxPagerCount + 1)\n\n return Array.from({ length: end - start + 1 }, (_, index) => start + index)\n})\n\nfunction clampPage(page: number) {\n if (!Number.isFinite(page)) return 1\n return Math.min(Math.max(1, Math.trunc(page)), pageCount.value)\n}\n\nfunction emitPageChange(page: number, pageSize = normalizedPageSize.value) {\n emit('update:currentPage', page)\n emit('page-change', {\n currentPage: page,\n pageSize\n })\n}\n\nfunction changePage(page: number) {\n if (props.disabled) return\n\n const nextPage = clampPage(page)\n if (nextPage === safeCurrentPage.value) return\n\n emitPageChange(nextPage)\n}\n\nwatch(\n () => props.pageSize,\n (pageSize, oldPageSize) => {\n const normalized = Math.max(1, pageSize || 1)\n if (normalized !== pageSize) {\n emit('update:pageSize', normalized)\n }\n\n if (oldPageSize === undefined) return\n\n const nextPage = clampPage(props.currentPage)\n if (nextPage !== props.currentPage) {\n emitPageChange(nextPage, normalized)\n }\n },\n { immediate: true }\n)\n\nwatch(\n () => props.currentPage,\n (page) => {\n const nextPage = clampPage(page)\n if (nextPage !== page) {\n emitPageChange(nextPage)\n }\n },\n { immediate: true }\n)\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Pagination from './src/pagination.vue'\n\nexport const JhPagination = withInstall(Pagination)\nexport default JhPagination\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { RadioValue } from './types'\n\nexport const radioProps = {\n modelValue: [String, Number, Boolean] as PropType<RadioValue>,\n value: {\n type: [String, Number, Boolean] as PropType<RadioValue>,\n required: true\n },\n label: String,\n disabled: Boolean\n} as const\n\nexport const radioGroupProps = {\n modelValue: [String, Number, Boolean] as PropType<RadioValue>,\n disabled: Boolean\n} as const\n\nexport const radioEmits = {\n 'update:modelValue': (_value: RadioValue) => true,\n change: (_value: RadioValue) => true\n}\n\nexport const radioGroupEmits = {\n 'update:modelValue': (_value: RadioValue) => true,\n change: (_value: RadioValue) => true\n}\n\nexport type RadioProps = ExtractPropTypes<typeof radioProps>\nexport type RadioGroupProps = ExtractPropTypes<typeof radioGroupProps>\n","import type { InjectionKey } from 'vue'\n\nexport type RadioValue = string | number | boolean\n\nexport interface RadioGroupContext {\n modelValue: () => RadioValue | undefined\n disabled: () => boolean\n changeValue: (value: RadioValue) => void\n}\n\nexport const radioGroupKey: InjectionKey<RadioGroupContext> = Symbol('JhRadioGroup')\n","<template>\n <label class=\"jh-radio\" :class=\"{ 'is-checked': checked, 'is-disabled': mergedDisabled }\">\n <span class=\"jh-radio__input\">\n <input\n class=\"jh-radio__original\"\n type=\"radio\"\n :checked=\"checked\"\n :disabled=\"mergedDisabled\"\n @change=\"handleChange\"\n />\n <span class=\"jh-radio__inner\" />\n </span>\n <span v-if=\"$slots.default || label\" class=\"jh-radio__label\">\n <slot>{{ label }}</slot>\n </span>\n </label>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { radioEmits, radioProps } from './props'\nimport { radioGroupKey } from './types'\n\ndefineOptions({\n name: 'JhRadio'\n})\n\nconst props = defineProps(radioProps)\nconst emit = defineEmits(radioEmits)\nconst group = inject(radioGroupKey, undefined)\n\nconst mergedDisabled = computed(() => props.disabled || Boolean(group?.disabled()))\nconst checked = computed(() => (group ? group.modelValue() === props.value : props.modelValue === props.value))\n\nconst handleChange = () => {\n if (mergedDisabled.value) return\n\n if (group) {\n group.changeValue(props.value)\n return\n }\n\n emit('update:modelValue', props.value)\n emit('change', props.value)\n}\n</script>\n","<template>\n <div class=\"jh-radio-group\" :class=\"{ 'is-disabled': disabled }\" role=\"radiogroup\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { provide } from 'vue'\nimport { radioGroupEmits, radioGroupProps } from './props'\nimport { radioGroupKey, type RadioValue } from './types'\n\ndefineOptions({\n name: 'JhRadioGroup'\n})\n\nconst props = defineProps(radioGroupProps)\nconst emit = defineEmits(radioGroupEmits)\n\nconst changeValue = (value: RadioValue) => {\n emit('update:modelValue', value)\n emit('change', value)\n}\n\nprovide(radioGroupKey, {\n modelValue: () => props.modelValue,\n disabled: () => props.disabled,\n changeValue\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Radio from './src/radio.vue'\nimport RadioGroup from './src/radio-group.vue'\n\nexport const JhRadio = withInstall(Radio)\nexport const JhRadioGroup = withInstall(RadioGroup)\nexport default JhRadio\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { ScrollbarScrollPayload } from './types'\n\nexport const scrollbarProps = {\n height: [String, Number] as PropType<string | number>,\n maxHeight: [String, Number] as PropType<string | number>,\n always: Boolean,\n native: Boolean,\n wrapClass: String,\n viewClass: String\n} as const\n\nexport const scrollbarEmits = {\n scroll: (_payload: ScrollbarScrollPayload) => true\n}\n\nexport type ScrollbarProps = ExtractPropTypes<typeof scrollbarProps>\n","<template>\n <div class=\"jh-scrollbar\" :class=\"{ 'is-always': always, 'is-native': native }\">\n <div\n ref=\"wrapRef\"\n class=\"jh-scrollbar__wrap\"\n :class=\"wrapClass\"\n :style=\"wrapStyle\"\n @scroll=\"handleScroll\"\n >\n <div class=\"jh-scrollbar__view\" :class=\"viewClass\">\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { scrollbarEmits, scrollbarProps } from './props'\n\ndefineOptions({\n name: 'JhScrollbar'\n})\n\nconst props = defineProps(scrollbarProps)\nconst emit = defineEmits(scrollbarEmits)\nconst wrapRef = ref<HTMLDivElement>()\n\nconst normalizeSize = (value?: string | number) => {\n if (typeof value === 'number') return `${value}px`\n return value\n}\n\nconst wrapStyle = computed(() => ({\n height: normalizeSize(props.height),\n maxHeight: normalizeSize(props.maxHeight)\n}))\n\nconst handleScroll = () => {\n if (!wrapRef.value) return\n emit('scroll', {\n scrollTop: wrapRef.value.scrollTop,\n scrollLeft: wrapRef.value.scrollLeft\n })\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Scrollbar from './src/scrollbar.vue'\n\nexport const JhScrollbar = withInstall(Scrollbar)\nexport default JhScrollbar\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { SelectOption, SelectValue } from './types'\n\nexport const selectProps = {\n modelValue: [String, Number] as PropType<SelectValue>,\n options: {\n type: Array as PropType<SelectOption[]>,\n default: () => []\n },\n placeholder: {\n type: String,\n default: 'Please select'\n },\n disabled: Boolean,\n clearable: Boolean\n} as const\n\nexport const selectEmits = {\n 'update:modelValue': (_value: SelectValue | undefined) => true,\n change: (_value: SelectValue | undefined, _option?: SelectOption) => true,\n 'visible-change': (_visible: boolean) => true,\n clear: () => true\n}\n\nexport type SelectProps = ExtractPropTypes<typeof selectProps>\n","<template>\n <div ref=\"selectRef\" class=\"jh-select\" :class=\"{ 'is-disabled': disabled, 'is-visible': visible }\">\n <button\n class=\"jh-select__trigger\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-expanded=\"visible\"\n @click=\"toggleVisible\"\n >\n <span class=\"jh-select__label\" :class=\"{ 'is-placeholder': !selectedOption }\">\n {{ selectedOption?.label || placeholder }}\n </span>\n <button v-if=\"showClear\" class=\"jh-select__clear\" type=\"button\" @click.stop=\"handleClear\">\n <JhIcon name=\"close\" />\n </button>\n <JhIcon v-else class=\"jh-select__arrow\" name=\"arrow-right\" />\n </button>\n\n <Transition name=\"jh-select-fade\">\n <div v-if=\"visible\" class=\"jh-select__menu\">\n <button\n v-for=\"option in options\"\n :key=\"option.value\"\n class=\"jh-select__option\"\n :class=\"{ 'is-active': option.value === modelValue, 'is-disabled': option.disabled }\"\n type=\"button\"\n :disabled=\"option.disabled\"\n @click=\"handleOptionClick(option)\"\n >\n {{ option.label }}\n </button>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { selectEmits, selectProps } from './props'\nimport type { SelectOption } from './types'\n\ndefineOptions({\n name: 'JhSelect'\n})\n\nconst props = defineProps(selectProps)\nconst emit = defineEmits(selectEmits)\nconst visible = ref(false)\nconst selectRef = ref<HTMLElement>()\n\nconst selectedOption = computed(() => props.options.find((option) => option.value === props.modelValue))\nconst showClear = computed(() => props.clearable && !props.disabled && props.modelValue !== undefined)\n\nconst setVisible = (nextVisible: boolean) => {\n if (props.disabled) return\n if (visible.value === nextVisible) return\n visible.value = nextVisible\n emit('visible-change', nextVisible)\n}\n\nconst toggleVisible = () => setVisible(!visible.value)\nconst close = () => setVisible(false)\n\nconst handleOptionClick = (option: SelectOption) => {\n if (option.disabled) return\n emit('update:modelValue', option.value)\n emit('change', option.value, option)\n close()\n}\n\nconst handleClear = () => {\n emit('update:modelValue', undefined)\n emit('change', undefined)\n emit('clear')\n close()\n}\n\nconst handleDocumentClick = (event: MouseEvent) => {\n if (!visible.value) return\n if (selectRef.value?.contains(event.target as Node)) return\n close()\n}\n\nwatch(\n () => visible.value,\n (nextVisible) => {\n if (nextVisible) document.addEventListener('click', handleDocumentClick)\n else document.removeEventListener('click', handleDocumentClick)\n }\n)\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', handleDocumentClick)\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Select from './src/select.vue'\n\nexport const JhSelect = withInstall(Select)\nexport default JhSelect\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { TableColumn, TableRow, TableRowKeyGetter, TableSelectable } from './types'\n\nexport const tableProps = {\n data: {\n type: Array as PropType<TableRow[]>,\n default: () => []\n },\n columns: {\n type: Array as PropType<TableColumn[]>,\n default: () => []\n },\n loading: Boolean,\n border: Boolean,\n stripe: Boolean,\n selection: Boolean,\n rowKey: {\n type: [String, Function] as PropType<TableRowKeyGetter>,\n default: undefined\n },\n selectable: Function as PropType<TableSelectable>,\n emptyText: {\n type: String,\n default: 'No Data'\n }\n} as const\n\nexport const tableEmits = {\n select: (_selection: TableRow[], _row: TableRow) => true,\n 'select-all': (_selection: TableRow[]) => true,\n 'selection-change': (_selection: TableRow[]) => true\n}\n\nexport type TableProps = ExtractPropTypes<typeof tableProps>\n","<template>\n <div class=\"jh-table\" :class=\"tableClasses\">\n <div class=\"jh-table__wrapper\">\n <table class=\"jh-table__table\">\n <colgroup>\n <col v-if=\"selection\" class=\"jh-table__selection-col\" />\n <col v-for=\"column in columns\" :key=\"column.prop\" :style=\"getColumnStyle(column)\" />\n </colgroup>\n <thead class=\"jh-table__header\">\n <tr>\n <th v-if=\"selection\" class=\"jh-table__cell jh-table__selection-cell\">\n <input\n ref=\"selectAllRef\"\n class=\"jh-table__selection\"\n type=\"checkbox\"\n aria-label=\"Select all rows\"\n :checked=\"isAllSelected\"\n :aria-checked=\"isIndeterminate ? 'mixed' : isAllSelected\"\n :disabled=\"!selectableRows.length\"\n @change=\"toggleSelectAll\"\n />\n </th>\n <th\n v-for=\"column in columns\"\n :key=\"column.prop\"\n class=\"jh-table__cell\"\n :class=\"getAlignClass(column)\"\n >\n {{ column.label }}\n </th>\n </tr>\n </thead>\n <tbody class=\"jh-table__body\">\n <tr v-for=\"(row, rowIndex) in data\" :key=\"rowIndex\" class=\"jh-table__row\">\n <td v-if=\"selection\" class=\"jh-table__cell jh-table__selection-cell\">\n <input\n class=\"jh-table__selection\"\n type=\"checkbox\"\n aria-label=\"Select row\"\n :checked=\"isRowSelected(row)\"\n :disabled=\"!isRowSelectable(row, rowIndex)\"\n @change=\"toggleRowSelection(row, rowIndex)\"\n />\n </td>\n <td\n v-for=\"column in columns\"\n :key=\"column.prop\"\n class=\"jh-table__cell\"\n :class=\"getAlignClass(column)\"\n >\n <slot\n v-if=\"column.slot && $slots[column.slot]\"\n :name=\"column.slot\"\n :row=\"row\"\n :column=\"column\"\n :index=\"rowIndex\"\n :value=\"row[column.prop]\"\n />\n <slot\n v-else-if=\"$slots.cell\"\n name=\"cell\"\n :row=\"row\"\n :column=\"column\"\n :index=\"rowIndex\"\n :value=\"row[column.prop]\"\n />\n <span v-else>{{ formatCellValue(row[column.prop]) }}</span>\n </td>\n </tr>\n </tbody>\n </table>\n\n <div v-if=\"!data.length && !loading\" class=\"jh-table__empty\">\n <slot name=\"empty\">{{ emptyText }}</slot>\n </div>\n\n <div v-if=\"loading\" class=\"jh-table__loading\" aria-live=\"polite\">\n <span class=\"jh-table__spinner\" aria-hidden=\"true\" />\n <span>Loading</span>\n </div>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch, watchEffect } from 'vue'\nimport { tableEmits, tableProps } from './props'\nimport type { TableColumn, TableRow, TableRowKey } from './types'\n\ndefineOptions({\n name: 'JhTable'\n})\n\nconst props = defineProps(tableProps)\nconst emit = defineEmits(tableEmits)\nconst selectedKeys = ref(new Set<TableRowKey>())\nconst selectAllRef = ref<HTMLInputElement>()\n\nconst tableClasses = computed(() => ({\n 'is-border': props.border,\n 'is-stripe': props.stripe,\n 'is-loading': props.loading,\n 'is-selection': props.selection\n}))\n\nconst getRowKey = (row: TableRow, index: number): TableRowKey => {\n if (typeof props.rowKey === 'function') return props.rowKey(row)\n if (typeof props.rowKey === 'string') {\n const value = row[props.rowKey]\n if (typeof value === 'string' || typeof value === 'number') return value\n }\n\n return index\n}\n\nconst isRowSelectable = (row: TableRow, index: number) =>\n props.selectable ? props.selectable(row, index) : true\n\nconst selectableRows = computed(() =>\n props.data\n .map((row, index) => ({ row, index, key: getRowKey(row, index) }))\n .filter(({ row, index }) => isRowSelectable(row, index))\n)\n\nconst selectedRows = computed(() =>\n props.data.filter((row, index) => selectedKeys.value.has(getRowKey(row, index)))\n)\n\nconst isAllSelected = computed(\n () =>\n Boolean(selectableRows.value.length) &&\n selectableRows.value.every(({ key }) => selectedKeys.value.has(key))\n)\n\nconst isIndeterminate = computed(\n () =>\n selectableRows.value.some(({ key }) => selectedKeys.value.has(key)) && !isAllSelected.value\n)\n\nwatchEffect(() => {\n if (selectAllRef.value) {\n selectAllRef.value.indeterminate = isIndeterminate.value\n }\n})\n\nwatch(\n () => [props.data, props.rowKey] as const,\n () => {\n const currentKeys = new Set(props.data.map((row, index) => getRowKey(row, index)))\n selectedKeys.value = new Set([...selectedKeys.value].filter((key) => currentKeys.has(key)))\n },\n { deep: true }\n)\n\nconst getAlignClass = (column: TableColumn) =>\n column.align && column.align !== 'left' ? `is-${column.align}` : ''\n\nconst getColumnStyle = (column: TableColumn) => {\n if (!column.width) return undefined\n const width = typeof column.width === 'number' ? `${column.width}px` : column.width\n return { width }\n}\n\nconst formatCellValue = (value: unknown) => {\n if (value === null || value === undefined) return ''\n return String(value)\n}\n\nconst emitSelectionChange = () => {\n emit('selection-change', selectedRows.value)\n}\n\nconst isRowSelected = (row: TableRow) => {\n const index = props.data.indexOf(row)\n return selectedKeys.value.has(getRowKey(row, index))\n}\n\nconst toggleRowSelection = (row: TableRow, index: number) => {\n if (!isRowSelectable(row, index)) return\n\n const nextSelectedKeys = new Set(selectedKeys.value)\n const key = getRowKey(row, index)\n\n if (nextSelectedKeys.has(key)) {\n nextSelectedKeys.delete(key)\n } else {\n nextSelectedKeys.add(key)\n }\n\n selectedKeys.value = nextSelectedKeys\n emit('select', selectedRows.value, row)\n emitSelectionChange()\n}\n\nconst toggleSelectAll = () => {\n const nextSelectedKeys = new Set(selectedKeys.value)\n\n if (isAllSelected.value) {\n selectableRows.value.forEach(({ key }) => nextSelectedKeys.delete(key))\n } else {\n selectableRows.value.forEach(({ key }) => nextSelectedKeys.add(key))\n }\n\n selectedKeys.value = nextSelectedKeys\n emit('select-all', selectedRows.value)\n emitSelectionChange()\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Table from './src/table.vue'\n\nexport const JhTable = withInstall(Table)\nexport default JhTable\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { InjectionKey, Ref } from 'vue'\n\nexport type TabName = string | number\n\nexport interface TabsPaneContext {\n uid: symbol\n name: TabName\n label: string\n disabled: boolean\n}\n\nexport interface TabsContext {\n activeName: Ref<TabName>\n registerPane: (pane: TabsPaneContext) => void\n unregisterPane: (pane: TabsPaneContext) => void\n}\n\nexport const tabsContextKey: InjectionKey<TabsContext> = Symbol('tabsContextKey')\n","import type { PropType } from 'vue'\nimport type { TabName } from './types'\n\nexport const tabsProps = {\n modelValue: {\n type: [String, Number] as PropType<TabName>,\n default: ''\n }\n} as const\n\nexport const tabsEmits = {\n 'update:modelValue': (value: TabName) => typeof value === 'string' || typeof value === 'number',\n change: (value: TabName) => typeof value === 'string' || typeof value === 'number'\n}\n\nexport const tabPaneProps = {\n label: {\n type: String,\n default: ''\n },\n name: {\n type: [String, Number] as PropType<TabName>,\n required: true\n },\n disabled: Boolean\n} as const\n","<template>\n <div class=\"jh-tabs\">\n <div class=\"jh-tabs__nav\" role=\"tablist\">\n <button\n v-for=\"pane in panes\"\n :key=\"pane.name\"\n class=\"jh-tabs__tab\"\n :class=\"{ 'is-active': pane.name === activeName, 'is-disabled': pane.disabled }\"\n type=\"button\"\n role=\"tab\"\n :disabled=\"pane.disabled\"\n :aria-selected=\"pane.name === activeName\"\n @click=\"handleTabClick(pane)\"\n >\n {{ pane.label }}\n </button>\n </div>\n <div class=\"jh-tabs__content\">\n <slot />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, provide, ref, watch } from 'vue'\nimport { tabsContextKey, type TabName, type TabsPaneContext } from './types'\nimport { tabsEmits, tabsProps } from './props'\n\ndefineOptions({\n name: 'JhTabs'\n})\n\nconst props = defineProps(tabsProps)\nconst emit = defineEmits(tabsEmits)\nconst panes = ref<TabsPaneContext[]>([])\nconst innerActiveName = ref<TabName>(props.modelValue)\nconst activeName = computed(() => innerActiveName.value || panes.value[0]?.name || '')\n\nconst setActiveName = (name: TabName) => {\n innerActiveName.value = name\n emit('update:modelValue', name)\n emit('change', name)\n}\n\nconst handleTabClick = (pane: TabsPaneContext) => {\n if (pane.disabled) return\n if (pane.name === activeName.value) return\n setActiveName(pane.name)\n}\n\nconst registerPane = (pane: TabsPaneContext) => {\n panes.value.push(pane)\n if (!innerActiveName.value) innerActiveName.value = pane.name\n}\n\nconst unregisterPane = (pane: TabsPaneContext) => {\n panes.value = panes.value.filter((item) => item.uid !== pane.uid)\n}\n\nprovide(tabsContextKey, {\n activeName,\n registerPane,\n unregisterPane\n})\n\nwatch(\n () => props.modelValue,\n (value) => {\n innerActiveName.value = value\n }\n)\n</script>\n","<template>\n <div v-show=\"active\" class=\"jh-tab-pane\" role=\"tabpanel\">\n <slot />\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, inject, onBeforeUnmount, onMounted, watch } from 'vue'\nimport { tabsContextKey, type TabsPaneContext } from './types'\nimport { tabPaneProps } from './props'\n\ndefineOptions({\n name: 'JhTabPane'\n})\n\nconst props = defineProps(tabPaneProps)\nconst tabs = inject(tabsContextKey, undefined)\nconst uid = Symbol('tabPane')\nconst pane = computed<TabsPaneContext>(() => ({\n uid,\n name: props.name,\n label: props.label || String(props.name),\n disabled: props.disabled\n}))\nconst active = computed(() => tabs?.activeName.value === props.name)\n\nonMounted(() => {\n tabs?.registerPane(pane.value)\n})\n\nonBeforeUnmount(() => {\n tabs?.unregisterPane(pane.value)\n})\n\nwatch(\n () => [props.label, props.name, props.disabled],\n () => {\n tabs?.unregisterPane(pane.value)\n tabs?.registerPane(pane.value)\n }\n)\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Tabs from './src/tabs.vue'\nimport TabPane from './src/tab-pane.vue'\n\nexport const JhTabs = withInstall(Tabs)\nexport const JhTabPane = withInstall(TabPane)\nexport default JhTabs\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { ExtractPropTypes, PropType } from 'vue'\nimport type { TextSize, TextTag, TextType } from './types'\n\nexport const textTypes: TextType[] = ['default', 'primary', 'success', 'warning', 'danger', 'info']\nexport const textSizes: TextSize[] = ['small', 'default', 'large']\n\nexport const textProps = {\n type: {\n type: String as PropType<TextType>,\n default: 'default',\n validator: (value: TextType) => textTypes.includes(value)\n },\n size: {\n type: String as PropType<TextSize>,\n default: 'default',\n validator: (value: TextSize) => textSizes.includes(value)\n },\n tag: {\n type: String as PropType<TextTag>,\n default: 'span'\n },\n truncated: Boolean,\n lineClamp: Number\n} as const\n\nexport type TextProps = ExtractPropTypes<typeof textProps>\n","<template>\n <component :is=\"tag\" class=\"jh-text\" :class=\"textClasses\" :style=\"textStyle\">\n <slot />\n </component>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { textProps } from './props'\n\ndefineOptions({\n name: 'JhText'\n})\n\nconst props = defineProps(textProps)\n\nconst textClasses = computed(() => [\n `jh-text--${props.type}`,\n props.size !== 'default' ? `jh-text--${props.size}` : '',\n {\n 'is-truncated': props.truncated,\n 'is-line-clamp': Boolean(props.lineClamp)\n }\n])\n\nconst textStyle = computed(() =>\n props.lineClamp\n ? {\n '--jh-text-line-clamp': props.lineClamp\n }\n : undefined\n)\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Text from './src/text.vue'\n\nexport const JhText = withInstall(Text)\nexport default JhText\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { TimeSelectOption } from './types'\n\nexport const timeSelectProps = {\n modelValue: {\n type: String,\n default: ''\n },\n start: {\n type: String,\n default: '09:00'\n },\n end: {\n type: String,\n default: '18:00'\n },\n step: {\n type: String,\n default: '00:30'\n },\n placeholder: {\n type: String,\n default: 'Select time'\n },\n disabled: Boolean,\n clearable: Boolean\n} as const\n\nexport const timeSelectEmits = {\n 'update:modelValue': (value: string) => typeof value === 'string',\n change: (value: string, option?: TimeSelectOption) => typeof value === 'string' && (!option || Boolean(option))\n}\n","<template>\n <div\n ref=\"timeSelectRef\"\n class=\"jh-time-select\"\n :class=\"{ 'is-disabled': disabled, 'is-visible': visible }\"\n >\n <button\n class=\"jh-time-select__trigger\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-expanded=\"visible\"\n @click=\"toggleVisible\"\n >\n <span class=\"jh-time-select__label\" :class=\"{ 'is-placeholder': !modelValue }\">\n {{ modelValue || placeholder }}\n </span>\n <button v-if=\"showClear\" class=\"jh-time-select__clear\" type=\"button\" @click.stop=\"handleClear\">\n <JhIcon name=\"close\" />\n </button>\n <JhIcon v-else class=\"jh-time-select__arrow\" name=\"arrow-right\" />\n </button>\n\n <Transition name=\"jh-time-select-fade\">\n <div v-if=\"visible\" class=\"jh-time-select__menu\">\n <button\n v-for=\"option in options\"\n :key=\"option.value\"\n class=\"jh-time-select__option\"\n :class=\"{ 'is-active': option.value === modelValue }\"\n type=\"button\"\n @click=\"handleOptionClick(option)\"\n >\n {{ option.label }}\n </button>\n <div v-if=\"options.length === 0\" class=\"jh-time-select__empty\">No data</div>\n </div>\n </Transition>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, ref, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { timeSelectEmits, timeSelectProps } from './props'\nimport type { TimeSelectOption } from './types'\n\ndefineOptions({\n name: 'JhTimeSelect'\n})\n\nconst props = defineProps(timeSelectProps)\nconst emit = defineEmits(timeSelectEmits)\nconst visible = ref(false)\nconst timeSelectRef = ref<HTMLElement>()\n\nconst parseTime = (value: string) => {\n const match = /^(\\d{1,2}):(\\d{2})$/.exec(value)\n if (!match) return Number.NaN\n const hours = Number(match[1])\n const minutes = Number(match[2])\n if (hours > 23 || minutes > 59) return Number.NaN\n return hours * 60 + minutes\n}\n\nconst formatTime = (minutes: number) => {\n const hours = Math.floor(minutes / 60)\n const restMinutes = minutes % 60\n return `${String(hours).padStart(2, '0')}:${String(restMinutes).padStart(2, '0')}`\n}\n\nconst options = computed<TimeSelectOption[]>(() => {\n const start = parseTime(props.start)\n const end = parseTime(props.end)\n const step = parseTime(props.step)\n\n if (!Number.isFinite(start) || !Number.isFinite(end) || !Number.isFinite(step)) return []\n if (step <= 0 || start > end) return []\n\n const result: TimeSelectOption[] = []\n for (let current = start; current <= end; current += step) {\n const value = formatTime(current)\n result.push({ label: value, value })\n }\n return result\n})\n\nconst showClear = computed(() => props.clearable && !props.disabled && Boolean(props.modelValue))\n\nconst setVisible = (nextVisible: boolean) => {\n if (props.disabled) return\n visible.value = nextVisible\n}\n\nconst toggleVisible = () => setVisible(!visible.value)\nconst close = () => setVisible(false)\n\nconst handleOptionClick = (option: TimeSelectOption) => {\n emit('update:modelValue', option.value)\n emit('change', option.value, option)\n close()\n}\n\nconst handleClear = () => {\n emit('update:modelValue', '')\n emit('change', '')\n close()\n}\n\nconst handleDocumentClick = (event: MouseEvent) => {\n if (!visible.value) return\n if (timeSelectRef.value?.contains(event.target as Node)) return\n close()\n}\n\nwatch(\n () => visible.value,\n (nextVisible) => {\n if (nextVisible) document.addEventListener('click', handleDocumentClick)\n else document.removeEventListener('click', handleDocumentClick)\n }\n)\n\nonBeforeUnmount(() => {\n document.removeEventListener('click', handleDocumentClick)\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport TimeSelect from './src/time-select.vue'\n\nexport const JhTimeSelect = withInstall(TimeSelect)\nexport default JhTimeSelect\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { TreeFieldNames, TreeKey, TreeNodeData } from './types'\n\nexport const treeProps = {\n data: {\n type: Array as PropType<TreeNodeData[]>,\n default: () => []\n },\n nodeKey: {\n type: String,\n default: 'value'\n },\n fieldNames: {\n type: Object as PropType<TreeFieldNames>,\n default: () => ({})\n },\n defaultExpandedKeys: {\n type: Array as PropType<TreeKey[]>,\n default: () => []\n },\n checkedKeys: {\n type: Array as PropType<TreeKey[]>,\n default: () => []\n },\n showCheckbox: Boolean,\n checkStrictly: Boolean,\n expandOnClickNode: {\n type: Boolean,\n default: true\n },\n emptyText: {\n type: String,\n default: 'No data'\n }\n} as const\n\nexport const treeEmits = {\n 'update:checkedKeys': (keys: TreeKey[]) => Array.isArray(keys),\n 'node-click': (node: TreeNodeData, key: TreeKey) => Boolean(node) && key !== undefined,\n check: (keys: TreeKey[], node: TreeNodeData) => Array.isArray(keys) && Boolean(node)\n}\n","<template>\n <div class=\"jh-tree\">\n <div v-if=\"visibleNodes.length === 0\" class=\"jh-tree__empty\">{{ emptyText }}</div>\n <div\n v-for=\"item in visibleNodes\"\n :key=\"item.key\"\n class=\"jh-tree__node\"\n :class=\"{ 'is-disabled': item.disabled, 'is-expanded': isExpanded(item.key) }\"\n :style=\"{ '--jh-tree-node-level': item.level }\"\n >\n <button\n class=\"jh-tree__expand\"\n type=\"button\"\n :disabled=\"!item.hasChildren\"\n :aria-label=\"isExpanded(item.key) ? 'Collapse node' : 'Expand node'\"\n @click=\"toggleExpand(item)\"\n >\n <JhIcon v-if=\"item.hasChildren\" name=\"arrow-right\" />\n </button>\n <input\n v-if=\"showCheckbox\"\n class=\"jh-tree__checkbox\"\n type=\"checkbox\"\n :checked=\"isChecked(item.key)\"\n :disabled=\"item.disabled\"\n @change=\"handleCheck(item)\"\n />\n <button\n class=\"jh-tree__label\"\n type=\"button\"\n :disabled=\"item.disabled\"\n @click=\"handleNodeClick(item)\"\n >\n <slot name=\"node\" :node=\"item.node\" :data=\"item.node\" :label=\"item.label\">\n {{ item.label }}\n </slot>\n </button>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { treeEmits, treeProps } from './props'\nimport type { TreeKey, TreeNodeData, TreeVisibleNode } from './types'\n\ndefineOptions({\n name: 'JhTree'\n})\n\nconst props = defineProps(treeProps)\nconst emit = defineEmits(treeEmits)\nconst expandedKeys = ref<TreeKey[]>([...props.defaultExpandedKeys])\n\nconst labelKey = computed(() => props.fieldNames.label || 'label')\nconst valueKey = computed(() => props.fieldNames.value || props.nodeKey)\nconst childrenKey = computed(() => props.fieldNames.children || 'children')\nconst disabledKey = computed(() => props.fieldNames.disabled || 'disabled')\n\nconst getLabel = (node: TreeNodeData) => String(node[labelKey.value] ?? '')\nconst getKey = (node: TreeNodeData) => node[valueKey.value] as TreeKey\nconst getChildren = (node: TreeNodeData) =>\n (node[childrenKey.value] as TreeNodeData[] | undefined) || []\nconst isDisabled = (node: TreeNodeData) => Boolean(node[disabledKey.value])\nconst hasChildren = (node: TreeNodeData) => getChildren(node).length > 0\n\nconst isExpanded = (key: TreeKey) => expandedKeys.value.includes(key)\nconst isChecked = (key: TreeKey) => props.checkedKeys.includes(key)\n\nconst collectVisibleNodes = (\n nodes: TreeNodeData[],\n level = 0,\n result: TreeVisibleNode[] = []\n) => {\n nodes.forEach((node) => {\n const key = getKey(node)\n const item = {\n node,\n key,\n label: getLabel(node),\n level,\n disabled: isDisabled(node),\n hasChildren: hasChildren(node)\n }\n\n result.push(item)\n\n if (item.hasChildren && isExpanded(key)) {\n collectVisibleNodes(getChildren(node), level + 1, result)\n }\n })\n\n return result\n}\n\nconst collectDescendantKeys = (node: TreeNodeData) => {\n const keys: TreeKey[] = []\n const walk = (current: TreeNodeData) => {\n keys.push(getKey(current))\n getChildren(current).forEach(walk)\n }\n walk(node)\n return keys\n}\n\nconst visibleNodes = computed(() => collectVisibleNodes(props.data))\n\nconst toggleExpand = (item: TreeVisibleNode) => {\n if (!item.hasChildren) return\n\n expandedKeys.value = isExpanded(item.key)\n ? expandedKeys.value.filter((key) => key !== item.key)\n : [...expandedKeys.value, item.key]\n}\n\nconst handleNodeClick = (item: TreeVisibleNode) => {\n if (item.disabled) return\n if (props.expandOnClickNode && item.hasChildren) toggleExpand(item)\n emit('node-click', item.node, item.key)\n}\n\nconst handleCheck = (item: TreeVisibleNode) => {\n if (item.disabled) return\n\n const currentKeys = new Set(props.checkedKeys)\n const targetKeys = props.checkStrictly ? [item.key] : collectDescendantKeys(item.node)\n const checked = isChecked(item.key)\n\n targetKeys.forEach((key) => {\n if (checked) currentKeys.delete(key)\n else currentKeys.add(key)\n })\n\n const nextKeys = Array.from(currentKeys)\n emit('update:checkedKeys', nextKeys)\n emit('check', nextKeys, item.node)\n}\n\nwatch(\n () => props.defaultExpandedKeys,\n (keys) => {\n expandedKeys.value = [...keys]\n }\n)\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Tree from './src/tree.vue'\n\nexport const JhTree = withInstall(Tree)\nexport default JhTree\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { UploadBeforeUpload, UploadFile } from './types'\n\nexport const uploadProps = {\n fileList: {\n type: Array as PropType<UploadFile[]>,\n default: () => []\n },\n action: {\n type: String,\n default: ''\n },\n accept: {\n type: String,\n default: ''\n },\n multiple: Boolean,\n disabled: Boolean,\n drag: Boolean,\n limit: {\n type: Number,\n default: 0\n },\n buttonText: {\n type: String,\n default: 'Click to upload'\n },\n tip: {\n type: String,\n default: ''\n },\n beforeUpload: {\n type: Function as PropType<UploadBeforeUpload>,\n default: undefined\n }\n} as const\n\nexport const uploadEmits = {\n 'update:fileList': (files: UploadFile[]) => Array.isArray(files),\n change: (file: UploadFile, files: UploadFile[]) => Boolean(file) && Array.isArray(files),\n remove: (file: UploadFile, files: UploadFile[]) => Boolean(file) && Array.isArray(files),\n exceed: (files: File[], uploadFiles: UploadFile[]) => Array.isArray(files) && Array.isArray(uploadFiles)\n}\n","<template>\n <div\n class=\"jh-upload\"\n :class=\"{ 'is-disabled': disabled, 'is-drag': drag, 'is-dragover': dragover }\"\n @dragover.prevent=\"handleDragover\"\n @dragleave.prevent=\"handleDragleave\"\n @drop.prevent=\"handleDrop\"\n >\n <input\n ref=\"inputRef\"\n class=\"jh-upload__input\"\n type=\"file\"\n :accept=\"accept\"\n :multiple=\"multiple\"\n :disabled=\"disabled\"\n @change=\"handleFileChange\"\n />\n\n <button class=\"jh-upload__trigger\" type=\"button\" :disabled=\"disabled\" @click=\"openFileDialog\">\n <JhIcon name=\"plus\" />\n <span>{{ buttonText }}</span>\n </button>\n\n <div v-if=\"tip\" class=\"jh-upload__tip\">{{ tip }}</div>\n\n <ul v-if=\"fileList.length\" class=\"jh-upload__list\">\n <li v-for=\"file in fileList\" :key=\"file.uid\" class=\"jh-upload__item\">\n <span class=\"jh-upload__name\">{{ file.name }}</span>\n <button\n class=\"jh-upload__remove\"\n type=\"button\"\n :disabled=\"disabled\"\n :aria-label=\"`Remove ${file.name}`\"\n @click=\"handleRemove(file)\"\n >\n <JhIcon name=\"close\" />\n </button>\n </li>\n </ul>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref } from 'vue'\nimport { JhIcon } from '../../icon'\nimport { uploadEmits, uploadProps } from './props'\nimport type { UploadFile } from './types'\n\ndefineOptions({\n name: 'JhUpload'\n})\n\nconst props = defineProps(uploadProps)\nconst emit = defineEmits(uploadEmits)\nconst inputRef = ref<HTMLInputElement>()\nconst dragover = ref(false)\n\nlet uidSeed = 0\n\nconst createUploadFile = (file: File): UploadFile => ({\n uid: `${Date.now()}-${uidSeed++}`,\n name: file.name,\n size: file.size,\n type: file.type,\n status: 'ready',\n raw: file\n})\n\nconst openFileDialog = () => {\n if (props.disabled) return\n inputRef.value?.click()\n}\n\nconst resolveFiles = async (files: File[]) => {\n const acceptedFiles: File[] = []\n\n for (const file of files) {\n const result = props.beforeUpload ? await props.beforeUpload(file) : true\n if (result) acceptedFiles.push(file)\n }\n\n return acceptedFiles.map(createUploadFile)\n}\n\nconst addFiles = async (files: File[]) => {\n if (props.disabled || files.length === 0) return\n\n if (props.limit > 0 && props.fileList.length + files.length > props.limit) {\n emit('exceed', files, props.fileList)\n return\n }\n\n const uploadFiles = await resolveFiles(files)\n if (uploadFiles.length === 0) return\n\n const nextFiles = [...props.fileList, ...uploadFiles]\n emit('update:fileList', nextFiles)\n uploadFiles.forEach((file) => emit('change', file, nextFiles))\n}\n\nconst handleFileChange = (event: Event) => {\n const input = event.target as HTMLInputElement\n addFiles(Array.from(input.files || []))\n input.value = ''\n}\n\nconst handleRemove = (file: UploadFile) => {\n if (props.disabled) return\n const nextFiles = props.fileList.filter((item) => item.uid !== file.uid)\n emit('update:fileList', nextFiles)\n emit('remove', file, nextFiles)\n}\n\nconst handleDragover = () => {\n if (props.disabled || !props.drag) return\n dragover.value = true\n}\n\nconst handleDragleave = () => {\n dragover.value = false\n}\n\nconst handleDrop = (event: DragEvent) => {\n if (props.disabled || !props.drag) return\n dragover.value = false\n addFiles(Array.from(event.dataTransfer?.files || []))\n}\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Upload from './src/upload.vue'\n\nexport const JhUpload = withInstall(Upload)\nexport default JhUpload\n\nexport * from './src/props'\nexport * from './src/types'\n","import type { PropType } from 'vue'\nimport type { WaterfallItem, WaterfallItemHeight, WaterfallItemKey } from './types'\n\nexport const waterfallProps = {\n data: {\n type: Array as PropType<WaterfallItem[]>,\n default: () => []\n },\n columns: {\n type: Number,\n default: 2,\n validator: (value: number) => Number.isInteger(value) && value > 0\n },\n gap: {\n type: [Number, String] as PropType<number | string>,\n default: 16\n },\n itemKey: {\n type: [String, Function] as PropType<WaterfallItemKey>,\n default: 'id'\n },\n itemHeight: {\n type: [Number, String, Function] as PropType<WaterfallItemHeight>,\n default: 'height'\n },\n batchSize: {\n type: Number,\n default: 40,\n validator: (value: number) => Number.isInteger(value) && value > 0\n },\n emptyText: {\n type: String,\n default: 'No data'\n },\n immediate: {\n type: Boolean,\n default: true\n }\n} as const\n\nexport const waterfallEmits = {\n 'layout-start': () => true,\n 'layout-end': () => true\n}\n","<template>\n <div class=\"jh-waterfall\" :style=\"waterfallStyle\">\n <div v-if=\"data.length === 0\" class=\"jh-waterfall__empty\">\n <slot name=\"empty\">{{ emptyText }}</slot>\n </div>\n <template v-else>\n <div class=\"jh-waterfall__columns\">\n <div\n v-for=\"(column, columnIndex) in waterfallColumns\"\n :key=\"columnIndex\"\n class=\"jh-waterfall__column\"\n >\n <div v-for=\"renderItem in column.items\" :key=\"renderItem.key\" class=\"jh-waterfall__item\">\n <slot\n :item=\"renderItem.item\"\n :index=\"renderItem.index\"\n :column-index=\"columnIndex\"\n :height=\"renderItem.height\"\n />\n </div>\n </div>\n </div>\n\n <div ref=\"measureRef\" class=\"jh-waterfall__measure\" aria-hidden=\"true\">\n <div\n v-for=\"measureItem in measuringItems\"\n :key=\"measureItem.key\"\n class=\"jh-waterfall__measure-item\"\n >\n <slot\n :item=\"measureItem.item\"\n :index=\"measureItem.index\"\n :column-index=\"-1\"\n :height=\"measureItem.height\"\n />\n </div>\n </div>\n </template>\n </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref, watch } from 'vue'\nimport { waterfallEmits, waterfallProps } from './props'\nimport type { WaterfallColumn, WaterfallItem, WaterfallRenderItem } from './types'\n\ndefineOptions({\n name: 'JhWaterfall'\n})\n\nconst props = defineProps(waterfallProps)\nconst emit = defineEmits(waterfallEmits)\n\nconst measureRef = ref<HTMLElement>()\nconst waterfallColumns = ref<WaterfallColumn[]>([])\nconst measuringItems = ref<WaterfallRenderItem[]>([])\nconst cursor = ref(0)\nlet layoutId = 0\nlet frameId: number | undefined\n\nconst normalizeColumns = () => Math.max(1, Math.floor(props.columns))\nconst gapValue = computed(() => (typeof props.gap === 'number' ? `${props.gap}px` : props.gap))\nconst gapSize = computed(() => {\n if (typeof props.gap === 'number') return props.gap\n const parsed = Number.parseFloat(props.gap)\n return Number.isFinite(parsed) ? parsed : 0\n})\nconst columnWidth = computed(\n () => `calc((100% - (${gapValue.value} * ${normalizeColumns() - 1})) / ${normalizeColumns()})`\n)\nconst waterfallStyle = computed(() => ({\n '--jh-waterfall-gap': gapValue.value,\n '--jh-waterfall-column-width': columnWidth.value\n}))\n\nconst getItemKey = (item: WaterfallItem, index: number) => {\n if (typeof props.itemKey === 'function') return props.itemKey(item, index)\n return (item[props.itemKey] as string | number | undefined) ?? index\n}\n\nconst getConfiguredHeight = (item: WaterfallItem, index: number) => {\n if (typeof props.itemHeight === 'number') return props.itemHeight\n if (typeof props.itemHeight === 'function') return props.itemHeight(item, index)\n const value = item[props.itemHeight]\n return typeof value === 'number' ? value : 0\n}\n\nconst createColumns = () =>\n Array.from({ length: normalizeColumns() }, () => ({\n height: 0,\n items: []\n }))\n\nconst createRenderItem = (item: WaterfallItem, index: number): WaterfallRenderItem => ({\n item,\n index,\n key: getItemKey(item, index),\n height: getConfiguredHeight(item, index)\n})\n\nconst getShortestColumnIndex = () => {\n let targetIndex = 0\n let minHeight = waterfallColumns.value[0]?.height ?? 0\n waterfallColumns.value.forEach((column, index) => {\n if (column.height < minHeight) {\n minHeight = column.height\n targetIndex = index\n }\n })\n return targetIndex\n}\n\nconst addToShortestColumn = (renderItem: WaterfallRenderItem, measuredHeight: number) => {\n const targetIndex = getShortestColumnIndex()\n const targetColumn = waterfallColumns.value[targetIndex]\n const height = measuredHeight || renderItem.height || 0\n\n targetColumn.items.push({\n ...renderItem,\n height\n })\n targetColumn.height += height + gapSize.value\n}\n\nconst nextFrame = () =>\n new Promise<void>((resolve) => {\n if (typeof window === 'undefined' || typeof window.requestAnimationFrame !== 'function') {\n setTimeout(resolve, 0)\n return\n }\n frameId = window.requestAnimationFrame(() => resolve())\n })\n\nconst layoutBatch = async (currentLayoutId: number) => {\n if (currentLayoutId !== layoutId) return\n if (cursor.value >= props.data.length) {\n measuringItems.value = []\n emit('layout-end')\n return\n }\n\n const nextItems = props.data\n .slice(cursor.value, cursor.value + props.batchSize)\n .map((item, index) => createRenderItem(item, cursor.value + index))\n\n measuringItems.value = nextItems\n await nextTick()\n await nextFrame()\n if (currentLayoutId !== layoutId) return\n\n const elements = Array.from(measureRef.value?.children ?? []) as HTMLElement[]\n nextItems.forEach((renderItem, index) => {\n const measuredHeight = elements[index]?.getBoundingClientRect().height ?? 0\n addToShortestColumn(renderItem, measuredHeight)\n })\n\n cursor.value += nextItems.length\n measuringItems.value = []\n await nextTick()\n await nextFrame()\n layoutBatch(currentLayoutId)\n}\n\nconst layout = () => {\n layoutId += 1\n cursor.value = 0\n measuringItems.value = []\n waterfallColumns.value = createColumns()\n\n if (props.data.length === 0) return\n emit('layout-start')\n layoutBatch(layoutId)\n}\n\nconst refresh = () => {\n layout()\n}\n\nwatch(\n () => [props.data, props.columns, props.gap, props.batchSize, props.itemHeight, props.itemKey],\n () => layout(),\n { deep: false }\n)\n\nonMounted(() => {\n if (props.immediate) layout()\n})\n\nonBeforeUnmount(() => {\n layoutId += 1\n if (frameId !== undefined && typeof window !== 'undefined') {\n window.cancelAnimationFrame(frameId)\n }\n})\n\ndefineExpose({\n refresh\n})\n</script>\n","import { withInstall } from '@jh-ui/utils'\nimport Waterfall from './src/waterfall.vue'\n\nexport const JhWaterfall = withInstall(Waterfall)\nexport default JhWaterfall\n\nexport * from './src/props'\nexport * from './src/types'\n","export * from './alert'\nexport * from './backtop'\nexport * from './badge'\nexport * from './button'\nexport * from './cascader'\nexport * from './carousel'\nexport * from './checkbox'\nexport * from './collapse'\nexport * from './date-picker'\nexport * from './date-time-picker'\nexport * from './dialog'\nexport * from './drawer'\nexport * from './dropdown'\nexport * from './form'\nexport * from './icon'\nexport * from './infinite-scroll'\nexport * from './input'\nexport * from './link'\nexport * from './message'\nexport * from './message-box'\nexport type {\n MessageFn,\n MessageHandler,\n MessageInstance,\n MessageOptions,\n MessageProps,\n MessageType\n} from './message/src/types'\nexport type {\n MessageBoxAction,\n MessageBoxFn,\n MessageBoxInput,\n MessageBoxOptions,\n MessageBoxProps,\n MessageBoxType\n} from './message-box/src/types'\nexport * from './notification'\nexport type {\n NotificationFn,\n NotificationHandler,\n NotificationInstance,\n NotificationOptions,\n NotificationPosition,\n NotificationProps,\n NotificationType\n} from './notification/src/types'\nexport * from './pagination'\nexport * from './radio'\nexport * from './scrollbar'\nexport * from './select'\nexport * from './table'\nexport * from './tabs'\nexport * from './text'\nexport * from './time-select'\nexport * from './tree'\nexport * from './upload'\nexport * from './waterfall'\n\nimport { JhAlert } from './alert'\nimport { JhBacktop } from './backtop'\nimport { JhBadge } from './badge'\nimport { JhButton } from './button'\nimport { JhCascader } from './cascader'\nimport { JhCarousel, JhCarouselItem } from './carousel'\nimport { JhCheckbox, JhCheckboxGroup } from './checkbox'\nimport { JhCollapse, JhCollapseItem } from './collapse'\nimport { JhDatePicker } from './date-picker'\nimport { JhDateTimePicker } from './date-time-picker'\nimport { JhDialog } from './dialog'\nimport { JhDrawer } from './drawer'\nimport { JhDropdown } from './dropdown'\nimport { JhForm, JhFormItem } from './form'\nimport { JhIcon } from './icon'\nimport { JhInfiniteScroll } from './infinite-scroll'\nimport { JhInput } from './input'\nimport { JhLink } from './link'\nimport { JhMessage } from './message'\nimport { JhMessageBox } from './message-box'\nimport { JhNotification } from './notification'\nimport { JhPagination } from './pagination'\nimport { JhRadio, JhRadioGroup } from './radio'\nimport { JhScrollbar } from './scrollbar'\nimport { JhSelect } from './select'\nimport { JhTable } from './table'\nimport { JhTabs, JhTabPane } from './tabs'\nimport { JhText } from './text'\nimport { JhTimeSelect } from './time-select'\nimport { JhTree } from './tree'\nimport { JhUpload } from './upload'\nimport { JhWaterfall } from './waterfall'\n\nexport default [\n JhAlert,\n JhBacktop,\n JhBadge,\n JhButton,\n JhCascader,\n JhCarousel,\n JhCarouselItem,\n JhCheckbox,\n JhCheckboxGroup,\n JhCollapse,\n JhCollapseItem,\n JhDatePicker,\n JhDateTimePicker,\n JhDialog,\n JhDrawer,\n JhDropdown,\n JhForm,\n JhFormItem,\n JhIcon,\n JhInfiniteScroll,\n JhInput,\n JhLink,\n JhMessage,\n JhMessageBox,\n JhNotification,\n JhPagination,\n JhRadio,\n JhRadioGroup,\n JhScrollbar,\n JhSelect,\n JhTable,\n JhTabs,\n JhTabPane,\n JhText,\n JhTimeSelect,\n JhTree,\n JhUpload,\n JhWaterfall\n]\n","import type { App, Plugin } from 'vue'\nimport '@jh-ui/theme-chalk/src/index.scss'\nimport components from '@jh-ui/components'\n\ntype MessageType = 'success' | 'warning' | 'info' | 'danger'\ninterface MessageOptions {\n message?: string\n type?: MessageType\n duration?: number\n showClose?: boolean\n offset?: number\n zIndex?: number\n onClose?: () => void\n}\ninterface MessageHandler {\n close: () => void\n}\ntype MessageFn = {\n (options?: string | MessageOptions): MessageHandler\n success: (options?: string | Omit<MessageOptions, 'type'>) => MessageHandler\n warning: (options?: string | Omit<MessageOptions, 'type'>) => MessageHandler\n info: (options?: string | Omit<MessageOptions, 'type'>) => MessageHandler\n danger: (options?: string | Omit<MessageOptions, 'type'>) => MessageHandler\n closeAll: () => void\n}\ntype MessageBoxAction = 'confirm' | 'cancel' | 'close'\ninterface MessageBoxOptions {\n title?: string\n message?: string\n type?: MessageType\n confirmButtonText?: string\n cancelButtonText?: string\n showCancelButton?: boolean\n showClose?: boolean\n closeOnClickModal?: boolean\n zIndex?: number\n beforeClose?: (action: MessageBoxAction, done: () => void) => void\n}\ntype MessageBoxFn = {\n (options?: string | MessageBoxOptions): Promise<MessageBoxAction>\n alert: (\n message: string,\n title?: string,\n options?: Omit<MessageBoxOptions, 'message' | 'title'>\n ) => Promise<MessageBoxAction>\n confirm: (\n message: string,\n title?: string,\n options?: Omit<MessageBoxOptions, 'message' | 'title'>\n ) => Promise<MessageBoxAction>\n}\ntype NotificationPosition = 'top-right' | 'top-left' | 'bottom-right' | 'bottom-left'\ninterface NotificationOptions extends MessageOptions {\n title?: string\n position?: NotificationPosition\n}\ntype NotificationFn = {\n (options?: string | NotificationOptions): MessageHandler\n success: (options?: string | Omit<NotificationOptions, 'type'>) => MessageHandler\n warning: (options?: string | Omit<NotificationOptions, 'type'>) => MessageHandler\n info: (options?: string | Omit<NotificationOptions, 'type'>) => MessageHandler\n danger: (options?: string | Omit<NotificationOptions, 'type'>) => MessageHandler\n closeAll: () => void\n}\n\nexport * from '@jh-ui/components'\n\nconst JhUI: Plugin = {\n install(app: App) {\n components.forEach((component) => {\n app.use(component)\n })\n }\n}\n\nexport default JhUI\n\ndeclare module 'vue' {\n interface ComponentCustomProperties {\n $message: MessageFn\n $messageBox: MessageBoxFn\n $notify: NotificationFn\n }\n}\n"],"names":["withInstall","component","app","name","iconNames","iconProps","props","__props","iconStyle","computed","_createElementBlock","_normalizeClass","spin","_openBlock","_hoisted_1","_Fragment","_createElementVNode","_hoisted_2","_hoisted_3","_hoisted_4","_renderSlot","_ctx","JhIcon","Icon","alertTypes","alertEffects","alertProps","value","alertEmits","emit","__emit","visible","ref","handleClose","type","effect","showIcon","title","$slots","description","closable","_createVNode","_unref","JhAlert","Alert","backtopProps","backtopEmits","payload","scrollTarget","backtopStyle","getScrollTop","target","handleScroll","resolveTarget","bindScroll","unbindScroll","_a","handleClick","onMounted","nextTick","onBeforeUnmount","__expose","_createBlock","_Transition","JhBacktop","Backtop","badgeTypes","badgeProps","displayValue","badgeStyle","hidden","isDot","color","JhBadge","Badge","buttonTypes","buttonSizes","buttonNativeTypes","buttonProps","buttonEmits","event","buttonClasses","nativeType","disabled","loading","icon","JhButton","Button","cascaderProps","cascaderEmits","_value","_selectedOptions","_visible","activePath","cascaderRef","cascaderClasses","labelKey","valueKey","childrenKey","disabledKey","getLabel","option","getValue","getChildren","isDisabled","hasChildren","resolvePath","path","selectedOptions","currentOptions","matched","displayLabel","menus","result","children","menu","showClear","setVisible","nextVisible","toggleVisible","close","isActive","level","handleOptionClick","nextPath","nextSelectedOptions","handleClear","handleDocumentClick","watch","_toDisplayString","placeholder","_renderList","$event","JhCascader","Cascader","carouselContextKey","carouselArrows","carouselProps","carouselEmits","current","previous","carouselItemProps","items","innerIndex","activeUid","activeIndex","timer","emitChange","nextIndex","previousIndex","setActive","index","maxIndex","prev","next","clearTimer","start","pause","provide","item","arrow","height","indicator","_","carousel","inject","uid","JhCarousel","Carousel","JhCarouselItem","CarouselItem","checkboxProps","checkboxGroupProps","checkboxEmits","checkboxGroupEmits","checkboxGroupKey","group","mergedDisabled","checked","handleChange","nextChecked","nextValue","label","JhCheckbox","Checkbox","JhCheckboxGroup","CheckboxGroup","collapseContextKey","collapseProps","collapseEmits","collapseItemProps","getActiveNames","activeNames","collapse","active","_withDirectives","JhCollapse","Collapse","JhCollapseItem","CollapseItem","datePickerProps","datePickerEmits","handleInput","modelValue","JhDatePicker","DatePicker","dateTimePickerProps","dateTimePickerEmits","JhDateTimePicker","DateTimePicker","dialogProps","dialogEmits","dialogStyle","requestClose","handleModalClick","_Teleport","_hoisted_5","JhDialog","Dialog","drawerDirections","drawerProps","drawerEmits","drawerStyle","direction","JhDrawer","Drawer","dropdownTriggers","dropdownPlacements","dropdownProps","dropdownEmits","_command","_option","dropdownRef","dropdownClasses","toggle","handleTriggerClick","handleMouseEnter","handleMouseLeave","options","JhDropdown","Dropdown","formProps","formItemProps","formContextKey","fields","registerItem","unregisterItem","field","validate","resetFields","labelWidth","form","errorMessage","rules","propRules","mergedRules","isRequired","rule","resetField","context","JhForm","Form","JhFormItem","FormItem","infiniteScrollProps","infiniteScrollEmits","containerRef","shouldLoad","element","emitLoad","check","JhInfiniteScroll","InfiniteScroll","inputProps","inputEmits","inputRef","passwordVisible","isFocused","slots","_useSlots","hasValue","showSuffix","inputClasses","emitValue","togglePasswordVisible","handleFocus","handleBlur","prefixIcon","autocomplete","password","suffixIcon","JhInput","Input","linkTypes","linkProps","linkEmits","linkClasses","href","JhLink","Link","messageTypes","messageProps","messageStyle","startTimer","handleAfterLeave","message","showClose","instances","seed","normalizeOptions","getOffset","baseOffset","createMessage","normalized","container","id","instance","render","vnode","createVNode","Message","exposed","_b","typedMessage","JhMessage","messageBoxTypes","messageBoxProps","actionTriggered","handleAction","action","done","zIndex","_hoisted_6","showCancelButton","cancelButtonText","confirmButtonText","createMessageBox","resolve","MessageBox","JhMessageBox","notificationTypes","notificationPositions","notificationProps","isRight","isBottom","transitionName","notificationStyle","position","createNotification","Notification","typedNotification","JhNotification","paginationProps","paginationEmits","_page","_pageSize","_payload","normalizedPageSize","pageCount","safeCurrentPage","clampPage","pages","count","maxPagerCount","end","page","emitPageChange","pageSize","changePage","nextPage","oldPageSize","_cache","total","JhPagination","Pagination","radioProps","radioGroupProps","radioEmits","radioGroupEmits","radioGroupKey","JhRadio","Radio","JhRadioGroup","RadioGroup","scrollbarProps","scrollbarEmits","wrapRef","normalizeSize","wrapStyle","always","native","wrapClass","viewClass","JhScrollbar","Scrollbar","selectProps","selectEmits","selectRef","selectedOption","JhSelect","Select","tableProps","tableEmits","_selection","_row","selectedKeys","selectAllRef","tableClasses","getRowKey","row","isRowSelectable","selectableRows","selectedRows","isAllSelected","key","isIndeterminate","watchEffect","currentKeys","getAlignClass","column","getColumnStyle","formatCellValue","emitSelectionChange","isRowSelected","toggleRowSelection","nextSelectedKeys","toggleSelectAll","selection","columns","_normalizeStyle","_hoisted_7","data","rowIndex","_hoisted_8","_hoisted_11","emptyText","_hoisted_12","JhTable","Table","tabsContextKey","tabsProps","tabsEmits","tabPaneProps","panes","innerActiveName","activeName","setActiveName","handleTabClick","pane","tabs","JhTabs","Tabs","JhTabPane","TabPane","textTypes","textSizes","textProps","textClasses","textStyle","_resolveDynamicComponent","tag","JhText","Text","timeSelectProps","timeSelectEmits","timeSelectRef","parseTime","match","hours","minutes","formatTime","restMinutes","step","JhTimeSelect","TimeSelect","treeProps","treeEmits","keys","node","expandedKeys","getKey","isExpanded","isChecked","collectVisibleNodes","nodes","collectDescendantKeys","walk","visibleNodes","toggleExpand","handleNodeClick","handleCheck","targetKeys","nextKeys","showCheckbox","_createTextVNode","JhTree","Tree","uploadProps","uploadEmits","files","file","uploadFiles","dragover","uidSeed","createUploadFile","openFileDialog","resolveFiles","acceptedFiles","addFiles","nextFiles","handleFileChange","input","handleRemove","handleDragover","handleDragleave","handleDrop","drag","accept","multiple","buttonText","tip","fileList","JhUpload","Upload","waterfallProps","waterfallEmits","measureRef","waterfallColumns","measuringItems","cursor","layoutId","frameId","normalizeColumns","gapValue","gapSize","parsed","columnWidth","waterfallStyle","getItemKey","getConfiguredHeight","createColumns","createRenderItem","getShortestColumnIndex","targetIndex","minHeight","addToShortestColumn","renderItem","measuredHeight","targetColumn","nextFrame","layoutBatch","currentLayoutId","nextItems","elements","layout","refresh","columnIndex","measureItem","JhWaterfall","Waterfall","components","JhUI"],"mappings":"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"}
|