@esri/calcite-components 1.4.0-next.4 → 1.4.0-next.6
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/calcite/calcite.esm.js +2 -2
- package/dist/calcite/index.esm.js +2 -2
- package/dist/calcite/{p-1b48dcda.entry.js → p-00e1b3a8.entry.js} +2 -2
- package/dist/calcite/{p-4a86d1ab.js → p-02706e35.js} +1 -1
- package/dist/calcite/p-058ac7cb.entry.js +6 -0
- package/dist/calcite/{p-be5734f7.js → p-08fb12d7.js} +2 -2
- package/dist/calcite/{p-5081856a.entry.js → p-09339f89.entry.js} +2 -2
- package/dist/calcite/{p-549d3d07.entry.js → p-0f9e9bef.entry.js} +2 -2
- package/dist/calcite/{p-198ab071.entry.js → p-15d26e08.entry.js} +2 -2
- package/dist/calcite/{p-c6c82380.entry.js → p-1678bfd5.entry.js} +2 -2
- package/dist/calcite/{p-14f78c1b.entry.js → p-18e2b588.entry.js} +2 -2
- package/dist/calcite/{p-14eccdb3.entry.js → p-198abcbb.entry.js} +2 -2
- package/dist/calcite/p-1bcc4ef2.js +6 -0
- package/dist/calcite/{p-4be0d67c.entry.js → p-20c6068d.entry.js} +2 -2
- package/dist/calcite/{p-2468ff71.js → p-238464b3.js} +1 -1
- package/dist/calcite/{p-10335369.js → p-24833d0f.js} +2 -2
- package/dist/calcite/{p-a8ae64d6.js → p-28ee6675.js} +1 -1
- package/dist/calcite/{p-f8af9a6c.js → p-2d155925.js} +1 -1
- package/dist/calcite/{p-f8ff6c94.entry.js → p-2f987df1.entry.js} +2 -2
- package/dist/calcite/{p-a0d99484.entry.js → p-309c88b2.entry.js} +2 -2
- package/dist/calcite/{p-460df0b5.js → p-36a4f2c8.js} +1 -1
- package/dist/calcite/{p-607951d2.entry.js → p-3c58757e.entry.js} +2 -2
- package/dist/calcite/{p-3465fcef.js → p-3d782f5e.js} +1 -1
- package/dist/calcite/{p-9170dc8c.entry.js → p-3e4ed9a3.entry.js} +2 -2
- package/dist/calcite/{p-29675f69.entry.js → p-3f09b972.entry.js} +2 -2
- package/dist/calcite/{p-b88213e9.entry.js → p-3fb7e1e9.entry.js} +2 -2
- package/dist/calcite/{p-4094c395.js → p-49e5e96a.js} +1 -1
- package/dist/calcite/{p-e4676089.entry.js → p-4ad0e5e7.entry.js} +2 -2
- package/dist/calcite/{p-167a7bdc.js → p-50e95bdb.js} +1 -1
- package/dist/calcite/{p-e7e84acd.entry.js → p-51f4cb23.entry.js} +2 -2
- package/dist/calcite/{p-09b5e911.entry.js → p-520cf1b0.entry.js} +2 -2
- package/dist/calcite/{p-690e8224.entry.js → p-56d69bd6.entry.js} +2 -2
- package/dist/calcite/{p-4612e3c4.entry.js → p-5b82075d.entry.js} +2 -2
- package/dist/calcite/{p-5099d131.entry.js → p-6582a43e.entry.js} +2 -2
- package/dist/calcite/{p-99546fc2.entry.js → p-6989f500.entry.js} +2 -2
- package/dist/calcite/{p-ac512a57.entry.js → p-6aadaed2.entry.js} +2 -2
- package/dist/calcite/{p-eabc3a81.entry.js → p-6c011dac.entry.js} +2 -2
- package/dist/calcite/{p-110f836d.js → p-6e1f7f1f.js} +1 -1
- package/dist/calcite/{p-762e069e.entry.js → p-70edce50.entry.js} +2 -2
- package/dist/calcite/{p-00346107.entry.js → p-71294102.entry.js} +2 -2
- package/dist/calcite/{p-c592404b.entry.js → p-721669b1.entry.js} +2 -2
- package/dist/calcite/{p-cc5d73b1.entry.js → p-7773ec0c.entry.js} +2 -2
- package/dist/calcite/{p-7aac398a.js → p-78ecccfd.js} +2 -2
- package/dist/calcite/{p-7c069e47.entry.js → p-794cd7e0.entry.js} +2 -2
- package/dist/calcite/{p-1e353e72.js → p-7e85033a.js} +1 -1
- package/dist/calcite/{p-37601822.entry.js → p-829a8016.entry.js} +2 -2
- package/dist/calcite/{p-bfa1073e.entry.js → p-8576f7a9.entry.js} +2 -2
- package/dist/calcite/{p-4dd1d026.entry.js → p-85ce36b4.entry.js} +2 -2
- package/dist/calcite/{p-fbb43fd3.entry.js → p-89b037e5.entry.js} +2 -2
- package/dist/calcite/{p-7c93f55c.entry.js → p-8bc8392a.entry.js} +2 -2
- package/dist/calcite/{p-d83e122d.js → p-8d592b3c.js} +1 -1
- package/dist/calcite/{p-bf3b07a8.entry.js → p-8d911c0f.entry.js} +2 -2
- package/dist/calcite/{p-518e42e2.js → p-8e4e219a.js} +1 -1
- package/dist/calcite/{p-798257c9.js → p-8eb6d3d6.js} +2 -2
- package/dist/calcite/{p-9d6d46fb.js → p-8eed6488.js} +1 -1
- package/dist/calcite/{p-1f65fd97.entry.js → p-902ccf8c.entry.js} +2 -2
- package/dist/calcite/{p-41b1924f.entry.js → p-90faa188.entry.js} +2 -2
- package/dist/calcite/{p-5b0e38f4.entry.js → p-94ae14ed.entry.js} +2 -2
- package/dist/calcite/{p-2477ffab.js → p-977a7373.js} +2 -2
- package/dist/calcite/{p-fc5a05c8.js → p-9c5561f6.js} +2 -2
- package/dist/calcite/{p-71ee6c09.js → p-9ecad02c.js} +2 -2
- package/dist/calcite/p-a2dcc545.js +6 -0
- package/dist/calcite/{p-6c28a6a6.entry.js → p-ac50f328.entry.js} +2 -2
- package/dist/calcite/{p-af19d2eb.entry.js → p-acbe9c99.entry.js} +2 -2
- package/dist/calcite/p-ad29a95f.js +6 -0
- package/dist/calcite/{p-3476e72e.js → p-ae330013.js} +2 -2
- package/dist/calcite/{p-88e0c279.js → p-b0388e91.js} +2 -2
- package/dist/calcite/{p-07e56bf4.js → p-b086f92d.js} +1 -1
- package/dist/calcite/p-b3099221.js +6 -0
- package/dist/calcite/{p-c33810ce.js → p-b3f59734.js} +1 -1
- package/dist/calcite/{p-12b426c9.entry.js → p-b7f76e88.entry.js} +2 -2
- package/dist/calcite/p-bb1f280b.entry.js +6 -0
- package/dist/calcite/{p-cafbf219.entry.js → p-bde56e46.entry.js} +2 -2
- package/dist/calcite/{p-48071f1a.entry.js → p-bde9a8bf.entry.js} +2 -2
- package/dist/calcite/{p-e88938fe.entry.js → p-becceac4.entry.js} +2 -2
- package/dist/calcite/p-c3bd1ae0.entry.js +6 -0
- package/dist/calcite/{p-8ac1324f.entry.js → p-c477bf75.entry.js} +2 -2
- package/dist/calcite/{p-db1f6411.js → p-c4e985ef.js} +2 -2
- package/dist/calcite/{p-605ff48d.entry.js → p-c9159a0a.entry.js} +2 -2
- package/dist/calcite/{p-4569f702.entry.js → p-ca95c6ed.entry.js} +2 -2
- package/dist/calcite/{p-dc554515.entry.js → p-cabf475d.entry.js} +2 -2
- package/dist/calcite/p-cc008746.js +6 -0
- package/dist/calcite/{p-b6d1694c.entry.js → p-cd8ecd59.entry.js} +2 -2
- package/dist/calcite/{p-b1c81dcc.js → p-cf5e973f.js} +2 -2
- package/dist/calcite/{p-90b23414.entry.js → p-d4f5d56a.entry.js} +2 -2
- package/dist/calcite/{p-0e0a4c8e.entry.js → p-dda5a868.entry.js} +2 -2
- package/dist/calcite/p-de460c7f.js +6 -0
- package/dist/calcite/p-e907c9d7.entry.js +6 -0
- package/dist/calcite/{p-23c694da.entry.js → p-e9dedbc2.entry.js} +2 -2
- package/dist/calcite/{p-74a4ac3e.js → p-ece4c169.js} +1 -1
- package/dist/calcite/{p-df5d4340.entry.js → p-ef9439cd.entry.js} +2 -2
- package/dist/calcite/p-f0eab93a.entry.js +6 -0
- package/dist/calcite/{p-01e73d3c.entry.js → p-f1dc743d.entry.js} +2 -2
- package/dist/calcite/{p-feb44263.entry.js → p-f2bf5444.entry.js} +2 -2
- package/dist/calcite/{p-ab5ba8d8.entry.js → p-f44b8d1c.entry.js} +2 -2
- package/dist/calcite/{p-083022ce.entry.js → p-fd37640e.entry.js} +2 -2
- package/dist/calcite/{p-18fe3593.entry.js → p-fd38d722.entry.js} +2 -2
- package/dist/calcite/p-ff1e2786.js +6 -0
- package/dist/cjs/{ExpandToggle-9c9692c9.js → ExpandToggle-34efb36e.js} +5 -5
- package/dist/cjs/{FloatingArrow-8cad3e02.js → FloatingArrow-ca4a438c.js} +2 -2
- package/dist/cjs/{Heading-a54c437a.js → Heading-16403a18.js} +2 -2
- package/dist/cjs/{app-globals-6921d6ca.js → app-globals-08fa4928.js} +2 -2
- package/dist/cjs/{array-11eaef78.js → array-a48e72f4.js} +1 -1
- package/dist/cjs/calcite-accordion_2.cjs.entry.js +7 -7
- package/dist/cjs/calcite-action-bar.cjs.entry.js +15 -15
- package/dist/cjs/calcite-action-group.cjs.entry.js +13 -13
- package/dist/cjs/calcite-action-menu.cjs.entry.js +9 -9
- package/dist/cjs/calcite-action-pad.cjs.entry.js +14 -14
- package/dist/cjs/calcite-action.cjs.entry.js +11 -11
- package/dist/cjs/calcite-alert.cjs.entry.js +12 -12
- package/dist/cjs/calcite-avatar.cjs.entry.js +6 -6
- package/dist/cjs/calcite-block_2.cjs.entry.js +12 -12
- package/dist/cjs/calcite-button.cjs.entry.js +13 -13
- package/dist/cjs/calcite-card.cjs.entry.js +10 -10
- package/dist/cjs/calcite-checkbox.cjs.entry.js +10 -10
- package/dist/cjs/calcite-chip-group.cjs.entry.js +8 -8
- package/dist/cjs/calcite-chip.cjs.entry.js +12 -12
- package/dist/cjs/calcite-color-picker_3.cjs.entry.js +585 -339
- package/dist/cjs/calcite-combobox_3.cjs.entry.js +18 -18
- package/dist/cjs/calcite-date-picker_4.cjs.entry.js +13 -13
- package/dist/cjs/calcite-dropdown_3.cjs.entry.js +12 -12
- package/dist/cjs/calcite-fab.cjs.entry.js +7 -7
- package/dist/cjs/calcite-filter.cjs.entry.js +13 -13
- package/dist/cjs/calcite-flow-item.cjs.entry.js +12 -12
- package/dist/cjs/calcite-flow.cjs.entry.js +3 -3
- package/dist/cjs/calcite-graph_2.cjs.entry.js +13 -13
- package/dist/cjs/calcite-handle.cjs.entry.js +10 -10
- package/dist/cjs/calcite-icon.cjs.entry.js +6 -6
- package/dist/cjs/calcite-inline-editable.cjs.entry.js +12 -12
- package/dist/cjs/calcite-input-date-picker.cjs.entry.js +18 -18
- package/dist/cjs/calcite-input-message.cjs.entry.js +5 -5
- package/dist/cjs/calcite-input-number.cjs.entry.js +13 -13
- package/dist/cjs/calcite-input-text.cjs.entry.js +13 -13
- package/dist/cjs/calcite-input-time-picker_2.cjs.entry.js +14 -14
- package/dist/cjs/calcite-input.cjs.entry.js +13 -13
- package/dist/cjs/calcite-label.cjs.entry.js +6 -6
- package/dist/cjs/calcite-link.cjs.entry.js +7 -7
- package/dist/cjs/calcite-list_3.cjs.entry.js +50 -40
- package/dist/cjs/calcite-loader.cjs.entry.js +3 -3
- package/dist/cjs/calcite-modal.cjs.entry.js +13 -13
- package/dist/cjs/calcite-notice.cjs.entry.js +12 -12
- package/dist/cjs/calcite-option_3.cjs.entry.js +10 -10
- package/dist/cjs/calcite-pagination.cjs.entry.js +10 -10
- package/dist/cjs/calcite-panel.cjs.entry.js +14 -14
- package/dist/cjs/calcite-pick-list_3.cjs.entry.js +16 -16
- package/dist/cjs/calcite-popover.cjs.entry.js +16 -16
- package/dist/cjs/calcite-progress.cjs.entry.js +2 -2
- package/dist/cjs/calcite-radio-button-group.cjs.entry.js +3 -3
- package/dist/cjs/calcite-radio-button.cjs.entry.js +10 -10
- package/dist/cjs/calcite-rating.cjs.entry.js +13 -13
- package/dist/cjs/calcite-scrim.cjs.entry.js +9 -9
- package/dist/cjs/calcite-segmented-control_2.cjs.entry.js +9 -9
- package/dist/cjs/calcite-shell_3.cjs.entry.js +11 -11
- package/dist/cjs/calcite-sortable-list.cjs.entry.js +5 -5
- package/dist/cjs/calcite-split-button.cjs.entry.js +4 -4
- package/dist/cjs/calcite-stepper_2.cjs.entry.js +10 -10
- package/dist/cjs/calcite-switch.cjs.entry.js +10 -10
- package/dist/cjs/calcite-tab_4.cjs.entry.js +7 -7
- package/dist/cjs/calcite-text-area.cjs.entry.js +15 -15
- package/dist/cjs/calcite-tile-select_2.cjs.entry.js +5 -5
- package/dist/cjs/calcite-tile.cjs.entry.js +8 -8
- package/dist/cjs/calcite-tip_3.cjs.entry.js +11 -11
- package/dist/cjs/calcite-tooltip.cjs.entry.js +9 -9
- package/dist/cjs/calcite-tree_2.cjs.entry.js +9 -9
- package/dist/cjs/calcite-value-list_2.cjs.entry.js +16 -16
- package/dist/cjs/calcite.cjs.js +5 -5
- package/dist/cjs/{composed-offset-position.esm-5a2f9ff8.js → composed-offset-position.esm-00262258.js} +1 -1
- package/dist/cjs/{conditionalSlot-39f2741e.js → conditionalSlot-44ce332c.js} +3 -3
- package/dist/cjs/{debounce-f09b6263.js → debounce-a2674dc4.js} +1 -1
- package/dist/cjs/{dom-1b2f41d1.js → dom-c4a69490.js} +3 -3
- package/dist/cjs/{filter-c268fa9a.js → filter-a7677076.js} +2 -2
- package/dist/cjs/{floating-ui-86f1cd7e.js → floating-ui-b9ad845e.js} +71 -65
- package/dist/cjs/{focusTrapComponent-84a6204d.js → focusTrapComponent-ad111b58.js} +2 -2
- package/dist/cjs/{form-c4ef3b01.js → form-4441b5de.js} +3 -3
- package/dist/cjs/{guid-053b3b9f.js → guid-3ea77659.js} +1 -1
- package/dist/cjs/{index-3f1e65e1.js → index-5631fa22.js} +1 -1
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/{interactive-002e7de1.js → interactive-0d0f7af7.js} +1 -1
- package/dist/cjs/{key-26c7350c.js → key-5a12f647.js} +1 -1
- package/dist/cjs/{label-c5a73703.js → label-81db116a.js} +2 -2
- package/dist/cjs/{loadable-21f49ddd.js → loadable-9733bc78.js} +1 -1
- package/dist/cjs/loader.cjs.js +5 -5
- package/dist/cjs/{locale-bec864db.js → locale-cd52f850.js} +4 -4
- package/dist/cjs/{math-b23a2620.js → math-d7fcd025.js} +1 -1
- package/dist/cjs/{observers-7b381996.js → observers-6aa64455.js} +1 -1
- package/dist/cjs/{openCloseComponent-d285707d.js → openCloseComponent-f2d47f5b.js} +2 -2
- package/dist/cjs/{resources-4b35c7c3.js → resources-4a16f695.js} +1 -1
- package/dist/cjs/{resources-ccc69560.js → resources-7805e29e.js} +5 -5
- package/dist/cjs/{resources-d72b2060.js → resources-9c69ee5f.js} +1 -1
- package/dist/cjs/{resources-6603995b.js → resources-a3154079.js} +1 -1
- package/dist/cjs/{resources-42c16d2f.js → resources-cb69cc10.js} +1 -1
- package/dist/cjs/{resources-adbdd1d0.js → resources-fb8b0a5e.js} +1 -1
- package/dist/cjs/{sortable.esm-e90f34c4.js → sortable.esm-b954a413.js} +1 -1
- package/dist/cjs/{t9n-d1d3fae9.js → t9n-e49fe20d.js} +3 -3
- package/dist/cjs/{throttle-d2814ea6.js → throttle-3df9debd.js} +2 -2
- package/dist/cjs/utils-136fb325.js +213 -0
- package/dist/cjs/{utils-da168911.js → utils-411455bc.js} +3 -3
- package/dist/collection/components/accordion/accordion.js +1 -1
- package/dist/collection/components/accordion-item/accordion-item.js +1 -1
- package/dist/collection/components/accordion-item/resources.js +1 -1
- package/dist/collection/components/action/action.js +1 -1
- package/dist/collection/components/action/resources.js +1 -1
- package/dist/collection/components/action-bar/action-bar.js +1 -1
- package/dist/collection/components/action-bar/resources.js +1 -1
- package/dist/collection/components/action-bar/utils.js +1 -1
- package/dist/collection/components/action-group/action-group.js +1 -1
- package/dist/collection/components/action-group/resources.js +1 -1
- package/dist/collection/components/action-menu/action-menu.js +1 -1
- package/dist/collection/components/action-menu/resources.js +1 -1
- package/dist/collection/components/action-pad/action-pad.js +1 -1
- package/dist/collection/components/action-pad/resources.js +1 -1
- package/dist/collection/components/alert/alert.js +1 -1
- package/dist/collection/components/alert/resources.js +1 -1
- package/dist/collection/components/avatar/avatar.js +1 -1
- package/dist/collection/components/avatar/utils.js +1 -1
- package/dist/collection/components/block/block.js +1 -1
- package/dist/collection/components/block/resources.js +1 -1
- package/dist/collection/components/block-section/block-section.js +1 -1
- package/dist/collection/components/block-section/resources.js +1 -1
- package/dist/collection/components/button/button.js +1 -1
- package/dist/collection/components/button/resources.js +1 -1
- package/dist/collection/components/card/card.js +1 -1
- package/dist/collection/components/card/resources.js +1 -1
- package/dist/collection/components/checkbox/checkbox.js +1 -1
- package/dist/collection/components/chip/chip.js +1 -1
- package/dist/collection/components/chip/resources.js +1 -1
- package/dist/collection/components/chip-group/chip-group.js +1 -1
- package/dist/collection/components/color-picker/color-picker.css +59 -52
- package/dist/collection/components/color-picker/color-picker.js +448 -233
- package/dist/collection/components/color-picker/resources.js +37 -27
- package/dist/collection/components/color-picker/utils.js +116 -30
- package/dist/collection/components/color-picker-hex-input/color-picker-hex-input.css +19 -16
- package/dist/collection/components/color-picker-hex-input/color-picker-hex-input.js +225 -118
- package/dist/collection/components/color-picker-hex-input/resources.js +3 -3
- package/dist/collection/components/color-picker-swatch/color-picker-swatch.css +10 -6
- package/dist/collection/components/color-picker-swatch/color-picker-swatch.js +34 -7
- package/dist/collection/components/color-picker-swatch/resources.js +8 -2
- package/dist/collection/components/combobox/combobox.js +1 -1
- package/dist/collection/components/combobox/resources.js +1 -1
- package/dist/collection/components/combobox/utils.js +1 -1
- package/dist/collection/components/combobox-item/combobox-item.js +1 -1
- package/dist/collection/components/combobox-item/resources.js +1 -1
- package/dist/collection/components/combobox-item-group/combobox-item-group.js +1 -1
- package/dist/collection/components/combobox-item-group/resources.js +1 -1
- package/dist/collection/components/date-picker/date-picker.js +1 -1
- package/dist/collection/components/date-picker/resources.js +1 -1
- package/dist/collection/components/date-picker/utils.js +1 -1
- package/dist/collection/components/date-picker-day/date-picker-day.js +1 -1
- package/dist/collection/components/date-picker-month/date-picker-month.js +1 -1
- package/dist/collection/components/date-picker-month-header/date-picker-month-header.js +1 -1
- package/dist/collection/components/date-picker-month-header/resources.js +1 -1
- package/dist/collection/components/dropdown/dropdown.js +1 -1
- package/dist/collection/components/dropdown/resources.js +1 -1
- package/dist/collection/components/dropdown-group/dropdown-group.js +1 -1
- package/dist/collection/components/dropdown-group/resources.js +1 -1
- package/dist/collection/components/dropdown-item/dropdown-item.js +1 -1
- package/dist/collection/components/dropdown-item/resources.js +1 -1
- package/dist/collection/components/fab/fab.js +1 -1
- package/dist/collection/components/fab/resources.js +1 -1
- package/dist/collection/components/filter/filter.js +1 -1
- package/dist/collection/components/filter/resources.js +1 -1
- package/dist/collection/components/flow/flow.js +1 -1
- package/dist/collection/components/flow/resources.js +1 -1
- package/dist/collection/components/flow-item/flow-item.js +1 -1
- package/dist/collection/components/flow-item/resources.js +1 -1
- package/dist/collection/components/functional/ExpandToggle.js +1 -1
- package/dist/collection/components/functional/FloatingArrow.js +1 -1
- package/dist/collection/components/functional/Heading.js +1 -1
- package/dist/collection/components/graph/graph.js +1 -1
- package/dist/collection/components/graph/util.js +1 -1
- package/dist/collection/components/handle/handle.js +1 -1
- package/dist/collection/components/handle/resources.js +1 -1
- package/dist/collection/components/icon/icon.js +1 -1
- package/dist/collection/components/icon/resources.js +1 -1
- package/dist/collection/components/icon/utils.js +1 -1
- package/dist/collection/components/inline-editable/inline-editable.js +1 -1
- package/dist/collection/components/inline-editable/resources.js +1 -1
- package/dist/collection/components/input/input.js +1 -1
- package/dist/collection/components/input/resources.js +1 -1
- package/dist/collection/components/input-date-picker/input-date-picker.js +1 -1
- package/dist/collection/components/input-date-picker/resources.js +1 -1
- package/dist/collection/components/input-message/input-message.js +1 -1
- package/dist/collection/components/input-message/interfaces.js +1 -1
- package/dist/collection/components/input-number/input-number.js +1 -1
- package/dist/collection/components/input-number/resources.js +1 -1
- package/dist/collection/components/input-text/input-text.js +1 -1
- package/dist/collection/components/input-text/resources.js +1 -1
- package/dist/collection/components/input-time-picker/input-time-picker.js +1 -1
- package/dist/collection/components/input-time-picker/resources.js +1 -1
- package/dist/collection/components/label/label.js +1 -1
- package/dist/collection/components/label/resources.js +1 -1
- package/dist/collection/components/link/link.js +1 -1
- package/dist/collection/components/list/list.js +60 -30
- package/dist/collection/components/list/resources.js +2 -2
- package/dist/collection/components/list-item/list-item.js +1 -1
- package/dist/collection/components/list-item/resources.js +1 -1
- package/dist/collection/components/list-item/utils.js +1 -1
- package/dist/collection/components/list-item-group/list-item-group.js +1 -1
- package/dist/collection/components/list-item-group/resources.js +1 -1
- package/dist/collection/components/loader/loader.js +1 -1
- package/dist/collection/components/modal/modal.js +1 -1
- package/dist/collection/components/modal/resources.js +1 -1
- package/dist/collection/components/notice/notice.js +1 -1
- package/dist/collection/components/notice/resources.js +1 -1
- package/dist/collection/components/option/option.js +1 -1
- package/dist/collection/components/option-group/option-group.js +1 -1
- package/dist/collection/components/pagination/pagination.js +1 -1
- package/dist/collection/components/pagination/resources.js +1 -1
- package/dist/collection/components/panel/panel.js +1 -1
- package/dist/collection/components/panel/resources.js +1 -1
- package/dist/collection/components/pick-list/pick-list.js +1 -1
- package/dist/collection/components/pick-list/resources.js +1 -1
- package/dist/collection/components/pick-list/shared-list-logic.js +1 -1
- package/dist/collection/components/pick-list/shared-list-render.js +1 -1
- package/dist/collection/components/pick-list-group/pick-list-group.js +1 -1
- package/dist/collection/components/pick-list-group/resources.js +1 -1
- package/dist/collection/components/pick-list-item/pick-list-item.js +1 -1
- package/dist/collection/components/pick-list-item/resources.js +1 -1
- package/dist/collection/components/popover/PopoverManager.js +1 -1
- package/dist/collection/components/popover/popover.js +1 -1
- package/dist/collection/components/popover/resources.js +1 -1
- package/dist/collection/components/progress/progress.js +1 -1
- package/dist/collection/components/radio-button/radio-button.js +1 -1
- package/dist/collection/components/radio-button/resources.js +1 -1
- package/dist/collection/components/radio-button-group/radio-button-group.js +1 -1
- package/dist/collection/components/rating/function/star.js +1 -1
- package/dist/collection/components/rating/rating.js +1 -1
- package/dist/collection/components/resources.js +1 -1
- package/dist/collection/components/scrim/resources.js +1 -1
- package/dist/collection/components/scrim/scrim.js +1 -1
- package/dist/collection/components/segmented-control/segmented-control.js +1 -1
- package/dist/collection/components/segmented-control-item/resources.js +1 -1
- package/dist/collection/components/segmented-control-item/segmented-control-item.js +1 -1
- package/dist/collection/components/select/resources.js +1 -1
- package/dist/collection/components/select/select.js +1 -1
- package/dist/collection/components/shell/resources.js +1 -1
- package/dist/collection/components/shell/shell.js +1 -1
- package/dist/collection/components/shell-center-row/resources.js +1 -1
- package/dist/collection/components/shell-center-row/shell-center-row.js +1 -1
- package/dist/collection/components/shell-panel/resources.js +1 -1
- package/dist/collection/components/shell-panel/shell-panel.js +1 -1
- package/dist/collection/components/slider/resources.js +1 -1
- package/dist/collection/components/slider/slider.js +1 -1
- package/dist/collection/components/sortable-list/resources.js +1 -1
- package/dist/collection/components/sortable-list/sortable-list.js +1 -1
- package/dist/collection/components/split-button/resources.js +1 -1
- package/dist/collection/components/split-button/split-button.js +1 -1
- package/dist/collection/components/stepper/stepper.js +1 -1
- package/dist/collection/components/stepper-item/stepper-item.js +1 -1
- package/dist/collection/components/switch/switch.js +1 -1
- package/dist/collection/components/tab/tab.js +1 -1
- package/dist/collection/components/tab-nav/tab-nav.js +1 -1
- package/dist/collection/components/tab-title/resources.js +1 -1
- package/dist/collection/components/tab-title/tab-title.js +1 -1
- package/dist/collection/components/tabs/resources.js +1 -1
- package/dist/collection/components/tabs/tabs.js +1 -1
- package/dist/collection/components/text-area/resources.js +1 -1
- package/dist/collection/components/text-area/text-area.js +1 -1
- package/dist/collection/components/tile/resources.js +1 -1
- package/dist/collection/components/tile/tile.js +1 -1
- package/dist/collection/components/tile-select/resources.js +1 -1
- package/dist/collection/components/tile-select/tile-select.js +1 -1
- package/dist/collection/components/tile-select-group/tile-select-group.js +1 -1
- package/dist/collection/components/time-picker/resources.js +1 -1
- package/dist/collection/components/time-picker/time-picker.js +1 -1
- package/dist/collection/components/tip/resources.js +1 -1
- package/dist/collection/components/tip/tip.js +1 -1
- package/dist/collection/components/tip-group/tip-group.js +1 -1
- package/dist/collection/components/tip-manager/resources.js +1 -1
- package/dist/collection/components/tip-manager/tip-manager.js +1 -1
- package/dist/collection/components/tooltip/TooltipManager.js +1 -1
- package/dist/collection/components/tooltip/resources.js +1 -1
- package/dist/collection/components/tooltip/tooltip.js +1 -1
- package/dist/collection/components/tooltip/utils.js +1 -1
- package/dist/collection/components/tree/tree.js +1 -1
- package/dist/collection/components/tree/utils.js +1 -1
- package/dist/collection/components/tree-item/resources.js +1 -1
- package/dist/collection/components/tree-item/tree-item.js +1 -1
- package/dist/collection/components/value-list/resources.js +1 -1
- package/dist/collection/components/value-list/utils.js +1 -1
- package/dist/collection/components/value-list/value-list.js +1 -1
- package/dist/collection/components/value-list-item/resources.js +1 -1
- package/dist/collection/components/value-list-item/value-list-item.js +1 -1
- package/dist/collection/index.js +1 -1
- package/dist/collection/utils/array.js +1 -1
- package/dist/collection/utils/conditionalSlot.js +1 -1
- package/dist/collection/utils/config.js +1 -1
- package/dist/collection/utils/date.js +1 -1
- package/dist/collection/utils/dom.js +1 -1
- package/dist/collection/utils/filter.js +1 -1
- package/dist/collection/utils/floating-ui.js +1 -1
- package/dist/collection/utils/focusTrapComponent.js +1 -1
- package/dist/collection/utils/form.js +1 -1
- package/dist/collection/utils/globalAttributes.js +1 -1
- package/dist/collection/utils/globalScript.js +1 -1
- package/dist/collection/utils/guid.js +1 -1
- package/dist/collection/utils/interactive.js +1 -1
- package/dist/collection/utils/key.js +1 -1
- package/dist/collection/utils/label.js +1 -1
- package/dist/collection/utils/loadable.js +1 -1
- package/dist/collection/utils/locale.js +1 -1
- package/dist/collection/utils/math.js +1 -1
- package/dist/collection/utils/mode.js +1 -1
- package/dist/collection/utils/number.js +1 -1
- package/dist/collection/utils/observers.js +1 -1
- package/dist/collection/utils/openCloseComponent.js +1 -1
- package/dist/collection/utils/resources.js +1 -1
- package/dist/collection/utils/t9n.js +1 -1
- package/dist/collection/utils/time.js +1 -1
- package/dist/components/ExpandToggle.js +1 -1
- package/dist/components/FloatingArrow.js +1 -1
- package/dist/components/Heading.js +1 -1
- package/dist/components/action-group.js +1 -1
- package/dist/components/action-menu.js +1 -1
- package/dist/components/action.js +1 -1
- package/dist/components/array.js +1 -1
- package/dist/components/button.js +1 -1
- package/dist/components/calcite-accordion-item.js +1 -1
- package/dist/components/calcite-accordion.js +1 -1
- package/dist/components/calcite-action-bar.js +1 -1
- package/dist/components/calcite-action-group.js +1 -1
- package/dist/components/calcite-action-menu.js +1 -1
- package/dist/components/calcite-action-pad.js +1 -1
- package/dist/components/calcite-action.js +1 -1
- package/dist/components/calcite-alert.js +1 -1
- package/dist/components/calcite-avatar.js +1 -1
- package/dist/components/calcite-block-section.js +1 -1
- package/dist/components/calcite-block.js +1 -1
- package/dist/components/calcite-button.js +1 -1
- package/dist/components/calcite-card.js +1 -1
- package/dist/components/calcite-checkbox.js +1 -1
- package/dist/components/calcite-chip-group.js +1 -1
- package/dist/components/calcite-chip.js +1 -1
- package/dist/components/calcite-color-picker-hex-input.js +2 -2
- package/dist/components/calcite-color-picker-swatch.js +1 -1
- package/dist/components/calcite-color-picker.js +377 -314
- package/dist/components/calcite-combobox-item-group.js +1 -1
- package/dist/components/calcite-combobox-item.js +1 -1
- package/dist/components/calcite-combobox.js +1 -1
- package/dist/components/calcite-date-picker-day.js +1 -1
- package/dist/components/calcite-date-picker-month-header.js +1 -1
- package/dist/components/calcite-date-picker-month.js +1 -1
- package/dist/components/calcite-date-picker.js +1 -1
- package/dist/components/calcite-dropdown-group.js +1 -1
- package/dist/components/calcite-dropdown-item.js +1 -1
- package/dist/components/calcite-dropdown.js +1 -1
- package/dist/components/calcite-fab.js +1 -1
- package/dist/components/calcite-filter.js +1 -1
- package/dist/components/calcite-flow-item.js +1 -1
- package/dist/components/calcite-flow.js +1 -1
- package/dist/components/calcite-graph.js +1 -1
- package/dist/components/calcite-handle.js +1 -1
- package/dist/components/calcite-icon.js +1 -1
- package/dist/components/calcite-inline-editable.js +1 -1
- package/dist/components/calcite-input-date-picker.js +1 -1
- package/dist/components/calcite-input-message.js +1 -1
- package/dist/components/calcite-input-number.js +2 -617
- package/dist/components/calcite-input-text.js +1 -1
- package/dist/components/calcite-input-time-picker.js +1 -1
- package/dist/components/calcite-input.js +1 -1
- package/dist/components/calcite-label.js +1 -1
- package/dist/components/calcite-link.js +1 -1
- package/dist/components/calcite-list-item-group.js +1 -1
- package/dist/components/calcite-list-item.js +1 -1
- package/dist/components/calcite-list.js +40 -30
- package/dist/components/calcite-loader.js +1 -1
- package/dist/components/calcite-modal.js +1 -1
- package/dist/components/calcite-notice.js +1 -1
- package/dist/components/calcite-option-group.js +1 -1
- package/dist/components/calcite-option.js +1 -1
- package/dist/components/calcite-pagination.js +1 -1
- package/dist/components/calcite-panel.js +1 -1
- package/dist/components/calcite-pick-list-group.js +1 -1
- package/dist/components/calcite-pick-list-item.js +1 -1
- package/dist/components/calcite-pick-list.js +1 -1
- package/dist/components/calcite-popover.js +1 -1
- package/dist/components/calcite-progress.js +1 -1
- package/dist/components/calcite-radio-button-group.js +1 -1
- package/dist/components/calcite-radio-button.js +1 -1
- package/dist/components/calcite-rating.js +1 -1
- package/dist/components/calcite-scrim.js +1 -1
- package/dist/components/calcite-segmented-control-item.js +1 -1
- package/dist/components/calcite-segmented-control.js +1 -1
- package/dist/components/calcite-select.js +1 -1
- package/dist/components/calcite-shell-center-row.js +1 -1
- package/dist/components/calcite-shell-panel.js +1 -1
- package/dist/components/calcite-shell.js +1 -1
- package/dist/components/calcite-slider.js +1 -1
- package/dist/components/calcite-sortable-list.js +1 -1
- package/dist/components/calcite-split-button.js +1 -1
- package/dist/components/calcite-stepper-item.js +1 -1
- package/dist/components/calcite-stepper.js +1 -1
- package/dist/components/calcite-switch.js +1 -1
- package/dist/components/calcite-tab-nav.js +1 -1
- package/dist/components/calcite-tab-title.js +1 -1
- package/dist/components/calcite-tab.js +1 -1
- package/dist/components/calcite-tabs.js +1 -1
- package/dist/components/calcite-text-area.js +1 -1
- package/dist/components/calcite-tile-select-group.js +1 -1
- package/dist/components/calcite-tile-select.js +1 -1
- package/dist/components/calcite-tile.js +1 -1
- package/dist/components/calcite-time-picker.js +1 -1
- package/dist/components/calcite-tip-group.js +1 -1
- package/dist/components/calcite-tip-manager.js +1 -1
- package/dist/components/calcite-tip.js +1 -1
- package/dist/components/calcite-tooltip.js +1 -1
- package/dist/components/calcite-tree-item.js +1 -1
- package/dist/components/calcite-tree.js +1 -1
- package/dist/components/calcite-value-list-item.js +1 -1
- package/dist/components/calcite-value-list.js +1 -1
- package/dist/components/checkbox.js +1 -1
- package/dist/components/chip.js +1 -1
- package/dist/components/color-picker-hex-input.js +252 -88
- package/dist/components/color-picker-swatch.js +42 -2118
- package/dist/components/composed-offset-position.esm.js +1 -1
- package/dist/components/conditionalSlot.js +1 -1
- package/dist/components/date-picker-day.js +1 -1
- package/dist/components/date-picker-month-header.js +1 -1
- package/dist/components/date-picker-month.js +1 -1
- package/dist/components/date-picker.js +2 -2
- package/dist/components/date.js +1 -1
- package/dist/components/debounce.js +1 -1
- package/dist/components/dom.js +1 -1
- package/dist/components/dropdown.js +1 -1
- package/dist/components/filter.js +1 -1
- package/dist/components/filter2.js +1 -1
- package/dist/components/floating-ui.js +68 -62
- package/dist/components/focusTrapComponent.js +1 -1
- package/dist/components/form.js +1 -1
- package/dist/components/graph.js +1 -1
- package/dist/components/guid.js +1 -1
- package/dist/components/handle.js +1 -1
- package/dist/components/icon.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/index2.js +2116 -0
- package/dist/components/input-number.js +623 -0
- package/dist/components/input.js +2 -2
- package/dist/components/interactive.js +1 -1
- package/dist/components/key.js +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/label2.js +1 -1
- package/dist/components/link.js +1 -1
- package/dist/components/loadable.js +1 -1
- package/dist/components/loader.js +1 -1
- package/dist/components/locale.js +2 -2
- package/dist/components/math.js +1 -1
- package/dist/components/observers.js +1 -1
- package/dist/components/openCloseComponent.js +1 -1
- package/dist/components/panel.js +1 -1
- package/dist/components/pick-list-item.js +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/progress.js +1 -1
- package/dist/components/resources.js +1 -1
- package/dist/components/resources2.js +1 -1
- package/dist/components/resources3.js +1 -1
- package/dist/components/scrim.js +1 -1
- package/dist/components/shared-list-render.js +1 -1
- package/dist/components/sortable.esm.js +1 -1
- package/dist/components/switch.js +1 -1
- package/dist/components/t9n.js +1 -1
- package/dist/components/tab-nav.js +1 -1
- package/dist/components/tab-title.js +1 -1
- package/dist/components/tab.js +1 -1
- package/dist/components/tabs.js +1 -1
- package/dist/components/throttle.js +1 -1
- package/dist/components/tile.js +1 -1
- package/dist/components/time-picker.js +2 -2
- package/dist/components/tooltip.js +1 -1
- package/dist/components/utils.js +112 -31
- package/dist/components/utils2.js +1 -1
- package/dist/components/utils3.js +1 -1
- package/dist/esm/{ExpandToggle-095e2f69.js → ExpandToggle-84cd3334.js} +5 -5
- package/dist/esm/{FloatingArrow-4e190499.js → FloatingArrow-2a728102.js} +2 -2
- package/dist/esm/{Heading-08826e02.js → Heading-aa5e7f03.js} +2 -2
- package/dist/esm/{app-globals-a86875ad.js → app-globals-9a63f836.js} +2 -2
- package/dist/esm/{array-937e8e63.js → array-cba42ef7.js} +1 -1
- package/dist/esm/calcite-accordion_2.entry.js +7 -7
- package/dist/esm/calcite-action-bar.entry.js +15 -15
- package/dist/esm/calcite-action-group.entry.js +13 -13
- package/dist/esm/calcite-action-menu.entry.js +9 -9
- package/dist/esm/calcite-action-pad.entry.js +14 -14
- package/dist/esm/calcite-action.entry.js +11 -11
- package/dist/esm/calcite-alert.entry.js +12 -12
- package/dist/esm/calcite-avatar.entry.js +6 -6
- package/dist/esm/calcite-block_2.entry.js +12 -12
- package/dist/esm/calcite-button.entry.js +13 -13
- package/dist/esm/calcite-card.entry.js +10 -10
- package/dist/esm/calcite-checkbox.entry.js +10 -10
- package/dist/esm/calcite-chip-group.entry.js +8 -8
- package/dist/esm/calcite-chip.entry.js +12 -12
- package/dist/esm/calcite-color-picker_3.entry.js +585 -339
- package/dist/esm/calcite-combobox_3.entry.js +18 -18
- package/dist/esm/calcite-date-picker_4.entry.js +13 -13
- package/dist/esm/calcite-dropdown_3.entry.js +12 -12
- package/dist/esm/calcite-fab.entry.js +7 -7
- package/dist/esm/calcite-filter.entry.js +13 -13
- package/dist/esm/calcite-flow-item.entry.js +12 -12
- package/dist/esm/calcite-flow.entry.js +3 -3
- package/dist/esm/calcite-graph_2.entry.js +13 -13
- package/dist/esm/calcite-handle.entry.js +10 -10
- package/dist/esm/calcite-icon.entry.js +6 -6
- package/dist/esm/calcite-inline-editable.entry.js +12 -12
- package/dist/esm/calcite-input-date-picker.entry.js +18 -18
- package/dist/esm/calcite-input-message.entry.js +5 -5
- package/dist/esm/calcite-input-number.entry.js +13 -13
- package/dist/esm/calcite-input-text.entry.js +13 -13
- package/dist/esm/calcite-input-time-picker_2.entry.js +14 -14
- package/dist/esm/calcite-input.entry.js +13 -13
- package/dist/esm/calcite-label.entry.js +6 -6
- package/dist/esm/calcite-link.entry.js +7 -7
- package/dist/esm/calcite-list_3.entry.js +50 -40
- package/dist/esm/calcite-loader.entry.js +3 -3
- package/dist/esm/calcite-modal.entry.js +13 -13
- package/dist/esm/calcite-notice.entry.js +12 -12
- package/dist/esm/calcite-option_3.entry.js +10 -10
- package/dist/esm/calcite-pagination.entry.js +10 -10
- package/dist/esm/calcite-panel.entry.js +14 -14
- package/dist/esm/calcite-pick-list_3.entry.js +16 -16
- package/dist/esm/calcite-popover.entry.js +16 -16
- package/dist/esm/calcite-progress.entry.js +2 -2
- package/dist/esm/calcite-radio-button-group.entry.js +3 -3
- package/dist/esm/calcite-radio-button.entry.js +10 -10
- package/dist/esm/calcite-rating.entry.js +13 -13
- package/dist/esm/calcite-scrim.entry.js +9 -9
- package/dist/esm/calcite-segmented-control_2.entry.js +9 -9
- package/dist/esm/calcite-shell_3.entry.js +11 -11
- package/dist/esm/calcite-sortable-list.entry.js +5 -5
- package/dist/esm/calcite-split-button.entry.js +4 -4
- package/dist/esm/calcite-stepper_2.entry.js +10 -10
- package/dist/esm/calcite-switch.entry.js +10 -10
- package/dist/esm/calcite-tab_4.entry.js +7 -7
- package/dist/esm/calcite-text-area.entry.js +15 -15
- package/dist/esm/calcite-tile-select_2.entry.js +5 -5
- package/dist/esm/calcite-tile.entry.js +8 -8
- package/dist/esm/calcite-tip_3.entry.js +11 -11
- package/dist/esm/calcite-tooltip.entry.js +9 -9
- package/dist/esm/calcite-tree_2.entry.js +9 -9
- package/dist/esm/calcite-value-list_2.entry.js +16 -16
- package/dist/esm/calcite.js +6 -6
- package/dist/esm/{composed-offset-position.esm-fb83e249.js → composed-offset-position.esm-2c2ff148.js} +1 -1
- package/dist/esm/{conditionalSlot-98fcfe31.js → conditionalSlot-734f45e3.js} +3 -3
- package/dist/esm/{debounce-911eef82.js → debounce-13053af0.js} +1 -1
- package/dist/esm/{dom-2b55c6b1.js → dom-3643d47b.js} +3 -3
- package/dist/esm/{filter-6a2a0d23.js → filter-c124b3a7.js} +2 -2
- package/dist/esm/{floating-ui-1f96fa4e.js → floating-ui-dde330fd.js} +71 -65
- package/dist/esm/{focusTrapComponent-9f5c20f0.js → focusTrapComponent-be382f0c.js} +2 -2
- package/dist/esm/{form-ef433149.js → form-9b4d08d5.js} +3 -3
- package/dist/esm/{guid-08c9d9d2.js → guid-00c961cf.js} +1 -1
- package/dist/esm/{index-34f68bbe.js → index-de813188.js} +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/{interactive-a2eb6b56.js → interactive-7577fa95.js} +1 -1
- package/dist/esm/{key-a12e3d36.js → key-204f54dc.js} +1 -1
- package/dist/esm/{label-e5638056.js → label-aa3ca023.js} +2 -2
- package/dist/esm/{loadable-7ddbc3f7.js → loadable-295e7059.js} +1 -1
- package/dist/esm/loader.js +6 -6
- package/dist/esm/{locale-cdbef5ac.js → locale-cf07a13b.js} +4 -4
- package/dist/esm/{math-2b6a45bc.js → math-81cb18a5.js} +1 -1
- package/dist/esm/{observers-58b3356b.js → observers-e24920a0.js} +1 -1
- package/dist/esm/{openCloseComponent-6350a6b9.js → openCloseComponent-d6957380.js} +2 -2
- package/dist/esm/{resources-f97f2e3d.js → resources-20a9105d.js} +1 -1
- package/dist/esm/{resources-95e5c0bc.js → resources-510afe06.js} +1 -1
- package/dist/esm/{resources-52988112.js → resources-b814eba0.js} +5 -5
- package/dist/esm/{resources-87498192.js → resources-b81c1240.js} +1 -1
- package/dist/esm/{resources-66bba32b.js → resources-d27d888f.js} +1 -1
- package/dist/esm/{resources-509df361.js → resources-f496ba11.js} +1 -1
- package/dist/esm/{sortable.esm-69990d9c.js → sortable.esm-8c3ec43a.js} +1 -1
- package/dist/esm/{t9n-c5155b27.js → t9n-62bf4e90.js} +3 -3
- package/dist/esm/{throttle-161e1712.js → throttle-ab3e5fce.js} +2 -2
- package/dist/esm/utils-119581ee.js +195 -0
- package/dist/esm/{utils-4c71f289.js → utils-1692b158.js} +3 -3
- package/dist/extras/docs-json.json +156 -30
- package/dist/extras/vscode-data.json +22 -2
- package/dist/loader/cdn.js +1 -1
- package/dist/loader/index.cjs.js +1 -1
- package/dist/loader/index.es2017.js +1 -1
- package/dist/loader/index.js +1 -1
- package/dist/types/components/color-picker/color-picker.d.ts +54 -23
- package/dist/types/components/color-picker/interfaces.d.ts +1 -0
- package/dist/types/components/color-picker/resources.d.ts +28 -18
- package/dist/types/components/color-picker/utils.d.ts +16 -7
- package/dist/types/components/color-picker-hex-input/color-picker-hex-input.d.ts +33 -16
- package/dist/types/components/color-picker-hex-input/resources.d.ts +2 -2
- package/dist/types/components/color-picker-swatch/color-picker-swatch.d.ts +3 -2
- package/dist/types/components/color-picker-swatch/resources.d.ts +6 -1
- package/dist/types/components/list/list.d.ts +7 -2
- package/dist/types/components/list/resources.d.ts +1 -1
- package/dist/types/components.d.ts +62 -6
- package/dist/types/preact.d.ts +2 -1
- package/hydrate/index.js +796 -447
- package/package.json +4 -5
- package/dist/calcite/p-2927ff1d.js +0 -6
- package/dist/calcite/p-3623550f.entry.js +0 -6
- package/dist/calcite/p-5782f6ba.js +0 -6
- package/dist/calcite/p-5e1869b5.js +0 -6
- package/dist/calcite/p-663a4c37.js +0 -6
- package/dist/calcite/p-8b7561ca.js +0 -6
- package/dist/calcite/p-95860b15.entry.js +0 -6
- package/dist/calcite/p-b0a41644.js +0 -6
- package/dist/calcite/p-b1dcf567.js +0 -6
- package/dist/calcite/p-b73ede81.entry.js +0 -6
- package/dist/calcite/p-c107f270.entry.js +0 -6
- package/dist/calcite/p-f8d77f71.entry.js +0 -6
- package/dist/cjs/utils-78b4120a.js +0 -124
- package/dist/esm/utils-ab93be5f.js +0 -114
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* All material copyright ESRI, All Rights Reserved, unless otherwise specified.
|
|
3
3
|
* See https://github.com/Esri/calcite-components/blob/master/LICENSE.md for details.
|
|
4
|
-
* v1.4.0-next.
|
|
4
|
+
* v1.4.0-next.6
|
|
5
5
|
*/
|
|
6
6
|
import { h } from "@stencil/core";
|
|
7
7
|
import Color from "color";
|
|
8
8
|
import { throttle } from "lodash-es";
|
|
9
9
|
import { getElementDir, isPrimaryPointerButton } from "../../utils/dom";
|
|
10
|
-
import { CSS, DEFAULT_COLOR, DEFAULT_STORAGE_KEY_PREFIX, DIMENSIONS, HSV_LIMITS, RGB_LIMITS } from "./resources";
|
|
11
|
-
import { colorEqual, CSSColorMode, normalizeHex, parseMode } from "./utils";
|
|
10
|
+
import { CSS, DEFAULT_COLOR, DEFAULT_STORAGE_KEY_PREFIX, DIMENSIONS, HSV_LIMITS, OPACITY_LIMITS, RGB_LIMITS } from "./resources";
|
|
11
|
+
import { alphaCompatible, alphaToOpacity, colorEqual, CSSColorMode, hexify, normalizeAlpha, normalizeColor, normalizeHex, opacityToAlpha, parseMode, toAlphaMode, toNonAlphaMode } from "./utils";
|
|
12
12
|
import { updateHostInteraction } from "../../utils/interactive";
|
|
13
13
|
import { isActivationKey } from "../../utils/key";
|
|
14
14
|
import { componentLoaded, setComponentLoaded, setUpLoadableComponent } from "../../utils/loadable";
|
|
@@ -16,16 +16,11 @@ import { connectLocalized, disconnectLocalized } from "../../utils/locale";
|
|
|
16
16
|
import { clamp } from "../../utils/math";
|
|
17
17
|
import { connectMessages, disconnectMessages, setUpMessages, updateMessages } from "../../utils/t9n";
|
|
18
18
|
const throttleFor60FpsInMs = 16;
|
|
19
|
-
const defaultValue = normalizeHex(DEFAULT_COLOR.hex());
|
|
20
|
-
const defaultFormat = "auto";
|
|
21
19
|
export class ColorPicker {
|
|
22
20
|
constructor() {
|
|
23
|
-
this.colorFieldAndSliderHovered = false;
|
|
24
|
-
this.hueThumbState = "idle";
|
|
25
21
|
this.internalColorUpdateContext = null;
|
|
26
22
|
this.mode = CSSColorMode.HEX;
|
|
27
23
|
this.shiftKeyChannelAdjustment = 0;
|
|
28
|
-
this.sliderThumbState = "idle";
|
|
29
24
|
this.handleTabActivate = (event) => {
|
|
30
25
|
this.channelMode = event.currentTarget.getAttribute("data-color-mode");
|
|
31
26
|
this.updateChannelsFromColor(this.color);
|
|
@@ -70,7 +65,7 @@ export class ColorPicker {
|
|
|
70
65
|
this.internalColorSet(null);
|
|
71
66
|
return;
|
|
72
67
|
}
|
|
73
|
-
const normalizedHex = color && normalizeHex(color.
|
|
68
|
+
const normalizedHex = color && normalizeHex(hexify(color, alphaCompatible(this.mode)));
|
|
74
69
|
if (hex !== normalizedHex) {
|
|
75
70
|
this.internalColorSet(Color(hex));
|
|
76
71
|
}
|
|
@@ -82,16 +77,20 @@ export class ColorPicker {
|
|
|
82
77
|
this.handleChannelInput = (event) => {
|
|
83
78
|
const input = event.currentTarget;
|
|
84
79
|
const channelIndex = Number(input.getAttribute("data-channel-index"));
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
80
|
+
const isAlphaChannel = channelIndex === 3;
|
|
81
|
+
const limit = isAlphaChannel
|
|
82
|
+
? OPACITY_LIMITS.max
|
|
83
|
+
: this.channelMode === "rgb"
|
|
84
|
+
? RGB_LIMITS[Object.keys(RGB_LIMITS)[channelIndex]]
|
|
85
|
+
: HSV_LIMITS[Object.keys(HSV_LIMITS)[channelIndex]];
|
|
88
86
|
let inputValue;
|
|
89
87
|
if (this.allowEmpty && !input.value) {
|
|
90
88
|
inputValue = "";
|
|
91
89
|
}
|
|
92
90
|
else {
|
|
93
|
-
const value = Number(input.value)
|
|
94
|
-
const
|
|
91
|
+
const value = Number(input.value);
|
|
92
|
+
const adjustedValue = value + this.shiftKeyChannelAdjustment;
|
|
93
|
+
const clamped = clamp(adjustedValue, 0, limit);
|
|
95
94
|
inputValue = clamped.toString();
|
|
96
95
|
}
|
|
97
96
|
input.value = inputValue;
|
|
@@ -105,11 +104,13 @@ export class ColorPicker {
|
|
|
105
104
|
const channels = [...this.channels];
|
|
106
105
|
const shouldClearChannels = this.allowEmpty && !input.value;
|
|
107
106
|
if (shouldClearChannels) {
|
|
108
|
-
this.channels = [null, null, null];
|
|
107
|
+
this.channels = [null, null, null, null];
|
|
109
108
|
this.internalColorSet(null);
|
|
110
109
|
return;
|
|
111
110
|
}
|
|
112
|
-
|
|
111
|
+
const isAlphaChannel = channelIndex === 3;
|
|
112
|
+
const value = Number(input.value);
|
|
113
|
+
channels[channelIndex] = isAlphaChannel ? opacityToAlpha(value) : value;
|
|
113
114
|
this.updateColorFromChannels(channels);
|
|
114
115
|
};
|
|
115
116
|
this.handleSavedColorKeyDown = (event) => {
|
|
@@ -118,144 +119,101 @@ export class ColorPicker {
|
|
|
118
119
|
this.handleSavedColorSelect(event);
|
|
119
120
|
}
|
|
120
121
|
};
|
|
121
|
-
this.
|
|
122
|
-
this.colorFieldAndSliderInteractive = false;
|
|
123
|
-
this.colorFieldAndSliderHovered = false;
|
|
124
|
-
if (this.sliderThumbState !== "drag" && this.hueThumbState !== "drag") {
|
|
125
|
-
this.hueThumbState = "idle";
|
|
126
|
-
this.sliderThumbState = "idle";
|
|
127
|
-
this.drawColorFieldAndSlider();
|
|
128
|
-
}
|
|
129
|
-
};
|
|
130
|
-
this.handleColorFieldAndSliderPointerDown = (event) => {
|
|
122
|
+
this.handleColorFieldPointerDown = (event) => {
|
|
131
123
|
if (!isPrimaryPointerButton(event)) {
|
|
132
124
|
return;
|
|
133
125
|
}
|
|
134
126
|
const { offsetX, offsetY } = event;
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
this.
|
|
139
|
-
this.
|
|
127
|
+
document.addEventListener("pointermove", this.globalPointerMoveHandler);
|
|
128
|
+
document.addEventListener("pointerup", this.globalPointerUpHandler, { once: true });
|
|
129
|
+
this.activeCanvasInfo = {
|
|
130
|
+
context: this.colorFieldRenderingContext,
|
|
131
|
+
bounds: this.colorFieldRenderingContext.canvas.getBoundingClientRect()
|
|
132
|
+
};
|
|
133
|
+
this.captureColorFieldColor(offsetX, offsetY);
|
|
134
|
+
this.colorFieldScopeNode.focus();
|
|
135
|
+
};
|
|
136
|
+
this.handleHueSliderPointerDown = (event) => {
|
|
137
|
+
if (!isPrimaryPointerButton(event)) {
|
|
138
|
+
return;
|
|
140
139
|
}
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
140
|
+
const { offsetX } = event;
|
|
141
|
+
document.addEventListener("pointermove", this.globalPointerMoveHandler);
|
|
142
|
+
document.addEventListener("pointerup", this.globalPointerUpHandler, { once: true });
|
|
143
|
+
this.activeCanvasInfo = {
|
|
144
|
+
context: this.hueSliderRenderingContext,
|
|
145
|
+
bounds: this.hueSliderRenderingContext.canvas.getBoundingClientRect()
|
|
146
|
+
};
|
|
147
|
+
this.captureHueSliderColor(offsetX);
|
|
148
|
+
this.hueScopeNode.focus();
|
|
149
|
+
};
|
|
150
|
+
this.handleOpacitySliderPointerDown = (event) => {
|
|
151
|
+
if (!isPrimaryPointerButton(event)) {
|
|
152
|
+
return;
|
|
145
153
|
}
|
|
154
|
+
const { offsetX } = event;
|
|
146
155
|
document.addEventListener("pointermove", this.globalPointerMoveHandler);
|
|
147
156
|
document.addEventListener("pointerup", this.globalPointerUpHandler, { once: true });
|
|
148
|
-
this.
|
|
149
|
-
this.
|
|
157
|
+
this.activeCanvasInfo = {
|
|
158
|
+
context: this.opacitySliderRenderingContext,
|
|
159
|
+
bounds: this.opacitySliderRenderingContext.canvas.getBoundingClientRect()
|
|
160
|
+
};
|
|
161
|
+
this.captureOpacitySliderValue(offsetX);
|
|
162
|
+
this.opacityScopeNode.focus();
|
|
150
163
|
};
|
|
151
164
|
this.globalPointerUpHandler = (event) => {
|
|
152
165
|
if (!isPrimaryPointerButton(event)) {
|
|
153
166
|
return;
|
|
154
167
|
}
|
|
155
|
-
const previouslyDragging = this.
|
|
156
|
-
this.
|
|
157
|
-
this.
|
|
158
|
-
this.activeColorFieldAndSliderRect = null;
|
|
159
|
-
this.drawColorFieldAndSlider();
|
|
168
|
+
const previouslyDragging = this.activeCanvasInfo;
|
|
169
|
+
this.activeCanvasInfo = null;
|
|
170
|
+
this.drawColorControls();
|
|
160
171
|
if (previouslyDragging) {
|
|
161
172
|
this.calciteColorPickerChange.emit();
|
|
162
173
|
}
|
|
163
174
|
};
|
|
164
175
|
this.globalPointerMoveHandler = (event) => {
|
|
165
|
-
const {
|
|
166
|
-
|
|
167
|
-
const hueThumbDragging = this.hueThumbState === "drag";
|
|
168
|
-
if (!el.isConnected || (!sliderThumbDragging && !hueThumbDragging)) {
|
|
176
|
+
const { activeCanvasInfo, el } = this;
|
|
177
|
+
if (!el.isConnected || !activeCanvasInfo) {
|
|
169
178
|
return;
|
|
170
179
|
}
|
|
180
|
+
const { context, bounds } = activeCanvasInfo;
|
|
171
181
|
let samplingX;
|
|
172
182
|
let samplingY;
|
|
173
|
-
const colorFieldAndSliderRect = this.activeColorFieldAndSliderRect;
|
|
174
183
|
const { clientX, clientY } = event;
|
|
175
|
-
if (
|
|
176
|
-
samplingX = clientX -
|
|
177
|
-
samplingY = clientY -
|
|
184
|
+
if (context.canvas.matches(":hover")) {
|
|
185
|
+
samplingX = clientX - bounds.x;
|
|
186
|
+
samplingY = clientY - bounds.y;
|
|
178
187
|
}
|
|
179
188
|
else {
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
if (clientX < colorFieldAndSliderRect.x + colorFieldWidth &&
|
|
184
|
-
clientX > colorFieldAndSliderRect.x) {
|
|
185
|
-
samplingX = clientX - colorFieldAndSliderRect.x;
|
|
189
|
+
// snap x and y to the closest edge
|
|
190
|
+
if (clientX < bounds.x + bounds.width && clientX > bounds.x) {
|
|
191
|
+
samplingX = clientX - bounds.x;
|
|
186
192
|
}
|
|
187
|
-
else if (clientX <
|
|
193
|
+
else if (clientX < bounds.x) {
|
|
188
194
|
samplingX = 0;
|
|
189
195
|
}
|
|
190
196
|
else {
|
|
191
|
-
samplingX =
|
|
197
|
+
samplingX = bounds.width;
|
|
192
198
|
}
|
|
193
|
-
if (clientY <
|
|
194
|
-
clientY
|
|
195
|
-
samplingY = clientY - colorFieldAndSliderRect.y;
|
|
199
|
+
if (clientY < bounds.y + bounds.height && clientY > bounds.y) {
|
|
200
|
+
samplingY = clientY - bounds.y;
|
|
196
201
|
}
|
|
197
|
-
else if (clientY <
|
|
202
|
+
else if (clientY < bounds.y) {
|
|
198
203
|
samplingY = 0;
|
|
199
204
|
}
|
|
200
205
|
else {
|
|
201
|
-
samplingY =
|
|
206
|
+
samplingY = bounds.height;
|
|
202
207
|
}
|
|
203
208
|
}
|
|
204
|
-
if (
|
|
209
|
+
if (context === this.colorFieldRenderingContext) {
|
|
205
210
|
this.captureColorFieldColor(samplingX, samplingY, false);
|
|
206
211
|
}
|
|
207
|
-
else {
|
|
212
|
+
else if (context === this.hueSliderRenderingContext) {
|
|
208
213
|
this.captureHueSliderColor(samplingX);
|
|
209
214
|
}
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
const { dimensions: { colorField, slider, thumb } } = this;
|
|
213
|
-
this.colorFieldAndSliderInteractive = offsetY <= colorField.height + slider.height;
|
|
214
|
-
this.colorFieldAndSliderHovered = true;
|
|
215
|
-
const region = this.getCanvasRegion(offsetY);
|
|
216
|
-
if (region === "color-field") {
|
|
217
|
-
const prevHueThumbState = this.hueThumbState;
|
|
218
|
-
const color = this.baseColorFieldColor.hsv();
|
|
219
|
-
const centerX = Math.round(color.saturationv() / (HSV_LIMITS.s / colorField.width));
|
|
220
|
-
const centerY = Math.round(colorField.height - color.value() / (HSV_LIMITS.v / colorField.height));
|
|
221
|
-
const hoveringThumb = this.containsPoint(offsetX, offsetY, centerX, centerY, thumb.radius);
|
|
222
|
-
let transitionedBetweenHoverAndIdle = false;
|
|
223
|
-
if (prevHueThumbState === "idle" && hoveringThumb) {
|
|
224
|
-
this.hueThumbState = "hover";
|
|
225
|
-
transitionedBetweenHoverAndIdle = true;
|
|
226
|
-
}
|
|
227
|
-
else if (prevHueThumbState === "hover" && !hoveringThumb) {
|
|
228
|
-
this.hueThumbState = "idle";
|
|
229
|
-
transitionedBetweenHoverAndIdle = true;
|
|
230
|
-
}
|
|
231
|
-
if (this.hueThumbState !== "drag") {
|
|
232
|
-
if (transitionedBetweenHoverAndIdle) {
|
|
233
|
-
// refresh since we won't update color and thus no redraw
|
|
234
|
-
this.drawColorFieldAndSlider();
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
else if (region === "slider") {
|
|
239
|
-
const sliderThumbColor = this.baseColorFieldColor.hsv().saturationv(100).value(100);
|
|
240
|
-
const prevSliderThumbState = this.sliderThumbState;
|
|
241
|
-
const sliderThumbCenterX = Math.round(sliderThumbColor.hue() / (360 / slider.width));
|
|
242
|
-
const sliderThumbCenterY = Math.round((slider.height + this.getSliderCapSpacing()) / 2) + colorField.height;
|
|
243
|
-
const hoveringSliderThumb = this.containsPoint(offsetX, offsetY, sliderThumbCenterX, sliderThumbCenterY, thumb.radius);
|
|
244
|
-
let sliderThumbTransitionedBetweenHoverAndIdle = false;
|
|
245
|
-
if (prevSliderThumbState === "idle" && hoveringSliderThumb) {
|
|
246
|
-
this.sliderThumbState = "hover";
|
|
247
|
-
sliderThumbTransitionedBetweenHoverAndIdle = true;
|
|
248
|
-
}
|
|
249
|
-
else if (prevSliderThumbState === "hover" && !hoveringSliderThumb) {
|
|
250
|
-
this.sliderThumbState = "idle";
|
|
251
|
-
sliderThumbTransitionedBetweenHoverAndIdle = true;
|
|
252
|
-
}
|
|
253
|
-
if (this.sliderThumbState !== "drag") {
|
|
254
|
-
if (sliderThumbTransitionedBetweenHoverAndIdle) {
|
|
255
|
-
// refresh since we won't update color and thus no redraw
|
|
256
|
-
this.drawColorFieldAndSlider();
|
|
257
|
-
}
|
|
258
|
-
}
|
|
215
|
+
else if (context === this.opacitySliderRenderingContext) {
|
|
216
|
+
this.captureOpacitySliderValue(samplingX);
|
|
259
217
|
}
|
|
260
218
|
};
|
|
261
219
|
this.storeColorFieldScope = (node) => {
|
|
@@ -271,23 +229,35 @@ export class ColorPicker {
|
|
|
271
229
|
return (h("calcite-tab-title", { class: CSS.colorMode, "data-color-mode": channelMode, key: channelMode, onCalciteTabsActivate: this.handleTabActivate, selected: selected }, label));
|
|
272
230
|
};
|
|
273
231
|
this.renderChannelsTab = (channelMode) => {
|
|
274
|
-
const { channelMode: activeChannelMode, channels, messages } = this;
|
|
232
|
+
const { allowEmpty, channelMode: activeChannelMode, channels, messages, alphaChannel } = this;
|
|
275
233
|
const selected = channelMode === activeChannelMode;
|
|
276
234
|
const isRgb = channelMode === "rgb";
|
|
277
|
-
const channelLabels = isRgb
|
|
278
|
-
? [messages.r, messages.g, messages.b]
|
|
279
|
-
: [messages.h, messages.s, messages.v];
|
|
280
235
|
const channelAriaLabels = isRgb
|
|
281
236
|
? [messages.red, messages.green, messages.blue]
|
|
282
237
|
: [messages.hue, messages.saturation, messages.value];
|
|
283
238
|
const direction = getElementDir(this.el);
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
239
|
+
const channelsToRender = alphaChannel ? channels : channels.slice(0, 3);
|
|
240
|
+
return (h("calcite-tab", { class: CSS.control, key: channelMode, selected: selected }, h("div", { class: CSS.channels, dir: "ltr" }, channelsToRender.map((channelValue, index) => {
|
|
241
|
+
const isAlphaChannel = index === 3;
|
|
242
|
+
if (isAlphaChannel) {
|
|
243
|
+
channelValue =
|
|
244
|
+
allowEmpty && !channelValue ? channelValue : alphaToOpacity(channelValue);
|
|
245
|
+
}
|
|
246
|
+
/* the channel container is ltr, so we apply the host's direction */
|
|
247
|
+
return this.renderChannel(channelValue, index, channelAriaLabels[index], direction, isAlphaChannel ? "%" : "");
|
|
248
|
+
}))));
|
|
249
|
+
};
|
|
250
|
+
this.renderChannel = (value, index, ariaLabel, direction, suffix) => {
|
|
251
|
+
return (h("calcite-input", { class: CSS.channel, "data-channel-index": index, dir: direction, key: index, label: ariaLabel, lang: this.effectiveLocale, numberButtonType: "none", numberingSystem: this.numberingSystem, onCalciteInputChange: this.handleChannelChange, onCalciteInputInput: this.handleChannelInput, onKeyDown: this.handleKeyDown, scale: this.scale === "l" ? "m" : "s",
|
|
252
|
+
// workaround to ensure input borders overlap as desired
|
|
253
|
+
// this is because the build transforms margin-left to its
|
|
254
|
+
// logical-prop, which is undesired as channels are always ltr
|
|
255
|
+
style: {
|
|
256
|
+
marginLeft: index > 0 && !(this.scale === "s" && this.alphaChannel && index === 3) ? "-1px" : ""
|
|
257
|
+
}, suffixText: suffix, type: "number", value: value?.toString() }));
|
|
287
258
|
};
|
|
288
|
-
this.renderChannel = (value, index, label, ariaLabel, direction) => (h("calcite-input", { class: CSS.channel, "data-channel-index": index, dir: direction, label: ariaLabel, lang: this.effectiveLocale, numberButtonType: "none", numberingSystem: this.numberingSystem, onCalciteInputChange: this.handleChannelChange, onCalciteInputInput: this.handleChannelInput, onKeyDown: this.handleKeyDown, prefixText: label, scale: this.scale === "l" ? "m" : "s", type: "number", value: value?.toString() }));
|
|
289
259
|
this.deleteColor = () => {
|
|
290
|
-
const colorToDelete = this.color.
|
|
260
|
+
const colorToDelete = hexify(this.color, this.alphaChannel);
|
|
291
261
|
const inStorage = this.savedColors.indexOf(colorToDelete) > -1;
|
|
292
262
|
if (!inStorage) {
|
|
293
263
|
return;
|
|
@@ -300,7 +270,7 @@ export class ColorPicker {
|
|
|
300
270
|
}
|
|
301
271
|
};
|
|
302
272
|
this.saveColor = () => {
|
|
303
|
-
const colorToSave = this.color.
|
|
273
|
+
const colorToSave = hexify(this.color, this.alphaChannel);
|
|
304
274
|
const alreadySaved = this.savedColors.indexOf(colorToSave) > -1;
|
|
305
275
|
if (alreadySaved) {
|
|
306
276
|
return;
|
|
@@ -312,12 +282,18 @@ export class ColorPicker {
|
|
|
312
282
|
localStorage.setItem(storageKey, JSON.stringify(savedColors));
|
|
313
283
|
}
|
|
314
284
|
};
|
|
315
|
-
this.
|
|
316
|
-
if (
|
|
317
|
-
|
|
285
|
+
this.drawColorControls = throttle((type = "all") => {
|
|
286
|
+
if ((type === "all" || type === "color-field") && this.colorFieldRenderingContext) {
|
|
287
|
+
this.drawColorField();
|
|
288
|
+
}
|
|
289
|
+
if ((type === "all" || type === "hue-slider") && this.hueSliderRenderingContext) {
|
|
290
|
+
this.drawHueSlider();
|
|
291
|
+
}
|
|
292
|
+
if (this.alphaChannel &&
|
|
293
|
+
(type === "all" || type === "opacity-slider") &&
|
|
294
|
+
this.opacitySliderRenderingContext) {
|
|
295
|
+
this.drawOpacitySlider();
|
|
318
296
|
}
|
|
319
|
-
this.drawColorField();
|
|
320
|
-
this.drawHueSlider();
|
|
321
297
|
}, throttleFor60FpsInMs);
|
|
322
298
|
this.captureColorFieldColor = (x, y, skipEqual = true) => {
|
|
323
299
|
const { dimensions: { colorField: { height, width } } } = this;
|
|
@@ -325,24 +301,56 @@ export class ColorPicker {
|
|
|
325
301
|
const value = Math.round((HSV_LIMITS.v / height) * (height - y));
|
|
326
302
|
this.internalColorSet(this.baseColorFieldColor.hsv().saturationv(saturation).value(value), skipEqual);
|
|
327
303
|
};
|
|
328
|
-
this.
|
|
329
|
-
this.
|
|
330
|
-
this.updateCanvasSize(
|
|
304
|
+
this.initColorField = (canvas) => {
|
|
305
|
+
this.colorFieldRenderingContext = canvas.getContext("2d");
|
|
306
|
+
this.updateCanvasSize("color-field");
|
|
307
|
+
this.drawColorControls();
|
|
308
|
+
};
|
|
309
|
+
this.initHueSlider = (canvas) => {
|
|
310
|
+
this.hueSliderRenderingContext = canvas.getContext("2d");
|
|
311
|
+
this.updateCanvasSize("hue-slider");
|
|
312
|
+
this.drawHueSlider();
|
|
313
|
+
};
|
|
314
|
+
this.initOpacitySlider = (canvas) => {
|
|
315
|
+
this.opacitySliderRenderingContext = canvas.getContext("2d");
|
|
316
|
+
this.updateCanvasSize("opacity-slider");
|
|
317
|
+
this.drawOpacitySlider();
|
|
318
|
+
};
|
|
319
|
+
this.storeOpacityScope = (node) => {
|
|
320
|
+
this.opacityScopeNode = node;
|
|
321
|
+
};
|
|
322
|
+
this.handleOpacityScopeKeyDown = (event) => {
|
|
323
|
+
const modifier = event.shiftKey ? 10 : 1;
|
|
324
|
+
const { key } = event;
|
|
325
|
+
const arrowKeyToXOffset = {
|
|
326
|
+
ArrowUp: 1,
|
|
327
|
+
ArrowRight: 1,
|
|
328
|
+
ArrowDown: -1,
|
|
329
|
+
ArrowLeft: -1
|
|
330
|
+
};
|
|
331
|
+
if (arrowKeyToXOffset[key]) {
|
|
332
|
+
event.preventDefault();
|
|
333
|
+
const delta = opacityToAlpha(arrowKeyToXOffset[key] * modifier);
|
|
334
|
+
this.captureHueSliderColor(this.opacityScopeLeft + delta);
|
|
335
|
+
}
|
|
331
336
|
};
|
|
332
337
|
this.allowEmpty = false;
|
|
338
|
+
this.alphaChannel = false;
|
|
339
|
+
this.channelsDisabled = false;
|
|
333
340
|
this.color = DEFAULT_COLOR;
|
|
334
341
|
this.disabled = false;
|
|
335
|
-
this.format =
|
|
336
|
-
this.hideHex = false;
|
|
342
|
+
this.format = "auto";
|
|
337
343
|
this.hideChannels = false;
|
|
344
|
+
this.hexDisabled = false;
|
|
345
|
+
this.hideHex = false;
|
|
338
346
|
this.hideSaved = false;
|
|
347
|
+
this.savedDisabled = false;
|
|
339
348
|
this.scale = "m";
|
|
340
349
|
this.storageId = undefined;
|
|
341
350
|
this.messageOverrides = undefined;
|
|
342
351
|
this.numberingSystem = undefined;
|
|
343
|
-
this.value =
|
|
352
|
+
this.value = normalizeHex(hexify(DEFAULT_COLOR, this.alphaChannel));
|
|
344
353
|
this.defaultMessages = undefined;
|
|
345
|
-
this.colorFieldAndSliderInteractive = false;
|
|
346
354
|
this.channelMode = "rgb";
|
|
347
355
|
this.channels = this.toChannels(DEFAULT_COLOR);
|
|
348
356
|
this.dimensions = DIMENSIONS.m;
|
|
@@ -351,12 +359,19 @@ export class ColorPicker {
|
|
|
351
359
|
this.savedColors = [];
|
|
352
360
|
this.colorFieldScopeTop = undefined;
|
|
353
361
|
this.colorFieldScopeLeft = undefined;
|
|
354
|
-
this.scopeOrientation = undefined;
|
|
355
362
|
this.hueScopeLeft = undefined;
|
|
356
|
-
this.
|
|
363
|
+
this.opacityScopeLeft = undefined;
|
|
364
|
+
this.scopeOrientation = undefined;
|
|
365
|
+
}
|
|
366
|
+
handleAlphaChannelChange(alphaChannel) {
|
|
367
|
+
const { format } = this;
|
|
368
|
+
if (alphaChannel && format !== "auto" && !alphaCompatible(format)) {
|
|
369
|
+
console.warn(`ignoring alphaChannel as the current format (${format}) does not support alpha`);
|
|
370
|
+
this.alphaChannel = false;
|
|
371
|
+
}
|
|
357
372
|
}
|
|
358
373
|
handleColorChange(color, oldColor) {
|
|
359
|
-
this.
|
|
374
|
+
this.drawColorControls();
|
|
360
375
|
this.updateChannelsFromColor(color);
|
|
361
376
|
this.previousColor = oldColor;
|
|
362
377
|
}
|
|
@@ -366,7 +381,8 @@ export class ColorPicker {
|
|
|
366
381
|
}
|
|
367
382
|
handleScaleChange(scale = "m") {
|
|
368
383
|
this.updateDimensions(scale);
|
|
369
|
-
this.updateCanvasSize(
|
|
384
|
+
this.updateCanvasSize("all");
|
|
385
|
+
this.drawColorControls();
|
|
370
386
|
}
|
|
371
387
|
onMessagesChange() {
|
|
372
388
|
/* wired up by t9n util */
|
|
@@ -383,9 +399,9 @@ export class ColorPicker {
|
|
|
383
399
|
return;
|
|
384
400
|
}
|
|
385
401
|
modeChanged = this.mode !== nextMode;
|
|
386
|
-
this.setMode(nextMode);
|
|
402
|
+
this.setMode(nextMode, this.internalColorUpdateContext === null);
|
|
387
403
|
}
|
|
388
|
-
const dragging = this.
|
|
404
|
+
const dragging = this.activeCanvasInfo;
|
|
389
405
|
if (this.internalColorUpdateContext === "initial") {
|
|
390
406
|
return;
|
|
391
407
|
}
|
|
@@ -396,17 +412,16 @@ export class ColorPicker {
|
|
|
396
412
|
}
|
|
397
413
|
return;
|
|
398
414
|
}
|
|
399
|
-
const color = allowEmpty && !value
|
|
415
|
+
const color = allowEmpty && !value
|
|
416
|
+
? null
|
|
417
|
+
: Color(value != null && typeof value === "object" && alphaCompatible(this.mode)
|
|
418
|
+
? normalizeColor(value)
|
|
419
|
+
: value);
|
|
400
420
|
const colorChanged = !colorEqual(color, this.color);
|
|
401
421
|
if (modeChanged || colorChanged) {
|
|
402
|
-
this.internalColorSet(color,
|
|
422
|
+
this.internalColorSet(color, this.alphaChannel && !(this.mode.endsWith("a") || this.mode.endsWith("a-css")), "internal");
|
|
403
423
|
}
|
|
404
424
|
}
|
|
405
|
-
//--------------------------------------------------------------------------
|
|
406
|
-
//
|
|
407
|
-
// Internal State/Props
|
|
408
|
-
//
|
|
409
|
-
//--------------------------------------------------------------------------
|
|
410
425
|
get baseColorFieldColor() {
|
|
411
426
|
return this.color || this.previousColor || DEFAULT_COLOR;
|
|
412
427
|
}
|
|
@@ -462,7 +477,7 @@ export class ColorPicker {
|
|
|
462
477
|
if (!valueIsCompatible) {
|
|
463
478
|
this.showIncompatibleColorWarning(value, format);
|
|
464
479
|
}
|
|
465
|
-
this.setMode(format);
|
|
480
|
+
this.setMode(format, false);
|
|
466
481
|
this.internalColorSet(initialColor, false, "initial");
|
|
467
482
|
this.updateDimensions(this.scale);
|
|
468
483
|
const storageKey = `${DEFAULT_STORAGE_KEY_PREFIX}${this.storageId}`;
|
|
@@ -493,34 +508,38 @@ export class ColorPicker {
|
|
|
493
508
|
//
|
|
494
509
|
//--------------------------------------------------------------------------
|
|
495
510
|
render() {
|
|
496
|
-
const { allowEmpty, color,
|
|
497
|
-
const selectedColorInHex = color ? color
|
|
498
|
-
const
|
|
499
|
-
const
|
|
500
|
-
const
|
|
501
|
-
const
|
|
511
|
+
const { allowEmpty, channelsDisabled, color, colorFieldScopeLeft, colorFieldScopeTop, dimensions: { colorField: { width: colorFieldWidth }, slider: { width: sliderWidth }, thumb: { radius: thumbRadius } }, hexDisabled, hideChannels, hideHex, hideSaved, hueScopeLeft, messages, alphaChannel, opacityScopeLeft, savedColors, savedDisabled, scale, scopeOrientation } = this;
|
|
512
|
+
const selectedColorInHex = color ? hexify(color, alphaChannel) : null;
|
|
513
|
+
const hueTop = thumbRadius;
|
|
514
|
+
const hueLeft = hueScopeLeft ?? (sliderWidth * DEFAULT_COLOR.hue()) / HSV_LIMITS.h;
|
|
515
|
+
const opacityTop = thumbRadius;
|
|
516
|
+
const opacityLeft = opacityScopeLeft ??
|
|
517
|
+
(colorFieldWidth * alphaToOpacity(DEFAULT_COLOR.alpha())) / OPACITY_LIMITS.max;
|
|
502
518
|
const noColor = color === null;
|
|
503
519
|
const vertical = scopeOrientation === "vertical";
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
520
|
+
const noHex = hexDisabled || hideHex;
|
|
521
|
+
const noChannels = channelsDisabled || hideChannels;
|
|
522
|
+
const noSaved = savedDisabled || hideSaved;
|
|
523
|
+
return (h("div", { class: CSS.container }, h("div", { class: CSS.controlAndScope }, h("canvas", { class: CSS.colorField, onPointerDown: this.handleColorFieldPointerDown,
|
|
524
|
+
// eslint-disable-next-line react/jsx-sort-props
|
|
525
|
+
ref: this.initColorField }), h("div", { "aria-label": vertical ? messages.value : messages.saturation, "aria-valuemax": vertical ? HSV_LIMITS.v : HSV_LIMITS.s, "aria-valuemin": "0", "aria-valuenow": (vertical ? color?.saturationv() : color?.value()) || "0", class: { [CSS.scope]: true, [CSS.colorFieldScope]: true }, onKeyDown: this.handleColorFieldScopeKeyDown, role: "slider", style: { top: `${colorFieldScopeTop || 0}px`, left: `${colorFieldScopeLeft || 0}px` }, tabindex: "0",
|
|
526
|
+
// eslint-disable-next-line react/jsx-sort-props
|
|
527
|
+
ref: this.storeColorFieldScope })), h("div", { class: CSS.previewAndSliders }, h("calcite-color-picker-swatch", { class: CSS.preview, color: selectedColorInHex, scale: "l" }), h("div", { class: CSS.sliders }, h("div", { class: CSS.controlAndScope }, h("canvas", { class: { [CSS.slider]: true, [CSS.hueSlider]: true }, onPointerDown: this.handleHueSliderPointerDown,
|
|
528
|
+
// eslint-disable-next-line react/jsx-sort-props
|
|
529
|
+
ref: this.initHueSlider }), h("div", { "aria-label": messages.hue, "aria-valuemax": HSV_LIMITS.h, "aria-valuemin": "0", "aria-valuenow": color?.round().hue() || DEFAULT_COLOR.round().hue(), class: { [CSS.scope]: true, [CSS.hueScope]: true }, onKeyDown: this.handleHueScopeKeyDown, role: "slider", style: { top: `${hueTop}px`, left: `${hueLeft}px` }, tabindex: "0",
|
|
508
530
|
// eslint-disable-next-line react/jsx-sort-props
|
|
509
|
-
ref: this.
|
|
531
|
+
ref: this.storeHueScope })), alphaChannel ? (h("div", { class: CSS.controlAndScope }, h("canvas", { class: { [CSS.slider]: true, [CSS.opacitySlider]: true }, onPointerDown: this.handleOpacitySliderPointerDown,
|
|
510
532
|
// eslint-disable-next-line react/jsx-sort-props
|
|
511
|
-
ref: this.
|
|
533
|
+
ref: this.initOpacitySlider }), h("div", { "aria-label": messages.opacity, "aria-valuemax": OPACITY_LIMITS.max, "aria-valuemin": OPACITY_LIMITS.min, "aria-valuenow": (color || DEFAULT_COLOR).round().alpha(), class: { [CSS.scope]: true, [CSS.opacityScope]: true }, onKeyDown: this.handleOpacityScopeKeyDown, role: "slider", style: { top: `${opacityTop}px`, left: `${opacityLeft}px` }, tabindex: "0",
|
|
512
534
|
// eslint-disable-next-line react/jsx-sort-props
|
|
513
|
-
ref: this.
|
|
535
|
+
ref: this.storeOpacityScope }))) : null)), noHex && noChannels ? null : (h("div", { class: {
|
|
514
536
|
[CSS.controlSection]: true,
|
|
515
537
|
[CSS.section]: true
|
|
516
|
-
} },
|
|
517
|
-
[CSS.header]: true,
|
|
518
|
-
[CSS.headerHex]: true
|
|
519
|
-
} }, messages.hex), h("calcite-color-picker-hex-input", { allowEmpty: allowEmpty, class: CSS.control, hexLabel: messages.hex, numberingSystem: this.numberingSystem, onCalciteColorPickerHexInputChange: this.handleHexInputChange, scale: hexInputScale, value: selectedColorInHex }))), hideChannels ? null : (h("calcite-tabs", { class: {
|
|
538
|
+
} }, h("div", { class: CSS.hexAndChannelsGroup }, noHex ? null : (h("div", { class: CSS.hexOptions }, h("calcite-color-picker-hex-input", { allowEmpty: allowEmpty, alphaChannel: alphaChannel, class: CSS.control, messages: messages, numberingSystem: this.numberingSystem, onCalciteColorPickerHexInputChange: this.handleHexInputChange, scale: scale, value: selectedColorInHex }))), noChannels ? null : (h("calcite-tabs", { class: {
|
|
520
539
|
[CSS.colorModeContainer]: true,
|
|
521
540
|
[CSS.splitSection]: true
|
|
522
|
-
}, scale:
|
|
523
|
-
...savedColors.map((color) => (h("calcite-color-picker-swatch", {
|
|
541
|
+
}, scale: scale === "l" ? "m" : "s" }, h("calcite-tab-nav", { slot: "title-group" }, this.renderChannelsTabTitle("rgb"), this.renderChannelsTabTitle("hsv")), this.renderChannelsTab("rgb"), this.renderChannelsTab("hsv")))))), noSaved ? null : (h("div", { class: { [CSS.savedColorsSection]: true, [CSS.section]: true } }, h("div", { class: CSS.header }, h("label", null, messages.saved), h("div", { class: CSS.savedColorsButtons }, h("calcite-button", { appearance: "transparent", class: CSS.deleteColor, disabled: noColor, iconStart: "minus", kind: "neutral", label: messages.deleteColor, onClick: this.deleteColor, scale: scale, type: "button" }), h("calcite-button", { appearance: "transparent", class: CSS.saveColor, disabled: noColor, iconStart: "plus", kind: "neutral", label: messages.saveColor, onClick: this.saveColor, scale: scale, type: "button" }))), savedColors.length > 0 ? (h("div", { class: CSS.savedColors }, [
|
|
542
|
+
...savedColors.map((color) => (h("calcite-color-picker-swatch", { class: CSS.savedColor, color: color, key: color, onClick: this.handleSavedColorSelect, onKeyDown: this.handleSavedColorKeyDown, scale: scale, tabIndex: 0 })))
|
|
524
543
|
])) : null))));
|
|
525
544
|
}
|
|
526
545
|
// --------------------------------------------------------------------------
|
|
@@ -536,23 +555,38 @@ export class ColorPicker {
|
|
|
536
555
|
showIncompatibleColorWarning(value, format) {
|
|
537
556
|
console.warn(`ignoring color value (${value}) as it is not compatible with the current format (${format})`);
|
|
538
557
|
}
|
|
539
|
-
setMode(format) {
|
|
540
|
-
|
|
558
|
+
setMode(format, warn = true) {
|
|
559
|
+
const mode = format === "auto" ? this.mode : format;
|
|
560
|
+
this.mode = this.ensureCompatibleMode(mode, warn);
|
|
561
|
+
}
|
|
562
|
+
ensureCompatibleMode(mode, warn) {
|
|
563
|
+
const { alphaChannel } = this;
|
|
564
|
+
const isAlphaCompatible = alphaCompatible(mode);
|
|
565
|
+
if (alphaChannel && !isAlphaCompatible) {
|
|
566
|
+
const alphaMode = toAlphaMode(mode);
|
|
567
|
+
if (warn) {
|
|
568
|
+
console.warn(`setting format to (${alphaMode}) as the provided one (${mode}) does not support alpha`);
|
|
569
|
+
}
|
|
570
|
+
return alphaMode;
|
|
571
|
+
}
|
|
572
|
+
if (!alphaChannel && isAlphaCompatible) {
|
|
573
|
+
const nonAlphaMode = toNonAlphaMode(mode);
|
|
574
|
+
if (warn) {
|
|
575
|
+
console.warn(`setting format to (${nonAlphaMode}) as the provided one (${mode}) does not support alpha`);
|
|
576
|
+
}
|
|
577
|
+
return nonAlphaMode;
|
|
578
|
+
}
|
|
579
|
+
return mode;
|
|
541
580
|
}
|
|
542
581
|
captureHueSliderColor(x) {
|
|
543
582
|
const { dimensions: { slider: { width } } } = this;
|
|
544
583
|
const hue = (360 / width) * x;
|
|
545
584
|
this.internalColorSet(this.baseColorFieldColor.hue(hue), false);
|
|
546
585
|
}
|
|
547
|
-
|
|
548
|
-
const { dimensions: {
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
}
|
|
552
|
-
if (y <= colorFieldHeight + sliderHeight) {
|
|
553
|
-
return "slider";
|
|
554
|
-
}
|
|
555
|
-
return "none";
|
|
586
|
+
captureOpacitySliderValue(x) {
|
|
587
|
+
const { dimensions: { slider: { width } } } = this;
|
|
588
|
+
const alpha = opacityToAlpha((OPACITY_LIMITS.max / width) * x);
|
|
589
|
+
this.internalColorSet(this.baseColorFieldColor.alpha(alpha), false);
|
|
556
590
|
}
|
|
557
591
|
internalColorSet(color, skipEqual = true, context = "user-interaction") {
|
|
558
592
|
if (skipEqual && colorEqual(color, this.color)) {
|
|
@@ -569,16 +603,25 @@ export class ColorPicker {
|
|
|
569
603
|
}
|
|
570
604
|
const hexMode = "hex";
|
|
571
605
|
if (format.includes(hexMode)) {
|
|
572
|
-
|
|
606
|
+
const hasAlpha = format === CSSColorMode.HEXA;
|
|
607
|
+
return normalizeHex(hexify(color.round(), hasAlpha), hasAlpha);
|
|
573
608
|
}
|
|
574
609
|
if (format.includes("-css")) {
|
|
575
|
-
|
|
610
|
+
const value = color[format.replace("-css", "").replace("a", "")]().round().string();
|
|
611
|
+
// Color omits alpha values when alpha is 1
|
|
612
|
+
const needToInjectAlpha = (format.endsWith("a") || format.endsWith("a-css")) && color.alpha() === 1;
|
|
613
|
+
if (needToInjectAlpha) {
|
|
614
|
+
const model = value.slice(0, 3);
|
|
615
|
+
const values = value.slice(4, -1);
|
|
616
|
+
return `${model}a(${values}, ${color.alpha()})`;
|
|
617
|
+
}
|
|
618
|
+
return value;
|
|
576
619
|
}
|
|
577
|
-
const colorObject =
|
|
620
|
+
const colorObject =
|
|
621
|
+
/* Color() does not support hsva, hsla nor rgba, so we use the non-alpha mode */
|
|
622
|
+
color[toNonAlphaMode(format)]().round().object();
|
|
578
623
|
if (format.endsWith("a")) {
|
|
579
|
-
|
|
580
|
-
colorObject.a = colorObject.alpha;
|
|
581
|
-
delete colorObject.alpha;
|
|
624
|
+
return normalizeAlpha(colorObject);
|
|
582
625
|
}
|
|
583
626
|
return colorObject;
|
|
584
627
|
}
|
|
@@ -590,9 +633,14 @@ export class ColorPicker {
|
|
|
590
633
|
this.dimensions = DIMENSIONS[scale];
|
|
591
634
|
}
|
|
592
635
|
drawColorField() {
|
|
593
|
-
const context = this.
|
|
636
|
+
const context = this.colorFieldRenderingContext;
|
|
594
637
|
const { dimensions: { colorField: { height, width } } } = this;
|
|
595
|
-
context.fillStyle = this.baseColorFieldColor
|
|
638
|
+
context.fillStyle = this.baseColorFieldColor
|
|
639
|
+
.hsv()
|
|
640
|
+
.saturationv(100)
|
|
641
|
+
.value(100)
|
|
642
|
+
.alpha(1)
|
|
643
|
+
.string();
|
|
596
644
|
context.fillRect(0, 0, width, height);
|
|
597
645
|
const whiteGradient = context.createLinearGradient(0, 0, width, 0);
|
|
598
646
|
whiteGradient.addColorStop(0, "rgba(255,255,255,1)");
|
|
@@ -607,6 +655,9 @@ export class ColorPicker {
|
|
|
607
655
|
this.drawActiveColorFieldColor();
|
|
608
656
|
}
|
|
609
657
|
setCanvasContextSize(canvas, { height, width }) {
|
|
658
|
+
if (!canvas) {
|
|
659
|
+
return;
|
|
660
|
+
}
|
|
610
661
|
const devicePixelRatio = window.devicePixelRatio || 1;
|
|
611
662
|
canvas.width = width * devicePixelRatio;
|
|
612
663
|
canvas.height = height * devicePixelRatio;
|
|
@@ -615,21 +666,21 @@ export class ColorPicker {
|
|
|
615
666
|
const context = canvas.getContext("2d");
|
|
616
667
|
context.scale(devicePixelRatio, devicePixelRatio);
|
|
617
668
|
}
|
|
618
|
-
updateCanvasSize(
|
|
619
|
-
|
|
620
|
-
|
|
669
|
+
updateCanvasSize(context = "all") {
|
|
670
|
+
const { dimensions } = this;
|
|
671
|
+
if (context === "all" || context === "color-field") {
|
|
672
|
+
this.setCanvasContextSize(this.colorFieldRenderingContext?.canvas, dimensions.colorField);
|
|
673
|
+
}
|
|
674
|
+
const adjustedSliderDimensions = {
|
|
675
|
+
width: dimensions.slider.width,
|
|
676
|
+
height: dimensions.slider.height + (dimensions.thumb.radius - dimensions.slider.height / 2) * 2
|
|
677
|
+
};
|
|
678
|
+
if (context === "all" || context === "hue-slider") {
|
|
679
|
+
this.setCanvasContextSize(this.hueSliderRenderingContext?.canvas, adjustedSliderDimensions);
|
|
680
|
+
}
|
|
681
|
+
if (context === "all" || context === "opacity-slider") {
|
|
682
|
+
this.setCanvasContextSize(this.opacitySliderRenderingContext?.canvas, adjustedSliderDimensions);
|
|
621
683
|
}
|
|
622
|
-
this.setCanvasContextSize(canvas, {
|
|
623
|
-
width: this.dimensions.colorField.width,
|
|
624
|
-
height: this.dimensions.colorField.height +
|
|
625
|
-
this.dimensions.slider.height +
|
|
626
|
-
this.getSliderCapSpacing() * 2
|
|
627
|
-
});
|
|
628
|
-
this.drawColorFieldAndSlider();
|
|
629
|
-
}
|
|
630
|
-
containsPoint(testPointX, testPointY, boundsX, boundsY, boundsRadius) {
|
|
631
|
-
return (Math.pow(testPointX - boundsX, 2) + Math.pow(testPointY - boundsY, 2) <=
|
|
632
|
-
Math.pow(boundsRadius, 2));
|
|
633
684
|
}
|
|
634
685
|
drawActiveColorFieldColor() {
|
|
635
686
|
const { color } = this;
|
|
@@ -644,22 +695,23 @@ export class ColorPicker {
|
|
|
644
695
|
this.colorFieldScopeLeft = x;
|
|
645
696
|
this.colorFieldScopeTop = y;
|
|
646
697
|
});
|
|
647
|
-
this.drawThumb(this.
|
|
698
|
+
this.drawThumb(this.colorFieldRenderingContext, radius, x, y, hsvColor);
|
|
648
699
|
}
|
|
649
|
-
drawThumb(context, radius, x, y, color
|
|
700
|
+
drawThumb(context, radius, x, y, color) {
|
|
650
701
|
const startAngle = 0;
|
|
651
702
|
const endAngle = 2 * Math.PI;
|
|
703
|
+
const outlineWidth = 1;
|
|
704
|
+
radius = radius - outlineWidth;
|
|
652
705
|
context.beginPath();
|
|
653
706
|
context.arc(x, y, radius, startAngle, endAngle);
|
|
654
|
-
context.shadowBlur = state === "hover" ? 32 : 16;
|
|
655
|
-
context.shadowColor = `rgba(0, 0, 0, ${state === "drag" ? 0.32 : 0.16})`;
|
|
656
707
|
context.fillStyle = "#fff";
|
|
657
708
|
context.fill();
|
|
709
|
+
context.strokeStyle = "rgba(0,0,0,0.3)";
|
|
710
|
+
context.lineWidth = outlineWidth;
|
|
711
|
+
context.stroke();
|
|
658
712
|
context.beginPath();
|
|
659
713
|
context.arc(x, y, radius - 3, startAngle, endAngle);
|
|
660
|
-
context.
|
|
661
|
-
context.shadowColor = "transparent";
|
|
662
|
-
context.fillStyle = color.rgb().string();
|
|
714
|
+
context.fillStyle = color.rgb().alpha(1).string();
|
|
663
715
|
context.fill();
|
|
664
716
|
}
|
|
665
717
|
drawActiveHueSliderColor() {
|
|
@@ -668,18 +720,19 @@ export class ColorPicker {
|
|
|
668
720
|
return;
|
|
669
721
|
}
|
|
670
722
|
const hsvColor = color.hsv().saturationv(100).value(100);
|
|
671
|
-
const { dimensions: {
|
|
723
|
+
const { dimensions: { slider: { height, width }, thumb: { radius } } } = this;
|
|
672
724
|
const x = hsvColor.hue() / (360 / width);
|
|
673
|
-
const y = height / 2 +
|
|
725
|
+
const y = radius - height / 2 + height / 2;
|
|
674
726
|
requestAnimationFrame(() => {
|
|
675
727
|
this.hueScopeLeft = x;
|
|
676
|
-
this.hueScopeTop = y;
|
|
677
728
|
});
|
|
678
|
-
this.drawThumb(this.
|
|
729
|
+
this.drawThumb(this.hueSliderRenderingContext, radius, x, y, hsvColor);
|
|
679
730
|
}
|
|
680
731
|
drawHueSlider() {
|
|
681
|
-
const context = this.
|
|
682
|
-
const { dimensions: {
|
|
732
|
+
const context = this.hueSliderRenderingContext;
|
|
733
|
+
const { dimensions: { slider: { height, width }, thumb: { radius: thumbRadius } } } = this;
|
|
734
|
+
const x = 0;
|
|
735
|
+
const y = thumbRadius - height / 2;
|
|
683
736
|
const gradient = context.createLinearGradient(0, 0, width, 0);
|
|
684
737
|
const hueSliderColorStopKeywords = ["red", "yellow", "lime", "cyan", "blue", "magenta", "red"];
|
|
685
738
|
const offset = 1 / (hueSliderColorStopKeywords.length - 1);
|
|
@@ -688,22 +741,101 @@ export class ColorPicker {
|
|
|
688
741
|
gradient.addColorStop(currentOffset, Color(keyword).string());
|
|
689
742
|
currentOffset += offset;
|
|
690
743
|
});
|
|
744
|
+
context.clearRect(0, 0, width, height + this.getSliderCapSpacing() * 2);
|
|
745
|
+
this.drawSliderPath(context, height, width, x, y);
|
|
691
746
|
context.fillStyle = gradient;
|
|
692
|
-
context.
|
|
693
|
-
context.
|
|
747
|
+
context.fill();
|
|
748
|
+
context.strokeStyle = "rgba(0,0,0,0.3)";
|
|
749
|
+
context.lineWidth = 1;
|
|
750
|
+
context.stroke();
|
|
694
751
|
this.drawActiveHueSliderColor();
|
|
695
752
|
}
|
|
753
|
+
drawOpacitySlider() {
|
|
754
|
+
const context = this.opacitySliderRenderingContext;
|
|
755
|
+
const { baseColorFieldColor: previousColor, dimensions: { slider: { height, width }, thumb: { radius: thumbRadius } } } = this;
|
|
756
|
+
const x = 0;
|
|
757
|
+
const y = thumbRadius - height / 2;
|
|
758
|
+
context.clearRect(0, 0, width, height + this.getSliderCapSpacing() * 2);
|
|
759
|
+
const gradient = context.createLinearGradient(0, y, width, 0);
|
|
760
|
+
const startColor = previousColor.rgb().alpha(0);
|
|
761
|
+
const midColor = previousColor.rgb().alpha(0.5);
|
|
762
|
+
const endColor = previousColor.rgb().alpha(1);
|
|
763
|
+
gradient.addColorStop(0, startColor.string());
|
|
764
|
+
gradient.addColorStop(0.5, midColor.string());
|
|
765
|
+
gradient.addColorStop(1, endColor.string());
|
|
766
|
+
this.drawSliderPath(context, height, width, x, y);
|
|
767
|
+
const pattern = context.createPattern(this.getCheckeredBackgroundPattern(), "repeat");
|
|
768
|
+
context.fillStyle = pattern;
|
|
769
|
+
context.fill();
|
|
770
|
+
context.fillStyle = gradient;
|
|
771
|
+
context.fill();
|
|
772
|
+
context.strokeStyle = "rgba(0,0,0,0.3)";
|
|
773
|
+
context.lineWidth = 1;
|
|
774
|
+
context.stroke();
|
|
775
|
+
this.drawActiveOpacitySliderColor();
|
|
776
|
+
}
|
|
777
|
+
drawSliderPath(context, height, width, x, y) {
|
|
778
|
+
const radius = height / 2 + 1;
|
|
779
|
+
context.beginPath();
|
|
780
|
+
context.moveTo(x + radius, y);
|
|
781
|
+
context.lineTo(x + width - radius, y);
|
|
782
|
+
context.quadraticCurveTo(x + width, y, x + width, y + radius);
|
|
783
|
+
context.lineTo(x + width, y + height - radius);
|
|
784
|
+
context.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);
|
|
785
|
+
context.lineTo(x + radius, y + height);
|
|
786
|
+
context.quadraticCurveTo(x, y + height, x, y + height - radius);
|
|
787
|
+
context.lineTo(x, y + radius);
|
|
788
|
+
context.quadraticCurveTo(x, y, x + radius, y);
|
|
789
|
+
context.closePath();
|
|
790
|
+
}
|
|
791
|
+
getCheckeredBackgroundPattern() {
|
|
792
|
+
if (this.checkerPattern) {
|
|
793
|
+
return this.checkerPattern;
|
|
794
|
+
}
|
|
795
|
+
const pattern = document.createElement("canvas");
|
|
796
|
+
pattern.width = 10;
|
|
797
|
+
pattern.height = 10;
|
|
798
|
+
const patternContext = pattern.getContext("2d");
|
|
799
|
+
patternContext.fillStyle = "#ccc";
|
|
800
|
+
patternContext.fillRect(0, 0, 10, 10);
|
|
801
|
+
patternContext.fillStyle = "#fff";
|
|
802
|
+
patternContext.fillRect(0, 0, 5, 5);
|
|
803
|
+
patternContext.fillRect(5, 5, 5, 5);
|
|
804
|
+
this.checkerPattern = pattern;
|
|
805
|
+
return pattern;
|
|
806
|
+
}
|
|
807
|
+
drawActiveOpacitySliderColor() {
|
|
808
|
+
const { color } = this;
|
|
809
|
+
if (!color) {
|
|
810
|
+
return;
|
|
811
|
+
}
|
|
812
|
+
const hsvColor = color;
|
|
813
|
+
const { dimensions: { slider: { width }, thumb: { radius } } } = this;
|
|
814
|
+
const x = alphaToOpacity(hsvColor.alpha()) / (OPACITY_LIMITS.max / width);
|
|
815
|
+
const y = radius;
|
|
816
|
+
requestAnimationFrame(() => {
|
|
817
|
+
this.opacityScopeLeft = x;
|
|
818
|
+
});
|
|
819
|
+
this.drawThumb(this.opacitySliderRenderingContext, radius, x, y, hsvColor);
|
|
820
|
+
}
|
|
696
821
|
updateColorFromChannels(channels) {
|
|
697
822
|
this.internalColorSet(Color(channels, this.channelMode));
|
|
698
823
|
}
|
|
699
824
|
updateChannelsFromColor(color) {
|
|
700
|
-
this.channels = color ? this.toChannels(color) : [null, null, null];
|
|
825
|
+
this.channels = color ? this.toChannels(color) : [null, null, null, null];
|
|
701
826
|
}
|
|
702
827
|
toChannels(color) {
|
|
703
828
|
const { channelMode } = this;
|
|
704
|
-
|
|
829
|
+
const channels = color[channelMode]()
|
|
705
830
|
.array()
|
|
706
|
-
.map((value) =>
|
|
831
|
+
.map((value, index) => {
|
|
832
|
+
const isAlpha = index === 3;
|
|
833
|
+
return isAlpha ? value : Math.floor(value);
|
|
834
|
+
});
|
|
835
|
+
if (channels.length === 3) {
|
|
836
|
+
channels.push(1); // Color omits alpha when 1
|
|
837
|
+
}
|
|
838
|
+
return channels;
|
|
707
839
|
}
|
|
708
840
|
static get is() { return "calcite-color-picker"; }
|
|
709
841
|
static get encapsulation() { return "shadow"; }
|
|
@@ -739,6 +871,42 @@ export class ColorPicker {
|
|
|
739
871
|
"reflect": true,
|
|
740
872
|
"defaultValue": "false"
|
|
741
873
|
},
|
|
874
|
+
"alphaChannel": {
|
|
875
|
+
"type": "boolean",
|
|
876
|
+
"mutable": false,
|
|
877
|
+
"complexType": {
|
|
878
|
+
"original": "boolean",
|
|
879
|
+
"resolved": "boolean",
|
|
880
|
+
"references": {}
|
|
881
|
+
},
|
|
882
|
+
"required": false,
|
|
883
|
+
"optional": false,
|
|
884
|
+
"docs": {
|
|
885
|
+
"tags": [],
|
|
886
|
+
"text": "When true, the component will allow updates to the color's alpha value."
|
|
887
|
+
},
|
|
888
|
+
"attribute": "alpha-channel",
|
|
889
|
+
"reflect": false,
|
|
890
|
+
"defaultValue": "false"
|
|
891
|
+
},
|
|
892
|
+
"channelsDisabled": {
|
|
893
|
+
"type": "boolean",
|
|
894
|
+
"mutable": false,
|
|
895
|
+
"complexType": {
|
|
896
|
+
"original": "boolean",
|
|
897
|
+
"resolved": "boolean",
|
|
898
|
+
"references": {}
|
|
899
|
+
},
|
|
900
|
+
"required": false,
|
|
901
|
+
"optional": false,
|
|
902
|
+
"docs": {
|
|
903
|
+
"tags": [],
|
|
904
|
+
"text": "When true, hides the RGB/HSV channel inputs"
|
|
905
|
+
},
|
|
906
|
+
"attribute": "channels-disabled",
|
|
907
|
+
"reflect": false,
|
|
908
|
+
"defaultValue": "false"
|
|
909
|
+
},
|
|
742
910
|
"color": {
|
|
743
911
|
"type": "unknown",
|
|
744
912
|
"mutable": true,
|
|
@@ -805,9 +973,9 @@ export class ColorPicker {
|
|
|
805
973
|
},
|
|
806
974
|
"attribute": "format",
|
|
807
975
|
"reflect": true,
|
|
808
|
-
"defaultValue": "
|
|
976
|
+
"defaultValue": "\"auto\""
|
|
809
977
|
},
|
|
810
|
-
"
|
|
978
|
+
"hideChannels": {
|
|
811
979
|
"type": "boolean",
|
|
812
980
|
"mutable": false,
|
|
813
981
|
"complexType": {
|
|
@@ -818,14 +986,17 @@ export class ColorPicker {
|
|
|
818
986
|
"required": false,
|
|
819
987
|
"optional": false,
|
|
820
988
|
"docs": {
|
|
821
|
-
"tags": [
|
|
822
|
-
|
|
989
|
+
"tags": [{
|
|
990
|
+
"name": "deprecated",
|
|
991
|
+
"text": "use `channelsDisabled` instead"
|
|
992
|
+
}],
|
|
993
|
+
"text": "When `true`, hides the RGB/HSV channel inputs."
|
|
823
994
|
},
|
|
824
|
-
"attribute": "hide-
|
|
995
|
+
"attribute": "hide-channels",
|
|
825
996
|
"reflect": true,
|
|
826
997
|
"defaultValue": "false"
|
|
827
998
|
},
|
|
828
|
-
"
|
|
999
|
+
"hexDisabled": {
|
|
829
1000
|
"type": "boolean",
|
|
830
1001
|
"mutable": false,
|
|
831
1002
|
"complexType": {
|
|
@@ -837,9 +1008,30 @@ export class ColorPicker {
|
|
|
837
1008
|
"optional": false,
|
|
838
1009
|
"docs": {
|
|
839
1010
|
"tags": [],
|
|
840
|
-
"text": "When
|
|
1011
|
+
"text": "When true, hides the hex input"
|
|
841
1012
|
},
|
|
842
|
-
"attribute": "
|
|
1013
|
+
"attribute": "hex-disabled",
|
|
1014
|
+
"reflect": false,
|
|
1015
|
+
"defaultValue": "false"
|
|
1016
|
+
},
|
|
1017
|
+
"hideHex": {
|
|
1018
|
+
"type": "boolean",
|
|
1019
|
+
"mutable": false,
|
|
1020
|
+
"complexType": {
|
|
1021
|
+
"original": "boolean",
|
|
1022
|
+
"resolved": "boolean",
|
|
1023
|
+
"references": {}
|
|
1024
|
+
},
|
|
1025
|
+
"required": false,
|
|
1026
|
+
"optional": false,
|
|
1027
|
+
"docs": {
|
|
1028
|
+
"tags": [{
|
|
1029
|
+
"name": "deprecated",
|
|
1030
|
+
"text": "use `hexDisabled` instead"
|
|
1031
|
+
}],
|
|
1032
|
+
"text": "When `true`, hides the hex input."
|
|
1033
|
+
},
|
|
1034
|
+
"attribute": "hide-hex",
|
|
843
1035
|
"reflect": true,
|
|
844
1036
|
"defaultValue": "false"
|
|
845
1037
|
},
|
|
@@ -854,13 +1046,34 @@ export class ColorPicker {
|
|
|
854
1046
|
"required": false,
|
|
855
1047
|
"optional": false,
|
|
856
1048
|
"docs": {
|
|
857
|
-
"tags": [
|
|
1049
|
+
"tags": [{
|
|
1050
|
+
"name": "deprecated",
|
|
1051
|
+
"text": "use `savedDisabled` instead"
|
|
1052
|
+
}],
|
|
858
1053
|
"text": "When `true`, hides the saved colors section."
|
|
859
1054
|
},
|
|
860
1055
|
"attribute": "hide-saved",
|
|
861
1056
|
"reflect": true,
|
|
862
1057
|
"defaultValue": "false"
|
|
863
1058
|
},
|
|
1059
|
+
"savedDisabled": {
|
|
1060
|
+
"type": "boolean",
|
|
1061
|
+
"mutable": false,
|
|
1062
|
+
"complexType": {
|
|
1063
|
+
"original": "boolean",
|
|
1064
|
+
"resolved": "boolean",
|
|
1065
|
+
"references": {}
|
|
1066
|
+
},
|
|
1067
|
+
"required": false,
|
|
1068
|
+
"optional": false,
|
|
1069
|
+
"docs": {
|
|
1070
|
+
"tags": [],
|
|
1071
|
+
"text": "When true, hides the saved colors section"
|
|
1072
|
+
},
|
|
1073
|
+
"attribute": "saved-disabled",
|
|
1074
|
+
"reflect": true,
|
|
1075
|
+
"defaultValue": "false"
|
|
1076
|
+
},
|
|
864
1077
|
"scale": {
|
|
865
1078
|
"type": "string",
|
|
866
1079
|
"mutable": false,
|
|
@@ -976,7 +1189,7 @@ export class ColorPicker {
|
|
|
976
1189
|
},
|
|
977
1190
|
"attribute": "value",
|
|
978
1191
|
"reflect": false,
|
|
979
|
-
"defaultValue": "
|
|
1192
|
+
"defaultValue": "normalizeHex(\n hexify(DEFAULT_COLOR, this.alphaChannel)\n )"
|
|
980
1193
|
},
|
|
981
1194
|
"messages": {
|
|
982
1195
|
"type": "unknown",
|
|
@@ -1006,7 +1219,6 @@ export class ColorPicker {
|
|
|
1006
1219
|
static get states() {
|
|
1007
1220
|
return {
|
|
1008
1221
|
"defaultMessages": {},
|
|
1009
|
-
"colorFieldAndSliderInteractive": {},
|
|
1010
1222
|
"channelMode": {},
|
|
1011
1223
|
"channels": {},
|
|
1012
1224
|
"dimensions": {},
|
|
@@ -1014,9 +1226,9 @@ export class ColorPicker {
|
|
|
1014
1226
|
"savedColors": {},
|
|
1015
1227
|
"colorFieldScopeTop": {},
|
|
1016
1228
|
"colorFieldScopeLeft": {},
|
|
1017
|
-
"scopeOrientation": {},
|
|
1018
1229
|
"hueScopeLeft": {},
|
|
1019
|
-
"
|
|
1230
|
+
"opacityScopeLeft": {},
|
|
1231
|
+
"scopeOrientation": {}
|
|
1020
1232
|
};
|
|
1021
1233
|
}
|
|
1022
1234
|
static get events() {
|
|
@@ -1075,6 +1287,9 @@ export class ColorPicker {
|
|
|
1075
1287
|
static get elementRef() { return "el"; }
|
|
1076
1288
|
static get watchers() {
|
|
1077
1289
|
return [{
|
|
1290
|
+
"propName": "alphaChannel",
|
|
1291
|
+
"methodName": "handleAlphaChannelChange"
|
|
1292
|
+
}, {
|
|
1078
1293
|
"propName": "color",
|
|
1079
1294
|
"methodName": "handleColorChange"
|
|
1080
1295
|
}, {
|