neko-ui 2.8.21 → 2.8.23
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/es/avatar/README.mdx +10 -0
- package/es/avatar/examples/basic.md +14 -0
- package/es/avatar/examples/group.md +57 -0
- package/es/avatar/examples/size.md +21 -0
- package/es/avatar/group.js +2 -2
- package/es/avatar/group.js.map +1 -1
- package/es/avatar/index.js +2 -2
- package/es/avatar/index.js.map +1 -1
- package/es/avatar/style.js +2 -2
- package/es/avatar/style.js.map +1 -1
- package/es/back-top/README.mdx +10 -0
- package/es/back-top/examples/basic.md +19 -0
- package/es/back-top/examples/mount.md +36 -0
- package/es/back-top/examples/target.md +46 -0
- package/es/back-top/index.js +1 -1
- package/es/back-top/index.js.map +1 -1
- package/es/basic-config/README.mdx +11 -0
- package/es/button/README.mdx +10 -0
- package/es/button/examples/basic.md +21 -0
- package/es/button/examples/block.md +33 -0
- package/es/button/examples/circle.md +21 -0
- package/es/button/examples/danger.md +23 -0
- package/es/button/examples/dashed.md +21 -0
- package/es/button/examples/disabled.md +35 -0
- package/es/button/examples/fill.md +21 -0
- package/es/button/examples/flat.md +21 -0
- package/es/button/examples/ghost.md +21 -0
- package/es/button/examples/icon.md +30 -0
- package/es/button/examples/link.md +21 -0
- package/es/button/examples/size.md +23 -0
- package/es/button/index.js +1 -1
- package/es/button/index.js.map +1 -1
- package/es/button/style.js +1 -0
- package/es/button/style.js.map +1 -1
- package/es/capture-screen/README.mdx +10 -0
- package/es/capture-screen/examples/basic.md +13 -0
- package/es/capture-screen/examples/custom-save.md +30 -0
- package/es/capture-screen/examples/preview.md +13 -0
- package/es/capture-screen/examples/recorder-save.md +13 -0
- package/es/capture-screen/index.js +1 -1
- package/es/capture-screen/index.js.map +1 -1
- package/es/carousel/README.mdx +10 -0
- package/es/carousel/examples/autoplay.md +21 -0
- package/es/carousel/examples/basic.md +23 -0
- package/es/carousel/examples/dots.md +23 -0
- package/es/carousel/examples/header.md +38 -0
- package/es/carousel/index.js +1 -1
- package/es/carousel/index.js.map +1 -1
- package/es/checkbox/README.mdx +10 -0
- package/es/checkbox/examples/basic.md +31 -0
- package/es/checkbox/examples/check-all.md +37 -0
- package/es/checkbox/examples/disabled-all.md +28 -0
- package/es/checkbox/examples/disabled-option.md +35 -0
- package/es/checkbox/examples/field-names.md +40 -0
- package/es/checkbox/examples/status.md +37 -0
- package/es/checkbox/examples/vertical.md +36 -0
- package/es/checkbox/index.js +1 -1
- package/es/checkbox/index.js.map +1 -1
- package/es/code/README.mdx +10 -0
- package/es/code/examples/basic.md +19 -0
- package/es/code/examples/diff.md +45 -0
- package/es/code/examples/line-number.md +18 -0
- package/es/code/examples/live-edit.md +20 -0
- package/es/code/examples/toolbar.md +18 -0
- package/es/code/index.js +2 -2
- package/es/code/index.js.map +1 -1
- package/es/code/worker.js.map +1 -1
- package/es/color-palette/README.mdx +10 -0
- package/es/color-palette/examples/default-value.md +25 -0
- package/es/color-palette/examples/hexa.md +13 -0
- package/es/color-palette/examples/hsla.md +13 -0
- package/es/color-palette/examples/rgba.md +13 -0
- package/es/color-palette/index.js +1 -1
- package/es/color-palette/index.js.map +1 -1
- package/es/color-picker/README.mdx +10 -0
- package/es/color-picker/examples/basic.md +12 -0
- package/es/color-picker/examples/default-value.md +20 -0
- package/es/color-picker/examples/size.md +17 -0
- package/es/color-picker/index.js +1 -1
- package/es/color-picker/index.js.map +1 -1
- package/es/cron/README.mdx +10 -0
- package/es/cron/begin-interval.js.map +1 -1
- package/es/cron/day.js.map +1 -1
- package/es/cron/examples/basic.md +19 -0
- package/es/cron/examples/card.md +12 -0
- package/es/cron/examples/show-cron.md +12 -0
- package/es/cron/hour.js +1 -1
- package/es/cron/hour.js.map +1 -1
- package/es/cron/index.js +1 -1
- package/es/cron/index.js.map +1 -1
- package/es/cron/item.js.map +1 -1
- package/es/cron/minute.js +1 -1
- package/es/cron/minute.js.map +1 -1
- package/es/cron/month.js +1 -1
- package/es/cron/month.js.map +1 -1
- package/es/cron/period.js.map +1 -1
- package/es/cron/second.js +1 -1
- package/es/cron/second.js.map +1 -1
- package/es/cron/some.js.map +1 -1
- package/es/date-picker/README.mdx +10 -0
- package/es/date-picker/date.js +1 -1
- package/es/date-picker/date.js.map +1 -1
- package/es/date-picker/dayjs.js +1 -1
- package/es/date-picker/dayjs.js.map +1 -1
- package/es/date-picker/examples/basic.md +24 -0
- package/es/date-picker/examples/date.md +13 -0
- package/es/date-picker/examples/disbaled.md +13 -0
- package/es/date-picker/examples/header.md +13 -0
- package/es/date-picker/examples/month.md +13 -0
- package/es/date-picker/examples/time.md +15 -0
- package/es/date-picker/examples/today.md +13 -0
- package/es/date-picker/examples/year.md +13 -0
- package/es/date-picker/index.js +1 -1
- package/es/date-picker/index.js.map +1 -1
- package/es/date-picker/month.js +1 -1
- package/es/date-picker/month.js.map +1 -1
- package/es/date-picker/panel.js +1 -1
- package/es/date-picker/panel.js.map +1 -1
- package/es/date-picker/time.js +1 -1
- package/es/date-picker/time.js.map +1 -1
- package/es/date-picker/year.js +1 -1
- package/es/date-picker/year.js.map +1 -1
- package/es/dropdown/README.mdx +10 -0
- package/es/dropdown/examples/arrow.md +59 -0
- package/es/dropdown/examples/basic.md +17 -0
- package/es/dropdown/examples/click.md +45 -0
- package/es/dropdown/examples/context-menu.md +66 -0
- package/es/dropdown/examples/field-names.md +44 -0
- package/es/dropdown/examples/icon.md +30 -0
- package/es/dropdown/examples/multiple.md +45 -0
- package/es/dropdown/examples/no-data.md +16 -0
- package/es/dropdown/examples/placement.md +59 -0
- package/es/dropdown/examples/toggle.md +36 -0
- package/es/dropdown/index.js +1 -1
- package/es/dropdown/index.js.map +1 -1
- package/es/empty/index.js.map +1 -1
- package/es/from-schema/index.js +1 -1
- package/es/from-schema/index.js.map +1 -1
- package/es/highlight-text/README.mdx +10 -0
- package/es/highlight-text/examples/basic.md +19 -0
- package/es/highlight-text/examples/mut.md +47 -0
- package/es/highlight-text/examples/not-hightlight.md +19 -0
- package/es/highlight-text/index.js +2 -2
- package/es/highlight-text/index.js.map +1 -1
- package/es/img/README.mdx +10 -0
- package/es/img/examples/basic.md +17 -0
- package/es/img/examples/close-mask.md +21 -0
- package/es/img/examples/disabled.md +16 -0
- package/es/img/examples/error.md +13 -0
- package/es/img/examples/esc.md +21 -0
- package/es/img/examples/open-change.md +25 -0
- package/es/img/index.js +1 -1
- package/es/img/index.js.map +1 -1
- package/es/img/lazy.js +1 -1
- package/es/img/lazy.js.map +1 -1
- package/es/index.js +1 -1
- package/es/index.js.map +1 -1
- package/es/input/README.mdx +10 -0
- package/es/input/examples/basic.md +31 -0
- package/es/input/examples/prefix&suffix.md +33 -0
- package/es/input/examples/size.md +21 -0
- package/es/input/examples/status.md +23 -0
- package/es/input/index.js +1 -1
- package/es/input/index.js.map +1 -1
- package/es/input-number/README.mdx +10 -0
- package/es/input-number/examples/basic.md +26 -0
- package/es/input-number/examples/formatter.md +36 -0
- package/es/input-number/examples/max-min.md +13 -0
- package/es/input-number/index.js.map +1 -1
- package/es/katex/README.mdx +42 -0
- package/es/katex/examples/block.md +25 -0
- package/es/katex/examples/inline.md +19 -0
- package/es/md/README.mdx +10 -0
- package/es/md/examples/in-children.md +23 -0
- package/es/md/examples/in-text.md +32 -0
- package/es/md/examples/math.md +36 -0
- package/es/md/index.js +1 -1
- package/es/md/index.js.map +1 -1
- package/es/menu/README.mdx +10 -0
- package/es/menu/examples/basic.md +17 -0
- package/es/menu/examples/field-names.md +42 -0
- package/es/menu/examples/icon.md +125 -0
- package/es/menu/examples/multiple.md +42 -0
- package/es/menu/index.js +1 -1
- package/es/menu/index.js.map +1 -1
- package/es/modal/README.mdx +10 -0
- package/es/modal/examples/basic.md +56 -0
- package/es/modal/examples/close-icon.md +57 -0
- package/es/modal/examples/esc-closable.md +64 -0
- package/es/modal/examples/mask-blur.md +56 -0
- package/es/modal/examples/mask-closable.md +64 -0
- package/es/modal/index.js +1 -1
- package/es/modal/index.js.map +1 -1
- package/es/notification/README.mdx +11 -0
- package/es/notification/examples/basic.md +35 -0
- package/es/notification/examples/close.md +35 -0
- package/es/notification/examples/type.md +84 -0
- package/es/notification/examples/update.md +52 -0
- package/es/notification/index.js.map +1 -1
- package/es/notification/notification.js +1 -1
- package/es/notification/notification.js.map +1 -1
- package/es/pagination/README.mdx +10 -0
- package/es/pagination/examples/basic.md +13 -0
- package/es/pagination/examples/onchange.md +29 -0
- package/es/pagination/examples/size.md +23 -0
- package/es/pagination/examples/total-text.md +42 -0
- package/es/pagination/index.js +1 -1
- package/es/pagination/index.js.map +1 -1
- package/es/popover/README.mdx +10 -0
- package/es/popover/examples/basic.md +35 -0
- package/es/popover/examples/click.md +15 -0
- package/es/popover/examples/context-menu.md +58 -0
- package/es/popover/examples/controlled.md +47 -0
- package/es/popover/index.js +1 -1
- package/es/popover/index.js.map +1 -1
- package/es/prism/css.js.map +1 -1
- package/es/prism/index.js.map +1 -1
- package/es/provider/README.mdx +10 -0
- package/es/provider/examples/scheme.md +14 -0
- package/es/provider/index.js.map +1 -1
- package/es/radio/README.mdx +10 -0
- package/es/radio/examples/basic.md +19 -0
- package/es/radio/examples/disabled-option.md +19 -0
- package/es/radio/examples/disabled.md +19 -0
- package/es/radio/examples/field-names.md +39 -0
- package/es/radio/examples/layout-vertical.md +19 -0
- package/es/radio/examples/status.md +31 -0
- package/es/radio/index.js +1 -1
- package/es/radio/index.js.map +1 -1
- package/es/segmented/README.mdx +10 -0
- package/es/segmented/examples/basic.md +18 -0
- package/es/segmented/examples/custom-field-names.md +43 -0
- package/es/segmented/examples/disabled-option.md +29 -0
- package/es/segmented/examples/disabled.md +18 -0
- package/es/segmented/examples/icon.md +28 -0
- package/es/segmented/examples/options.md +21 -0
- package/es/segmented/index.js +2 -2
- package/es/segmented/index.js.map +1 -1
- package/es/select/README.mdx +10 -0
- package/es/select/examples/basic.md +44 -0
- package/es/select/examples/disabled-option.md +21 -0
- package/es/select/examples/disabled.md +24 -0
- package/es/select/examples/field-names.md +40 -0
- package/es/select/examples/item-suffix.md +84 -0
- package/es/select/examples/multiple.md +61 -0
- package/es/select/examples/no-data.md +12 -0
- package/es/select/examples/prefix-icon.md +74 -0
- package/es/select/index.js +1 -1
- package/es/select/index.js.map +1 -1
- package/es/skeleton/README.mdx +10 -0
- package/es/skeleton/examples/animation.md +13 -0
- package/es/skeleton/examples/avatar.md +13 -0
- package/es/skeleton/examples/basic.md +12 -0
- package/es/skeleton/examples/rows.md +13 -0
- package/es/skeleton/examples/title.md +12 -0
- package/es/skeleton/index.js +3 -3
- package/es/skeleton/index.js.map +1 -1
- package/es/spin/README.mdx +10 -0
- package/es/spin/examples/basic.md +67 -0
- package/es/spin/index.js +4 -4
- package/es/spin/index.js.map +1 -1
- package/es/switch/README.mdx +10 -0
- package/es/switch/examples/basic.md +24 -0
- package/es/switch/examples/checked-text.md +17 -0
- package/es/switch/examples/disabled.md +15 -0
- package/es/switch/examples/loading.md +17 -0
- package/es/switch/index.js +1 -1
- package/es/switch/index.js.map +1 -1
- package/es/table/README.mdx +10 -0
- package/es/table/examples/basic.md +29 -0
- package/es/table/examples/key.md +29 -0
- package/es/table/examples/order.md +29 -0
- package/es/table/examples/pagination.md +67 -0
- package/es/table/examples/render.md +92 -0
- package/es/table/examples/size.md +52 -0
- package/es/table/examples/summary.md +40 -0
- package/es/table/index.js +1 -1
- package/es/table/index.js.map +1 -1
- package/es/tabs/README.mdx +10 -0
- package/es/tabs/examples/add-remove.md +115 -0
- package/es/tabs/examples/animated.md +33 -0
- package/es/tabs/examples/basic.md +32 -0
- package/es/tabs/examples/card.md +33 -0
- package/es/tabs/examples/center.md +33 -0
- package/es/tabs/examples/disabled-tab.md +34 -0
- package/es/tabs/examples/disabled.md +33 -0
- package/es/tabs/examples/extra.md +65 -0
- package/es/tabs/index.js +2 -2
- package/es/tabs/index.js.map +1 -1
- package/es/tag/README.mdx +10 -0
- package/es/tag/examples/basic.md +28 -0
- package/es/tag/examples/bordered.md +19 -0
- package/es/tag/examples/color.md +25 -0
- package/es/tag/examples/icon.md +21 -0
- package/es/tag/examples/type.md +19 -0
- package/es/tag/index.js +3 -3
- package/es/tag/index.js.map +1 -1
- package/es/theme/README.mdx +10 -0
- package/es/theme/examples/colors.md +123 -0
- package/es/theme/examples/theme.md +19 -0
- package/es/theme/index.js +1 -1
- package/es/theme/index.js.map +1 -1
- package/es/tree/README.mdx +10 -0
- package/es/tree/examples/basic.md +108 -0
- package/es/tree/examples/custom-render.md +115 -0
- package/es/tree/examples/direction.md +100 -0
- package/es/tree/examples/field-names.md +114 -0
- package/es/tree/examples/multiple.md +117 -0
- package/es/tree/examples/readonly.md +90 -0
- package/es/tree/examples/render-tree-string1.md +70 -0
- package/es/tree/examples/render-tree-string2.md +52 -0
- package/es/tree/examples/schema.md +130 -0
- package/es/tree/examples/size.md +125 -0
- package/es/tree/examples/toggle.md +71 -0
- package/es/tree/index.js +1 -1
- package/es/tree/index.js.map +1 -1
- package/es/tree/register.js.map +1 -1
- package/es/typography/README.mdx +10 -0
- package/es/typography/examples/basic.md +27 -0
- package/es/typography/examples/tag.md +25 -0
- package/es/typography/examples/truncated.md +17 -0
- package/es/typography/index.js +3 -3
- package/es/typography/index.js.map +1 -1
- package/eslint.config.mjs +9 -0
- package/lib/avatar/README.mdx +10 -0
- package/lib/avatar/examples/basic.md +14 -0
- package/lib/avatar/examples/group.md +57 -0
- package/lib/avatar/examples/size.md +21 -0
- package/lib/avatar/group.js.map +1 -1
- package/lib/avatar/index.js +2 -2
- package/lib/avatar/index.js.map +1 -1
- package/lib/avatar/style.js +2 -2
- package/lib/avatar/style.js.map +1 -1
- package/lib/back-top/README.mdx +10 -0
- package/lib/back-top/examples/basic.md +19 -0
- package/lib/back-top/examples/mount.md +36 -0
- package/lib/back-top/examples/target.md +46 -0
- package/lib/back-top/index.js +1 -1
- package/lib/back-top/index.js.map +1 -1
- package/lib/basic-config/README.mdx +11 -0
- package/lib/button/README.mdx +10 -0
- package/lib/button/examples/basic.md +21 -0
- package/lib/button/examples/block.md +33 -0
- package/lib/button/examples/circle.md +21 -0
- package/lib/button/examples/danger.md +23 -0
- package/lib/button/examples/dashed.md +21 -0
- package/lib/button/examples/disabled.md +35 -0
- package/lib/button/examples/fill.md +21 -0
- package/lib/button/examples/flat.md +21 -0
- package/lib/button/examples/ghost.md +21 -0
- package/lib/button/examples/icon.md +30 -0
- package/lib/button/examples/link.md +21 -0
- package/lib/button/examples/size.md +23 -0
- package/lib/button/index.js +1 -1
- package/lib/button/index.js.map +1 -1
- package/lib/button/style.js +1 -0
- package/lib/button/style.js.map +1 -1
- package/lib/capture-screen/README.mdx +10 -0
- package/lib/capture-screen/examples/basic.md +13 -0
- package/lib/capture-screen/examples/custom-save.md +30 -0
- package/lib/capture-screen/examples/preview.md +13 -0
- package/lib/capture-screen/examples/recorder-save.md +13 -0
- package/lib/capture-screen/index.js +1 -1
- package/lib/capture-screen/index.js.map +1 -1
- package/lib/carousel/README.mdx +10 -0
- package/lib/carousel/examples/autoplay.md +21 -0
- package/lib/carousel/examples/basic.md +23 -0
- package/lib/carousel/examples/dots.md +23 -0
- package/lib/carousel/examples/header.md +38 -0
- package/lib/carousel/index.js +1 -1
- package/lib/carousel/index.js.map +1 -1
- package/lib/checkbox/README.mdx +10 -0
- package/lib/checkbox/examples/basic.md +31 -0
- package/lib/checkbox/examples/check-all.md +37 -0
- package/lib/checkbox/examples/disabled-all.md +28 -0
- package/lib/checkbox/examples/disabled-option.md +35 -0
- package/lib/checkbox/examples/field-names.md +40 -0
- package/lib/checkbox/examples/status.md +37 -0
- package/lib/checkbox/examples/vertical.md +36 -0
- package/lib/checkbox/index.js +1 -1
- package/lib/checkbox/index.js.map +1 -1
- package/lib/code/README.mdx +10 -0
- package/lib/code/examples/basic.md +19 -0
- package/lib/code/examples/diff.md +45 -0
- package/lib/code/examples/line-number.md +18 -0
- package/lib/code/examples/live-edit.md +20 -0
- package/lib/code/examples/toolbar.md +18 -0
- package/lib/code/index.js +2 -2
- package/lib/code/index.js.map +1 -1
- package/lib/code/worker.js.map +1 -1
- package/lib/color-palette/README.mdx +10 -0
- package/lib/color-palette/examples/default-value.md +25 -0
- package/lib/color-palette/examples/hexa.md +13 -0
- package/lib/color-palette/examples/hsla.md +13 -0
- package/lib/color-palette/examples/rgba.md +13 -0
- package/lib/color-palette/index.js +1 -1
- package/lib/color-palette/index.js.map +1 -1
- package/lib/color-picker/README.mdx +10 -0
- package/lib/color-picker/examples/basic.md +12 -0
- package/lib/color-picker/examples/default-value.md +20 -0
- package/lib/color-picker/examples/size.md +17 -0
- package/lib/color-picker/index.js +1 -1
- package/lib/color-picker/index.js.map +1 -1
- package/lib/cron/README.mdx +10 -0
- package/lib/cron/begin-interval.js.map +1 -1
- package/lib/cron/day.js.map +1 -1
- package/lib/cron/examples/basic.md +19 -0
- package/lib/cron/examples/card.md +12 -0
- package/lib/cron/examples/show-cron.md +12 -0
- package/lib/cron/hour.js +1 -1
- package/lib/cron/hour.js.map +1 -1
- package/lib/cron/index.js.map +1 -1
- package/lib/cron/item.js.map +1 -1
- package/lib/cron/minute.js +1 -1
- package/lib/cron/minute.js.map +1 -1
- package/lib/cron/month.js +1 -1
- package/lib/cron/month.js.map +1 -1
- package/lib/cron/period.js.map +1 -1
- package/lib/cron/second.js +1 -1
- package/lib/cron/second.js.map +1 -1
- package/lib/cron/some.js.map +1 -1
- package/lib/date-picker/README.mdx +10 -0
- package/lib/date-picker/date.js.map +1 -1
- package/lib/date-picker/dayjs.js +1 -1
- package/lib/date-picker/dayjs.js.map +1 -1
- package/lib/date-picker/examples/basic.md +24 -0
- package/lib/date-picker/examples/date.md +13 -0
- package/lib/date-picker/examples/disbaled.md +13 -0
- package/lib/date-picker/examples/header.md +13 -0
- package/lib/date-picker/examples/month.md +13 -0
- package/lib/date-picker/examples/time.md +15 -0
- package/lib/date-picker/examples/today.md +13 -0
- package/lib/date-picker/examples/year.md +13 -0
- package/lib/date-picker/index.js +1 -1
- package/lib/date-picker/index.js.map +1 -1
- package/lib/date-picker/month.js.map +1 -1
- package/lib/date-picker/panel.js +1 -1
- package/lib/date-picker/panel.js.map +1 -1
- package/lib/date-picker/time.js.map +1 -1
- package/lib/date-picker/year.js.map +1 -1
- package/lib/dropdown/README.mdx +10 -0
- package/lib/dropdown/examples/arrow.md +59 -0
- package/lib/dropdown/examples/basic.md +17 -0
- package/lib/dropdown/examples/click.md +45 -0
- package/lib/dropdown/examples/context-menu.md +66 -0
- package/lib/dropdown/examples/field-names.md +44 -0
- package/lib/dropdown/examples/icon.md +30 -0
- package/lib/dropdown/examples/multiple.md +45 -0
- package/lib/dropdown/examples/no-data.md +16 -0
- package/lib/dropdown/examples/placement.md +59 -0
- package/lib/dropdown/examples/toggle.md +36 -0
- package/lib/dropdown/index.js +1 -1
- package/lib/dropdown/index.js.map +1 -1
- package/lib/empty/index.js.map +1 -1
- package/lib/from-schema/index.js +1 -1
- package/lib/from-schema/index.js.map +1 -1
- package/lib/highlight-text/README.mdx +10 -0
- package/lib/highlight-text/examples/basic.md +19 -0
- package/lib/highlight-text/examples/mut.md +47 -0
- package/lib/highlight-text/examples/not-hightlight.md +19 -0
- package/lib/highlight-text/index.js.map +1 -1
- package/lib/img/README.mdx +10 -0
- package/lib/img/examples/basic.md +17 -0
- package/lib/img/examples/close-mask.md +21 -0
- package/lib/img/examples/disabled.md +16 -0
- package/lib/img/examples/error.md +13 -0
- package/lib/img/examples/esc.md +21 -0
- package/lib/img/examples/open-change.md +25 -0
- package/lib/img/index.js +1 -1
- package/lib/img/index.js.map +1 -1
- package/lib/img/lazy.js +1 -1
- package/lib/img/lazy.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/input/README.mdx +10 -0
- package/lib/input/examples/basic.md +31 -0
- package/lib/input/examples/prefix&suffix.md +33 -0
- package/lib/input/examples/size.md +21 -0
- package/lib/input/examples/status.md +23 -0
- package/lib/input/index.js +1 -1
- package/lib/input/index.js.map +1 -1
- package/lib/input-number/README.mdx +10 -0
- package/lib/input-number/examples/basic.md +26 -0
- package/lib/input-number/examples/formatter.md +36 -0
- package/lib/input-number/examples/max-min.md +13 -0
- package/lib/input-number/index.js.map +1 -1
- package/lib/katex/README.mdx +42 -0
- package/lib/katex/examples/block.md +25 -0
- package/lib/katex/examples/inline.md +19 -0
- package/lib/md/README.mdx +10 -0
- package/lib/md/examples/in-children.md +23 -0
- package/lib/md/examples/in-text.md +32 -0
- package/lib/md/examples/math.md +36 -0
- package/lib/md/index.js +1 -1
- package/lib/md/index.js.map +1 -1
- package/lib/menu/README.mdx +10 -0
- package/lib/menu/examples/basic.md +17 -0
- package/lib/menu/examples/field-names.md +42 -0
- package/lib/menu/examples/icon.md +125 -0
- package/lib/menu/examples/multiple.md +42 -0
- package/lib/menu/index.js +1 -1
- package/lib/menu/index.js.map +1 -1
- package/lib/modal/README.mdx +10 -0
- package/lib/modal/examples/basic.md +56 -0
- package/lib/modal/examples/close-icon.md +57 -0
- package/lib/modal/examples/esc-closable.md +64 -0
- package/lib/modal/examples/mask-blur.md +56 -0
- package/lib/modal/examples/mask-closable.md +64 -0
- package/lib/modal/index.js.map +1 -1
- package/lib/notification/README.mdx +11 -0
- package/lib/notification/examples/basic.md +35 -0
- package/lib/notification/examples/close.md +35 -0
- package/lib/notification/examples/type.md +84 -0
- package/lib/notification/examples/update.md +52 -0
- package/lib/notification/index.js.map +1 -1
- package/lib/notification/notification.js +1 -1
- package/lib/notification/notification.js.map +1 -1
- package/lib/pagination/README.mdx +10 -0
- package/lib/pagination/examples/basic.md +13 -0
- package/lib/pagination/examples/onchange.md +29 -0
- package/lib/pagination/examples/size.md +23 -0
- package/lib/pagination/examples/total-text.md +42 -0
- package/lib/pagination/index.js +1 -1
- package/lib/pagination/index.js.map +1 -1
- package/lib/popover/README.mdx +10 -0
- package/lib/popover/examples/basic.md +35 -0
- package/lib/popover/examples/click.md +15 -0
- package/lib/popover/examples/context-menu.md +58 -0
- package/lib/popover/examples/controlled.md +47 -0
- package/lib/popover/index.js +1 -1
- package/lib/popover/index.js.map +1 -1
- package/lib/prism/css.js.map +1 -1
- package/lib/prism/index.js.map +1 -1
- package/lib/provider/README.mdx +10 -0
- package/lib/provider/examples/scheme.md +14 -0
- package/lib/provider/index.js.map +1 -1
- package/lib/radio/README.mdx +10 -0
- package/lib/radio/examples/basic.md +19 -0
- package/lib/radio/examples/disabled-option.md +19 -0
- package/lib/radio/examples/disabled.md +19 -0
- package/lib/radio/examples/field-names.md +39 -0
- package/lib/radio/examples/layout-vertical.md +19 -0
- package/lib/radio/examples/status.md +31 -0
- package/lib/radio/index.js +1 -1
- package/lib/radio/index.js.map +1 -1
- package/lib/segmented/README.mdx +10 -0
- package/lib/segmented/examples/basic.md +18 -0
- package/lib/segmented/examples/custom-field-names.md +43 -0
- package/lib/segmented/examples/disabled-option.md +29 -0
- package/lib/segmented/examples/disabled.md +18 -0
- package/lib/segmented/examples/icon.md +28 -0
- package/lib/segmented/examples/options.md +21 -0
- package/lib/segmented/index.js +2 -2
- package/lib/segmented/index.js.map +1 -1
- package/lib/select/README.mdx +10 -0
- package/lib/select/examples/basic.md +44 -0
- package/lib/select/examples/disabled-option.md +21 -0
- package/lib/select/examples/disabled.md +24 -0
- package/lib/select/examples/field-names.md +40 -0
- package/lib/select/examples/item-suffix.md +84 -0
- package/lib/select/examples/multiple.md +61 -0
- package/lib/select/examples/no-data.md +12 -0
- package/lib/select/examples/prefix-icon.md +74 -0
- package/lib/select/index.js +1 -1
- package/lib/select/index.js.map +1 -1
- package/lib/skeleton/README.mdx +10 -0
- package/lib/skeleton/examples/animation.md +13 -0
- package/lib/skeleton/examples/avatar.md +13 -0
- package/lib/skeleton/examples/basic.md +12 -0
- package/lib/skeleton/examples/rows.md +13 -0
- package/lib/skeleton/examples/title.md +12 -0
- package/lib/skeleton/index.js.map +1 -1
- package/lib/spin/README.mdx +10 -0
- package/lib/spin/examples/basic.md +67 -0
- package/lib/spin/index.js +3 -3
- package/lib/spin/index.js.map +1 -1
- package/lib/switch/README.mdx +10 -0
- package/lib/switch/examples/basic.md +24 -0
- package/lib/switch/examples/checked-text.md +17 -0
- package/lib/switch/examples/disabled.md +15 -0
- package/lib/switch/examples/loading.md +17 -0
- package/lib/switch/index.js +1 -1
- package/lib/switch/index.js.map +1 -1
- package/lib/table/README.mdx +10 -0
- package/lib/table/examples/basic.md +29 -0
- package/lib/table/examples/key.md +29 -0
- package/lib/table/examples/order.md +29 -0
- package/lib/table/examples/pagination.md +67 -0
- package/lib/table/examples/render.md +92 -0
- package/lib/table/examples/size.md +52 -0
- package/lib/table/examples/summary.md +40 -0
- package/lib/table/index.js +1 -1
- package/lib/table/index.js.map +1 -1
- package/lib/tabs/README.mdx +10 -0
- package/lib/tabs/examples/add-remove.md +115 -0
- package/lib/tabs/examples/animated.md +33 -0
- package/lib/tabs/examples/basic.md +32 -0
- package/lib/tabs/examples/card.md +33 -0
- package/lib/tabs/examples/center.md +33 -0
- package/lib/tabs/examples/disabled-tab.md +34 -0
- package/lib/tabs/examples/disabled.md +33 -0
- package/lib/tabs/examples/extra.md +65 -0
- package/lib/tabs/index.js +2 -2
- package/lib/tabs/index.js.map +1 -1
- package/lib/tag/README.mdx +10 -0
- package/lib/tag/examples/basic.md +28 -0
- package/lib/tag/examples/bordered.md +19 -0
- package/lib/tag/examples/color.md +25 -0
- package/lib/tag/examples/icon.md +21 -0
- package/lib/tag/examples/type.md +19 -0
- package/lib/tag/index.js +3 -3
- package/lib/tag/index.js.map +1 -1
- package/lib/theme/README.mdx +10 -0
- package/lib/theme/examples/colors.md +123 -0
- package/lib/theme/examples/theme.md +19 -0
- package/lib/theme/index.js +1 -1
- package/lib/theme/index.js.map +1 -1
- package/lib/tree/README.mdx +10 -0
- package/lib/tree/examples/basic.md +108 -0
- package/lib/tree/examples/custom-render.md +115 -0
- package/lib/tree/examples/direction.md +100 -0
- package/lib/tree/examples/field-names.md +114 -0
- package/lib/tree/examples/multiple.md +117 -0
- package/lib/tree/examples/readonly.md +90 -0
- package/lib/tree/examples/render-tree-string1.md +70 -0
- package/lib/tree/examples/render-tree-string2.md +52 -0
- package/lib/tree/examples/schema.md +130 -0
- package/lib/tree/examples/size.md +125 -0
- package/lib/tree/examples/toggle.md +71 -0
- package/lib/tree/index.js +1 -1
- package/lib/tree/index.js.map +1 -1
- package/lib/tree/register.js.map +1 -1
- package/lib/typography/README.mdx +10 -0
- package/lib/typography/examples/basic.md +27 -0
- package/lib/typography/examples/tag.md +25 -0
- package/lib/typography/examples/truncated.md +17 -0
- package/lib/typography/index.js.map +1 -1
- package/package.json +18 -18
- package/types/avatar/group.d.ts +1 -1
- package/types/back-top/index.d.ts +1 -1
- package/types/capture-screen/index.d.ts +1 -1
- package/types/color-palette/index.d.ts +1 -1
- package/types/color-picker/index.d.ts +1 -1
- package/types/cron/begin-interval.d.ts +3 -3
- package/types/cron/index.d.ts +5 -5
- package/types/cron/item.d.ts +4 -4
- package/types/cron/period.d.ts +3 -3
- package/types/cron/some.d.ts +3 -3
- package/types/date-picker/date.d.ts +2 -2
- package/types/date-picker/index.d.ts +2 -2
- package/types/date-picker/month.d.ts +2 -2
- package/types/date-picker/panel.d.ts +3 -3
- package/types/date-picker/time.d.ts +2 -2
- package/types/date-picker/year.d.ts +2 -2
- package/types/dropdown/index.d.ts +1 -1
- package/types/empty/index.d.ts +1 -1
- package/types/from-schema/index.d.ts +4 -4
- package/types/index.d.ts +12 -12
- package/types/md/index.d.ts +1 -1
- package/types/modal/index.d.ts +1 -1
- package/types/notification/index.d.ts +1 -1
- package/types/pagination/index.d.ts +1 -1
- package/types/provider/index.d.ts +1 -1
- package/types/segmented/index.d.ts +1 -1
- package/types/select/index.d.ts +1 -1
- package/types/table/index.d.ts +1 -1
- package/types/tabs/index.d.ts +1 -1
- package/types/tree/index.d.ts +1 -1
- package/umd/assets/svg/favicon.svg +1 -0
- package/umd/index.js +2 -2
- package/umd/js/46e8f96158e59015.js +1 -0
package/es/carousel/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/carousel/index.tsx"],"sourcesContent":["import {\n
|
|
1
|
+
{"version":3,"sources":["../../components/carousel/index.tsx"],"sourcesContent":["import {\n createEffect,\n createMemo,\n createSignal,\n Index,\n mergeProps,\n onCleanup,\n Show,\n} from 'solid-js';\nimport { isFunction } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme from '../theme';\n\nimport { style } from './style';\n\nexport interface CarouselProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 轮播的内容 */\n children?: JSX.Element[];\n /** 当前内容的位置\n * @default 0\n */\n offset?: number;\n /** 开启指示器 */\n dots?: boolean;\n /** 设置自动播放时长, 不设置时不自动播放 */\n autoplay?: number;\n /** 自定义头部 */\n header?: (current: number) => JSX.Element | ((current: number) => JSX.Element);\n /** 切换显示的位置时的回调方法 */\n onChange?: (e: number) => void;\n}\nexport type CarouselElement = CustomElement<CarouselProps>;\n\nfunction Carousel(_props: CarouselProps) {\n const { baseStyle } = theme;\n const props = mergeProps({ autoplay: -1, children: [] }, _props);\n const [left, setLeft] = createSignal(0);\n const [right, setRight] = createSignal(1);\n const [offset, setOffset] = createSignal(0);\n const [direction, setDirection] = createSignal<1 | -1 | 0>(0);\n let playTimer: NodeJS.Timeout | undefined;\n\n function onOffsetChange() {\n const _dir = direction();\n\n if (_dir === -1) {\n setOffset(left());\n } else if (_dir === 1) {\n setOffset(right());\n }\n setDirection(0);\n if (isFunction(props.onChange)) {\n props.onChange(offset());\n }\n }\n function handlePrev() {\n setDirection(-1);\n }\n function handleNext() {\n setDirection(1);\n }\n function handleDot(idx: number, e: Event) {\n e.stopPropagation();\n const _offset = offset();\n const _current = Math.floor(_offset / 20) * 20 + idx;\n\n if (_current > _offset) {\n setDirection(1);\n setRight(_current);\n } else if (_current < _offset) {\n setDirection(-1);\n setLeft(_current);\n }\n }\n function getPrevNext(idx: number, arr: JSX.Element[]) {\n let _prev = idx - 1,\n _next = idx + 1;\n\n if (_prev < 0) {\n _prev = arr.length - 1;\n }\n if (_next > arr.length - 1) {\n _next = 0;\n }\n return [_prev, _next];\n }\n const list = createMemo(() => [...props.children]);\n const dotLen = createMemo(() => Array(list().length > 20 ? 20 : list().length).fill(null));\n\n createEffect(() => {\n if (props.offset !== void 0) {\n setOffset(Number(props.offset));\n }\n });\n createEffect(() => {\n const [_prev, _next] = getPrevNext(offset(), list());\n\n setLeft(_prev);\n setRight(_next);\n });\n createEffect(() => {\n clearInterval(playTimer);\n const autoplay = Number(props.autoplay);\n\n if (autoplay > 0) {\n playTimer = setInterval(() => {\n if (autoplay < 1) {\n clearInterval(playTimer);\n }\n handleNext();\n }, autoplay);\n }\n });\n\n onCleanup(() => {\n clearInterval(playTimer);\n });\n const header = createMemo(() =>\n isFunction(props.header) ? props.header(offset()) : props.header,\n );\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('carousel', props.class)}>\n <section class=\"list\" data-dir={direction()}>\n <div class=\"item\">{list()[left()]}</div>\n <div class=\"item\" onAnimationEnd={onOffsetChange}>\n {list()[offset()]}\n </div>\n <div class=\"item\">{list()[right()]}</div>\n </section>\n <slot name=\"header\" />\n <Show when={header()}>\n <section class=\"header\">{header()}</section>\n </Show>\n <div class=\"prev\" onClick={handlePrev} />\n <div class=\"next\" onClick={handleNext} />\n <Show when={props.dots}>\n <div class=\"dots\">\n <Index each={dotLen()}>\n {(_, idx) => {\n return (\n <i\n class=\"dot\"\n classList={{\n active: idx === (offset() % 20) + direction(),\n }}\n onClick={handleDot.bind(null, idx)}\n />\n );\n }}\n </Index>\n </div>\n </Show>\n </section>\n </>\n );\n}\n\ncustomElement<CarouselProps>(\n 'n-carousel',\n {\n children: void 0,\n autoplay: void 0,\n class: void 0,\n css: void 0,\n offset: void 0,\n dots: void 0,\n header: void 0,\n onChange: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n onChange(key: number) {\n el.offset = key;\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: key,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n });\n return <Carousel {...props} />;\n },\n);\nexport default Carousel;\n"],"names":["createEffect","createMemo","createSignal","Index","mergeProps","onCleanup","Show","isFunction","css","cx","customElement","theme","style","Carousel","_props","playTimer","baseStyle","props","autoplay","children","left","setLeft","right","setRight","offset","setOffset","direction","setDirection","onOffsetChange","_dir","onChange","handlePrev","handleNext","handleDot","idx","e","stopPropagation","_offset","_current","Math","floor","list","dotLen","Array","length","fill","Number","arr","_prev","_next","clearInterval","setInterval","header","dots","_","bind","class","opt","el","element","key","dispatchEvent","CustomEvent","detail","replaceChildren"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 基本使用
|
|
3
|
+
description: 基本使用
|
|
4
|
+
order: 1
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox label="启用"></n-checkbox>
|
|
9
|
+
<n-checkbox default-value="B"></n-checkbox>
|
|
10
|
+
<script>
|
|
11
|
+
const el = container.querySelectorAll('n-checkbox');
|
|
12
|
+
|
|
13
|
+
el[0].onchange = function (e) {
|
|
14
|
+
console.log(e.detail);
|
|
15
|
+
};
|
|
16
|
+
el[1].options = ['A', 'B', 'C', 'D'];
|
|
17
|
+
el[1].onchange = function (e) {
|
|
18
|
+
console.log(e.detail);
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
<n-checkbox
|
|
25
|
+
default-value={['B']}
|
|
26
|
+
options={['A', 'B', 'C', 'D']}
|
|
27
|
+
onChange={(e) => {
|
|
28
|
+
console.log(e.detail);
|
|
29
|
+
}}
|
|
30
|
+
/>
|
|
31
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 开启全选
|
|
3
|
+
description: 可以通过 `check-all` 设置开启全选
|
|
4
|
+
order: 5
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox check-all="true" value="2"></n-checkbox>
|
|
9
|
+
<script>
|
|
10
|
+
const el = container.querySelector('n-checkbox');
|
|
11
|
+
|
|
12
|
+
el.options = [
|
|
13
|
+
{ value: 1, label: '选项-1' },
|
|
14
|
+
{ value: 2, label: '选项-2' },
|
|
15
|
+
{ value: 3, label: '选项-3' },
|
|
16
|
+
{ value: 4, label: '选项-4' },
|
|
17
|
+
];
|
|
18
|
+
el.onchange = function (e) {
|
|
19
|
+
el.value = e.detail;
|
|
20
|
+
};
|
|
21
|
+
</script>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```jsx
|
|
25
|
+
<n-checkbox
|
|
26
|
+
check-all
|
|
27
|
+
options={[
|
|
28
|
+
{ value: 1, label: '选项-1' },
|
|
29
|
+
{ value: 2, label: '选项-2' },
|
|
30
|
+
{ value: 3, label: '选项-3' },
|
|
31
|
+
{ value: 4, label: '选项-4' },
|
|
32
|
+
]}
|
|
33
|
+
onChange={(e) => {
|
|
34
|
+
e.target.value = e.detail;
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
37
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 禁用全部选项选项
|
|
3
|
+
description: 禁用全部选项选项
|
|
4
|
+
order: 3
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox value="1" disabled="true"></n-checkbox>
|
|
9
|
+
<script>
|
|
10
|
+
const el = container.querySelector('n-checkbox');
|
|
11
|
+
|
|
12
|
+
el.options = [
|
|
13
|
+
{ value: 1, label: '选项-1' },
|
|
14
|
+
{ value: 2, label: '选项-2' },
|
|
15
|
+
];
|
|
16
|
+
</script>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
```tsx
|
|
20
|
+
<n-checkbox
|
|
21
|
+
value={[1]}
|
|
22
|
+
disabled
|
|
23
|
+
options={[
|
|
24
|
+
{ value: 1, label: '选项-1' },
|
|
25
|
+
{ value: 2, label: '选项-2' },
|
|
26
|
+
]}
|
|
27
|
+
/>
|
|
28
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 禁用单个选项
|
|
3
|
+
description: 禁用单个选项
|
|
4
|
+
order: 2
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox value="2"></n-checkbox>
|
|
9
|
+
<script>
|
|
10
|
+
const el = container.querySelector('n-checkbox');
|
|
11
|
+
|
|
12
|
+
el.options = [
|
|
13
|
+
{ value: 1, label: '选项-1', disabled: true },
|
|
14
|
+
{ value: 2, label: '选项-2' },
|
|
15
|
+
{ value: 3, label: '选项-3' },
|
|
16
|
+
];
|
|
17
|
+
el.onchange = function (e) {
|
|
18
|
+
el.value = e.detail;
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
<n-checkbox
|
|
25
|
+
value={[2]}
|
|
26
|
+
options={[
|
|
27
|
+
{ value: 1, label: '选项-1', disabled: true },
|
|
28
|
+
{ value: 2, label: '选项-2' },
|
|
29
|
+
{ value: 3, label: '选项-3' },
|
|
30
|
+
]}
|
|
31
|
+
onChange={(e) => {
|
|
32
|
+
e.target.value = e.detail;
|
|
33
|
+
}}
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 自定义字段名
|
|
3
|
+
description: 自定义节点 'label'、'value'、'options' 的字段
|
|
4
|
+
order: 6
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox></n-checkbox>
|
|
9
|
+
<script>
|
|
10
|
+
const el = container.querySelector('n-checkbox');
|
|
11
|
+
|
|
12
|
+
el.options = [
|
|
13
|
+
{ code: 1, name: '选项-1' },
|
|
14
|
+
{ code: 2, name: '选项-2' },
|
|
15
|
+
{ code: 3, name: '选项-3' },
|
|
16
|
+
];
|
|
17
|
+
el.fieldNames = { label: 'name', value: 'code' };
|
|
18
|
+
el.onchange = function (e) {
|
|
19
|
+
el.value = e.detail;
|
|
20
|
+
};
|
|
21
|
+
</script>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```jsx
|
|
25
|
+
<n-checkbox
|
|
26
|
+
value={2}
|
|
27
|
+
field-names={{
|
|
28
|
+
label: 'name',
|
|
29
|
+
value: 'code',
|
|
30
|
+
}}
|
|
31
|
+
options={[
|
|
32
|
+
{ code: 1, name: '选项-1' },
|
|
33
|
+
{ code: 2, name: '选项-2' },
|
|
34
|
+
{ code: 3, name: '选项-3' },
|
|
35
|
+
]}
|
|
36
|
+
onChange={(e) => {
|
|
37
|
+
e.target.value = e.detail;
|
|
38
|
+
}}
|
|
39
|
+
/>
|
|
40
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 状态
|
|
3
|
+
description: radio提供5种内置的状态
|
|
4
|
+
order: 6
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox value="b"></n-checkbox>
|
|
9
|
+
<script>
|
|
10
|
+
const el = container.querySelector('n-checkbox');
|
|
11
|
+
|
|
12
|
+
el.options = [
|
|
13
|
+
{ value: 'a', label: '默认' },
|
|
14
|
+
{ value: 'b', label: '成功', status: 'success' },
|
|
15
|
+
{ value: 'c', label: '警告', status: 'warning' },
|
|
16
|
+
{ value: 'd', label: '错误', status: 'error' },
|
|
17
|
+
];
|
|
18
|
+
el.onchange = function (e) {
|
|
19
|
+
el.value = e.detail;
|
|
20
|
+
};
|
|
21
|
+
</script>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
```jsx
|
|
25
|
+
<n-checkbox
|
|
26
|
+
value={['b']}
|
|
27
|
+
options={[
|
|
28
|
+
{ value: 'a', label: '默认' },
|
|
29
|
+
{ value: 'b', label: '成功', status: 'success' },
|
|
30
|
+
{ value: 'c', label: '警告', status: 'warning' },
|
|
31
|
+
{ value: 'd', label: '错误', status: 'error' },
|
|
32
|
+
]}
|
|
33
|
+
onChange={(e) => {
|
|
34
|
+
e.target.value = e.detail;
|
|
35
|
+
}}
|
|
36
|
+
/>
|
|
37
|
+
```
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 垂直排列
|
|
3
|
+
description: 通过设置 `vertical` 属性来使用垂直排列
|
|
4
|
+
order: 4
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<n-checkbox layout="vertical"></n-checkbox>
|
|
9
|
+
<script>
|
|
10
|
+
const el = container.querySelector('n-checkbox');
|
|
11
|
+
|
|
12
|
+
el.options = [
|
|
13
|
+
{ value: 'a', label: '选项-1' },
|
|
14
|
+
{ value: 'b', label: '选项-2' },
|
|
15
|
+
{ value: 'c', label: '选项-3' },
|
|
16
|
+
];
|
|
17
|
+
el.onchange = function (e) {
|
|
18
|
+
el.value = e.detail;
|
|
19
|
+
};
|
|
20
|
+
</script>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
```jsx
|
|
24
|
+
<n-checkbox
|
|
25
|
+
layout="vertical"
|
|
26
|
+
name="vertical-checkbox"
|
|
27
|
+
options={[
|
|
28
|
+
{ value: 'a', label: '选项-1' },
|
|
29
|
+
{ value: 'b', label: '选项-2' },
|
|
30
|
+
{ value: 'c', label: '选项-3' },
|
|
31
|
+
]}
|
|
32
|
+
onChange={(e) => {
|
|
33
|
+
e.target.value = e.detail;
|
|
34
|
+
}}
|
|
35
|
+
/>
|
|
36
|
+
```
|
package/es/checkbox/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{insert as l}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as n}from"solid-js/web";import{createComponent as r}from"solid-js/web";import{className as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let d=t("<style> "),u=t("<style>"),m=t("<section>"),c=t('<span><input class="checkbox" type="checkbox"><label>');import{
|
|
1
|
+
import{use as e}from"solid-js/web";import{template as t}from"solid-js/web";import{setAttribute as i}from"solid-js/web";import{insert as l}from"solid-js/web";import{effect as o}from"solid-js/web";import{delegateEvents as n}from"solid-js/web";import{createComponent as r}from"solid-js/web";import{className as s}from"solid-js/web";import{addEventListener as a}from"solid-js/web";let d=t("<style> "),u=t("<style>"),m=t("<section>"),c=t('<span><input class="checkbox" type="checkbox"><label>');import{createEffect as f,createMemo as v,createSignal as p,For as b,mergeProps as h,Show as g}from"solid-js";import{css as y,cx as k}from"@moneko/css";import{customElement as j}from"solid-element";import{FieldName as w}from"../basic-config";import C from"../get-options";import x from"../theme";import{style as A}from"./style";function E(t){let{baseStyle:n}=x,[h,j]=p([]),E=v(()=>Object.assign({},w,t.fieldNames));f(()=>{let e=void 0===t.value?t.defaultValue:t.value,i=[];Array.isArray(e)?i=e:void 0!==e&&(i=[e]),j(i)});let $=v(()=>{let e=E();if(void 0===t.options)return C([{value:1}],e);let i=[{[e.value]:"all",[e.label]:"全选",indeterminate:!1}];return(t.checkAll?i:[]).concat(C(t.options||[],e))}),_=v(()=>{let e=[],t=E();return $().forEach(i=>{"indeterminate"in i||void 0===i[t.value]||e.push(i[t.value])}),e}),N=v(()=>{let e=!0,t=_();for(let i=0,l=t.length;i<l;i++)if(!h().includes(t[i])){e=!1;break}return e});function O(e){if(!t.disabled&&!e.disabled){let i="indeterminate"in e,l=i?[]:[...h()],o=e[E().value];if(i)N()||(l=_());else{let e=l.indexOf(o);-1!==e?l.splice(e,1):l.push(o)}void 0===t.value&&j(l),null==t.onChange||t.onChange.call(t,void 0===t.options?!!l[0]:l)}}function V(e,t){t.preventDefault(),"Enter"===t.key&&O(e)}return[(()=>{let e=d(),t=e.firstChild;return o(()=>t.data=n()),e})(),(()=>{let e=u();return e.textContent=A,e})(),r(g,{get when(){return t.css},get children(){let e=d(),i=e.firstChild;return o(()=>i.data=y(t.css)),e}}),(()=>{let n=m();return l(n,r(b,{get each(){return $()},children:n=>{let r=t.disabled||n.disabled,d=E(),u=n[d.value];return"indeterminate"in n&&f(()=>{let e;n.ref.indeterminate=(e=!1,_().forEach(t=>{h().length&&!h().includes(t)&&(e=!0)}),e)}),(()=>{let m=c(),f=m.firstChild,v=n.ref,p=f.nextSibling;return a(m,"click",O.bind(null,n),!0),a(m,"keyup",V.bind(null,n),!0),i(m,"aria-disabled",r),i(m,"tabindex",r?-1:0),a(f,"change",O.bind(null,n)),"function"==typeof v?e(v,f):n.ref=f,f.value=u,f.disabled=r,l(p,()=>n[d.label]),o(e=>{let l=k("item",n.class,n.status),o=t.name;return l!==e._v$&&s(m,e._v$=l),o!==e._v$2&&i(f,"name",e._v$2=o),e},{_v$:void 0,_v$2:void 0}),o(()=>f.checked="indeterminate"in n?N():h().includes(u)),m})()}})),o(()=>s(n,k("box",t.layout,t.class))),n})()]}j("n-checkbox",{class:void 0,css:void 0,name:void 0,disabled:void 0,value:void 0,defaultValue:void 0,options:void 0,onChange:void 0,fieldNames:void 0,checkAll:void 0,layout:void 0},(e,t)=>{let i=t.element,l=h({layout:i.layout||"horizontal",onChange(e){i.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return f(()=>{i.removeAttribute("options"),i.removeAttribute("field-names"),i.removeAttribute("css")}),r(E,l)});export default E;n(["click","keyup"]);
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/es/checkbox/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/checkbox/index.tsx"],"sourcesContent":["import { For, Show, createEffect, createMemo, createSignal, mergeProps } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\n\n/** 通用API\n * @since 1.0.0\n */\nexport interface CheckboxBaseProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"checkbox\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n}\n/** 复选框API */\nexport interface CheckboxBoolProps extends CheckboxBaseProps {\n /** 一个 bool 值; */\n value?: boolean;\n /** 默认值 */\n defaultValue?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n checkAll?: never;\n options?: never;\n}\n/** 通过数据渲染一组复选框按钮的API */\nexport interface CheckboxGroupProps extends CheckboxBaseProps {\n /** 全选 */\n checkAll?: boolean;\n /** 值;\n * 当设置了value时, 将是受控模式;\n * 受控模式可通过 onChange 事件更新 value\n **/\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n /** 渲染选项所使用的数据,\n * 当没有设置该值时, 将渲染一个切换 bool 值的按钮\n * */\n options?: (CheckboxOption | string)[];\n /** 值修改时的回调方法 */\n onChange?: (val: (string | number)[]) => void;\n}\n/** 复选框选项\n * @since 1.0.0\n */\nexport interface CheckboxOption extends BaseOption {\n /** 不确定状态 */\n indeterminate?: boolean;\n}\n\nfunction Checkbox(props: CheckboxBoolProps | CheckboxGroupProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n createEffect(() => {\n const _val = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n let val: (string | number)[] = [];\n\n if (Array.isArray(_val)) {\n val = _val;\n } else if (typeof _val !== 'undefined') {\n val = [_val as unknown as string];\n }\n\n setValue(val);\n });\n const options = createMemo(() => {\n const fieldName = fieldNames();\n\n if (typeof props.options === 'undefined') {\n return getOptions([{ value: 1 } as CheckboxOption], fieldName);\n }\n const checkAll: CheckboxOption[] = [\n { [fieldName.value]: 'all', [fieldName.label]: '全选', indeterminate: false },\n ];\n const arr = props.checkAll ? checkAll : [];\n\n return arr.concat(getOptions(props.options || [], fieldName));\n });\n\n const all = createMemo(() => {\n const allVal: (string | number)[] = [];\n const fieldName = fieldNames();\n\n options().forEach((item) => {\n if (!('indeterminate' in item) && typeof item[fieldName.value] !== 'undefined') {\n allVal.push(item[fieldName.value]!);\n }\n });\n\n return allVal;\n });\n\n function getIndeterminate() {\n let _indeterminate = false;\n\n all().forEach((v) => {\n if (value().length && !value().includes(v)) {\n _indeterminate = true;\n }\n });\n return _indeterminate;\n }\n const checkedAll = createMemo(() => {\n let checked = true;\n const alls = all();\n\n for (let i = 0, len = alls.length; i < len; i++) {\n if (!value().includes(alls[i])) {\n checked = false;\n break;\n }\n }\n return checked;\n });\n\n function onChange(item: CheckboxOption) {\n if (!props.disabled && !item.disabled) {\n const isIndeterminate = 'indeterminate' in item;\n let newVal = isIndeterminate ? [] : [...value()];\n const val = item[fieldNames().value]!;\n\n if (isIndeterminate) {\n if (!checkedAll()) {\n newVal = all();\n }\n } else {\n const idx = newVal.indexOf(val);\n\n if (idx !== -1) {\n newVal.splice(idx, 1);\n } else {\n newVal.push(val);\n }\n }\n if (typeof props.value === 'undefined') {\n setValue(newVal);\n }\n props.onChange?.((typeof props.options === 'undefined' ? !!newVal[0] : newVal) as never);\n }\n }\n function onKeyUp(item: CheckboxOption, e: KeyboardEvent) {\n e.preventDefault();\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('box', props.layout, props.class)}>\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const fieldName = fieldNames();\n const realVal = item[fieldName.value]!;\n\n if ('indeterminate' in item) {\n createEffect(() => {\n item.ref.indeterminate = getIndeterminate();\n });\n }\n return (\n <span\n class={cx('item', item.class, item.status)}\n aria-disabled={readOnly}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={onChange.bind(null, item)}\n >\n <input\n ref={item.ref}\n class=\"checkbox\"\n type=\"checkbox\"\n name={props.name}\n value={realVal as string}\n disabled={readOnly}\n checked={'indeterminate' in item ? checkedAll() : value().includes(realVal)}\n onChange={onChange.bind(null, item)}\n />\n <label>{item[fieldName.label]}</label>\n </span>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type CheckboxGroupElement = CustomElement<CheckboxGroupProps>;\nexport type CheckboxBoolElement = CustomElement<CheckboxBoolProps>;\n\ncustomElement<CheckboxBoolProps | CheckboxGroupProps>(\n 'n-checkbox',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: void 0,\n onChange: void 0,\n fieldNames: void 0,\n checkAll: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: (string | number)[] | boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Checkbox {...props} />;\n },\n);\nexport default Checkbox;\n"],"names":["For","Show","createEffect","createMemo","createSignal","mergeProps","css","cx","customElement","style","FieldName","getOptions","theme","Checkbox","props","baseStyle","value","setValue","fieldNames","Object","assign","_val","defaultValue","val","Array","isArray","options","fieldName","checkAll","label","indeterminate","arr","concat","all","allVal","forEach","item","push","checkedAll","checked","alls","i","len","length","includes","onChange","disabled","isIndeterminate","newVal","idx","indexOf","splice","onKeyUp","e","preventDefault","key","readOnly","realVal","_indeterminate","ref","v","bind","class","status","name","layout","_","opt","el","element","next","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/checkbox/index.tsx"],"sourcesContent":["import { createEffect, createMemo, createSignal, For, mergeProps, Show } from 'solid-js';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { BaseOption, BasicConfig, CustomElement } from '..';\nimport { FieldName } from '../basic-config';\nimport getOptions from '../get-options';\nimport theme from '../theme';\n\nimport { style } from './style';\n\n/** 通用API\n * @since 1.0.0\n */\nexport interface CheckboxBaseProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** input[type=\"checkbox\"] 的 name 属性 */\n name?: string;\n /** 只读 */\n disabled?: boolean;\n /** 选项排列方式\n * @default 'horizontal'\n */\n layout?: 'vertical' | 'horizontal';\n /** 自定义节点 'label'、'value'、'options' 的字段 */\n fieldNames?: BasicConfig['fieldName'];\n}\n/** 复选框API */\nexport interface CheckboxBoolProps extends CheckboxBaseProps {\n /** 一个 bool 值; */\n value?: boolean;\n /** 默认值 */\n defaultValue?: boolean;\n /** 值修改时的回调方法 */\n onChange?: (val: boolean) => void;\n checkAll?: never;\n options?: never;\n}\n/** 通过数据渲染一组复选框按钮的API */\nexport interface CheckboxGroupProps extends CheckboxBaseProps {\n /** 全选 */\n checkAll?: boolean;\n /** 值;\n * 当设置了value时, 将是受控模式;\n * 受控模式可通过 onChange 事件更新 value\n **/\n value?: (string | number)[];\n /** 默认值 */\n defaultValue?: (string | number)[];\n /** 渲染选项所使用的数据,\n * 当没有设置该值时, 将渲染一个切换 bool 值的按钮\n * */\n options?: (CheckboxOption | string)[];\n /** 值修改时的回调方法 */\n onChange?: (val: (string | number)[]) => void;\n}\n/** 复选框选项\n * @since 1.0.0\n */\nexport interface CheckboxOption extends BaseOption {\n /** 不确定状态 */\n indeterminate?: boolean;\n}\n\nfunction Checkbox(props: CheckboxBoolProps | CheckboxGroupProps) {\n const { baseStyle } = theme;\n const [value, setValue] = createSignal<(string | number)[]>([]);\n const fieldNames = createMemo(() => Object.assign({}, FieldName, props.fieldNames));\n\n createEffect(() => {\n const _val = typeof props.value === 'undefined' ? props.defaultValue : props.value;\n let val: (string | number)[] = [];\n\n if (Array.isArray(_val)) {\n val = _val;\n } else if (typeof _val !== 'undefined') {\n val = [_val as unknown as string];\n }\n\n setValue(val);\n });\n const options = createMemo(() => {\n const fieldName = fieldNames();\n\n if (typeof props.options === 'undefined') {\n return getOptions([{ value: 1 } as CheckboxOption], fieldName);\n }\n const checkAll: CheckboxOption[] = [\n { [fieldName.value]: 'all', [fieldName.label]: '全选', indeterminate: false },\n ];\n const arr = props.checkAll ? checkAll : [];\n\n return arr.concat(getOptions(props.options || [], fieldName));\n });\n\n const all = createMemo(() => {\n const allVal: (string | number)[] = [];\n const fieldName = fieldNames();\n\n options().forEach((item) => {\n if (!('indeterminate' in item) && typeof item[fieldName.value] !== 'undefined') {\n allVal.push(item[fieldName.value]!);\n }\n });\n\n return allVal;\n });\n\n function getIndeterminate() {\n let _indeterminate = false;\n\n all().forEach((v) => {\n if (value().length && !value().includes(v)) {\n _indeterminate = true;\n }\n });\n return _indeterminate;\n }\n const checkedAll = createMemo(() => {\n let checked = true;\n const alls = all();\n\n for (let i = 0, len = alls.length; i < len; i++) {\n if (!value().includes(alls[i])) {\n checked = false;\n break;\n }\n }\n return checked;\n });\n\n function onChange(item: CheckboxOption) {\n if (!props.disabled && !item.disabled) {\n const isIndeterminate = 'indeterminate' in item;\n let newVal = isIndeterminate ? [] : [...value()];\n const val = item[fieldNames().value]!;\n\n if (isIndeterminate) {\n if (!checkedAll()) {\n newVal = all();\n }\n } else {\n const idx = newVal.indexOf(val);\n\n if (idx !== -1) {\n newVal.splice(idx, 1);\n } else {\n newVal.push(val);\n }\n }\n if (typeof props.value === 'undefined') {\n setValue(newVal);\n }\n props.onChange?.((typeof props.options === 'undefined' ? !!newVal[0] : newVal) as never);\n }\n }\n function onKeyUp(item: CheckboxOption, e: KeyboardEvent) {\n e.preventDefault();\n if (e.key === 'Enter') {\n onChange(item);\n }\n }\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <section class={cx('box', props.layout, props.class)}>\n <For each={options()}>\n {(item) => {\n const readOnly = props.disabled || item.disabled;\n const fieldName = fieldNames();\n const realVal = item[fieldName.value]!;\n\n if ('indeterminate' in item) {\n createEffect(() => {\n item.ref.indeterminate = getIndeterminate();\n });\n }\n return (\n <span\n class={cx('item', item.class, item.status)}\n aria-disabled={readOnly}\n tabindex={readOnly ? -1 : 0}\n onKeyUp={onKeyUp.bind(null, item)}\n onClick={onChange.bind(null, item)}\n >\n <input\n ref={item.ref}\n class=\"checkbox\"\n type=\"checkbox\"\n name={props.name}\n value={realVal as string}\n disabled={readOnly}\n checked={'indeterminate' in item ? checkedAll() : value().includes(realVal)}\n onChange={onChange.bind(null, item)}\n />\n <label>{item[fieldName.label]}</label>\n </span>\n );\n }}\n </For>\n </section>\n </>\n );\n}\n\nexport type CheckboxGroupElement = CustomElement<CheckboxGroupProps>;\nexport type CheckboxBoolElement = CustomElement<CheckboxBoolProps>;\n\ncustomElement<CheckboxBoolProps | CheckboxGroupProps>(\n 'n-checkbox',\n {\n class: void 0,\n css: void 0,\n name: void 0,\n disabled: void 0,\n value: void 0,\n defaultValue: void 0,\n options: void 0,\n onChange: void 0,\n fieldNames: void 0,\n checkAll: void 0,\n layout: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n layout: el.layout || 'horizontal',\n onChange(next: (string | number)[] | boolean) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: next,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.removeAttribute('options');\n el.removeAttribute('field-names');\n el.removeAttribute('css');\n });\n return <Checkbox {...props} />;\n },\n);\nexport default Checkbox;\n"],"names":["createEffect","createMemo","createSignal","For","mergeProps","Show","css","cx","customElement","FieldName","getOptions","theme","style","Checkbox","props","baseStyle","value","setValue","fieldNames","Object","assign","_val","defaultValue","val","Array","isArray","options","fieldName","checkAll","label","indeterminate","arr","concat","all","allVal","forEach","item","push","checkedAll","checked","alls","i","len","length","includes","onChange","disabled","isIndeterminate","newVal","idx","indexOf","splice","onKeyUp","e","preventDefault","key","readOnly","realVal","_indeterminate","ref","v","bind","class","status","name","layout","_","opt","el","element","next","dispatchEvent","CustomEvent","detail","removeAttribute"],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 最简单的用法
|
|
3
|
+
description: 最简单的用法
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
```html
|
|
7
|
+
<n-code language="javascript">
|
|
8
|
+
let foo = bar.baz([1, 2, 3]);
|
|
9
|
+
foo = foo + 1;
|
|
10
|
+
</n-code>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```jsx
|
|
14
|
+
<n-code
|
|
15
|
+
code={`let foo = bar.baz([1, 2, 3]);
|
|
16
|
+
foo = foo + 1;`}
|
|
17
|
+
language="javascript"
|
|
18
|
+
/>
|
|
19
|
+
```
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 高亮 diff
|
|
3
|
+
description: 将diff字符串高亮, 只需要将lang设置成 `diff-语言名称` 即可, 比如 css 你可以写成 `language="diff-css"`
|
|
4
|
+
order: 5
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
```html
|
|
8
|
+
<h4>javascript</h4>
|
|
9
|
+
<n-code language="diff-javascript">
|
|
10
|
+
+ let foo = bar.baz([1, 2, 3]);
|
|
11
|
+
- foo = foo + 1;
|
|
12
|
+
let foo = bar.baz([1, 2, 3]);
|
|
13
|
+
- foo = foo + 1;
|
|
14
|
+
- console.log(12);
|
|
15
|
+
</n-code>
|
|
16
|
+
<h4>css</h4>
|
|
17
|
+
<n-code language="diff-css">
|
|
18
|
+
+ body {
|
|
19
|
+
- div {
|
|
20
|
+
color: red;
|
|
21
|
+
- border: 5px solid #ddd;
|
|
22
|
+
- outline: none;
|
|
23
|
+
}
|
|
24
|
+
</n-code>
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```jsx
|
|
28
|
+
<h4>javascript</h4>
|
|
29
|
+
<n-code
|
|
30
|
+
code={`+ let foo = bar.baz([1, 2, 3]);
|
|
31
|
+
- foo = foo + 1;
|
|
32
|
+
let foo = bar.baz([1, 2, 3]);
|
|
33
|
+
- foo = foo + 1;
|
|
34
|
+
- console.log(12);`}
|
|
35
|
+
language="diff-javascript"
|
|
36
|
+
/>
|
|
37
|
+
<h4>css</h4>
|
|
38
|
+
<n-code language="diff-css" code={`+ body {
|
|
39
|
+
- div {
|
|
40
|
+
color: red;
|
|
41
|
+
- border: 5px solid #ddd;
|
|
42
|
+
- outline: none;
|
|
43
|
+
}`}
|
|
44
|
+
/>
|
|
45
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 代码行号
|
|
3
|
+
description: 显示代码行号
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
```html
|
|
7
|
+
<n-code line-number="true" language="javascript">
|
|
8
|
+
const foo = bar.baz([1, 2, 3]) + 1;
|
|
9
|
+
console.log(`foo: ${foo}`);
|
|
10
|
+
</n-code>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```jsx
|
|
14
|
+
<n-code line-number language="javascript">
|
|
15
|
+
{`const foo = bar.baz([1, 2, 3]) + 1;
|
|
16
|
+
console.log(\`foo: $\{foo}\`);`}
|
|
17
|
+
</n-code>
|
|
18
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 编辑
|
|
3
|
+
description: 支持编辑
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
```html
|
|
7
|
+
<n-code edit="true" language="javascript">
|
|
8
|
+
const foo = bar.baz([1, 2, 3]) + 1;
|
|
9
|
+
console.log(`foo: foo`);
|
|
10
|
+
</n-code>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```jsx
|
|
14
|
+
<n-code
|
|
15
|
+
edit
|
|
16
|
+
language="javascript"
|
|
17
|
+
code={`const foo = bar.baz([1, 2, 3]) + 1;
|
|
18
|
+
console.log(\`foo: foo\`);`}
|
|
19
|
+
/>
|
|
20
|
+
```
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: 顶部工具栏
|
|
3
|
+
description: 显示顶部工具栏
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
```html
|
|
7
|
+
<n-code toolbar="true" language="javascript">
|
|
8
|
+
const foo = bar.baz([1, 2, 3]) + 1;
|
|
9
|
+
console.log(`foo: ${foo}`);
|
|
10
|
+
</n-code>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
```jsx
|
|
14
|
+
<n-code toolbar language="javascript">
|
|
15
|
+
{`const foo = bar.baz([1, 2, 3]) + 1;
|
|
16
|
+
console.log(\`foo: \${foo}\`);`}
|
|
17
|
+
</n-code>
|
|
18
|
+
```
|
package/es/code/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{use as
|
|
2
|
-
`,
|
|
1
|
+
function e(e,t,r,n,o,i,s){try{var l=e[i](s),a=l.value}catch(e){r(e);return}l.done?t(a):Promise.resolve(a).then(n,o)}function t(t){return function(){var r=this,n=arguments;return new Promise(function(o,i){var s=t.apply(r,n);function l(t){e(s,o,i,l,a,"next",t)}function a(t){e(s,o,i,l,a,"throw",t)}l(void 0)})}}import{use as r}from"solid-js/web";import{template as n}from"solid-js/web";import{setAttribute as o}from"solid-js/web";import{insert as i}from"solid-js/web";import{effect as s}from"solid-js/web";import{delegateEvents as l}from"solid-js/web";import{createComponent as a}from"solid-js/web";import{className as u}from"solid-js/web";import{classList as d}from"solid-js/web";import{addEventListener as c}from"solid-js/web";let m=n('<div class="toolbar"><button class="toolbar-copy" aria-label="copy">'),v=n("<pre><code> "),g=n("<style> "),f=n("<style>"),p=n("<div><textarea>");import{createEffect as h,createResource as b,createSignal as $,mergeProps as w,onCleanup as C,onMount as _,Show as y,untrack as k}from"solid-js";import j from"@moneko/common/lib/isFunction";import P from"@moneko/common/lib/setClipboard";import{css as L,cx as x}from"@moneko/css";import{customElement as E}from"solid-element";import W from"../theme";import{style as N}from"./style";let I={Prism:null,prismCss:null};function A(e){let n;let{baseStyle:l}=W,w=/^diff-([\w-]+)/i,[E,A]=$(""),[M,O]=$(20),[R,B]=$(!1);function F(){return(F=t(function*(){return I.Prism||(I.Prism=(yield import("../prism")).default),I.Prism})).apply(this,arguments)}function H(){return(H=t(function*(){return I.prismCss||(I.prismCss=(yield import("../prism/css")).default),I.prismCss})).apply(this,arguments)}let[J]=b("prism",function(){return F.apply(this,arguments)}),[S]=b("prism-css",function(){return H.apply(this,arguments)});function T(){return new IntersectionObserver(e=>{B(e[0].isIntersecting)})}function U(){return new Worker("https://cdn.jsdelivr.net/npm/neko-ui@latest/es/code/worker.js")}let q=e.webWorker?void 0:T(),z=e.webWorker?U():void 0;function D(){P(k(E),n)}function G(){return(()=>{let t=v(),l=t.firstChild,g=n,f=l.firstChild;return i(t,a(y,{get when(){return e.toolbar},get children(){let t=m();return c(t.firstChild,"click",D,!0),s(()=>{var r;return o(t,"data-language",null==(r=e.language)?void 0:r.split(" ")[0])}),t}}),l),"function"==typeof g?r(g,l):n=l,s(r=>{let n={[`language-${e.language}`]:!!e.language,"line-numbers":e.lineNumber,"not-toolbar":!e.toolbar,[e.class]:!e.edit},o=`language-${e.language}`,i=E();return r._v$=d(t,n,r._v$),o!==r._v$2&&u(l,r._v$2=o),i!==r._v$3&&(f.data=r._v$3=i),r},{_v$:void 0,_v$2:void 0,_v$3:void 0}),t})()}function K({target:t}){let r=`${t.value}${t.value.endsWith("\n")?"":""}`;A(r),j(e.onChange)&&e.onChange(r)}function Q(t){n.innerHTML=t.data,O(n.getBoundingClientRect().height-(e.toolbar?40:16))}function V(){q&&(q.unobserve(n),q.disconnect())}return h(()=>{if(e.code)try{A(decodeURIComponent(e.code))}catch(t){A(e.code)}else A("")}),h(()=>{e.webWorker?(z||(z=U()),z.addEventListener("message",Q)):q||(q=T())}),h(()=>{z?z.postMessage(JSON.stringify({language:e.language,code:E()})):function(e,t){let r=J();t&&R()&&r&&(V(),w.test(e)&&!r.languages[e]&&(r.languages[e]=r.languages.diff),Q({data:r.highlight(`${t}
|
|
2
|
+
`,r.languages[e]||r.languages.markup,e)}))}(e.language||"markup",E())}),_(()=>{n&&(null==q||q.observe(n))}),C(()=>{z&&(z.removeEventListener("message",Q),z.terminate()),V()}),[(()=>{let e=g(),t=e.firstChild;return s(()=>t.data=l()),e})(),(()=>{let e=g(),t=e.firstChild;return s(()=>{var e;return t.data=null==(e=S())?void 0:e()}),e})(),(()=>{let e=f();return e.textContent=N,e})(),a(y,{get when(){return e.css},get children(){let t=g(),r=t.firstChild;return s(()=>r.data=L(e.css)),t}}),a(y,{get when(){return e.edit},get fallback(){return a(G,{})},get children(){let t=p(),r=t.firstChild;return c(r,"input",K,!0),i(t,a(G,{}),null),s(n=>{let o=x("n-editor",e.class),i=!!e.lineNumber,s=!e.toolbar,l=`${M()}px`;return o!==n._v$4&&u(t,n._v$4=o),i!==n._v$5&&r.classList.toggle("line-numbers",n._v$5=i),s!==n._v$6&&r.classList.toggle("not-toolbar",n._v$6=s),l!==n._v$7&&(null!=(n._v$7=l)?r.style.setProperty("height",l):r.style.removeProperty("height")),n},{_v$4:void 0,_v$5:void 0,_v$6:void 0,_v$7:void 0}),s(()=>r.value=e.code),t}})]}E("n-code",{class:void 0,code:void 0,language:void 0,children:void 0,edit:void 0,toolbar:void 0,css:void 0,lineNumber:void 0,onChange:void 0,webWorker:void 0},(e,t)=>{let r=t.element,n=w({code:r.textContent,css:r.css,onChange(e){r.dispatchEvent(new CustomEvent("change",{detail:e}))}},e);return h(()=>{r.replaceChildren(),r.removeAttribute("css")}),a(A,n)});export default A;l(["click","input"]);
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
package/es/code/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n Show,\n createEffect,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\nimport { style } from './style';\nimport Prism from '../prism';\nimport prismCss from '../prism/css';\nimport theme from '../theme';\nimport type { CustomElement } from '..';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n language?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n /**\n * 使用 web worker\n * @default false\n */\n webWorker?: boolean;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const diffLang = /^diff-([\\w-]+)/i;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n\n function initObserver() {\n return new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n }\n function initWorker() {\n return new Worker('https://cdn.jsdelivr.net/npm/neko-ui@latest/es/code/worker.js');\n }\n // eslint-disable-next-line solid/reactivity\n let observer = props.webWorker ? void 0 : initObserver();\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function Pre() {\n return (\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class as string]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.language}`} textContent={code()} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${/\\n$/.test(target.value) ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function update(e: { data: string }) {\n codeEl.innerHTML = e.data;\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n function cleanObserver() {\n if (observer) {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n }\n }\n function postMessage(language: string, value?: string) {\n if (!value || !isIntersecting()) return;\n cleanObserver();\n if (diffLang.test(language) && !Prism.languages[language]) {\n Prism.languages[language] = Prism.languages.diff;\n }\n update({\n data: Prism.highlight(\n `${value}\\n`,\n Prism.languages[language] || Prism.languages.markup,\n language,\n ),\n });\n }\n createEffect(() => {\n if (props.code) {\n try {\n setCode(decodeURIComponent(props.code));\n } catch (error) {\n setCode(props.code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n } else if (!observer) {\n observer = initObserver();\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n language: props.language,\n code: code(),\n }),\n );\n } else {\n postMessage(props.language || 'markup', code());\n }\n });\n onMount(() => {\n if (codeEl) {\n // 开始观察目标元素\n observer?.observe(codeEl);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n cleanObserver();\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={prismCss()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Show when={props.edit} fallback={<Pre />}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={props.code}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n <Pre />\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["Show","createEffect","createSignal","mergeProps","onCleanup","onMount","untrack","isFunction","setClipboard","css","cx","customElement","style","Prism","prismCss","theme","Code","props","codeEl","baseStyle","diffLang","code","setCode","hei","setHei","isIntersecting","setIsIntersecting","initObserver","IntersectionObserver","entries","initWorker","Worker","observer","webWorker","worker","copy","Pre","toolbar","language","split","lineNumber","class","edit","change","target","c","value","test","onChange","update","e","innerHTML","data","getBoundingClientRect","height","cleanObserver","unobserve","disconnect","decodeURIComponent","error","addEventListener","postMessage","JSON","stringify","languages","diff","highlight","markup","observe","removeEventListener","terminate","children","_","opt","el","element","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["../../components/code/index.tsx"],"sourcesContent":["import {\n type Accessor,\n createEffect,\n createResource,\n createSignal,\n mergeProps,\n onCleanup,\n onMount,\n Show,\n untrack,\n} from 'solid-js';\nimport { isFunction, setClipboard } from '@moneko/common';\nimport { css, cx } from '@moneko/css';\nimport { customElement } from 'solid-element';\n\nimport type { CustomElement } from '..';\nimport theme from '../theme';\n\nimport { style } from './style';\n\nexport interface CodeProps {\n /** 自定义类名 */\n class?: string;\n /** 自定义样式表 */\n css?: string;\n /** 内容 */\n code?: string;\n /** 语言 */\n language?: string;\n /** 显示代码行号 */\n lineNumber?: boolean;\n /** 支持编辑 */\n edit?: boolean;\n /** 开启代码块工具条 */\n toolbar?: boolean;\n /** 编辑修改时的回调 */\n onChange?: (code: string) => void;\n children?: JSX.Element;\n /**\n * 使用 web worker\n * @default false\n */\n webWorker?: boolean;\n}\n\nexport type CodeElement = CustomElement<CodeProps>;\nconst cache = {\n Prism: null as typeof import('../prism/index').default | null,\n prismCss: null as Accessor<string> | null,\n};\n\nfunction Code(props: CodeProps) {\n const { baseStyle } = theme;\n let codeEl: HTMLPreElement;\n const diffLang = /^diff-([\\w-]+)/i;\n const [code, setCode] = createSignal<string>('');\n const [hei, setHei] = createSignal(20);\n const [isIntersecting, setIsIntersecting] = createSignal(false);\n\n async function fetchPrism() {\n if (!cache.Prism) {\n cache.Prism = (await import('../prism')).default;\n }\n return cache.Prism;\n }\n async function fetchPrismCss() {\n if (!cache.prismCss) {\n cache.prismCss = (await import('../prism/css')).default;\n }\n return cache.prismCss;\n }\n const [prismJS] = createResource('prism', fetchPrism);\n const [prismCss] = createResource('prism-css', fetchPrismCss);\n\n function initObserver() {\n return new IntersectionObserver((entries) => {\n setIsIntersecting(entries[0].isIntersecting);\n });\n }\n function initWorker() {\n return new Worker('https://cdn.jsdelivr.net/npm/neko-ui@latest/es/code/worker.js');\n }\n // eslint-disable-next-line solid/reactivity\n let observer = props.webWorker ? void 0 : initObserver();\n // eslint-disable-next-line solid/reactivity\n let worker: Worker | undefined = props.webWorker ? initWorker() : void 0;\n\n function copy() {\n setClipboard(untrack(code), codeEl);\n }\n function Pre() {\n return (\n <pre\n classList={{\n [`language-${props.language}`]: !!props.language,\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n [props.class!]: !props.edit,\n }}\n >\n <Show when={props.toolbar}>\n <div class=\"toolbar\" data-language={props.language?.split(' ')[0]}>\n <button class=\"toolbar-copy\" aria-label=\"copy\" onClick={copy} />\n </div>\n </Show>\n <code ref={codeEl} class={`language-${props.language}`} textContent={code()} />\n </pre>\n );\n }\n function change({ target }: { target: HTMLTextAreaElement }) {\n const c = `${target.value}${target.value.endsWith('\\n') ? '\\u200b' : ''}`;\n\n setCode(c);\n if (isFunction(props.onChange)) {\n props.onChange(c);\n }\n }\n function update(e: { data: string }) {\n codeEl.innerHTML = e.data;\n setHei(codeEl.getBoundingClientRect().height - (props.toolbar ? 40 : 16));\n }\n function cleanObserver() {\n if (observer) {\n // 停止观察目标元素\n observer.unobserve(codeEl);\n observer.disconnect();\n }\n }\n function postMessage(language: string, value?: string) {\n const Prism = prismJS();\n\n if (!value || !isIntersecting() || !Prism) return;\n cleanObserver();\n if (diffLang.test(language) && !Prism.languages[language]) {\n Prism.languages[language] = Prism.languages.diff;\n }\n update({\n data: Prism.highlight(\n `${value}\\n`,\n Prism.languages[language] || Prism.languages.markup,\n language,\n ),\n });\n }\n createEffect(() => {\n if (props.code) {\n try {\n setCode(decodeURIComponent(props.code));\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n } catch (_error) {\n setCode(props.code);\n }\n } else {\n setCode('');\n }\n });\n createEffect(() => {\n if (props.webWorker) {\n if (!worker) {\n worker = initWorker();\n }\n worker.addEventListener('message', update);\n } else if (!observer) {\n observer = initObserver();\n }\n });\n\n createEffect(() => {\n if (worker) {\n worker.postMessage(\n JSON.stringify({\n language: props.language,\n code: code(),\n }),\n );\n } else {\n postMessage(props.language || 'markup', code());\n }\n });\n onMount(() => {\n if (codeEl) {\n // 开始观察目标元素\n observer?.observe(codeEl);\n }\n });\n onCleanup(() => {\n if (worker) {\n worker.removeEventListener('message', update);\n worker.terminate();\n }\n cleanObserver();\n });\n\n return (\n <>\n <style textContent={baseStyle()} />\n <style textContent={prismCss()?.()} />\n <style textContent={style} />\n <Show when={props.css}>\n <style textContent={css(props.css)} />\n </Show>\n <Show when={props.edit} fallback={<Pre />}>\n <div class={cx('n-editor', props.class)}>\n <textarea\n value={props.code}\n classList={{\n 'line-numbers': props.lineNumber,\n 'not-toolbar': !props.toolbar,\n }}\n style={{ height: `${hei()}px` }}\n onInput={change}\n />\n <Pre />\n </div>\n </Show>\n </>\n );\n}\n\ncustomElement<CodeProps>(\n 'n-code',\n {\n class: void 0,\n code: void 0,\n language: void 0,\n children: void 0,\n edit: void 0,\n toolbar: void 0,\n css: void 0,\n lineNumber: void 0,\n onChange: void 0,\n webWorker: void 0,\n },\n (_, opt) => {\n const el = opt.element;\n const props = mergeProps(\n {\n code: el.textContent,\n css: el.css,\n onChange(val: string) {\n el.dispatchEvent(\n new CustomEvent('change', {\n detail: val,\n }),\n );\n },\n },\n _,\n );\n\n createEffect(() => {\n el.replaceChildren();\n el.removeAttribute('css');\n });\n\n return <Code {...props} />;\n },\n);\nexport default Code;\n"],"names":["createEffect","createResource","createSignal","mergeProps","onCleanup","onMount","Show","untrack","isFunction","setClipboard","css","cx","customElement","theme","style","cache","Prism","prismCss","Code","props","codeEl","baseStyle","diffLang","code","setCode","hei","setHei","isIntersecting","setIsIntersecting","fetchPrism","default","fetchPrismCss","prismJS","initObserver","IntersectionObserver","entries","initWorker","Worker","observer","webWorker","worker","copy","Pre","toolbar","language","split","lineNumber","class","edit","change","target","c","value","endsWith","onChange","update","e","innerHTML","data","getBoundingClientRect","height","cleanObserver","unobserve","disconnect","decodeURIComponent","_error","addEventListener","postMessage","JSON","stringify","test","languages","diff","highlight","markup","observe","removeEventListener","terminate","children","_","opt","el","element","textContent","val","dispatchEvent","CustomEvent","detail","replaceChildren","removeAttribute"],"mappings":"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"}
|