@choice-ui/react 1.7.6 → 1.7.8
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/colors/dist/index.d.ts +878 -0
- package/dist/components/colors/scripts/build-worker.d.ts +1 -0
- package/dist/components/colors/src/check-color-contrast/check-color-contrast-boundary.d.ts +14 -0
- package/dist/components/colors/src/check-color-contrast/check-color-contrast-boundary.js +403 -0
- package/dist/components/colors/src/check-color-contrast/check-color-contrast-toolbar.d.ts +12 -0
- package/dist/components/colors/src/check-color-contrast/check-color-contrast-toolbar.js +285 -0
- package/dist/components/colors/src/check-color-contrast/index.d.ts +2 -0
- package/dist/components/colors/src/color-area/color-area.d.ts +24 -0
- package/dist/components/colors/src/color-area/color-area.js +228 -0
- package/dist/components/colors/src/color-area/index.d.ts +1 -0
- package/dist/components/colors/src/color-area/tv.d.ts +34 -0
- package/dist/components/colors/src/color-area/tv.js +22 -0
- package/dist/components/colors/src/color-channel-field/color-channel-field.d.ts +22 -0
- package/dist/components/colors/src/color-channel-field/color-channel-field.js +110 -0
- package/dist/components/colors/src/color-channel-field/color-channel-input.d.ts +20 -0
- package/dist/components/colors/src/color-channel-field/color-channel-input.js +261 -0
- package/dist/components/colors/src/color-channel-field/index.d.ts +1 -0
- package/dist/components/colors/src/color-channel-field/tv.d.ts +101 -0
- package/dist/components/colors/src/color-channel-field/tv.js +85 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-combined.d.ts +16 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-combined.js +54 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-control.d.ts +18 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-control.js +149 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-list.d.ts +20 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-list.js +111 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-slider.d.ts +18 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradient-slider.js +281 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradients-paint.d.ts +17 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradients-paint.js +162 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradients-toolbar.d.ts +10 -0
- package/dist/components/colors/src/color-gradients-paint/color-gradients-toolbar.js +62 -0
- package/dist/components/colors/src/color-gradients-paint/index.d.ts +3 -0
- package/dist/components/colors/src/color-image-paint/color-image-paint.d.ts +13 -0
- package/dist/components/colors/src/color-image-paint/color-image-paint.js +236 -0
- package/dist/components/colors/src/color-image-paint/color-image-toolbar.d.ts +9 -0
- package/dist/components/colors/src/color-image-paint/color-image-toolbar.js +52 -0
- package/dist/components/colors/src/color-image-paint/index.d.ts +1 -0
- package/dist/components/colors/src/color-image-paint/tv.d.ts +89 -0
- package/dist/components/colors/src/color-image-paint/tv.js +45 -0
- package/dist/components/colors/src/color-picker-content/color-picker-content.d.ts +18 -0
- package/dist/components/colors/src/color-picker-content/color-picker-content.js +58 -0
- package/dist/components/colors/src/color-picker-content/color-picker-custom-content.d.ts +16 -0
- package/dist/components/colors/src/color-picker-content/color-picker-custom-content.js +75 -0
- package/dist/components/colors/src/color-picker-content/index.d.ts +1 -0
- package/dist/components/colors/src/color-picker-content/paint-type-selector.d.ts +13 -0
- package/dist/components/colors/src/color-picker-content/paint-type-selector.js +50 -0
- package/dist/components/colors/src/color-picker-content/tv.d.ts +31 -0
- package/dist/components/colors/src/color-picker-content/tv.js +13 -0
- package/dist/components/colors/src/color-picker-popover/color-paints-type.d.ts +15 -0
- package/dist/components/colors/src/color-picker-popover/color-paints-type.js +56 -0
- package/dist/components/colors/src/color-picker-popover/color-picker-popover.d.ts +26 -0
- package/dist/components/colors/src/color-picker-popover/color-picker-popover.js +116 -0
- package/dist/components/colors/src/color-picker-popover/color-picker-tabs.d.ts +14 -0
- package/dist/components/colors/src/color-picker-popover/color-picker-tabs.js +47 -0
- package/dist/components/colors/src/color-picker-popover/color-picker-title.d.ts +14 -0
- package/dist/components/colors/src/color-picker-popover/color-picker-title.js +30 -0
- package/dist/components/colors/src/color-picker-popover/index.d.ts +3 -0
- package/dist/components/colors/src/color-picker-popover/tv.d.ts +37 -0
- package/dist/components/colors/src/color-slider/color-slider.d.ts +19 -0
- package/dist/components/colors/src/color-slider/color-slider.js +185 -0
- package/dist/components/colors/src/color-slider/index.d.ts +1 -0
- package/dist/components/colors/src/color-slider/tv.d.ts +31 -0
- package/dist/components/colors/src/color-slider/tv.js +21 -0
- package/dist/components/colors/src/color-solid-paint/color-native-picker.d.ts +8 -0
- package/dist/components/colors/src/color-solid-paint/color-native-picker.js +63 -0
- package/dist/components/colors/src/color-solid-paint/color-solid-paint.d.ts +25 -0
- package/dist/components/colors/src/color-solid-paint/color-solid-paint.js +295 -0
- package/dist/components/colors/src/color-solid-paint/index.d.ts +3 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-alpha-slider.d.ts +10 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-alpha-slider.js +20 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-area.d.ts +17 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-area.js +131 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-channel-field.d.ts +20 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-channel-field.js +147 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-hue-slider.d.ts +14 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-hue-slider.js +46 -0
- package/dist/components/colors/src/color-solid-paint/solid-paint-library-item.d.ts +8 -0
- package/dist/components/colors/src/color-solid-paint/tv.d.ts +79 -0
- package/dist/components/colors/src/color-solid-paint/tv.js +39 -0
- package/dist/components/colors/src/color-swatch/color-swatch.d.ts +15 -0
- package/dist/components/colors/src/color-swatch/color-swatch.js +111 -0
- package/dist/components/colors/src/color-swatch/index.d.ts +1 -0
- package/dist/components/colors/src/contents/color-space.d.ts +19 -0
- package/dist/components/colors/src/contents/color-space.js +16 -0
- package/dist/components/colors/src/contents/colors.d.ts +42 -0
- package/dist/components/colors/src/contents/colors.js +24 -0
- package/dist/components/colors/src/contents/index.d.ts +3 -0
- package/dist/components/colors/src/contents/translation.d.ts +100 -0
- package/dist/components/colors/src/contents/translation.js +94 -0
- package/dist/components/colors/src/context/colots-context.d.ts +24 -0
- package/dist/components/colors/src/context/colots-context.js +62 -0
- package/dist/components/colors/src/context/index.d.ts +1 -0
- package/dist/components/colors/src/fill-input/alpha-input.d.ts +12 -0
- package/dist/components/colors/src/fill-input/alpha-input.js +48 -0
- package/dist/components/colors/src/fill-input/color-input.d.ts +31 -0
- package/dist/components/colors/src/fill-input/color-input.js +115 -0
- package/dist/components/colors/src/fill-input/gradient-item.d.ts +25 -0
- package/dist/components/colors/src/fill-input/gradient-item.js +103 -0
- package/dist/components/colors/src/fill-input/image-item.d.ts +25 -0
- package/dist/components/colors/src/fill-input/image-item.js +89 -0
- package/dist/components/colors/src/fill-input/index.d.ts +5 -0
- package/dist/components/colors/src/fill-input/tv.d.ts +221 -0
- package/dist/components/colors/src/fill-input/tv.js +205 -0
- package/dist/components/colors/src/fill-input/variable-item.d.ts +22 -0
- package/dist/components/colors/src/fill-input/variable-item.js +105 -0
- package/dist/components/colors/src/hex-input/hex-input.d.ts +10 -0
- package/dist/components/colors/src/hex-input/hex-input.js +182 -0
- package/dist/components/colors/src/hex-input/index.d.ts +1 -0
- package/dist/components/colors/src/hex-input/tv.d.ts +1 -0
- package/dist/components/colors/src/hex-input/tv.js +12 -0
- package/dist/components/colors/src/hooks/index.d.ts +10 -0
- package/dist/components/colors/src/hooks/use-color-contrast-recommendation.d.ts +36 -0
- package/dist/components/colors/src/hooks/use-color-contrast-recommendation.js +502 -0
- package/dist/components/colors/src/hooks/use-color-parser.d.ts +10 -0
- package/dist/components/colors/src/hooks/use-color-parser.js +146 -0
- package/dist/components/colors/src/hooks/use-color-picker.d.ts +45 -0
- package/dist/components/colors/src/hooks/use-color-picker.js +117 -0
- package/dist/components/colors/src/hooks/use-color-profile.d.ts +2 -0
- package/dist/components/colors/src/hooks/use-color-profile.js +27 -0
- package/dist/components/colors/src/hooks/use-cursor.d.ts +1 -0
- package/dist/components/colors/src/hooks/use-cursor.js +25 -0
- package/dist/components/colors/src/hooks/use-features.d.ts +21 -0
- package/dist/components/colors/src/hooks/use-features.js +73 -0
- package/dist/components/colors/src/hooks/use-image-filter-style.d.ts +9 -0
- package/dist/components/colors/src/hooks/use-image-filter-style.js +25 -0
- package/dist/components/colors/src/hooks/use-image-processor.d.ts +10 -0
- package/dist/components/colors/src/hooks/use-image-processor.js +121 -0
- package/dist/components/colors/src/hooks/use-paint-state.d.ts +16 -0
- package/dist/components/colors/src/hooks/use-paint-state.js +37 -0
- package/dist/components/colors/src/hooks/use-rgb-color-handler.d.ts +21 -0
- package/dist/components/colors/src/hooks/use-rgb-color-handler.js +58 -0
- package/dist/components/colors/src/index.d.ts +38 -0
- package/dist/components/colors/src/libraries/components/virtualized-grid-row.d.ts +36 -0
- package/dist/components/colors/src/libraries/components/virtualized-grid-row.js +53 -0
- package/dist/components/colors/src/libraries/components/virtualized-header.d.ts +9 -0
- package/dist/components/colors/src/libraries/components/virtualized-header.js +30 -0
- package/dist/components/colors/src/libraries/hooks/index.d.ts +2 -0
- package/dist/components/colors/src/libraries/hooks/use-category-options.d.ts +11 -0
- package/dist/components/colors/src/libraries/hooks/use-category-options.js +27 -0
- package/dist/components/colors/src/libraries/hooks/use-palette-color.d.ts +19 -0
- package/dist/components/colors/src/libraries/hooks/use-palette-color.js +41 -0
- package/dist/components/colors/src/libraries/index.d.ts +8 -0
- package/dist/components/colors/src/libraries/libraries-content.d.ts +8 -0
- package/dist/components/colors/src/libraries/libraries-empty-content.d.ts +5 -0
- package/dist/components/colors/src/libraries/libraries-header.d.ts +18 -0
- package/dist/components/colors/src/libraries/libraries-header.js +111 -0
- package/dist/components/colors/src/libraries/libraries-search-empty-content.d.ts +1 -0
- package/dist/components/colors/src/libraries/libraries-search-input.d.ts +6 -0
- package/dist/components/colors/src/libraries/libraries.d.ts +42 -0
- package/dist/components/colors/src/libraries/libraries.js +461 -0
- package/dist/components/colors/src/libraries/library-color-swatch.d.ts +21 -0
- package/dist/components/colors/src/libraries/library-item/index.d.ts +4 -0
- package/dist/components/colors/src/libraries/library-item/library-item.d.ts +21 -0
- package/dist/components/colors/src/libraries/library-item/library-item.js +151 -0
- package/dist/components/colors/src/libraries/library-item/library-list-item.d.ts +6 -0
- package/dist/components/colors/src/libraries/library-item/style-items.d.ts +17 -0
- package/dist/components/colors/src/libraries/library-item/style-items.js +63 -0
- package/dist/components/colors/src/libraries/library-item/variable-items.d.ts +19 -0
- package/dist/components/colors/src/libraries/library-item/variable-items.js +47 -0
- package/dist/components/colors/src/libraries/tv.d.ts +198 -0
- package/dist/components/colors/src/libraries/tv.js +141 -0
- package/dist/components/colors/src/simple-color-picker/index.d.ts +1 -0
- package/dist/components/colors/src/simple-color-picker/simple-color-picker.d.ts +17 -0
- package/dist/components/colors/src/simple-color-picker/simple-color-picker.js +153 -0
- package/dist/components/colors/src/types/base.d.ts +5 -0
- package/dist/components/colors/src/types/colors.d.ts +139 -0
- package/dist/components/colors/src/types/effect.d.ts +18 -0
- package/dist/components/colors/src/types/fill.d.ts +15 -0
- package/dist/components/colors/src/types/fonts.d.ts +38 -0
- package/dist/components/colors/src/types/index.d.ts +7 -0
- package/dist/components/colors/src/types/libraries.d.ts +7 -0
- package/dist/components/colors/src/types/paint.d.ts +139 -0
- package/dist/components/colors/src/types/style.d.ts +51 -0
- package/dist/components/colors/src/types/testing-library.d.ts +0 -0
- package/dist/components/colors/src/types/util.d.ts +26 -0
- package/dist/components/colors/src/types/variable.d.ts +27 -0
- package/dist/components/colors/src/utils/background.d.ts +12 -0
- package/dist/components/colors/src/utils/background.js +216 -0
- package/dist/components/colors/src/utils/color-profile-storage.d.ts +29 -0
- package/dist/components/colors/src/utils/color.d.ts +20 -0
- package/dist/components/colors/src/utils/color.js +45 -0
- package/dist/components/colors/src/utils/colors-convert.d.ts +18 -0
- package/dist/components/colors/src/utils/colors-convert.js +138 -0
- package/dist/components/colors/src/utils/contrast-utils.d.ts +27 -0
- package/dist/components/colors/src/utils/contrast-utils.js +25 -0
- package/dist/components/colors/src/utils/cursor.d.ts +1 -0
- package/dist/components/colors/src/utils/index.d.ts +7 -0
- package/dist/components/colors/src/utils/math.d.ts +9 -0
- package/dist/components/colors/src/utils/position.d.ts +33 -0
- package/dist/components/colors/src/utils/position.js +60 -0
- package/dist/components/colors/src/utils/validate.d.ts +10 -0
- package/dist/components/colors/src/workers/boundary-calculator.worker.bundled.d.ts +2 -0
- package/dist/components/colors/src/workers/boundary-calculator.worker.bundled.js +36 -0
- package/dist/components/colors/src/workers/boundary-calculator.worker.d.ts +1 -0
- package/dist/components/colors/src/workers/index.d.ts +1 -0
- package/dist/components/colors/tsup.config.d.ts +2 -0
- package/dist/components/icon-button/src/icon-button.d.ts +1 -1
- package/dist/components/icon-button/src/tv.d.ts +9 -0
- package/dist/components/icon-button/src/tv.js +29 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/textarea/src/tv.d.ts +9 -3
- package/dist/components/textarea/src/tv.js +3 -1
- package/dist/components/toggle-button/dist/index.js +602 -0
- package/dist/index.js +69 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/index.js +119 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/Color.js +42 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/chroma.js +9 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/colors/colorbrewer.js +57 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/colors/w3cx11.js +159 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/average.js +82 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/bezier.js +68 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/blend.js +43 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/cubehelix.js +81 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/mix.js +20 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/random.js +13 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/generator/scale.js +325 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/_hsx.js +54 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/hcg.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/hsi.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/hsl.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/hsv.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/index.js +4 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/lab.js +17 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/lch.js +11 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/lrgb.js +17 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/num.js +12 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/oklab.js +17 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/oklch.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/interpolator/rgb.js +16 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/cmyk/cmyk2rgb.js +20 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/cmyk/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/cmyk/rgb2cmyk.js +18 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/css2rgb.js +169 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/hsl2css.js +20 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/index.js +23 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/lab2css.js +19 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/lch2css.js +19 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/oklab2css.js +17 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/oklch2css.js +17 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/css/rgb2css.js +53 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/gl/index.js +21 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hcg/hcg2rgb.js +48 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hcg/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hcg/rgb2hcg.js +24 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hex/hex2rgb.js +37 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hex/index.js +23 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hex/rgb2hex.js +31 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsi/hsi2rgb.js +36 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsi/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsi/rgb2hsi.js +28 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsl/hsl2rgb.js +35 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsl/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsl/rgb2hsl.js +29 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsv/hsv2rgb.js +46 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsv/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/hsv/rgb2hsv.js +27 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/input.js +7 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lab/index.js +28 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lab/lab-constants.js +106 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lab/lab2rgb.js +59 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lab/rgb2lab.js +51 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lch/hcl2rgb.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lch/index.js +35 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lch/lab2lch.js +13 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lch/lch2lab.js +12 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lch/lch2rgb.js +14 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/lch/rgb2lch.js +13 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/named/index.js +26 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/num/index.js +23 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/num/num2rgb.js +13 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/num/rgb2num.js +9 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/oklab/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/oklab/oklab2rgb.js +31 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/oklab/rgb2oklab.js +30 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/oklch/index.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/oklch/oklch2rgb.js +14 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/oklch/rgb2oklch.js +13 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/rgb/index.js +34 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/temp/index.js +16 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/temp/rgb2temperature.js +25 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/io/temp/temperature2rgb.js +18 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/alpha.js +12 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/clipped.js +4 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/darken.js +14 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/get.js +12 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/luminance.js +38 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/mix.js +5 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/premultiply.js +11 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/saturate.js +13 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/set.js +42 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/ops/shade.js +9 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/analyze.js +161 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/clip_rgb.js +17 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/contrast.js +12 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/contrastAPCA.js +43 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/delta-e.js +48 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/distance.js +16 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/index.js +24 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/last.js +10 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/limit.js +7 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/multiply-matrices.js +29 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/scales.js +16 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/type.js +20 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/unpack.js +11 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/utils/valid.js +12 -0
- package/dist/node_modules/.pnpm/chroma-js@3.2.0/node_modules/chroma-js/src/version.js +4 -0
- package/dist/node_modules/.pnpm/fuse.js@7.1.0/node_modules/fuse.js/dist/fuse.js +1317 -0
- package/dist/styles/components.css +55 -0
- package/dist/tailwind.css +1 -0
- package/package.json +32 -20
- package/dist/components/virtual-select/dist/index.d.ts +0 -48
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { clamp } from "es-toolkit";
|
|
3
|
+
import { memo, forwardRef, useRef, useCallback, useEffect, useMemo } from "react";
|
|
4
|
+
import { useEventCallback } from "usehooks-ts";
|
|
5
|
+
import { useColors } from "../context/colots-context.js";
|
|
6
|
+
import { ColorSliderTv } from "./tv.js";
|
|
7
|
+
import { positionToSliderValue } from "../utils/position.js";
|
|
8
|
+
import { getSliderBackground } from "../utils/background.js";
|
|
9
|
+
import { tcx } from "../../../../shared/utils/tcx/tcx.js";
|
|
10
|
+
import { mergeRefs } from "../../../../shared/utils/merge-refs/merge-refs.js";
|
|
11
|
+
import { translation } from "../contents/translation.js";
|
|
12
|
+
const KEYBOARD_STEPS = {
|
|
13
|
+
NORMAL: 0.01,
|
|
14
|
+
SHIFT: 0.1
|
|
15
|
+
};
|
|
16
|
+
const ColorSlider = memo(
|
|
17
|
+
forwardRef(function ColorSlider2(props, ref) {
|
|
18
|
+
const {
|
|
19
|
+
position,
|
|
20
|
+
onChange,
|
|
21
|
+
onChangeStart,
|
|
22
|
+
onChangeEnd,
|
|
23
|
+
type,
|
|
24
|
+
hue = 0,
|
|
25
|
+
backgroundStyle,
|
|
26
|
+
disabled = false,
|
|
27
|
+
trackSize = {
|
|
28
|
+
width: 256,
|
|
29
|
+
height: 16
|
|
30
|
+
},
|
|
31
|
+
thumbSize = 14,
|
|
32
|
+
className
|
|
33
|
+
} = props;
|
|
34
|
+
const { colorProfile } = useColors();
|
|
35
|
+
const sliderRef = useRef(null);
|
|
36
|
+
const thumbRef = useRef(null);
|
|
37
|
+
const inputRef = useRef(null);
|
|
38
|
+
const isDragging = useRef(false);
|
|
39
|
+
const updatePosition = useEventCallback((clientX, isEnd) => {
|
|
40
|
+
var _a;
|
|
41
|
+
const rect = (_a = sliderRef.current) == null ? void 0 : _a.getBoundingClientRect();
|
|
42
|
+
if (!rect) return;
|
|
43
|
+
const newPosition = clamp((clientX - rect.left) / rect.width, 0, 0.999);
|
|
44
|
+
if (isEnd) {
|
|
45
|
+
isDragging.current = false;
|
|
46
|
+
} else {
|
|
47
|
+
onChange == null ? void 0 : onChange(newPosition);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const handlePointerDown = useCallback(
|
|
51
|
+
(e) => {
|
|
52
|
+
var _a;
|
|
53
|
+
if (disabled) return;
|
|
54
|
+
e.preventDefault();
|
|
55
|
+
e.stopPropagation();
|
|
56
|
+
onChangeStart == null ? void 0 : onChangeStart();
|
|
57
|
+
const thumb = thumbRef.current;
|
|
58
|
+
if (!thumb) return;
|
|
59
|
+
isDragging.current = true;
|
|
60
|
+
thumb.setPointerCapture(e.pointerId);
|
|
61
|
+
updatePosition(e.clientX);
|
|
62
|
+
(_a = inputRef.current) == null ? void 0 : _a.focus();
|
|
63
|
+
const handleMove = (e2) => {
|
|
64
|
+
if (!isDragging.current) return;
|
|
65
|
+
e2.preventDefault();
|
|
66
|
+
updatePosition(e2.clientX);
|
|
67
|
+
};
|
|
68
|
+
const handleUp = (e2) => {
|
|
69
|
+
if (!isDragging.current) return;
|
|
70
|
+
e2.preventDefault();
|
|
71
|
+
if (thumb.hasPointerCapture(e2.pointerId)) {
|
|
72
|
+
thumb.releasePointerCapture(e2.pointerId);
|
|
73
|
+
}
|
|
74
|
+
updatePosition(e2.clientX, true);
|
|
75
|
+
isDragging.current = false;
|
|
76
|
+
onChangeEnd == null ? void 0 : onChangeEnd();
|
|
77
|
+
window.removeEventListener("pointermove", handleMove);
|
|
78
|
+
window.removeEventListener("pointerup", handleUp);
|
|
79
|
+
window.removeEventListener("pointercancel", handleUp);
|
|
80
|
+
};
|
|
81
|
+
window.addEventListener("pointermove", handleMove);
|
|
82
|
+
window.addEventListener("pointerup", handleUp);
|
|
83
|
+
window.addEventListener("pointercancel", handleUp);
|
|
84
|
+
},
|
|
85
|
+
[disabled, onChangeEnd, onChangeStart, updatePosition]
|
|
86
|
+
);
|
|
87
|
+
const handleSliderPointerDown = useCallback(
|
|
88
|
+
(e) => {
|
|
89
|
+
if (e.target === thumbRef.current) return;
|
|
90
|
+
handlePointerDown(e);
|
|
91
|
+
},
|
|
92
|
+
[handlePointerDown]
|
|
93
|
+
);
|
|
94
|
+
const handleKeyDown = useEventCallback((e) => {
|
|
95
|
+
if (disabled) return;
|
|
96
|
+
const step = e.shiftKey ? KEYBOARD_STEPS.SHIFT : KEYBOARD_STEPS.NORMAL;
|
|
97
|
+
let newPosition = position;
|
|
98
|
+
switch (e.key) {
|
|
99
|
+
case "ArrowLeft":
|
|
100
|
+
e.preventDefault();
|
|
101
|
+
newPosition = clamp(position - step, 0, 1);
|
|
102
|
+
break;
|
|
103
|
+
case "ArrowRight":
|
|
104
|
+
e.preventDefault();
|
|
105
|
+
newPosition = clamp(position + step, 0, 1);
|
|
106
|
+
break;
|
|
107
|
+
default:
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (newPosition !== position) {
|
|
111
|
+
onChange == null ? void 0 : onChange(newPosition);
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
useEffect(() => {
|
|
115
|
+
var _a;
|
|
116
|
+
if (disabled && document.activeElement === inputRef.current) {
|
|
117
|
+
(_a = inputRef.current) == null ? void 0 : _a.blur();
|
|
118
|
+
}
|
|
119
|
+
}, [disabled]);
|
|
120
|
+
const thumbStyle = useMemo(() => {
|
|
121
|
+
const minTransform = 1;
|
|
122
|
+
const maxTransform = ((trackSize == null ? void 0 : trackSize.width) ?? 0) - thumbSize - 1;
|
|
123
|
+
const transformX = minTransform + position * (maxTransform - minTransform);
|
|
124
|
+
return {
|
|
125
|
+
width: thumbSize,
|
|
126
|
+
height: thumbSize,
|
|
127
|
+
transform: `translate(${transformX}px, -50%)`,
|
|
128
|
+
backgroundColor: positionToSliderValue(position, type, hue),
|
|
129
|
+
willChange: isDragging.current ? "transform" : "auto",
|
|
130
|
+
boxShadow: `
|
|
131
|
+
inset 0 0 0 3px white,
|
|
132
|
+
inset 0 0 0 4px rgba(0,0,0,0.2),
|
|
133
|
+
0 0 0 1px rgba(0,0,0,0.2)
|
|
134
|
+
`
|
|
135
|
+
};
|
|
136
|
+
}, [position, thumbSize, trackSize, type, hue]);
|
|
137
|
+
const computedBackgroundStyle = useMemo(
|
|
138
|
+
() => ({
|
|
139
|
+
...getSliderBackground(type, hue, colorProfile),
|
|
140
|
+
...backgroundStyle
|
|
141
|
+
}),
|
|
142
|
+
[type, hue, colorProfile, backgroundStyle]
|
|
143
|
+
);
|
|
144
|
+
const styles = ColorSliderTv({ disabled });
|
|
145
|
+
return /* @__PURE__ */ jsx(
|
|
146
|
+
"div",
|
|
147
|
+
{
|
|
148
|
+
ref: mergeRefs(ref, sliderRef),
|
|
149
|
+
onPointerDown: handleSliderPointerDown,
|
|
150
|
+
style: {
|
|
151
|
+
...computedBackgroundStyle,
|
|
152
|
+
boxShadow: "inset 0 0 0 1px rgba(0,0,0,0.1)",
|
|
153
|
+
height: trackSize == null ? void 0 : trackSize.height,
|
|
154
|
+
width: trackSize == null ? void 0 : trackSize.width
|
|
155
|
+
},
|
|
156
|
+
className: tcx(styles.root(), className),
|
|
157
|
+
children: /* @__PURE__ */ jsx(
|
|
158
|
+
"div",
|
|
159
|
+
{
|
|
160
|
+
ref: thumbRef,
|
|
161
|
+
onPointerDown: handlePointerDown,
|
|
162
|
+
className: styles.thumb(),
|
|
163
|
+
style: thumbStyle,
|
|
164
|
+
children: /* @__PURE__ */ jsx(
|
|
165
|
+
"input",
|
|
166
|
+
{
|
|
167
|
+
ref: inputRef,
|
|
168
|
+
type: "text",
|
|
169
|
+
onKeyDown: handleKeyDown,
|
|
170
|
+
className: styles.thumbInput(),
|
|
171
|
+
"aria-label": translation.slider.ARIA_LABEL,
|
|
172
|
+
tabIndex: disabled ? -1 : 0,
|
|
173
|
+
readOnly: true
|
|
174
|
+
}
|
|
175
|
+
)
|
|
176
|
+
}
|
|
177
|
+
)
|
|
178
|
+
}
|
|
179
|
+
);
|
|
180
|
+
})
|
|
181
|
+
);
|
|
182
|
+
ColorSlider.displayName = "ColorSlider";
|
|
183
|
+
export {
|
|
184
|
+
ColorSlider
|
|
185
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './color-slider';
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export declare const ColorSliderTv: import('tailwind-variants').TVReturnType<{
|
|
2
|
+
disabled: {
|
|
3
|
+
true: {
|
|
4
|
+
root: string;
|
|
5
|
+
};
|
|
6
|
+
};
|
|
7
|
+
}, {
|
|
8
|
+
root: string;
|
|
9
|
+
thumb: string;
|
|
10
|
+
thumbInput: string;
|
|
11
|
+
}, undefined, {
|
|
12
|
+
disabled: {
|
|
13
|
+
true: {
|
|
14
|
+
root: string;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
}, {
|
|
18
|
+
root: string;
|
|
19
|
+
thumb: string;
|
|
20
|
+
thumbInput: string;
|
|
21
|
+
}, import('tailwind-variants').TVReturnType<{
|
|
22
|
+
disabled: {
|
|
23
|
+
true: {
|
|
24
|
+
root: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
}, {
|
|
28
|
+
root: string;
|
|
29
|
+
thumb: string;
|
|
30
|
+
thumbInput: string;
|
|
31
|
+
}, undefined, unknown, unknown, undefined>>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { tcv } from "../../../../shared/utils/tcx/tcx.js";
|
|
2
|
+
const ColorSliderTv = tcv({
|
|
3
|
+
slots: {
|
|
4
|
+
root: "relative touch-none rounded-full select-none",
|
|
5
|
+
thumb: "absolute top-1/2 box-border origin-center rounded-full",
|
|
6
|
+
thumbInput: "absolute inset-0 cursor-default opacity-0"
|
|
7
|
+
},
|
|
8
|
+
variants: {
|
|
9
|
+
disabled: {
|
|
10
|
+
true: {
|
|
11
|
+
root: "saturate-0"
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
},
|
|
15
|
+
defaultVariants: {
|
|
16
|
+
disabled: false
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
export {
|
|
20
|
+
ColorSliderTv
|
|
21
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { HTMLProps } from 'react';
|
|
2
|
+
import { RGB } from '../types/colors';
|
|
3
|
+
interface ColorNativePickerProps extends Omit<HTMLProps<HTMLButtonElement>, "onChange"> {
|
|
4
|
+
onChange: (color: RGB) => void;
|
|
5
|
+
tooltip?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const ColorNativePicker: import('react').ForwardRefExoticComponent<Omit<ColorNativePickerProps, "ref"> & import('react').RefAttributes<HTMLButtonElement>>;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { IconButton } from "../../../icon-button/dist/index.js";
|
|
3
|
+
import { forwardRef } from "react";
|
|
4
|
+
import tinycolor from "tinycolor2";
|
|
5
|
+
import { translation } from "../contents/translation.js";
|
|
6
|
+
import { tcx } from "../../../../shared/utils/tcx/tcx.js";
|
|
7
|
+
const ColorNativePicker = forwardRef(
|
|
8
|
+
function ColorNativePicker2(props, ref) {
|
|
9
|
+
const { className, onChange, tooltip = translation.colorNativePicker.PICK_COLOR } = props;
|
|
10
|
+
const nativePick = async (value) => {
|
|
11
|
+
const val = value ? value.target.value : null;
|
|
12
|
+
if (val) {
|
|
13
|
+
return;
|
|
14
|
+
} else {
|
|
15
|
+
if (!("EyeDropper" in window)) {
|
|
16
|
+
alert(translation.colorNativePicker.ALERT);
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const eyeDropper = new window.EyeDropper();
|
|
20
|
+
const result = await eyeDropper.open();
|
|
21
|
+
const rgb = tinycolor(result.sRGBHex).toRgb();
|
|
22
|
+
onChange({ r: rgb.r, g: rgb.g, b: rgb.b });
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
return /* @__PURE__ */ jsx("div", { className: tcx("flex items-center justify-center", className), children: /* @__PURE__ */ jsx(
|
|
26
|
+
IconButton,
|
|
27
|
+
{
|
|
28
|
+
ref,
|
|
29
|
+
onClick: nativePick,
|
|
30
|
+
tooltip: {
|
|
31
|
+
content: tooltip
|
|
32
|
+
},
|
|
33
|
+
children: /* @__PURE__ */ jsx(
|
|
34
|
+
"svg",
|
|
35
|
+
{
|
|
36
|
+
width: "16",
|
|
37
|
+
height: "16",
|
|
38
|
+
viewBox: "0 0 16 16",
|
|
39
|
+
fill: "none",
|
|
40
|
+
xmlns: "http://www.w3.org/2000/svg",
|
|
41
|
+
children: /* @__PURE__ */ jsxs(
|
|
42
|
+
"g",
|
|
43
|
+
{
|
|
44
|
+
stroke: "currentColor",
|
|
45
|
+
strokeLinecap: "round",
|
|
46
|
+
strokeLinejoin: "round",
|
|
47
|
+
children: [
|
|
48
|
+
/* @__PURE__ */ jsx("path", { d: "M1.5 14.5L2 14H3.99998L9.99998 8" }),
|
|
49
|
+
/* @__PURE__ */ jsx("path", { d: "M2 14V12L8 6" }),
|
|
50
|
+
/* @__PURE__ */ jsx("path", { d: "M9.99997 4L12.2666 1.73334C12.5319 1.46812 12.8916 1.31912 13.2666 1.31912C13.6417 1.31912 14.0014 1.46812 14.2666 1.73334C14.5319 1.99855 14.6809 2.35826 14.6809 2.73334C14.6809 3.10841 14.5319 3.46812 14.2666 3.73334L12 6L12.2666 6.26667C12.398 6.39799 12.5021 6.55389 12.5732 6.72547C12.6443 6.89705 12.6809 7.08095 12.6809 7.26667C12.6809 7.45239 12.6443 7.63628 12.5732 7.80787C12.5021 7.97945 12.398 8.13535 12.2666 8.26667C12.1353 8.39799 11.9794 8.50216 11.8078 8.57323C11.6363 8.6443 11.4524 8.68088 11.2666 8.68088C11.0809 8.68088 10.897 8.6443 10.7254 8.57323C10.5539 8.50216 10.398 8.39799 10.2666 8.26667L7.73331 5.73334C7.60198 5.60201 7.49781 5.44611 7.42674 5.27453C7.35567 5.10295 7.31909 4.91905 7.31909 4.73334C7.31909 4.54762 7.35567 4.36372 7.42674 4.19214C7.49781 4.02056 7.60198 3.86466 7.73331 3.73334C7.86463 3.60201 8.02053 3.49784 8.19211 3.42677C8.36369 3.3557 8.54759 3.31912 8.73331 3.31912C8.91902 3.31912 9.10292 3.3557 9.2745 3.42677C9.44608 3.49784 9.60198 3.60201 9.73331 3.73334L9.99997 4Z" })
|
|
51
|
+
]
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
) });
|
|
58
|
+
}
|
|
59
|
+
);
|
|
60
|
+
ColorNativePicker.displayName = "ColorNativePicker";
|
|
61
|
+
export {
|
|
62
|
+
ColorNativePicker
|
|
63
|
+
};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { ChannelFieldSpace, ColorContrast, RGB, SolidPaintFeature } from '../types/colors';
|
|
3
|
+
import { LibrariesType } from '../types/libraries';
|
|
4
|
+
import { SolidPaintLabels } from '../types/paint';
|
|
5
|
+
import { Variable } from '../types/variable';
|
|
6
|
+
export interface ColorSolidPaintProps {
|
|
7
|
+
alpha?: number;
|
|
8
|
+
checkColorContrast?: ColorContrast;
|
|
9
|
+
className?: string;
|
|
10
|
+
color?: RGB;
|
|
11
|
+
colorSpace: ChannelFieldSpace;
|
|
12
|
+
features?: SolidPaintFeature;
|
|
13
|
+
labels?: SolidPaintLabels;
|
|
14
|
+
library?: ReactNode;
|
|
15
|
+
onAlphaChange?: (alpha: number) => void;
|
|
16
|
+
onChangeEnd?: () => void;
|
|
17
|
+
onChangeStart?: () => void;
|
|
18
|
+
onColorChange?: (color: RGB) => void;
|
|
19
|
+
onColorSpaceChange: (colorSpace: ChannelFieldSpace) => void;
|
|
20
|
+
onLibraryChange?: (value: {
|
|
21
|
+
item: Variable;
|
|
22
|
+
type: LibrariesType;
|
|
23
|
+
}) => void;
|
|
24
|
+
}
|
|
25
|
+
export declare const ColorSolidPaint: import('react').ForwardRefExoticComponent<ColorSolidPaintProps & import('react').RefAttributes<HTMLDivElement>>;
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef, useMemo, useState, useEffect } from "react";
|
|
3
|
+
import tinycolor from "tinycolor2";
|
|
4
|
+
import { useEventCallback } from "usehooks-ts";
|
|
5
|
+
import { ColorNativePicker } from "./color-native-picker.js";
|
|
6
|
+
import { SolidPaintAlphaSlider } from "./solid-paint-alpha-slider.js";
|
|
7
|
+
import { SolidPaintArea } from "./solid-paint-area.js";
|
|
8
|
+
import { SolidPaintChannelField } from "./solid-paint-channel-field.js";
|
|
9
|
+
import { SolidPaintHueSlider } from "./solid-paint-hue-slider.js";
|
|
10
|
+
import { ColorSolidPaintTv } from "./tv.js";
|
|
11
|
+
import { usePaintState } from "../hooks/use-paint-state.js";
|
|
12
|
+
import { useRgbColorHandler } from "../hooks/use-rgb-color-handler.js";
|
|
13
|
+
import { useColorContrastRecommendation } from "../hooks/use-color-contrast-recommendation.js";
|
|
14
|
+
import { CheckColorContrastToolbar } from "../check-color-contrast/check-color-contrast-toolbar.js";
|
|
15
|
+
import { CheckColorContrastBoundary } from "../check-color-contrast/check-color-contrast-boundary.js";
|
|
16
|
+
import { calculateContrastRatio, getEffectiveElementType } from "../utils/contrast-utils.js";
|
|
17
|
+
import { translation } from "../contents/translation.js";
|
|
18
|
+
import { getContrastThreshold } from "../utils/colors-convert.js";
|
|
19
|
+
const ColorSolidPaint = forwardRef(
|
|
20
|
+
function ColorSolidPaint2(props, ref) {
|
|
21
|
+
const {
|
|
22
|
+
className,
|
|
23
|
+
color = { r: 250, g: 250, b: 250 },
|
|
24
|
+
alpha: opacity = 1,
|
|
25
|
+
onColorChange,
|
|
26
|
+
onAlphaChange,
|
|
27
|
+
labels,
|
|
28
|
+
features: userFeatures = {},
|
|
29
|
+
checkColorContrast: originalCheckColorContrast,
|
|
30
|
+
onChangeStart,
|
|
31
|
+
onChangeEnd,
|
|
32
|
+
library,
|
|
33
|
+
colorSpace,
|
|
34
|
+
onColorSpaceChange
|
|
35
|
+
} = props;
|
|
36
|
+
const { paintState, setPaintState, updateSourceRef } = usePaintState({ color });
|
|
37
|
+
const { handleRgbChange } = useRgbColorHandler({
|
|
38
|
+
paintState,
|
|
39
|
+
setPaintState,
|
|
40
|
+
updateSourceRef,
|
|
41
|
+
colorSpace,
|
|
42
|
+
onColorChange
|
|
43
|
+
});
|
|
44
|
+
const features = useMemo(() => {
|
|
45
|
+
return {
|
|
46
|
+
containerWidth: 240,
|
|
47
|
+
presets: true,
|
|
48
|
+
spaceDropdown: true,
|
|
49
|
+
alpha: true,
|
|
50
|
+
hex: true,
|
|
51
|
+
rgb: true,
|
|
52
|
+
hsl: true,
|
|
53
|
+
hsb: true,
|
|
54
|
+
checkColorContrast: true,
|
|
55
|
+
nativePicker: true,
|
|
56
|
+
...userFeatures
|
|
57
|
+
};
|
|
58
|
+
}, [userFeatures]);
|
|
59
|
+
const handleNativeColorChange = useEventCallback((rgb) => {
|
|
60
|
+
onColorChange == null ? void 0 : onColorChange(rgb);
|
|
61
|
+
});
|
|
62
|
+
const sliderTrackSize = useMemo(() => {
|
|
63
|
+
const getPadding = () => {
|
|
64
|
+
if (!features.alpha && !features.nativePicker) {
|
|
65
|
+
return 32;
|
|
66
|
+
}
|
|
67
|
+
let padding = 0;
|
|
68
|
+
padding += features.alpha ? 32 : 16;
|
|
69
|
+
padding += features.nativePicker ? 48 : 0;
|
|
70
|
+
return padding;
|
|
71
|
+
};
|
|
72
|
+
return {
|
|
73
|
+
width: ((features == null ? void 0 : features.containerWidth) ?? 240) - getPadding(),
|
|
74
|
+
height: 16
|
|
75
|
+
};
|
|
76
|
+
}, [features.containerWidth, features.alpha, features.nativePicker]);
|
|
77
|
+
const styles = ColorSolidPaintTv({
|
|
78
|
+
alpha: features.alpha,
|
|
79
|
+
nativePicker: features.nativePicker,
|
|
80
|
+
presets: features.presets
|
|
81
|
+
});
|
|
82
|
+
const [standardHovered, setStandardHovered] = useState(false);
|
|
83
|
+
const selectedElementType = (originalCheckColorContrast == null ? void 0 : originalCheckColorContrast.selectedElementType) ?? "graphics";
|
|
84
|
+
const backgroundColor = originalCheckColorContrast == null ? void 0 : originalCheckColorContrast.backgroundColor;
|
|
85
|
+
const contrastLevel = originalCheckColorContrast == null ? void 0 : originalCheckColorContrast.level;
|
|
86
|
+
const contrastCategory = originalCheckColorContrast == null ? void 0 : originalCheckColorContrast.category;
|
|
87
|
+
const showContrast = originalCheckColorContrast == null ? void 0 : originalCheckColorContrast.showColorContrast;
|
|
88
|
+
const checkColorContrastForChild = useMemo(() => {
|
|
89
|
+
if (!originalCheckColorContrast) return void 0;
|
|
90
|
+
return {
|
|
91
|
+
...originalCheckColorContrast,
|
|
92
|
+
foregroundColor: color,
|
|
93
|
+
foregroundAlpha: opacity,
|
|
94
|
+
selectedElementType
|
|
95
|
+
};
|
|
96
|
+
}, [originalCheckColorContrast, color, opacity, selectedElementType]);
|
|
97
|
+
const containerWidth = (features == null ? void 0 : features.containerWidth) ?? 240;
|
|
98
|
+
const stableContrastHookOnColorChange = useEventCallback(
|
|
99
|
+
(newColor, newAlpha, preserveHue) => {
|
|
100
|
+
if (preserveHue !== void 0) {
|
|
101
|
+
updateSourceRef.current = "internal";
|
|
102
|
+
const tc = tinycolor(newColor);
|
|
103
|
+
const hsl = tc.toHsl();
|
|
104
|
+
const hsv = tc.toHsv();
|
|
105
|
+
setPaintState({
|
|
106
|
+
h: preserveHue,
|
|
107
|
+
// 使用传入的原始 hue,不从 RGB 重新计算
|
|
108
|
+
hsl_s: hsl.s,
|
|
109
|
+
l: hsl.l,
|
|
110
|
+
hsv_s: hsv.s,
|
|
111
|
+
v: hsv.v
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
onColorChange == null ? void 0 : onColorChange(newColor);
|
|
115
|
+
onAlphaChange == null ? void 0 : onAlphaChange(newAlpha);
|
|
116
|
+
setStandardHovered(false);
|
|
117
|
+
}
|
|
118
|
+
);
|
|
119
|
+
const contrastOptions = useMemo(
|
|
120
|
+
() => ({
|
|
121
|
+
onColorChange: stableContrastHookOnColorChange
|
|
122
|
+
}),
|
|
123
|
+
[stableContrastHookOnColorChange]
|
|
124
|
+
);
|
|
125
|
+
const {
|
|
126
|
+
recommendedPoint,
|
|
127
|
+
boundaryData: calculatedBoundaryData,
|
|
128
|
+
updateRecommendedPoint,
|
|
129
|
+
applyRecommendedPoint
|
|
130
|
+
} = useColorContrastRecommendation({
|
|
131
|
+
width: containerWidth,
|
|
132
|
+
height: containerWidth,
|
|
133
|
+
hue: paintState.h,
|
|
134
|
+
backgroundColor: backgroundColor || { r: 255, g: 255, b: 255 },
|
|
135
|
+
foregroundAlpha: opacity,
|
|
136
|
+
level: contrastLevel,
|
|
137
|
+
category: contrastCategory,
|
|
138
|
+
selectedElementType,
|
|
139
|
+
options: contrastOptions,
|
|
140
|
+
colorSpace,
|
|
141
|
+
paintState
|
|
142
|
+
});
|
|
143
|
+
const boundaryDataForChild = useMemo(() => {
|
|
144
|
+
if (showContrast && features.checkColorContrast && calculatedBoundaryData) {
|
|
145
|
+
return calculatedBoundaryData;
|
|
146
|
+
}
|
|
147
|
+
return { lowerBoundary: null, upperBoundary: null, threshold: 0 };
|
|
148
|
+
}, [showContrast, features.checkColorContrast, calculatedBoundaryData]);
|
|
149
|
+
useEffect(() => {
|
|
150
|
+
if (!showContrast || !standardHovered) return;
|
|
151
|
+
const effectiveType = getEffectiveElementType(contrastCategory, selectedElementType);
|
|
152
|
+
const threshold = getContrastThreshold(contrastLevel, contrastCategory, effectiveType);
|
|
153
|
+
const ratio = calculateContrastRatio(
|
|
154
|
+
backgroundColor ?? { r: 255, g: 255, b: 255 },
|
|
155
|
+
color,
|
|
156
|
+
opacity
|
|
157
|
+
);
|
|
158
|
+
if (ratio >= threshold) {
|
|
159
|
+
setStandardHovered(false);
|
|
160
|
+
}
|
|
161
|
+
}, [
|
|
162
|
+
showContrast,
|
|
163
|
+
standardHovered,
|
|
164
|
+
backgroundColor,
|
|
165
|
+
color,
|
|
166
|
+
opacity,
|
|
167
|
+
contrastLevel,
|
|
168
|
+
contrastCategory,
|
|
169
|
+
selectedElementType
|
|
170
|
+
]);
|
|
171
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
172
|
+
showContrast && features.checkColorContrast && /* @__PURE__ */ jsx(
|
|
173
|
+
CheckColorContrastToolbar,
|
|
174
|
+
{
|
|
175
|
+
checkColorContrast: checkColorContrastForChild,
|
|
176
|
+
onStandardHovered: setStandardHovered,
|
|
177
|
+
containerWidth,
|
|
178
|
+
applyRecommendedPoint
|
|
179
|
+
}
|
|
180
|
+
),
|
|
181
|
+
/* @__PURE__ */ jsxs(
|
|
182
|
+
"div",
|
|
183
|
+
{
|
|
184
|
+
ref,
|
|
185
|
+
className,
|
|
186
|
+
style: { width: containerWidth },
|
|
187
|
+
children: [
|
|
188
|
+
/* @__PURE__ */ jsx(
|
|
189
|
+
SolidPaintArea,
|
|
190
|
+
{
|
|
191
|
+
paintState,
|
|
192
|
+
setPaintState: (newState) => {
|
|
193
|
+
setPaintState(newState);
|
|
194
|
+
},
|
|
195
|
+
colorSpace,
|
|
196
|
+
rgbColor: color,
|
|
197
|
+
onColorChange,
|
|
198
|
+
containerWidth,
|
|
199
|
+
updateSourceRef,
|
|
200
|
+
onChangeStart,
|
|
201
|
+
onChangeEnd,
|
|
202
|
+
children: showContrast && features.checkColorContrast && /* @__PURE__ */ jsx(
|
|
203
|
+
CheckColorContrastBoundary,
|
|
204
|
+
{
|
|
205
|
+
colorSpace,
|
|
206
|
+
paintState,
|
|
207
|
+
width: containerWidth,
|
|
208
|
+
height: containerWidth,
|
|
209
|
+
foregroundAlpha: opacity,
|
|
210
|
+
showRecommendedPoint: standardHovered,
|
|
211
|
+
recommendedPoint,
|
|
212
|
+
boundaryData: boundaryDataForChild,
|
|
213
|
+
updateRecommendedPoint
|
|
214
|
+
}
|
|
215
|
+
)
|
|
216
|
+
}
|
|
217
|
+
),
|
|
218
|
+
/* @__PURE__ */ jsxs(
|
|
219
|
+
"div",
|
|
220
|
+
{
|
|
221
|
+
className: styles.sliderContainer(),
|
|
222
|
+
style: { width: containerWidth },
|
|
223
|
+
children: [
|
|
224
|
+
/* @__PURE__ */ jsx(
|
|
225
|
+
SolidPaintHueSlider,
|
|
226
|
+
{
|
|
227
|
+
hue: paintState.h,
|
|
228
|
+
setHue: (newHue) => {
|
|
229
|
+
const newPaintState = { ...paintState, h: newHue };
|
|
230
|
+
setPaintState(newPaintState);
|
|
231
|
+
},
|
|
232
|
+
color,
|
|
233
|
+
onColorChange,
|
|
234
|
+
onChangeStart,
|
|
235
|
+
onChangeEnd,
|
|
236
|
+
onChange: onChangeEnd,
|
|
237
|
+
type: "hue",
|
|
238
|
+
trackSize: sliderTrackSize,
|
|
239
|
+
updateSourceRef
|
|
240
|
+
}
|
|
241
|
+
),
|
|
242
|
+
features.alpha && /* @__PURE__ */ jsx(
|
|
243
|
+
SolidPaintAlphaSlider,
|
|
244
|
+
{
|
|
245
|
+
hue: paintState.h,
|
|
246
|
+
alpha: opacity,
|
|
247
|
+
onAlphaChange,
|
|
248
|
+
type: "alpha",
|
|
249
|
+
trackSize: sliderTrackSize,
|
|
250
|
+
onChangeStart,
|
|
251
|
+
onChangeEnd
|
|
252
|
+
}
|
|
253
|
+
),
|
|
254
|
+
features.nativePicker && /* @__PURE__ */ jsx(
|
|
255
|
+
ColorNativePicker,
|
|
256
|
+
{
|
|
257
|
+
onChange: handleNativeColorChange,
|
|
258
|
+
className: styles.nativePicker(),
|
|
259
|
+
tooltip: (labels == null ? void 0 : labels.pickerColor) ?? translation.colorNativePicker.PICK_COLOR
|
|
260
|
+
}
|
|
261
|
+
)
|
|
262
|
+
]
|
|
263
|
+
}
|
|
264
|
+
),
|
|
265
|
+
/* @__PURE__ */ jsx(
|
|
266
|
+
SolidPaintChannelField,
|
|
267
|
+
{
|
|
268
|
+
paintState,
|
|
269
|
+
setPaintState: (newState) => {
|
|
270
|
+
setPaintState(newState);
|
|
271
|
+
},
|
|
272
|
+
colorSpace,
|
|
273
|
+
setColorSpace: onColorSpaceChange,
|
|
274
|
+
updateSourceRef,
|
|
275
|
+
rgb: color,
|
|
276
|
+
alpha: opacity,
|
|
277
|
+
onAlphaChange,
|
|
278
|
+
onAlphaChangeEnd: onChangeEnd,
|
|
279
|
+
onAlphaChangeStart: onChangeStart,
|
|
280
|
+
onColorChange: handleRgbChange,
|
|
281
|
+
className: styles.channelField(),
|
|
282
|
+
features,
|
|
283
|
+
labels
|
|
284
|
+
}
|
|
285
|
+
),
|
|
286
|
+
features.presets && library && /* @__PURE__ */ jsx(Fragment, { children: library })
|
|
287
|
+
]
|
|
288
|
+
}
|
|
289
|
+
)
|
|
290
|
+
] });
|
|
291
|
+
}
|
|
292
|
+
);
|
|
293
|
+
export {
|
|
294
|
+
ColorSolidPaint
|
|
295
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ColorSliderProps } from '../color-slider';
|
|
2
|
+
type Props = Omit<ColorSliderProps, "position"> & {
|
|
3
|
+
alpha: number;
|
|
4
|
+
hue: number;
|
|
5
|
+
onAlphaChange?: (value: number) => void;
|
|
6
|
+
onChangeEnd?: () => void;
|
|
7
|
+
onChangeStart?: () => void;
|
|
8
|
+
};
|
|
9
|
+
export declare const SolidPaintAlphaSlider: (props: Props) => import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { ColorSlider } from "../color-slider/color-slider.js";
|
|
3
|
+
const SolidPaintAlphaSlider = (props) => {
|
|
4
|
+
const { hue, alpha, onAlphaChange, onChangeStart, onChangeEnd, trackSize } = props;
|
|
5
|
+
return /* @__PURE__ */ jsx(
|
|
6
|
+
ColorSlider,
|
|
7
|
+
{
|
|
8
|
+
position: alpha,
|
|
9
|
+
onChange: onAlphaChange,
|
|
10
|
+
type: "alpha",
|
|
11
|
+
hue,
|
|
12
|
+
trackSize,
|
|
13
|
+
onChangeStart,
|
|
14
|
+
onChangeEnd
|
|
15
|
+
}
|
|
16
|
+
);
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
SolidPaintAlphaSlider
|
|
20
|
+
};
|