@ember-eui/core 16.0.0 → 16.0.2
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/declarations/components/eui-aspect-ratio.d.ts +5 -0
- package/declarations/components/eui-aspect-ratio.d.ts.map +1 -1
- package/declarations/components/eui-avatar.d.ts +6 -0
- package/declarations/components/eui-avatar.d.ts.map +1 -1
- package/declarations/components/eui-basic-table.d.ts.map +1 -1
- package/declarations/components/eui-color-picker.d.ts +3 -0
- package/declarations/components/eui-color-picker.d.ts.map +1 -1
- package/declarations/components/eui-color-stops/thumb.d.ts +3 -1
- package/declarations/components/eui-color-stops/thumb.d.ts.map +1 -1
- package/declarations/components/eui-combo-box.d.ts +2 -0
- package/declarations/components/eui-combo-box.d.ts.map +1 -1
- package/declarations/components/eui-data-grid/body.d.ts +2 -0
- package/declarations/components/eui-data-grid/body.d.ts.map +1 -1
- package/declarations/components/eui-data-grid.d.ts.map +1 -1
- package/declarations/components/eui-dual-range.d.ts +2 -0
- package/declarations/components/eui-dual-range.d.ts.map +1 -1
- package/declarations/components/eui-focus-trap.d.ts +1 -0
- package/declarations/components/eui-focus-trap.d.ts.map +1 -1
- package/declarations/components/eui-global-toast-list.d.ts +8 -1
- package/declarations/components/eui-global-toast-list.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor-drop-zone.d.ts.map +1 -1
- package/declarations/components/eui-markdown-editor.d.ts.map +1 -1
- package/declarations/components/eui-markdown-format.d.ts +2 -0
- package/declarations/components/eui-markdown-format.d.ts.map +1 -1
- package/declarations/components/eui-overlay-mask.d.ts +5 -2
- package/declarations/components/eui-overlay-mask.d.ts.map +1 -1
- package/declarations/components/eui-popover.d.ts +5 -1
- package/declarations/components/eui-popover.d.ts.map +1 -1
- package/declarations/components/eui-range.d.ts +3 -0
- package/declarations/components/eui-range.d.ts.map +1 -1
- package/declarations/components/eui-saturation.d.ts +3 -1
- package/declarations/components/eui-saturation.d.ts.map +1 -1
- package/declarations/components/eui-search-bar/field-value-selection-filter.d.ts.map +1 -1
- package/declarations/components/eui-text-color.d.ts +6 -0
- package/declarations/components/eui-text-color.d.ts.map +1 -1
- package/declarations/components/eui-text.d.ts.map +1 -1
- package/declarations/components/eui-token.d.ts +11 -0
- package/declarations/components/eui-token.d.ts.map +1 -1
- package/declarations/components/eui-tool-tip.d.ts +1 -2
- package/declarations/components/eui-tool-tip.d.ts.map +1 -1
- package/declarations/modifiers/outside-click-detector.d.ts +3 -0
- package/declarations/modifiers/outside-click-detector.d.ts.map +1 -1
- package/declarations/modifiers/resize-observer.d.ts +3 -0
- package/declarations/modifiers/resize-observer.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-avatar.d.ts +2 -2
- package/declarations/utils/css-mappings/eui-avatar.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-badge.d.ts +1 -1
- package/declarations/utils/css-mappings/eui-badge.d.ts.map +1 -1
- package/declarations/utils/css-mappings/eui-context-menu-item.d.ts +3 -3
- package/declarations/utils/eui/flyout-manager/reducer.d.ts.map +1 -1
- package/declarations/utils/eui/styles.d.ts +5 -0
- package/declarations/utils/eui/styles.d.ts.map +1 -1
- package/declarations/utils/retain-document-listener.d.ts +8 -0
- package/declarations/utils/retain-document-listener.d.ts.map +1 -0
- package/declarations/utils/transition.d.ts +1 -1
- package/declarations/utils/transition.d.ts.map +1 -1
- package/dist/components/eui-aspect-ratio.js +20 -5
- package/dist/components/eui-aspect-ratio.js.map +1 -1
- package/dist/components/eui-avatar.js +16 -4
- package/dist/components/eui-avatar.js.map +1 -1
- package/dist/components/eui-basic-table.js +4 -2
- package/dist/components/eui-basic-table.js.map +1 -1
- package/dist/components/eui-color-picker.js +8 -2
- package/dist/components/eui-color-picker.js.map +1 -1
- package/dist/components/eui-color-stops/thumb.js +17 -5
- package/dist/components/eui-color-stops/thumb.js.map +1 -1
- package/dist/components/eui-combo-box.js +16 -0
- package/dist/components/eui-combo-box.js.map +1 -1
- package/dist/components/eui-data-grid/body.js +21 -1
- package/dist/components/eui-data-grid/body.js.map +1 -1
- package/dist/components/eui-data-grid.js +6 -4
- package/dist/components/eui-data-grid.js.map +1 -1
- package/dist/components/eui-dual-range.js +5 -2
- package/dist/components/eui-dual-range.js.map +1 -1
- package/dist/components/eui-focus-trap.js +4 -1
- package/dist/components/eui-focus-trap.js.map +1 -1
- package/dist/components/eui-global-toast-list.js +33 -5
- package/dist/components/eui-global-toast-list.js.map +1 -1
- package/dist/components/eui-markdown-editor-drop-zone.js +2 -0
- package/dist/components/eui-markdown-editor-drop-zone.js.map +1 -1
- package/dist/components/eui-markdown-editor.js +3 -1
- package/dist/components/eui-markdown-editor.js.map +1 -1
- package/dist/components/eui-markdown-format.js +9 -3
- package/dist/components/eui-markdown-format.js.map +1 -1
- package/dist/components/eui-overlay-mask.js +2 -0
- package/dist/components/eui-overlay-mask.js.map +1 -1
- package/dist/components/eui-popover.js +22 -2
- package/dist/components/eui-popover.js.map +1 -1
- package/dist/components/eui-range.js +10 -3
- package/dist/components/eui-range.js.map +1 -1
- package/dist/components/eui-saturation.js +16 -4
- package/dist/components/eui-saturation.js.map +1 -1
- package/dist/components/eui-search-bar/field-value-selection-filter.js +8 -3
- package/dist/components/eui-search-bar/field-value-selection-filter.js.map +1 -1
- package/dist/components/eui-text-color.js +20 -6
- package/dist/components/eui-text-color.js.map +1 -1
- package/dist/components/eui-text.js +6 -3
- package/dist/components/eui-text.js.map +1 -1
- package/dist/components/eui-token.js +31 -17
- package/dist/components/eui-token.js.map +1 -1
- package/dist/components/eui-tool-tip.js +9 -17
- package/dist/components/eui-tool-tip.js.map +1 -1
- package/dist/icons-DCTZo11a.js.map +1 -1
- package/dist/modifiers/outside-click-detector.js +12 -2
- package/dist/modifiers/outside-click-detector.js.map +1 -1
- package/dist/modifiers/resize-observer.js +19 -4
- package/dist/modifiers/resize-observer.js.map +1 -1
- package/dist/utils/eui/flyout-manager/reducer.js +7 -1
- package/dist/utils/eui/flyout-manager/reducer.js.map +1 -1
- package/dist/utils/eui/styles.js +5 -0
- package/dist/utils/eui/styles.js.map +1 -1
- package/dist/utils/retain-document-listener.js +30 -0
- package/dist/utils/retain-document-listener.js.map +1 -0
- package/dist/utils/transition.js +8 -3
- package/dist/utils/transition.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eui-color-picker.js","sources":["../../src/components/eui-color-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { next } from '@ember/runloop';\nimport { service } from '@ember/service';\n\nimport chroma from 'chroma-js';\nimport { modifier } from 'ember-modifier';\n\nimport {\n getChromaColor,\n HEX_FALLBACK,\n HSV_FALLBACK,\n parseColor,\n RGB_FALLBACK,\n RGB_JOIN\n} from '../-private/color.ts';\nimport { randomId } from '../-private/random-id.ts';\nimport { useEuiPaletteColorBlind } from '../utils/color/eui_palettes.ts';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { boxReset, listReset } from '../utils/eui/color-picker.ts';\nimport { euiColorPickerStyles } from '../utils/eui/styles.generated.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport EuiColorPickerSwatch from './eui-color-picker-swatch.gts';\nimport EuiFieldText from './eui-field-text.gts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\nimport EuiFormLabel from './eui-form-label.gts';\nimport EuiFormRow from './eui-form-row.gts';\nimport EuiHue from './eui-hue.gts';\nimport EuiPopover from './eui-popover.gts';\nimport EuiRange from './eui-range.gts';\nimport EuiSaturation from './eui-saturation.gts';\nimport EuiScreenReaderOnly from './eui-screen-reader-only.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\nimport type { HSV, RGBA } from '../-private/color.ts';\nimport type Owner from '@ember/owner';\n\nexport interface EuiColorPickerOutput {\n /** The color as `[r, g, b, a]` (`NaN`s when invalid). */\n rgba: RGBA;\n /** The color as hex (`''` when invalid). */\n hex: string;\n /** Whether the text is a valid color (opaque, unless `@showAlpha`). */\n isValid: boolean;\n}\n\n/**\n * A color field: a text input showing the color (hex or `r, g, b`) that\n * opens a popover to pick it from a saturation square and a hue slider,\n * and from swatches. You keep the color: `@onChange` gets the new text and\n * `{ hex, rgba, isValid }`.\n */\nexport interface EuiColorPickerSignature {\n Element: HTMLDivElement;\n Args: {\n /** The color: a hex string (`'#D36086'`), `'r, g, b'`, or `''`. */\n color?: string;\n /** Called with the new color text and `{ hex, rgba, isValid }`. */\n onChange: (text: string, output: EuiColorPickerOutput) => void;\n /**\n * `'default'` (square, hue and swatches), `'picker'` (no swatches),\n * `'swatch'` (only swatches) or `'secondaryInput'` (only the text\n * field set by `@secondaryInputDisplay`). Defaults to `'default'`.\n */\n mode?: 'default' | 'picker' | 'swatch' | 'secondaryInput';\n /** `'default'` (a field opening a popover) or `'inline'` (the picker itself). */\n display?: 'default' | 'inline';\n /** The swatches. Defaults to EUI's color-blind safe palette. */\n swatches?: string[];\n /** Adds an opacity slider; the color can then have an alpha channel. */\n showAlpha?: boolean;\n /** `'hex'` or `'rgba'` output. Defaults to the format of `@color`. */\n format?: 'hex' | 'rgba';\n /**\n * A text field inside the popover: `'top'`, `'bottom'` or `'none'`.\n * Defaults to `'none'`.\n */\n secondaryInputDisplay?: 'top' | 'bottom' | 'none';\n /** Adds a button clearing the color. */\n isClearable?: boolean;\n /** Placeholder while empty. Defaults to \"Transparent\". */\n placeholder?: string;\n /** Smaller field. */\n compressed?: boolean;\n /** Takes the container's full width. */\n fullWidth?: boolean;\n /** Disables it. */\n disabled?: boolean;\n /**\n * z-index of the color selector popover. Defaults to the anchor's\n * z-index + 2000, as in EuiPopover.\n */\n popoverZIndex?: number;\n /** Read-only: the popover does not open. */\n readOnly?: boolean;\n /** Invalid look. */\n isInvalid?: boolean;\n /** `id` of the input. */\n id?: string;\n /** Called when the popover opens. */\n onFocus?: () => void;\n /** Called when the field loses focus or the popover closes. */\n onBlur?: () => void;\n };\n Blocks: {\n /**\n * A custom trigger instead of the field (e.g. a swatch button); yields\n * the function toggling the popover.\n */\n button: [toggle: () => void];\n /** Content before the field; yields the class to put on it. */\n prepend: [className: string, inputId: string];\n /** Content after the field; yields the class to put on it. */\n append: [className: string, inputId: string];\n };\n}\n\nfunction hsvOf(color: ReturnType<typeof getChromaColor>, fallbackHue = 0): HSV {\n if (!color) return HSV_FALLBACK;\n\n const [h, s, v] = color.hsv();\n\n // black, white and grays have no hue\n return [isNaN(h) ? fallbackHue : h, s, v];\n}\n\nexport default class EuiColorPicker extends Component<EuiColorPickerSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked isColorSelectorShown = false;\n @tracked colorAsHsv: HSV;\n @tracked alphaInput?: string;\n\n ownId = `euiColorPicker_${randomId()}`;\n openLabelId = `${this.ownId}-openLabel`;\n closeLabelId = `${this.ownId}-closeLabel`;\n prevColor: string | null;\n input?: HTMLInputElement;\n saturation?: HTMLElement;\n firstSwatch?: HTMLElement;\n\n constructor(owner: Owner, args: EuiColorPickerSignature['Args']) {\n super(owner, args);\n\n const color = getChromaColor(args.color, args.showAlpha);\n\n this.prevColor = color ? color.rgba().join() : null;\n this.colorAsHsv = color ? hsvOf(color) : HSV_FALLBACK;\n }\n\n get id(): string {\n return this.args.id ?? this.ownId;\n }\n\n get mode(): string {\n return this.args.mode ?? 'default';\n }\n\n get secondaryInputDisplay(): string {\n return this.args.secondaryInputDisplay ?? 'none';\n }\n\n get chromaColor(): ReturnType<typeof getChromaColor> {\n return getChromaColor(this.args.color, this.args.showAlpha);\n }\n\n get preferredFormat(): 'hex' | 'rgba' {\n if (this.args.format) return this.args.format;\n\n const parsed = parseColor(this.args.color);\n\n return parsed !== null && typeof parsed === 'object' ? 'rgba' : 'hex';\n }\n\n get alphaChannel(): number {\n return this.chromaColor ? this.chromaColor.alpha() : 1;\n }\n\n get alphaRangeValue(): number {\n return Number(this.alphaInput ?? (this.alphaChannel * 100).toFixed());\n }\n\n /** The color as HSV; the hue is kept for colors without one. */\n get usableHsv(): HSV {\n const color = this.chromaColor;\n\n if (color && color.rgba().join() !== this.prevColor) {\n return hsvOf(color, this.colorAsHsv[0]);\n }\n\n return this.colorAsHsv;\n }\n\n get hex(): string | undefined {\n return this.chromaColor?.hex();\n }\n\n get inputValue(): string {\n return this.args.color ? this.args.color.toUpperCase() : HEX_FALLBACK;\n }\n\n get placeholder(): string | undefined {\n if (this.args.color) return undefined;\n\n return this.args.placeholder ?? this.euiI18n.lookupToken('euiColorPicker.transparent', 'Transparent');\n }\n\n get showPicker(): boolean {\n return this.mode !== 'swatch' && this.mode !== 'secondaryInput';\n }\n\n get showSwatches(): boolean {\n return this.mode !== 'picker' && this.mode !== 'secondaryInput';\n }\n\n get swatches(): string[] {\n return (\n this.args.swatches ??\n useEuiPaletteColorBlind(getEuiThemeContext(this).upstream)\n );\n }\n\n get canClear(): boolean {\n return Boolean(this.args.isClearable && this.args.color && !this.args.readOnly && !this.args.disabled);\n }\n\n /** The popover / inline root: upstream `euiColorPickerStyles.euiColorPicker`. */\n @cached\n get rootClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorPickerStyles);\n\n return `euiColorPicker ${euiClass(context, boxReset, styles.euiColorPicker)}`;\n }\n\n @cached\n get swatchesClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorPickerStyles);\n\n return `euiColorPicker__swatches ${euiClass(context, listReset, styles.euiColorPicker__swatches)}`;\n }\n\n @cached\n get alphaRangeClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorPickerStyles);\n\n // upstream puts these on the EuiRange root; here they sit on a wrapper\n // around it, so the direct-child rule is restated from the range wrapper\n return `euiColorPicker__alphaRange ${euiClass(context, styles.euiColorPicker__alphaRange, {\n '.euiRangeWrapper > .euiFormControlLayout': { flexShrink: 0 }\n })}`;\n }\n\n /**\n * Upstream's `icon={{ color, css }}`: the field icon takes the chosen\n * color (`subdued` for the empty `stopSlash` icon), and the swatch icon's\n * stroke uses the swatch border color.\n */\n get iconColor(): string {\n return cssColor(this.chromaColor) ?? 'subdued';\n }\n\n @cached\n get iconCss(): EuiCss {\n const context = getEuiThemeContext(this);\n return useEuiBorealisStyles(context, euiColorPickerStyles)\n .euiColorPicker__swatchInputIcon;\n }\n\n get panelClasses(): string {\n return 'euiColorPicker__popoverPanel';\n }\n\n get hexLabel(): string {\n return this.chromaColor ? this.chromaColor.hex().toUpperCase() : '';\n }\n\n get secondaryInputCompressed(): boolean {\n return this.args.display === 'inline' ? Boolean(this.args.compressed) : true;\n }\n\n get labels(): {\n popover: string;\n color: string;\n selected: string;\n error: string;\n alpha: string;\n open: string;\n closed: string;\n select: string;\n } {\n const t = (token: string, text: string) => this.euiI18n.lookupToken(`euiColorPicker.${token}`, text);\n\n return {\n popover: t('popoverLabel', 'Color selection dialog'),\n color: t('colorLabel', 'Color value'),\n selected: t('selectedColorLabel', 'Selected color'),\n error: t('colorErrorMessage', 'Invalid color value'),\n alpha: t('alphaLabel', 'Alpha channel (opacity) value'),\n open: t('openLabel', 'Press the escape key to close the popover'),\n closed: t('closeLabel', 'Press the down key to open a popover containing color options'),\n select: t('ariaLabel', 'Select a color')\n };\n }\n\n output(text: string): EuiColorPickerOutput {\n const color = getChromaColor(text, true);\n\n if (!color) return { rgba: RGB_FALLBACK, hex: HEX_FALLBACK, isValid: false };\n\n // without @showAlpha a transparent color is returned but invalid\n return {\n rgba: color.rgba() as RGBA,\n hex: color.hex(),\n isValid: this.args.showAlpha ? true : color.alpha() === 1\n };\n }\n\n change(text: string): void {\n const output = this.output(text);\n\n if (output.isValid) this.prevColor = output.rgba.join();\n this.args.onChange(text, output);\n }\n\n updateColorAsHsv(hsv: HSV): void {\n this.colorAsHsv = [isNaN(hsv[0]) ? this.usableHsv[0] : hsv[0], hsv[1], hsv[2]];\n }\n\n updateWithHsv(hsv: HSV): void {\n const color = chroma.hsv(...hsv).alpha(this.alphaChannel);\n const text =\n this.preferredFormat === 'rgba'\n ? (this.alphaChannel < 1 ? color.rgba() : color.rgb()).join(RGB_JOIN)\n : color.hex();\n\n this.change(text);\n this.updateColorAsHsv(hsv);\n }\n\n @action\n showColorSelector(): void {\n if (this.isColorSelectorShown || this.args.readOnly) return;\n\n this.args.onFocus?.();\n this.isColorSelectorShown = true;\n }\n\n @action\n closeColorSelector(): void {\n this.args.onBlur?.();\n this.isColorSelectorShown = false;\n }\n\n @action\n toggle(): void {\n if (this.isColorSelectorShown) this.closeColorSelector();\n else this.showColorSelector();\n }\n\n /** Closes the popover and returns to the field, to keep adjusting. */\n @action\n finalSelection(): void {\n this.input?.focus();\n next(this, this.closeColorSelector);\n }\n\n @action\n onInputClick(): void {\n this.showColorSelector();\n }\n\n @action\n onInputKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n @action\n onInputBlur(): void {\n // closing the popover calls onBlur already\n if (!this.isColorSelectorShown) this.args.onBlur?.();\n }\n\n /** Arrow down opens the popover, then moves into it. */\n @action\n onLayoutKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowDown') return;\n\n event.preventDefault();\n\n if (!this.isColorSelectorShown) {\n this.showColorSelector();\n\n return;\n }\n\n (this.mode !== 'swatch' ? this.saturation : this.firstSwatch)?.focus();\n }\n\n /** Enter in the picker confirms the color. */\n @action\n onPickerKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Enter') return;\n\n if (this.isColorSelectorShown) this.finalSelection();\n else this.showColorSelector();\n }\n\n @action\n onColorInput(event: Event): void {\n const text = (event.target as HTMLInputElement).value;\n const color = getChromaColor(text, this.args.showAlpha);\n\n this.change(text);\n if (color) this.updateColorAsHsv(hsvOf(color, this.usableHsv[0]));\n }\n\n @action\n clear(): void {\n this.change('');\n\n if (this.secondaryInputDisplay === 'none' && this.isColorSelectorShown) {\n this.closeColorSelector();\n }\n }\n\n @action\n onSaturationChange([, s, v]: HSV): void {\n this.updateWithHsv([this.usableHsv[0], s, v]);\n }\n\n @action\n onHueChange(hue: number): void {\n const [, s, v] = this.usableHsv;\n\n this.updateWithHsv([hue, s, v]);\n }\n\n @action\n onSwatchClick(swatch: string): void {\n const color = getChromaColor(swatch, this.args.showAlpha);\n\n this.change(swatch);\n if (color) this.updateColorAsHsv(hsvOf(color, this.usableHsv[0]));\n this.finalSelection();\n }\n\n @action\n onAlphaChange(event: Event, isValid: boolean): void {\n const value = (event.target as HTMLInputElement).value;\n\n this.alphaInput = value;\n\n if (!isValid) return;\n\n const alpha = parseInt(value, 10) / 100;\n const color = this.chromaColor ? this.chromaColor.alpha(alpha) : null;\n const hex = color ? color.hex() : HEX_FALLBACK;\n const rgba = (color ? color.rgba() : RGB_FALLBACK) as RGBA;\n const text =\n this.preferredFormat === 'rgba'\n ? (alpha < 1 ? rgba : rgba.slice(0, 3)).join(RGB_JOIN)\n : hex;\n\n this.alphaInput = undefined;\n this.args.onChange(text, { hex, rgba, isValid: Boolean(color) });\n }\n\n registerInput = (element: HTMLInputElement | null): void => {\n this.input = element ?? undefined;\n };\n\n registerSaturation = modifier((element: HTMLElement) => {\n this.saturation = element;\n });\n\n registerFirstSwatch = modifier((element: HTMLElement, [index]: [number]) => {\n if (index === 0) this.firstSwatch = element;\n });\n\n <template>\n {{#if (isInline @display)}}\n <div class={{this.rootClasses}} ...attributes>\n <Composite\n @picker={{this}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n @showAlpha={{@showAlpha}}\n />\n </div>\n {{else}}\n <EuiPopover\n class=\"euiColorPicker__popoverAnchor\"\n @isOpen={{this.isColorSelectorShown}}\n @closePopover={{this.finalSelection}}\n @panelClassName={{this.panelClasses}}\n @display={{if (has-block \"button\") \"inlineBlock\" \"block\"}}\n @attachToAnchor={{if (has-block \"button\") false true}}\n @anchorPosition=\"downLeft\"\n @panelPaddingSize=\"s\"\n @ownFocus={{false}}\n @initialFocus={{false}}\n @ariaLabel={{this.labels.popover}}\n @zIndex={{@popoverZIndex}}\n >\n <:button>\n {{#if (has-block \"button\")}}\n {{yield this.toggle to=\"button\"}}\n {{else}}\n <EuiFormControlLayout\n @icon={{if this.chromaColor \"swatchInput\" \"stopSlash\"}}\n @clear={{if this.canClear this.clear}}\n @readOnly={{@readOnly}}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n @isInvalid={{@isInvalid}}\n @isDisabled={{@disabled}}\n @isDropdown={{true}}\n @isPrependProvided={{has-block \"prepend\"}}\n @isAppendProvided={{has-block \"append\"}}\n @iconColor={{this.iconColor}}\n @iconCss={{this.iconCss}}\n {{on \"keydown\" this.onLayoutKeyDown}}\n >\n <:prepend as |className|>{{yield className this.id to=\"prepend\"}}</:prepend>\n <:field>\n <EuiFieldText\n class=\"euiColorPicker__input\"\n data-test-subj=\"euiColorPickerAnchor\"\n id={{this.id}}\n autocomplete=\"off\"\n aria-label={{unless @id this.labels.select}}\n aria-describedby={{if this.isColorSelectorShown this.openLabelId this.closeLabelId}}\n @controlOnly={{true}}\n @value={{this.inputValue}}\n @placeholder={{this.placeholder}}\n @isInvalid={{@isInvalid}}\n @compressed={{@compressed}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n @fullWidth={{@fullWidth}}\n @inputRef={{this.registerInput}}\n {{on \"click\" this.onInputClick}}\n {{on \"keydown\" this.onInputKeyDown}}\n {{on \"blur\" this.onInputBlur}}\n {{on \"input\" this.onColorInput}}\n />\n <EuiScreenReaderOnly>\n <span>\n <span\n id={{this.openLabelId}}\n aria-hidden={{if this.isColorSelectorShown \"false\" \"true\"}}\n >{{this.labels.open}}</span>\n <span\n id={{this.closeLabelId}}\n aria-hidden={{if this.isColorSelectorShown \"true\" \"false\"}}\n >{{this.labels.closed}}</span>\n </span>\n </EuiScreenReaderOnly>\n </:field>\n <:append as |className|>{{yield className this.id to=\"append\"}}</:append>\n </EuiFormControlLayout>\n {{/if}}\n </:button>\n <:content>\n <div\n class={{this.rootClasses}}\n data-test-subj=\"euiColorPickerPopover\"\n ...attributes\n >\n <Composite\n @picker={{this}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n @showAlpha={{@showAlpha}}\n />\n </div>\n </:content>\n </EuiPopover>\n {{/if}}\n </template>\n}\n\ninterface CompositeSignature {\n Args: {\n picker: EuiColorPicker;\n isInvalid?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n showAlpha?: boolean;\n };\n}\n\n/**\n * The saturation square, hue slider, swatches and secondary input: the\n * flex column children of the root (upstream spaces them with `gap`).\n */\nclass Composite extends Component<CompositeSignature> {\n get picker(): EuiColorPicker {\n return this.args.picker;\n }\n\n <template>\n {{#if (eq2 this.picker.secondaryInputDisplay \"top\")}}\n <SecondaryInput\n @picker={{this.picker}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n />\n {{/if}}\n {{#if this.picker.showPicker}}\n <EuiSaturation\n @id={{this.picker.id}}\n @color={{this.picker.usableHsv}}\n @hex={{this.picker.hex}}\n @onChange={{this.picker.onSaturationChange}}\n {{this.picker.registerSaturation}}\n {{on \"keydown\" this.picker.onPickerKeyDown}}\n />\n <EuiHue\n @id={{this.picker.id}}\n @hue={{hueOf this.picker.usableHsv}}\n @hex={{this.picker.hex}}\n @onChange={{this.picker.onHueChange}}\n {{on \"keydown\" this.picker.onPickerKeyDown}}\n />\n <EuiScreenReaderOnly>\n <p aria-live=\"polite\" aria-atomic=\"true\">{{this.picker.labels.selected}}: {{this.picker.hexLabel}}</p>\n </EuiScreenReaderOnly>\n {{/if}}\n {{#if this.picker.showSwatches}}\n <ul class={{this.picker.swatchesClasses}}>\n {{#each this.picker.swatches as |swatch index|}}\n <li>\n <EuiColorPickerSwatch\n class=\"euiColorPicker__swatchSelect\"\n @color={{swatch}}\n {{on \"click\" (fn this.picker.onSwatchClick swatch)}}\n {{this.picker.registerFirstSwatch index}}\n />\n </li>\n {{/each}}\n </ul>\n {{/if}}\n {{#if (eq2 this.picker.secondaryInputDisplay \"bottom\")}}\n <SecondaryInput\n @picker={{this.picker}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n />\n {{/if}}\n {{#if @showAlpha}}\n <div class={{this.picker.alphaRangeClasses}}>\n <EuiRange\n data-test-subj=\"euiColorPickerAlpha\"\n aria-label={{this.picker.labels.alpha}}\n @compressed={{true}}\n @showInput={{true}}\n @min={{0}}\n @max={{100}}\n @value={{this.picker.alphaRangeValue}}\n @onChange={{this.picker.onAlphaChange}}\n >\n <:append><EuiFormLabel>%</EuiFormLabel></:append>\n </EuiRange>\n </div>\n {{/if}}\n </template>\n}\n\ninterface SecondaryInputSignature {\n Args: {\n picker: EuiColorPicker;\n isInvalid?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n };\n}\n\nclass SecondaryInput extends Component<SecondaryInputSignature> {\n get picker(): EuiColorPicker {\n return this.args.picker;\n }\n\n <template>\n <EuiFormRow\n @isInvalid={{@isInvalid}}\n @error={{if @isInvalid this.picker.labels.error}}\n >\n <EuiFieldText\n data-test-subj=\"euiColorPickerInput_{{this.picker.secondaryInputDisplay}}\"\n autocomplete=\"off\"\n aria-label={{this.picker.labels.color}}\n @compressed={{this.picker.secondaryInputCompressed}}\n @value={{this.picker.inputValue}}\n @placeholder={{this.picker.placeholder}}\n @clear={{if this.picker.canClear this.picker.clear}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n {{on \"input\" this.picker.onColorInput}}\n />\n </EuiFormRow>\n </template>\n}\n\nfunction hueOf(hsv: HSV): number {\n return hsv[0];\n}\n\nfunction isInline(display?: string): boolean {\n return display === 'inline';\n}\n\nfunction cssColor(color: ReturnType<typeof getChromaColor>): string | undefined {\n return color ? color.css() : undefined;\n}\n\nfunction eq2(a: unknown, b: unknown): boolean {\n return a === b;\n}\n"],"names":["hsvOf","color","fallbackHue","HSV_FALLBACK","h","s","v","hsv","isNaN","EuiColorPicker","Component","g","prototype","service","i","tracked","ownId","randomId","openLabelId","closeLabelId","prevColor","input","saturation","firstSwatch","constructor","owner","args","getChromaColor","showAlpha","rgba","join","colorAsHsv","id","mode","secondaryInputDisplay","chromaColor","preferredFormat","format","parsed","parseColor","alphaChannel","alpha","alphaRangeValue","Number","alphaInput","toFixed","usableHsv","hex","inputValue","toUpperCase","HEX_FALLBACK","placeholder","undefined","euiI18n","lookupToken","showPicker","showSwatches","swatches","useEuiPaletteColorBlind","getEuiThemeContext","upstream","canClear","Boolean","isClearable","readOnly","disabled","rootClasses","context","styles","useEuiBorealisStyles","euiColorPickerStyles","euiClass","boxReset","euiColorPicker","n","cached","swatchesClasses","listReset","euiColorPicker__swatches","alphaRangeClasses","euiColorPicker__alphaRange","flexShrink","iconColor","cssColor","iconCss","euiColorPicker__swatchInputIcon","panelClasses","hexLabel","secondaryInputCompressed","display","compressed","labels","t","token","text","popover","selected","error","open","closed","select","output","RGB_FALLBACK","isValid","change","onChange","updateColorAsHsv","updateWithHsv","chroma","rgb","RGB_JOIN","showColorSelector","isColorSelectorShown","onFocus","action","closeColorSelector","onBlur","toggle","finalSelection","focus","next","onInputClick","onInputKeyDown","event","key","preventDefault","onInputBlur","onLayoutKeyDown","onPickerKeyDown","onColorInput","target","value","clear","onSaturationChange","onHueChange","hue","onSwatchClick","swatch","onAlphaChange","parseInt","slice","registerInput","element","registerSaturation","modifier","registerFirstSwatch","index","setComponentTemplate","precompileTemplate","strictMode","scope","isInline","Composite","EuiPopover","EuiFormControlLayout","on","EuiFieldText","EuiScreenReaderOnly","picker","eq2","SecondaryInput","EuiSaturation","EuiHue","hueOf","EuiColorPickerSwatch","fn","EuiRange","EuiFormLabel","EuiFormRow","css","a","b"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyHA,SAASA,MAAMC,KAAwC,EAAEC,WAAA,GAAc,CAAC,EAAG;AACzE,EAAA,IAAI,CAACD,OAAO,OAAOE,YAAA;AAEnB,EAAA,MAAM,CAACC,CAAA,EAAGC,CAAA,EAAGC,CAAA,CAAE,GAAGL,MAAMM,GAAG,EAAA;AAE3B;AACA,EAAA,OAAO,CAACC,KAAA,CAAMJ,KAAKF,WAAA,GAAcE,CAAA,EAAGC,CAAA,EAAGC,CAAA,CAAE;AAC3C;AAEe,MAAMG,uBAAuBC,SAAA,CAAU;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,SAAA,EAAA,CACnDC,OAAA,CAAA,CAAA;AAAA;EAAA,QAAA,IAAAC,CAAA,CAAA,IAAA,EAAA,SAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,sBAAA,EAAA,CAEAG,OAAA,CAAA,EAAA,YAAA;AAAA,MAAA,OAA+B,KAAA;AAAA,IAAA,CAAA,CAAA;AAAA;EAAA,qBAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,sBAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CAC/BG,OAAA,CAAA,CAAA;AAAA;EAAA,WAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAA,MAAA;AAAA,EAAA;IAAAH,CAAA,CAAA,IAAA,CAAAC,SAAA,EAAA,YAAA,EAAA,CACAG,OAAA,CAAA,CAAA;AAAA;EAAA,WAAA,IAAAD,CAAA,CAAA,IAAA,EAAA,YAAA,CAAA,EAAA,MAAA;AAEDE,EAAAA,KAAA,GAAQ,CAAA,eAAA,EAAkBC,QAAA,EAAA,CAAA,CAAY;AACtCC,EAAAA,WAAA,GAAc,CAAA,EAAG,IAAI,CAACF,KAAK,CAAA,UAAA,CAAY;AACvCG,EAAAA,YAAA,GAAe,CAAA,EAAG,IAAI,CAACH,KAAK,CAAA,WAAA,CAAa;EACzCI,SAAA;EACAC,KAAA;EACAC,UAAA;EACAC,WAAA;AAEAC,EAAAA,WAAAA,CAAYC,KAAY,EAAEC,IAAqC,EAAE;AAC/D,IAAA,KAAK,CAACD,KAAA,EAAOC,IAAA,CAAA;IAEb,MAAMzB,QAAQ0B,cAAA,CAAeD,IAAA,CAAKzB,KAAK,EAAEyB,KAAKE,SAAS,CAAA;AAEvD,IAAA,IAAI,CAACR,SAAS,GAAGnB,KAAA,GAAQA,MAAM4B,IAAI,EAAA,CAAGC,IAAI,EAAA,GAAK,IAAA;IAC/C,IAAI,CAACC,UAAU,GAAG9B,KAAA,GAAQD,MAAMC,KAAA,CAAA,GAASE,YAAA;AAC3C,EAAA;EAEA,IAAI6B,EAAAA,GAAa;IACf,OAAO,IAAI,CAACN,IAAI,CAACM,EAAE,IAAI,IAAI,CAAChB,KAAK;AACnC,EAAA;EAEA,IAAIiB,IAAAA,GAAe;AACjB,IAAA,OAAO,IAAI,CAACP,IAAI,CAACO,IAAI,IAAI,SAAA;AAC3B,EAAA;EAEA,IAAIC,qBAAAA,GAAgC;AAClC,IAAA,OAAO,IAAI,CAACR,IAAI,CAACQ,qBAAqB,IAAI,MAAA;AAC5C,EAAA;EAEA,IAAIC,WAAAA,GAAiD;AACnD,IAAA,OAAOR,cAAA,CAAe,IAAI,CAACD,IAAI,CAACzB,KAAK,EAAE,IAAI,CAACyB,IAAI,CAACE,SAAS,CAAA;AAC5D,EAAA;EAEA,IAAIQ,eAAAA,GAAkC;IACpC,IAAI,IAAI,CAACV,IAAI,CAACW,MAAM,EAAE,OAAO,IAAI,CAACX,IAAI,CAACW,MAAM;IAE7C,MAAMC,SAASC,UAAA,CAAW,IAAI,CAACb,IAAI,CAACzB,KAAK,CAAA;IAEzC,OAAOqC,MAAA,KAAW,IAAA,IAAQ,OAAOA,MAAA,KAAW,WAAW,MAAA,GAAS,KAAA;AAClE,EAAA;EAEA,IAAIE,YAAAA,GAAuB;AACzB,IAAA,OAAO,IAAI,CAACL,WAAW,GAAG,IAAI,CAACA,WAAW,CAACM,KAAK,EAAA,GAAK,CAAA;AACvD,EAAA;EAEA,IAAIC,eAAAA,GAA0B;AAC5B,IAAA,OAAOC,MAAA,CAAO,IAAI,CAACC,UAAU,IAAI,CAAC,IAAI,CAACJ,YAAY,GAAG,GAAG,EAAEK,OAAO,EAAA,CAAA;AACpE,EAAA;AAEA;EACA,IAAIC,SAAAA,GAAiB;AACnB,IAAA,MAAM7C,KAAA,GAAQ,IAAI,CAACkC,WAAW;AAE9B,IAAA,IAAIlC,KAAA,IAASA,MAAM4B,IAAI,EAAA,CAAGC,IAAI,EAAA,KAAO,IAAI,CAACV,SAAS,EAAE;MACnD,OAAOpB,MAAMC,KAAA,EAAO,IAAI,CAAC8B,UAAU,CAAC,CAAA,CAAE,CAAA;AACxC,IAAA;IAEA,OAAO,IAAI,CAACA,UAAU;AACxB,EAAA;EAEA,IAAIgB,GAAAA,GAA0B;AAC5B,IAAA,OAAO,IAAI,CAACZ,WAAW,EAAEY,GAAA,EAAA;AAC3B,EAAA;EAEA,IAAIC,UAAAA,GAAqB;AACvB,IAAA,OAAO,IAAI,CAACtB,IAAI,CAACzB,KAAK,GAAG,IAAI,CAACyB,IAAI,CAACzB,KAAK,CAACgD,WAAW,EAAA,GAAKC,YAAA;AAC3D,EAAA;EAEA,IAAIC,WAAAA,GAAkC;AACpC,IAAA,IAAI,IAAI,CAACzB,IAAI,CAACzB,KAAK,EAAE,OAAOmD,SAAA;AAE5B,IAAA,OAAO,IAAI,CAAC1B,IAAI,CAACyB,WAAW,IAAI,IAAI,CAACE,OAAO,CAACC,WAAW,CAAC,4BAAA,EAA8B,aAAA,CAAA;AACzF,EAAA;EAEA,IAAIC,UAAAA,GAAsB;IACxB,OAAO,IAAI,CAACtB,IAAI,KAAK,YAAY,IAAI,CAACA,IAAI,KAAK,gBAAA;AACjD,EAAA;EAEA,IAAIuB,YAAAA,GAAwB;IAC1B,OAAO,IAAI,CAACvB,IAAI,KAAK,YAAY,IAAI,CAACA,IAAI,KAAK,gBAAA;AACjD,EAAA;EAEA,IAAIwB,QAAAA,GAAqB;AACvB,IAAA,OACE,IAAI,CAAC/B,IAAI,CAAC+B,QAAQ,IAClBC,uBAAA,CAAwBC,kBAAA,CAAmB,IAAI,CAAA,CAAEC,QAAQ,CAC3D;AACF,EAAA;EAEA,IAAIC,QAAAA,GAAoB;IACtB,OAAOC,OAAA,CAAQ,IAAI,CAACpC,IAAI,CAACqC,WAAW,IAAI,IAAI,CAACrC,IAAI,CAACzB,KAAK,IAAI,CAAC,IAAI,CAACyB,IAAI,CAACsC,QAAQ,IAAI,CAAC,IAAI,CAACtC,IAAI,CAACuC,QAAQ,CAAA;AACvG,EAAA;AAEA;EACA,IACIC,WAAAA,GAAsB;AACxB,IAAA,MAAMC,OAAA,GAAUR,mBAAmB,IAAI,CAAA;AACvC,IAAA,MAAMS,MAAA,GAASC,qBAAqBF,OAAA,EAASG,oBAAA,CAAA;IAE7C,OAAO,CAAA,eAAA,EAAkBC,QAAA,CAASJ,SAASK,QAAA,EAAUJ,MAAA,CAAOK,cAAc,CAAA,CAAA,CAAG;AAC/E,EAAA;AAAA,EAAA;IAAAC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,aAAA,EAAA,CANC+D,MAAA,CAAA,CAAA;AAAA;EAQD,IACIC,eAAAA,GAA0B;AAC5B,IAAA,MAAMT,OAAA,GAAUR,mBAAmB,IAAI,CAAA;AACvC,IAAA,MAAMS,MAAA,GAASC,qBAAqBF,OAAA,EAASG,oBAAA,CAAA;IAE7C,OAAO,CAAA,yBAAA,EAA4BC,QAAA,CAASJ,SAASU,SAAA,EAAWT,MAAA,CAAOU,wBAAwB,CAAA,CAAA,CAAG;AACpG,EAAA;AAAA,EAAA;IAAAJ,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,iBAAA,EAAA,CANC+D,MAAA,CAAA,CAAA;AAAA;EAQD,IACII,iBAAAA,GAA4B;AAC9B,IAAA,MAAMZ,OAAA,GAAUR,mBAAmB,IAAI,CAAA;AACvC,IAAA,MAAMS,MAAA,GAASC,qBAAqBF,OAAA,EAASG,oBAAA,CAAA;AAE7C;AACA;IACA,OAAO,CAAA,2BAAA,EAA8BC,SAASJ,OAAA,EAASC,MAAA,CAAOY,0BAA0B,EAAE;AACxF,MAAA,0CAAA,EAA4C;AAAEC,QAAAA,UAAA,EAAY;AAAE;AAC9D,KAAA,CAAA,CAAA,CAAI;AACN,EAAA;AAEA;;;;;AAAA,EAAA;IAAAP,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,mBAAA,EAAA,CAZC+D,MAAA,CAAA,CAAA;AAAA;EAiBD,IAAIO,SAAAA,GAAoB;AACtB,IAAA,OAAOC,QAAA,CAAS,IAAI,CAAChD,WAAW,CAAA,IAAK,SAAA;AACvC,EAAA;EAEA,IACIiD,UAAkB;AACpB,IAAA,MAAMjB,OAAA,GAAUR,mBAAmB,IAAI,CAAA;AACvC,IAAA,OAAOU,oBAAA,CAAqBF,OAAA,EAASG,oBAAA,CAAA,CAClCe,+BAA+B;AACpC,EAAA;AAAA,EAAA;IAAAX,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,SAAA,EAAA,CALC+D,MAAA,CAAA,CAAA;AAAA;EAOD,IAAIW,YAAAA,GAAuB;AACzB,IAAA,OAAO,8BAAA;AACT,EAAA;EAEA,IAAIC,QAAAA,GAAmB;AACrB,IAAA,OAAO,IAAI,CAACpD,WAAW,GAAG,IAAI,CAACA,WAAW,CAACY,GAAG,EAAA,CAAGE,WAAW,EAAA,GAAK,EAAA;AACnE,EAAA;EAEA,IAAIuC,wBAAAA,GAAoC;AACtC,IAAA,OAAO,IAAI,CAAC9D,IAAI,CAAC+D,OAAO,KAAK,QAAA,GAAW3B,OAAA,CAAQ,IAAI,CAACpC,IAAI,CAACgE,UAAU,CAAA,GAAI,IAAA;AAC1E,EAAA;EAEA,IAAIC,MAAAA,GASF;AACA,IAAA,MAAMC,IAAIA,CAACC,KAAa,EAAEC,IAAY,KAAK,IAAI,CAACzC,OAAO,CAACC,WAAW,CAAC,CAAA,eAAA,EAAkBuC,OAAO,EAAEC,IAAA,CAAA;IAE/F,OAAO;AACLC,MAAAA,OAAA,EAASH,EAAE,cAAA,EAAgB,wBAAA,CAAA;AAC3B3F,MAAAA,KAAA,EAAO2F,EAAE,YAAA,EAAc,aAAA,CAAA;AACvBI,MAAAA,QAAA,EAAUJ,EAAE,oBAAA,EAAsB,gBAAA,CAAA;AAClCK,MAAAA,KAAA,EAAOL,EAAE,mBAAA,EAAqB,qBAAA,CAAA;AAC9BnD,MAAAA,KAAA,EAAOmD,EAAE,YAAA,EAAc,+BAAA,CAAA;AACvBM,MAAAA,IAAA,EAAMN,EAAE,WAAA,EAAa,2CAAA,CAAA;AACrBO,MAAAA,MAAA,EAAQP,EAAE,YAAA,EAAc,+DAAA,CAAA;AACxBQ,MAAAA,MAAA,EAAQR,EAAE,WAAA,EAAa,gBAAA;KACzB;AACF,EAAA;EAEAS,MAAAA,CAAOP,IAAY,EAAwB;AACzC,IAAA,MAAM7F,KAAA,GAAQ0B,eAAemE,IAAA,EAAM,IAAA,CAAA;IAEnC,IAAI,CAAC7F,OAAO,OAAO;AAAE4B,MAAAA,IAAA,EAAMyE,YAAA;AAAcvD,MAAAA,GAAA,EAAKG,YAAA;AAAcqD,MAAAA,OAAA,EAAS;KAAM;AAE3E;IACA,OAAO;AACL1E,MAAAA,IAAA,EAAM5B,KAAA,CAAM4B,IAAI,EAAM;AACtBkB,MAAAA,GAAA,EAAK9C,MAAM8C,GAAG,EAAA;AACdwD,MAAAA,OAAA,EAAS,IAAI,CAAC7E,IAAI,CAACE,SAAS,GAAG,IAAA,GAAO3B,KAAA,CAAMwC,KAAK,EAAA,KAAO;KAC1D;AACF,EAAA;EAEA+D,MAAAA,CAAOV,IAAY,EAAQ;AACzB,IAAA,MAAMO,MAAA,GAAS,IAAI,CAACA,MAAM,CAACP,IAAA,CAAA;AAE3B,IAAA,IAAIO,MAAA,CAAOE,OAAO,EAAE,IAAI,CAACnF,SAAS,GAAGiF,MAAA,CAAOxE,IAAI,CAACC,IAAI,EAAA;IACrD,IAAI,CAACJ,IAAI,CAAC+E,QAAQ,CAACX,IAAA,EAAMO,MAAA,CAAA;AAC3B,EAAA;EAEAK,gBAAAA,CAAiBnG,GAAQ,EAAQ;AAC/B,IAAA,IAAI,CAACwB,UAAU,GAAG,CAACvB,KAAA,CAAMD,GAAG,CAAC,CAAA,CAAE,CAAA,GAAI,IAAI,CAACuC,SAAS,CAAC,CAAA,CAAE,GAAGvC,GAAG,CAAC,CAAA,CAAE,EAAEA,GAAG,CAAC,CAAA,CAAE,EAAEA,GAAG,CAAC,CAAA,CAAE,CAAC;AAChF,EAAA;EAEAoG,aAAAA,CAAcpG,GAAQ,EAAQ;AAC5B,IAAA,MAAMN,KAAA,GAAQ2G,OAAOrG,GAAG,CAAA,GAAIA,KAAKkC,KAAK,CAAC,IAAI,CAACD,YAAY,CAAA;AACxD,IAAA,MAAMsD,IAAA,GACJ,IAAI,CAAC1D,eAAe,KAAK,MAAA,GACrB,CAAC,IAAI,CAACI,YAAY,GAAG,IAAIvC,KAAA,CAAM4B,IAAI,EAAA,GAAK5B,KAAA,CAAM4G,GAAG,EAAE,EAAE/E,IAAI,CAACgF,QAAA,CAAA,GAC1D7G,KAAA,CAAM8C,GAAG,EAAA;AAEf,IAAA,IAAI,CAACyD,MAAM,CAACV,IAAA,CAAA;AACZ,IAAA,IAAI,CAACY,gBAAgB,CAACnG,GAAA,CAAA;AACxB,EAAA;AAGAwG,EAAAA,iBAAAA,GAA0B;IACxB,IAAI,IAAI,CAACC,oBAAoB,IAAI,IAAI,CAACtF,IAAI,CAACsC,QAAQ,EAAE;AAErD,IAAA,IAAI,CAACtC,IAAI,CAACuF,OAAO,IAAA;IACjB,IAAI,CAACD,oBAAoB,GAAG,IAAA;AAC9B,EAAA;AAAA,EAAA;IAAAtC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,mBAAA,EAAA,CANCsG,MAAA,CAAA,CAAA;AAAA;AASDC,EAAAA,kBAAAA,GAA2B;AACzB,IAAA,IAAI,CAACzF,IAAI,CAAC0F,MAAM,IAAA;IAChB,IAAI,CAACJ,oBAAoB,GAAG,KAAA;AAC9B,EAAA;AAAA,EAAA;IAAAtC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,oBAAA,EAAA,CAJCsG,MAAA,CAAA,CAAA;AAAA;AAODG,EAAAA,MAAAA,GAAe;AACb,IAAA,IAAI,IAAI,CAACL,oBAAoB,EAAE,IAAI,CAACG,kBAAkB,EAAA,CAAA,KACjD,IAAI,CAACJ,iBAAiB,EAAA;AAC7B,EAAA;AAEA;AAAA,EAAA;IAAArC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,QAAA,EAAA,CANCsG,MAAA,CAAA,CAAA;AAAA;AAQDI,EAAAA,cAAAA,GAAuB;AACrB,IAAA,IAAI,CAACjG,KAAK,EAAEkG,KAAA,EAAA;AACZC,IAAAA,IAAA,CAAK,IAAI,EAAE,IAAI,CAACL,kBAAkB,CAAA;AACpC,EAAA;AAAA,EAAA;IAAAzC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,gBAAA,EAAA,CAJCsG,MAAA,CAAA,CAAA;AAAA;AAODO,EAAAA,YAAAA,GAAqB;IACnB,IAAI,CAACV,iBAAiB,EAAA;AACxB,EAAA;AAAA,EAAA;IAAArC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,cAAA,EAAA,CAHCsG,MAAA,CAAA,CAAA;AAAA;EAMDQ,cAAAA,CAAeC,KAAoB,EAAQ;AACzC,IAAA,IAAIA,KAAA,CAAMC,GAAG,KAAK,OAAA,EAAS;MACzBD,KAAA,CAAME,cAAc,EAAA;MACpB,IAAI,CAACR,MAAM,EAAA;AACb,IAAA;AACF,EAAA;AAAA,EAAA;IAAA3C,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,gBAAA,EAAA,CANCsG,MAAA,CAAA,CAAA;AAAA;AASDY,EAAAA,WAAAA,GAAoB;AAClB;IACA,IAAI,CAAC,IAAI,CAACd,oBAAoB,EAAE,IAAI,CAACtF,IAAI,CAAC0F,MAAM,IAAA;AAClD,EAAA;AAEA;AAAA,EAAA;IAAA1C,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,aAAA,EAAA,CANCsG,MAAA,CAAA,CAAA;AAAA;EAQDa,eAAAA,CAAgBJ,KAAoB,EAAQ;AAC1C,IAAA,IAAIA,KAAA,CAAMC,GAAG,KAAK,WAAA,EAAa;IAE/BD,KAAA,CAAME,cAAc,EAAA;AAEpB,IAAA,IAAI,CAAC,IAAI,CAACb,oBAAoB,EAAE;MAC9B,IAAI,CAACD,iBAAiB,EAAA;AAEtB,MAAA;AACF,IAAA;AAEA,IAAA,CAAC,IAAI,CAAC9E,IAAI,KAAK,QAAA,GAAW,IAAI,CAACX,UAAU,GAAG,IAAI,CAACC,WAAW,GAAGgG,KAAA,EAAA;AACjE,EAAA;AAEA;AAAA,EAAA;IAAA7C,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,iBAAA,EAAA,CAfCsG,MAAA,CAAA,CAAA;AAAA;EAiBDc,eAAAA,CAAgBL,KAAoB,EAAQ;AAC1C,IAAA,IAAIA,KAAA,CAAMC,GAAG,KAAK,OAAA,EAAS;AAE3B,IAAA,IAAI,IAAI,CAACZ,oBAAoB,EAAE,IAAI,CAACM,cAAc,EAAA,CAAA,KAC7C,IAAI,CAACP,iBAAiB,EAAA;AAC7B,EAAA;AAAA,EAAA;IAAArC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,iBAAA,EAAA,CANCsG,MAAA,CAAA,CAAA;AAAA;EASDe,YAAAA,CAAaN,KAAY,EAAQ;AAC/B,IAAA,MAAM7B,OAAQ6B,KAAA,CAAMO,MAAM,CAAsBC,KAAK;IACrD,MAAMlI,QAAQ0B,cAAA,CAAemE,IAAA,EAAM,IAAI,CAACpE,IAAI,CAACE,SAAS,CAAA;AAEtD,IAAA,IAAI,CAAC4E,MAAM,CAACV,IAAA,CAAA;AACZ,IAAA,IAAI7F,KAAA,EAAO,IAAI,CAACyG,gBAAgB,CAAC1G,KAAA,CAAMC,KAAA,EAAO,IAAI,CAAC6C,SAAS,CAAC,CAAA,CAAE,CAAA,CAAA;AACjE,EAAA;AAAA,EAAA;IAAA4B,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,cAAA,EAAA,CAPCsG,MAAA,CAAA,CAAA;AAAA;AAUDkB,EAAAA,KAAAA,GAAc;AACZ,IAAA,IAAI,CAAC5B,MAAM,CAAC,EAAA,CAAA;IAEZ,IAAI,IAAI,CAACtE,qBAAqB,KAAK,UAAU,IAAI,CAAC8E,oBAAoB,EAAE;MACtE,IAAI,CAACG,kBAAkB,EAAA;AACzB,IAAA;AACF,EAAA;AAAA,EAAA;IAAAzC,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,OAAA,EAAA,CAPCsG,MAAA,CAAA,CAAA;AAAA;AAUDmB,EAAAA,kBAAAA,CAAmB,GAAGhI,CAAA,EAAGC,CAAA,CAAO,EAAQ;AACtC,IAAA,IAAI,CAACqG,aAAa,CAAC,CAAC,IAAI,CAAC7D,SAAS,CAAC,CAAA,CAAE,EAAEzC,CAAA,EAAGC,CAAA,CAAE,CAAA;AAC9C,EAAA;AAAA,EAAA;IAAAoE,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,oBAAA,EAAA,CAHCsG,MAAA,CAAA,CAAA;AAAA;EAMDoB,WAAAA,CAAYC,GAAW,EAAQ;IAC7B,MAAM,GAAGlI,CAAA,EAAGC,CAAA,CAAE,GAAG,IAAI,CAACwC,SAAS;IAE/B,IAAI,CAAC6D,aAAa,CAAC,CAAC4B,GAAA,EAAKlI,CAAA,EAAGC,CAAA,CAAE,CAAA;AAChC,EAAA;AAAA,EAAA;IAAAoE,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,aAAA,EAAA,CALCsG,MAAA,CAAA,CAAA;AAAA;EAQDsB,aAAAA,CAAcC,MAAc,EAAQ;IAClC,MAAMxI,QAAQ0B,cAAA,CAAe8G,MAAA,EAAQ,IAAI,CAAC/G,IAAI,CAACE,SAAS,CAAA;AAExD,IAAA,IAAI,CAAC4E,MAAM,CAACiC,MAAA,CAAA;AACZ,IAAA,IAAIxI,KAAA,EAAO,IAAI,CAACyG,gBAAgB,CAAC1G,KAAA,CAAMC,KAAA,EAAO,IAAI,CAAC6C,SAAS,CAAC,CAAA,CAAE,CAAA,CAAA;IAC/D,IAAI,CAACwE,cAAc,EAAA;AACrB,EAAA;AAAA,EAAA;IAAA5C,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,eAAA,EAAA,CAPCsG,MAAA,CAAA,CAAA;AAAA;AAUDwB,EAAAA,aAAAA,CAAcf,KAAY,EAAEpB,OAAgB,EAAQ;AAClD,IAAA,MAAM4B,QAASR,KAAA,CAAMO,MAAM,CAAsBC,KAAK;IAEtD,IAAI,CAACvF,UAAU,GAAGuF,KAAA;IAElB,IAAI,CAAC5B,OAAA,EAAS;IAEd,MAAM9D,KAAA,GAAQkG,QAAA,CAASR,KAAA,EAAO,EAAA,CAAA,GAAM,GAAA;AACpC,IAAA,MAAMlI,KAAA,GAAQ,IAAI,CAACkC,WAAW,GAAG,IAAI,CAACA,WAAW,CAACM,KAAK,CAACA,KAAA,CAAA,GAAS,IAAA;IACjE,MAAMM,GAAA,GAAM9C,KAAA,GAAQA,KAAA,CAAM8C,GAAG,EAAA,GAAKG,YAAA;IAClC,MAAMrB,OAAQ5B,KAAA,GAAQA,MAAM4B,IAAI,EAAA,GAAKyE,YAAiB;AACtD,IAAA,MAAMR,OACJ,IAAI,CAAC1D,eAAe,KAAK,MAAA,GACrB,CAACK,KAAA,GAAQ,CAAA,GAAIZ,IAAA,GAAOA,IAAA,CAAK+G,KAAK,CAAC,CAAA,EAAG,EAAE,EAAE9G,IAAI,CAACgF,QAAA,CAAA,GAC3C/D,GAAA;IAEN,IAAI,CAACH,UAAU,GAAGQ,SAAA;AAClB,IAAA,IAAI,CAAC1B,IAAI,CAAC+E,QAAQ,CAACX,IAAA,EAAM;MAAE/C,GAAA;MAAKlB,IAAA;MAAM0E,OAAA,EAASzC,OAAA,CAAQ7D,KAAA;AAAO,KAAA,CAAA;AAChE,EAAA;AAAA,EAAA;IAAAyE,CAAA,CAAA,IAAA,CAAA9D,SAAA,EAAA,eAAA,EAAA,CAnBCsG,MAAA,CAAA,CAAA;AAAA;EAqBD2B,aAAA,GAAiBC,OAAgC,IAAO;AACtD,IAAA,IAAI,CAACzH,KAAK,GAAGyH,OAAA,IAAW1F,SAAA;EAC1B,CAAA;AAEA2F,EAAAA,kBAAA,GAAqBC,QAAA,CAAUF,OAAS,IAAA;IACtC,IAAI,CAACxH,UAAU,GAAGwH,OAAA;AACpB,EAAA,CAAA,CAAA;EAEAG,mBAAA,GAAsBD,SAAS,CAACF,SAAsB,CAACI,KAAA,CAAgB,KAAA;IACrE,IAAIA,KAAA,KAAU,CAAA,EAAG,IAAI,CAAC3H,WAAW,GAAGuH,OAAA;AACtC,EAAA,CAAA,CAAA;AAEA,EAAA;IAAAK,oBAAA,CAAAC,kBAAA,CAAA,q3FAAA,EAsGA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAC,QAAA;QAAAC,SAAA;oBAAAC,mBAAA;QAAAC,oBAAA;QAAAC,EAAA;QAAAC,YAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAYA;;;;AAIA,MAAML,kBAAkB9I,SAAA,CAAU;EAChC,IAAIoJ,SAAyB;AAC3B,IAAA,OAAO,IAAI,CAACpI,IAAI,CAACoI,MAAM;AACzB,EAAA;AAEA,EAAA;IAAAX,oBAAA,CAAAC,kBAAA,CAAA,6uDAAA,EAmEA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAS,GAAA;QAAAC,cAAA;QAAAC,aAAA;QAAAN,EAAA;QAAAO,MAAA;QAAAC,KAAA;QAAAN,mBAAA;QAAAO,oBAAA;QAAAC,EAAA;kBAAAC,iBAAA;AAAAC,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAWA,MAAMP,uBAAuBtJ,SAAA,CAAU;EACrC,IAAIoJ,SAAyB;AAC3B,IAAA,OAAO,IAAI,CAACpI,IAAI,CAACoI,MAAM;AACzB,EAAA;AAEA,EAAA;IAAAX,oBAAA,CAAAC,kBAAA,CAAA,gjBAAA,EAmBA;MAAAC,UAAA,EAAA,IAAA;AAAAC,MAAAA,KAAA,EAAAA,OAAA;QAAAkB,UAAA;QAAAZ,YAAA;AAAAD,QAAAA;AAAA,OAAA;KAAU,CAAA,EAAV,IAAW,CAAA;AAAD;AACZ;AAEA,SAASQ,KAAAA,CAAM5J,GAAQ,EAAS;EAC9B,OAAOA,GAAG,CAAC,CAAA,CAAE;AACf;AAEA,SAASgJ,QAAAA,CAAS9D,OAAgB,EAAU;EAC1C,OAAOA,OAAA,KAAY,QAAA;AACrB;AAEA,SAASN,SAASlF,KAAwC,EAAqB;EAC7E,OAAOA,KAAA,GAAQA,KAAA,CAAMwK,GAAG,EAAA,GAAKrH,SAAA;AAC/B;AAEA,SAAS2G,IAAIW,CAAU,EAAEC,CAAU,EAAU;EAC3C,OAAOD,CAAA,KAAMC,CAAA;AACf;;"}
|
|
1
|
+
{"version":3,"file":"eui-color-picker.js","sources":["../../src/components/eui-color-picker.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { fn } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { cancel, next } from '@ember/runloop';\nimport { service } from '@ember/service';\n\nimport chroma from 'chroma-js';\nimport { modifier } from 'ember-modifier';\n\nimport {\n getChromaColor,\n HEX_FALLBACK,\n HSV_FALLBACK,\n parseColor,\n RGB_FALLBACK,\n RGB_JOIN\n} from '../-private/color.ts';\nimport { randomId } from '../-private/random-id.ts';\nimport { useEuiPaletteColorBlind } from '../utils/color/eui_palettes.ts';\nimport { getEuiThemeContext } from '../utils/emotion/consume.ts';\nimport { boxReset, listReset } from '../utils/eui/color-picker.ts';\nimport { euiColorPickerStyles } from '../utils/eui/styles.generated.ts';\nimport { euiClass, useEuiBorealisStyles } from '../utils/eui/styles.ts';\nimport type { EuiCss } from '../utils/eui/styles.ts';\nimport EuiColorPickerSwatch from './eui-color-picker-swatch.gts';\nimport EuiFieldText from './eui-field-text.gts';\nimport EuiFormControlLayout from './eui-form-control-layout.gts';\nimport EuiFormLabel from './eui-form-label.gts';\nimport EuiFormRow from './eui-form-row.gts';\nimport EuiHue from './eui-hue.gts';\nimport EuiPopover from './eui-popover.gts';\nimport EuiRange from './eui-range.gts';\nimport EuiSaturation from './eui-saturation.gts';\nimport EuiScreenReaderOnly from './eui-screen-reader-only.gts';\n\nimport type EuiI18n from '../services/eui-i18n';\nimport type { HSV, RGBA } from '../-private/color.ts';\nimport type Owner from '@ember/owner';\n\nexport interface EuiColorPickerOutput {\n /** The color as `[r, g, b, a]` (`NaN`s when invalid). */\n rgba: RGBA;\n /** The color as hex (`''` when invalid). */\n hex: string;\n /** Whether the text is a valid color (opaque, unless `@showAlpha`). */\n isValid: boolean;\n}\n\n/**\n * A color field: a text input showing the color (hex or `r, g, b`) that\n * opens a popover to pick it from a saturation square and a hue slider,\n * and from swatches. You keep the color: `@onChange` gets the new text and\n * `{ hex, rgba, isValid }`.\n */\nexport interface EuiColorPickerSignature {\n Element: HTMLDivElement;\n Args: {\n /** The color: a hex string (`'#D36086'`), `'r, g, b'`, or `''`. */\n color?: string;\n /** Called with the new color text and `{ hex, rgba, isValid }`. */\n onChange: (text: string, output: EuiColorPickerOutput) => void;\n /**\n * `'default'` (square, hue and swatches), `'picker'` (no swatches),\n * `'swatch'` (only swatches) or `'secondaryInput'` (only the text\n * field set by `@secondaryInputDisplay`). Defaults to `'default'`.\n */\n mode?: 'default' | 'picker' | 'swatch' | 'secondaryInput';\n /** `'default'` (a field opening a popover) or `'inline'` (the picker itself). */\n display?: 'default' | 'inline';\n /** The swatches. Defaults to EUI's color-blind safe palette. */\n swatches?: string[];\n /** Adds an opacity slider; the color can then have an alpha channel. */\n showAlpha?: boolean;\n /** `'hex'` or `'rgba'` output. Defaults to the format of `@color`. */\n format?: 'hex' | 'rgba';\n /**\n * A text field inside the popover: `'top'`, `'bottom'` or `'none'`.\n * Defaults to `'none'`.\n */\n secondaryInputDisplay?: 'top' | 'bottom' | 'none';\n /** Adds a button clearing the color. */\n isClearable?: boolean;\n /** Placeholder while empty. Defaults to \"Transparent\". */\n placeholder?: string;\n /** Smaller field. */\n compressed?: boolean;\n /** Takes the container's full width. */\n fullWidth?: boolean;\n /** Disables it. */\n disabled?: boolean;\n /**\n * z-index of the color selector popover. Defaults to the anchor's\n * z-index + 2000, as in EuiPopover.\n */\n popoverZIndex?: number;\n /** Read-only: the popover does not open. */\n readOnly?: boolean;\n /** Invalid look. */\n isInvalid?: boolean;\n /** `id` of the input. */\n id?: string;\n /** Called when the popover opens. */\n onFocus?: () => void;\n /** Called when the field loses focus or the popover closes. */\n onBlur?: () => void;\n };\n Blocks: {\n /**\n * A custom trigger instead of the field (e.g. a swatch button); yields\n * the function toggling the popover.\n */\n button: [toggle: () => void];\n /** Content before the field; yields the class to put on it. */\n prepend: [className: string, inputId: string];\n /** Content after the field; yields the class to put on it. */\n append: [className: string, inputId: string];\n };\n}\n\nfunction hsvOf(color: ReturnType<typeof getChromaColor>, fallbackHue = 0): HSV {\n if (!color) return HSV_FALLBACK;\n\n const [h, s, v] = color.hsv();\n\n // black, white and grays have no hue\n return [isNaN(h) ? fallbackHue : h, s, v];\n}\n\nexport default class EuiColorPicker extends Component<EuiColorPickerSignature> {\n @service declare euiI18n: EuiI18n;\n\n @tracked isColorSelectorShown = false;\n @tracked colorAsHsv: HSV;\n @tracked alphaInput?: string;\n\n ownId = `euiColorPicker_${randomId()}`;\n openLabelId = `${this.ownId}-openLabel`;\n closeLabelId = `${this.ownId}-closeLabel`;\n prevColor: string | null;\n input?: HTMLInputElement;\n saturation?: HTMLElement;\n firstSwatch?: HTMLElement;\n\n constructor(owner: Owner, args: EuiColorPickerSignature['Args']) {\n super(owner, args);\n\n const color = getChromaColor(args.color, args.showAlpha);\n\n this.prevColor = color ? color.rgba().join() : null;\n this.colorAsHsv = color ? hsvOf(color) : HSV_FALLBACK;\n }\n\n closeTimer: ReturnType<typeof next> | undefined;\n\n willDestroy(): void {\n super.willDestroy();\n cancel(this.closeTimer);\n }\n\n get id(): string {\n return this.args.id ?? this.ownId;\n }\n\n get mode(): string {\n return this.args.mode ?? 'default';\n }\n\n get secondaryInputDisplay(): string {\n return this.args.secondaryInputDisplay ?? 'none';\n }\n\n get chromaColor(): ReturnType<typeof getChromaColor> {\n return getChromaColor(this.args.color, this.args.showAlpha);\n }\n\n get preferredFormat(): 'hex' | 'rgba' {\n if (this.args.format) return this.args.format;\n\n const parsed = parseColor(this.args.color);\n\n return parsed !== null && typeof parsed === 'object' ? 'rgba' : 'hex';\n }\n\n get alphaChannel(): number {\n return this.chromaColor ? this.chromaColor.alpha() : 1;\n }\n\n get alphaRangeValue(): number {\n return Number(this.alphaInput ?? (this.alphaChannel * 100).toFixed());\n }\n\n /** The color as HSV; the hue is kept for colors without one. */\n get usableHsv(): HSV {\n const color = this.chromaColor;\n\n if (color && color.rgba().join() !== this.prevColor) {\n return hsvOf(color, this.colorAsHsv[0]);\n }\n\n return this.colorAsHsv;\n }\n\n get hex(): string | undefined {\n return this.chromaColor?.hex();\n }\n\n get inputValue(): string {\n return this.args.color ? this.args.color.toUpperCase() : HEX_FALLBACK;\n }\n\n get placeholder(): string | undefined {\n if (this.args.color) return undefined;\n\n return this.args.placeholder ?? this.euiI18n.lookupToken('euiColorPicker.transparent', 'Transparent');\n }\n\n get showPicker(): boolean {\n return this.mode !== 'swatch' && this.mode !== 'secondaryInput';\n }\n\n get showSwatches(): boolean {\n return this.mode !== 'picker' && this.mode !== 'secondaryInput';\n }\n\n get swatches(): string[] {\n return (\n this.args.swatches ??\n useEuiPaletteColorBlind(getEuiThemeContext(this).upstream)\n );\n }\n\n get canClear(): boolean {\n return Boolean(this.args.isClearable && this.args.color && !this.args.readOnly && !this.args.disabled);\n }\n\n /** The popover / inline root: upstream `euiColorPickerStyles.euiColorPicker`. */\n @cached\n get rootClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorPickerStyles);\n\n return `euiColorPicker ${euiClass(context, boxReset, styles.euiColorPicker)}`;\n }\n\n @cached\n get swatchesClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorPickerStyles);\n\n return `euiColorPicker__swatches ${euiClass(context, listReset, styles.euiColorPicker__swatches)}`;\n }\n\n @cached\n get alphaRangeClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorPickerStyles);\n\n // upstream puts these on the EuiRange root; here they sit on a wrapper\n // around it, so the direct-child rule is restated from the range wrapper\n return `euiColorPicker__alphaRange ${euiClass(context, styles.euiColorPicker__alphaRange, {\n '.euiRangeWrapper > .euiFormControlLayout': { flexShrink: 0 }\n })}`;\n }\n\n /**\n * Upstream's `icon={{ color, css }}`: the field icon takes the chosen\n * color (`subdued` for the empty `stopSlash` icon), and the swatch icon's\n * stroke uses the swatch border color.\n */\n get iconColor(): string {\n return cssColor(this.chromaColor) ?? 'subdued';\n }\n\n @cached\n get iconCss(): EuiCss {\n const context = getEuiThemeContext(this);\n return useEuiBorealisStyles(context, euiColorPickerStyles)\n .euiColorPicker__swatchInputIcon;\n }\n\n get panelClasses(): string {\n return 'euiColorPicker__popoverPanel';\n }\n\n get hexLabel(): string {\n return this.chromaColor ? this.chromaColor.hex().toUpperCase() : '';\n }\n\n get secondaryInputCompressed(): boolean {\n return this.args.display === 'inline' ? Boolean(this.args.compressed) : true;\n }\n\n get labels(): {\n popover: string;\n color: string;\n selected: string;\n error: string;\n alpha: string;\n open: string;\n closed: string;\n select: string;\n } {\n const t = (token: string, text: string) => this.euiI18n.lookupToken(`euiColorPicker.${token}`, text);\n\n return {\n popover: t('popoverLabel', 'Color selection dialog'),\n color: t('colorLabel', 'Color value'),\n selected: t('selectedColorLabel', 'Selected color'),\n error: t('colorErrorMessage', 'Invalid color value'),\n alpha: t('alphaLabel', 'Alpha channel (opacity) value'),\n open: t('openLabel', 'Press the escape key to close the popover'),\n closed: t('closeLabel', 'Press the down key to open a popover containing color options'),\n select: t('ariaLabel', 'Select a color')\n };\n }\n\n output(text: string): EuiColorPickerOutput {\n const color = getChromaColor(text, true);\n\n if (!color) return { rgba: RGB_FALLBACK, hex: HEX_FALLBACK, isValid: false };\n\n // without @showAlpha a transparent color is returned but invalid\n return {\n rgba: color.rgba() as RGBA,\n hex: color.hex(),\n isValid: this.args.showAlpha ? true : color.alpha() === 1\n };\n }\n\n change(text: string): void {\n const output = this.output(text);\n\n if (output.isValid) this.prevColor = output.rgba.join();\n this.args.onChange(text, output);\n }\n\n updateColorAsHsv(hsv: HSV): void {\n this.colorAsHsv = [isNaN(hsv[0]) ? this.usableHsv[0] : hsv[0], hsv[1], hsv[2]];\n }\n\n updateWithHsv(hsv: HSV): void {\n const color = chroma.hsv(...hsv).alpha(this.alphaChannel);\n const text =\n this.preferredFormat === 'rgba'\n ? (this.alphaChannel < 1 ? color.rgba() : color.rgb()).join(RGB_JOIN)\n : color.hex();\n\n this.change(text);\n this.updateColorAsHsv(hsv);\n }\n\n @action\n showColorSelector(): void {\n if (this.isColorSelectorShown || this.args.readOnly) return;\n\n this.args.onFocus?.();\n this.isColorSelectorShown = true;\n }\n\n @action\n closeColorSelector(): void {\n this.args.onBlur?.();\n this.isColorSelectorShown = false;\n }\n\n @action\n toggle(): void {\n if (this.isColorSelectorShown) this.closeColorSelector();\n else this.showColorSelector();\n }\n\n /** Closes the popover and returns to the field, to keep adjusting. */\n @action\n finalSelection(): void {\n this.input?.focus();\n cancel(this.closeTimer);\n this.closeTimer = next(this, this.closeColorSelector);\n }\n\n @action\n onInputClick(): void {\n this.showColorSelector();\n }\n\n @action\n onInputKeyDown(event: KeyboardEvent): void {\n if (event.key === 'Enter') {\n event.preventDefault();\n this.toggle();\n }\n }\n\n @action\n onInputBlur(): void {\n // closing the popover calls onBlur already\n if (!this.isColorSelectorShown) this.args.onBlur?.();\n }\n\n /** Arrow down opens the popover, then moves into it. */\n @action\n onLayoutKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'ArrowDown') return;\n\n event.preventDefault();\n\n if (!this.isColorSelectorShown) {\n this.showColorSelector();\n\n return;\n }\n\n (this.mode !== 'swatch' ? this.saturation : this.firstSwatch)?.focus();\n }\n\n /** Enter in the picker confirms the color. */\n @action\n onPickerKeyDown(event: KeyboardEvent): void {\n if (event.key !== 'Enter') return;\n\n if (this.isColorSelectorShown) this.finalSelection();\n else this.showColorSelector();\n }\n\n @action\n onColorInput(event: Event): void {\n const text = (event.target as HTMLInputElement).value;\n const color = getChromaColor(text, this.args.showAlpha);\n\n this.change(text);\n if (color) this.updateColorAsHsv(hsvOf(color, this.usableHsv[0]));\n }\n\n @action\n clear(): void {\n this.change('');\n\n if (this.secondaryInputDisplay === 'none' && this.isColorSelectorShown) {\n this.closeColorSelector();\n }\n }\n\n @action\n onSaturationChange([, s, v]: HSV): void {\n this.updateWithHsv([this.usableHsv[0], s, v]);\n }\n\n @action\n onHueChange(hue: number): void {\n const [, s, v] = this.usableHsv;\n\n this.updateWithHsv([hue, s, v]);\n }\n\n @action\n onSwatchClick(swatch: string): void {\n const color = getChromaColor(swatch, this.args.showAlpha);\n\n this.change(swatch);\n if (color) this.updateColorAsHsv(hsvOf(color, this.usableHsv[0]));\n this.finalSelection();\n }\n\n @action\n onAlphaChange(event: Event, isValid: boolean): void {\n const value = (event.target as HTMLInputElement).value;\n\n this.alphaInput = value;\n\n if (!isValid) return;\n\n const alpha = parseInt(value, 10) / 100;\n const color = this.chromaColor ? this.chromaColor.alpha(alpha) : null;\n const hex = color ? color.hex() : HEX_FALLBACK;\n const rgba = (color ? color.rgba() : RGB_FALLBACK) as RGBA;\n const text =\n this.preferredFormat === 'rgba'\n ? (alpha < 1 ? rgba : rgba.slice(0, 3)).join(RGB_JOIN)\n : hex;\n\n this.alphaInput = undefined;\n this.args.onChange(text, { hex, rgba, isValid: Boolean(color) });\n }\n\n registerInput = (element: HTMLInputElement | null): void => {\n this.input = element ?? undefined;\n };\n\n registerSaturation = modifier((element: HTMLElement) => {\n this.saturation = element;\n });\n\n registerFirstSwatch = modifier((element: HTMLElement, [index]: [number]) => {\n if (index === 0) this.firstSwatch = element;\n });\n\n <template>\n {{#if (isInline @display)}}\n <div class={{this.rootClasses}} ...attributes>\n <Composite\n @picker={{this}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n @showAlpha={{@showAlpha}}\n />\n </div>\n {{else}}\n <EuiPopover\n class=\"euiColorPicker__popoverAnchor\"\n @isOpen={{this.isColorSelectorShown}}\n @closePopover={{this.finalSelection}}\n @panelClassName={{this.panelClasses}}\n @display={{if (has-block \"button\") \"inlineBlock\" \"block\"}}\n @attachToAnchor={{if (has-block \"button\") false true}}\n @anchorPosition=\"downLeft\"\n @panelPaddingSize=\"s\"\n @ownFocus={{false}}\n @initialFocus={{false}}\n @ariaLabel={{this.labels.popover}}\n @zIndex={{@popoverZIndex}}\n >\n <:button>\n {{#if (has-block \"button\")}}\n {{yield this.toggle to=\"button\"}}\n {{else}}\n <EuiFormControlLayout\n @icon={{if this.chromaColor \"swatchInput\" \"stopSlash\"}}\n @clear={{if this.canClear this.clear}}\n @readOnly={{@readOnly}}\n @fullWidth={{@fullWidth}}\n @compressed={{@compressed}}\n @isInvalid={{@isInvalid}}\n @isDisabled={{@disabled}}\n @isDropdown={{true}}\n @isPrependProvided={{has-block \"prepend\"}}\n @isAppendProvided={{has-block \"append\"}}\n @iconColor={{this.iconColor}}\n @iconCss={{this.iconCss}}\n {{on \"keydown\" this.onLayoutKeyDown}}\n >\n <:prepend as |className|>{{yield className this.id to=\"prepend\"}}</:prepend>\n <:field>\n <EuiFieldText\n class=\"euiColorPicker__input\"\n data-test-subj=\"euiColorPickerAnchor\"\n id={{this.id}}\n autocomplete=\"off\"\n aria-label={{unless @id this.labels.select}}\n aria-describedby={{if this.isColorSelectorShown this.openLabelId this.closeLabelId}}\n @controlOnly={{true}}\n @value={{this.inputValue}}\n @placeholder={{this.placeholder}}\n @isInvalid={{@isInvalid}}\n @compressed={{@compressed}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n @fullWidth={{@fullWidth}}\n @inputRef={{this.registerInput}}\n {{on \"click\" this.onInputClick}}\n {{on \"keydown\" this.onInputKeyDown}}\n {{on \"blur\" this.onInputBlur}}\n {{on \"input\" this.onColorInput}}\n />\n <EuiScreenReaderOnly>\n <span>\n <span\n id={{this.openLabelId}}\n aria-hidden={{if this.isColorSelectorShown \"false\" \"true\"}}\n >{{this.labels.open}}</span>\n <span\n id={{this.closeLabelId}}\n aria-hidden={{if this.isColorSelectorShown \"true\" \"false\"}}\n >{{this.labels.closed}}</span>\n </span>\n </EuiScreenReaderOnly>\n </:field>\n <:append as |className|>{{yield className this.id to=\"append\"}}</:append>\n </EuiFormControlLayout>\n {{/if}}\n </:button>\n <:content>\n <div\n class={{this.rootClasses}}\n data-test-subj=\"euiColorPickerPopover\"\n ...attributes\n >\n <Composite\n @picker={{this}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n @showAlpha={{@showAlpha}}\n />\n </div>\n </:content>\n </EuiPopover>\n {{/if}}\n </template>\n}\n\ninterface CompositeSignature {\n Args: {\n picker: EuiColorPicker;\n isInvalid?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n showAlpha?: boolean;\n };\n}\n\n/**\n * The saturation square, hue slider, swatches and secondary input: the\n * flex column children of the root (upstream spaces them with `gap`).\n */\nclass Composite extends Component<CompositeSignature> {\n get picker(): EuiColorPicker {\n return this.args.picker;\n }\n\n <template>\n {{#if (eq2 this.picker.secondaryInputDisplay \"top\")}}\n <SecondaryInput\n @picker={{this.picker}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n />\n {{/if}}\n {{#if this.picker.showPicker}}\n <EuiSaturation\n @id={{this.picker.id}}\n @color={{this.picker.usableHsv}}\n @hex={{this.picker.hex}}\n @onChange={{this.picker.onSaturationChange}}\n {{this.picker.registerSaturation}}\n {{on \"keydown\" this.picker.onPickerKeyDown}}\n />\n <EuiHue\n @id={{this.picker.id}}\n @hue={{hueOf this.picker.usableHsv}}\n @hex={{this.picker.hex}}\n @onChange={{this.picker.onHueChange}}\n {{on \"keydown\" this.picker.onPickerKeyDown}}\n />\n <EuiScreenReaderOnly>\n <p aria-live=\"polite\" aria-atomic=\"true\">{{this.picker.labels.selected}}: {{this.picker.hexLabel}}</p>\n </EuiScreenReaderOnly>\n {{/if}}\n {{#if this.picker.showSwatches}}\n <ul class={{this.picker.swatchesClasses}}>\n {{#each this.picker.swatches as |swatch index|}}\n <li>\n <EuiColorPickerSwatch\n class=\"euiColorPicker__swatchSelect\"\n @color={{swatch}}\n {{on \"click\" (fn this.picker.onSwatchClick swatch)}}\n {{this.picker.registerFirstSwatch index}}\n />\n </li>\n {{/each}}\n </ul>\n {{/if}}\n {{#if (eq2 this.picker.secondaryInputDisplay \"bottom\")}}\n <SecondaryInput\n @picker={{this.picker}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n />\n {{/if}}\n {{#if @showAlpha}}\n <div class={{this.picker.alphaRangeClasses}}>\n <EuiRange\n data-test-subj=\"euiColorPickerAlpha\"\n aria-label={{this.picker.labels.alpha}}\n @compressed={{true}}\n @showInput={{true}}\n @min={{0}}\n @max={{100}}\n @value={{this.picker.alphaRangeValue}}\n @onChange={{this.picker.onAlphaChange}}\n >\n <:append><EuiFormLabel>%</EuiFormLabel></:append>\n </EuiRange>\n </div>\n {{/if}}\n </template>\n}\n\ninterface SecondaryInputSignature {\n Args: {\n picker: EuiColorPicker;\n isInvalid?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n };\n}\n\nclass SecondaryInput extends Component<SecondaryInputSignature> {\n get picker(): EuiColorPicker {\n return this.args.picker;\n }\n\n <template>\n <EuiFormRow\n @isInvalid={{@isInvalid}}\n @error={{if @isInvalid this.picker.labels.error}}\n >\n <EuiFieldText\n data-test-subj=\"euiColorPickerInput_{{this.picker.secondaryInputDisplay}}\"\n autocomplete=\"off\"\n aria-label={{this.picker.labels.color}}\n @compressed={{this.picker.secondaryInputCompressed}}\n @value={{this.picker.inputValue}}\n @placeholder={{this.picker.placeholder}}\n @clear={{if this.picker.canClear this.picker.clear}}\n @isInvalid={{@isInvalid}}\n @disabled={{@disabled}}\n @readOnly={{@readOnly}}\n {{on \"input\" this.picker.onColorInput}}\n />\n </EuiFormRow>\n </template>\n}\n\nfunction hueOf(hsv: HSV): number {\n return hsv[0];\n}\n\nfunction isInline(display?: string): boolean {\n return display === 'inline';\n}\n\nfunction cssColor(color: ReturnType<typeof getChromaColor>): string | undefined {\n return color ? color.css() : undefined;\n}\n\nfunction eq2(a: unknown, b: unknown): boolean {\n return a === b;\n}\n"],"names":["hsvOf","color","fallbackHue","HSV_FALLBACK","h","s","v","hsv","isNaN","EuiColorPicker","Component","g","prototype","service","i","tracked","ownId","randomId","openLabelId","closeLabelId","prevColor","input","saturation","firstSwatch","constructor","owner","args","getChromaColor","showAlpha","rgba","join","colorAsHsv","closeTimer","willDestroy","cancel","id","mode","secondaryInputDisplay","chromaColor","preferredFormat","format","parsed","parseColor","alphaChannel","alpha","alphaRangeValue","Number","alphaInput","toFixed","usableHsv","hex","inputValue","toUpperCase","HEX_FALLBACK","placeholder","undefined","euiI18n","lookupToken","showPicker","showSwatches","swatches","useEuiPaletteColorBlind","getEuiThemeContext","upstream","canClear","Boolean","isClearable","readOnly","disabled","rootClasses","context","styles","useEuiBorealisStyles","euiColorPickerStyles","euiClass","boxReset","euiColorPicker","n","cached","swatchesClasses","listReset","euiColorPicker__swatches","alphaRangeClasses","euiColorPicker__alphaRange","flexShrink","iconColor","cssColor","iconCss","euiColorPicker__swatchInputIcon","panelClasses","hexLabel","secondaryInputCompressed","display","compressed","labels","t","token","text","popover","selected","error","open","closed","select","output","RGB_FALLBACK","isValid","change","onChange","updateColorAsHsv","updateWithHsv","chroma","rgb","RGB_JOIN","showColorSelector","isColorSelectorShown","onFocus","action","closeColorSelector","onBlur","toggle","finalSelection","focus","next","onInputClick","onInputKeyDown","event","key","preventDefault","onInputBlur","onLayoutKeyDown","onPickerKeyDown","onColorInput","target","value","clear","onSaturationChange","onHueChange","hue","onSwatchClick","swatch","onAlphaChange","parseInt","slice","registerInput","element","registerSaturation","modifier","registerFirstSwatch","index","setComponentTemplate","precompileTemplate","strictMode","scope","isInline","Composite","EuiPopover","EuiFormControlLayout","on","EuiFieldText","EuiScreenReaderOnly","picker","eq2","SecondaryInput","EuiSaturation","EuiHue","hueOf","EuiColorPickerSwatch","fn","EuiRange","EuiFormLabel","EuiFormRow","css","a","b"],"mappings":"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"}
|
|
@@ -24,7 +24,8 @@ import { precompileTemplate } from '@ember/template-compilation';
|
|
|
24
24
|
import { setComponentTemplate } from '@ember/component';
|
|
25
25
|
import { g, i, n } from 'decorator-transforms/runtime-esm';
|
|
26
26
|
|
|
27
|
-
/** @private One stop of EuiColorStops: a thumb opening an edit popover. */
|
|
27
|
+
/** @private One stop of EuiColorStops: a thumb opening an edit popover. */const noop = () => {};
|
|
28
|
+
class EuiColorStopThumb extends Component {
|
|
28
29
|
constructor(owner, args) {
|
|
29
30
|
super(owner, args);
|
|
30
31
|
deprecateRemovedUpstream('eui-color-stops-thumb', 'EuiColorStopThumb', 'There is no direct upstream replacement; for predefined gradients use EuiColorPalettePicker.');
|
|
@@ -140,17 +141,28 @@ import { g, i, n } from 'decorator-transforms/runtime-esm';
|
|
|
140
141
|
y: e.clientY
|
|
141
142
|
}, parent, this.args.globalMin, this.args.globalMax));
|
|
142
143
|
};
|
|
143
|
-
const up = () =>
|
|
144
|
-
document.removeEventListener('mousemove', move);
|
|
145
|
-
document.removeEventListener('mouseup', up);
|
|
146
|
-
};
|
|
144
|
+
const up = () => this.stopDrag();
|
|
147
145
|
event.preventDefault();
|
|
146
|
+
this.stopDrag();
|
|
148
147
|
document.addEventListener('mousemove', move);
|
|
149
148
|
document.addEventListener('mouseup', up);
|
|
149
|
+
window.addEventListener('blur', up);
|
|
150
|
+
this.stopDrag = () => {
|
|
151
|
+
document.removeEventListener('mousemove', move);
|
|
152
|
+
document.removeEventListener('mouseup', up);
|
|
153
|
+
window.removeEventListener('blur', up);
|
|
154
|
+
this.stopDrag = noop;
|
|
155
|
+
};
|
|
150
156
|
}
|
|
157
|
+
/** Removes the document drag listeners (also on teardown mid-drag). */
|
|
151
158
|
static {
|
|
152
159
|
n(this.prototype, "onMouseDown", [action]);
|
|
153
160
|
}
|
|
161
|
+
stopDrag = noop;
|
|
162
|
+
willDestroy() {
|
|
163
|
+
super.willDestroy();
|
|
164
|
+
this.stopDrag();
|
|
165
|
+
}
|
|
154
166
|
onKeyDown(event) {
|
|
155
167
|
switch (event.key) {
|
|
156
168
|
case 'Enter':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thumb.js","sources":["../../../src/components/eui-color-stops/thumb.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nimport {\n getChromaColor,\n getPositionFromStop,\n getStopFromMouseLocation,\n isColorInvalid,\n isStopInvalid\n} from '../../-private/color.ts';\nimport { deprecateRemovedUpstream } from '../../-private/removed-upstream.ts';\nimport cssStyle from '../../-private/css-style.ts';\nimport { getEuiThemeContext } from '../../utils/emotion/consume.ts';\nimport {\n buttonReset,\n euiColorStopStyles,\n euiColorStopThumbPopoverStyles,\n euiColorStopThumbStyles\n} from '../../utils/eui/color-picker.ts';\nimport { euiRangeThumbStyles } from '../../utils/eui/styles.generated.ts';\nimport { euiClass, useEuiBorealisStyles } from '../../utils/eui/styles.ts';\nimport EuiButtonIcon from '../eui-button-icon.gts';\nimport EuiColorPicker from '../eui-color-picker.gts';\nimport EuiFieldNumber from '../eui-field-number.gts';\nimport EuiFlexGroup from '../eui-flex-group.gts';\nimport EuiFlexItem from '../eui-flex-item.gts';\nimport EuiFormRow from '../eui-form-row.gts';\nimport EuiPopover from '../eui-popover.gts';\nimport EuiScreenReaderOnly from '../eui-screen-reader-only.gts';\nimport EuiSpacer from '../eui-spacer.gts';\n\nimport type EuiI18n from '../../services/eui-i18n';\nimport type { ColorStop } from '../../-private/color.ts';\nimport type { CSSInterpolation } from '@emotion/css/create-instance';\nimport type Owner from '@ember/owner';\n\ninterface ThumbSignature {\n Element: HTMLButtonElement;\n Args: {\n stop: number;\n color: string;\n index: number;\n count: number;\n onChange: (colorStop: ColorStop) => void;\n onFocus: () => void;\n onRemove?: () => void;\n globalMin: number;\n globalMax: number;\n localMin: number;\n localMax: number;\n min?: number;\n max?: number;\n isRangeMin: boolean;\n isRangeMax: boolean;\n trackWidth: number;\n parent?: HTMLElement;\n mode?: 'default' | 'swatch' | 'picker';\n showAlpha?: boolean;\n swatches?: string[];\n disabled?: boolean;\n readOnly?: boolean;\n isPopoverOpen: boolean;\n openPopover: () => void;\n closePopover: () => void;\n };\n}\n\n/** @private One stop of EuiColorStops: a thumb opening an edit popover. */\nexport default class EuiColorStopThumb extends Component<ThumbSignature> {\n constructor(owner: Owner, args: ThumbSignature['Args']) {\n super(owner, args);\n deprecateRemovedUpstream(\n 'eui-color-stops-thumb',\n 'EuiColorStopThumb',\n 'There is no direct upstream replacement; for predefined gradients use EuiColorPalettePicker.'\n );\n }\n\n @service declare euiI18n: EuiI18n;\n\n @tracked hasFocus = false;\n\n get background(): string | undefined {\n return getChromaColor(this.args.color, this.args.showAlpha)?.css();\n }\n\n get position(): string {\n const { stop, trackWidth, globalMin, globalMax } = this.args;\n\n return `${getPositionFromStop(stop, trackWidth, globalMin, globalMax)}%`;\n }\n\n get stopIsInvalid(): boolean {\n return isStopInvalid(this.args.stop);\n }\n\n get colorIsInvalid(): boolean {\n return isColorInvalid(this.args.color, this.args.showAlpha);\n }\n\n get hasFocusStyle(): boolean {\n return this.hasFocus || this.args.isPopoverOpen;\n }\n\n /** The popover root: EUI 88.5.4 `euiColorStopThumbPopoverStyles`. */\n @cached\n get popoverCss(): CSSInterpolation {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorStopThumbPopoverStyles);\n\n return [styles.euiColorStopThumbPopover, this.hasFocusStyle && styles.hasFocus];\n }\n\n /** Upstream EuiRangeThumb styles with the color stop thumb styles last. */\n @cached\n get thumbClasses(): string {\n const context = getEuiThemeContext(this);\n const range = useEuiBorealisStyles(context, euiRangeThumbStyles);\n const styles = useEuiBorealisStyles(context, euiColorStopThumbStyles);\n\n return `euiRangeThumb euiColorStopThumb ${euiClass(\n context,\n buttonReset,\n range.euiRangeThumb,\n styles.euiColorStopThumb,\n this.args.isPopoverOpen && styles.isPopoverOpen\n )}`;\n }\n\n @cached\n get formClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorStopStyles);\n\n return `euiColorStop ${euiClass(context, styles.euiColorStop)}`;\n }\n\n t = (token: string, text: string): string => this.euiI18n.lookupToken(`euiColorStopThumb.${token}`, text);\n\n get valueText(): string {\n return `Stop: ${this.args.stop}, Color: ${this.args.color} (${this.args.index + 1} of ${this.args.count})`;\n }\n\n /** Clamped to the neighbouring stops. */\n changeStop(value: number): void {\n const { localMin, localMax } = this.args;\n\n this.args.onChange({ stop: Math.min(Math.max(value, localMin), localMax), color: this.args.color });\n }\n\n @action\n onStopInput(event: Event): void {\n let value = parseFloat((event.target as HTMLInputElement).value);\n const { globalMin, globalMax, min, max } = this.args;\n\n if (value > globalMax && max !== undefined) value = globalMax;\n if (value < globalMin && min !== undefined) value = globalMin;\n\n this.args.onChange({ stop: value, color: this.args.color });\n }\n\n @action\n onColorChange(color: string): void {\n this.args.onChange({ stop: this.args.stop, color });\n }\n\n @action\n onMouseDown(event: MouseEvent): void {\n this.args.openPopover();\n\n if (this.args.readOnly) return;\n\n const parent = this.args.parent;\n const move = (e: MouseEvent) => {\n if (!parent) return;\n this.changeStop(\n getStopFromMouseLocation(\n { x: e.clientX, y: e.clientY },\n parent,\n this.args.globalMin,\n this.args.globalMax\n )\n );\n };\n const up = () => {\n document.removeEventListener('mousemove', move);\n document.removeEventListener('mouseup', up);\n };\n\n event.preventDefault();\n document.addEventListener('mousemove', move);\n document.addEventListener('mouseup', up);\n }\n\n @action\n onKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.args.openPopover();\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (!this.args.readOnly) this.changeStop(this.args.stop - 1);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (!this.args.readOnly) this.changeStop(this.args.stop + 1);\n break;\n }\n }\n\n @action\n remove(): void {\n if (!this.args.onRemove) return;\n\n this.args.closePopover();\n this.args.onRemove();\n }\n\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.args.onFocus();\n }\n\n @action\n setFocus(value: boolean): void {\n this.hasFocus = value;\n }\n\n <template>\n <EuiPopover\n class=\"euiColorStopPopover\"\n style={{cssStyle (hash left=this.position)}}\n @rootCss={{this.popoverCss}}\n @anchorClassName=\"euiColorStopThumbPopover__anchor\"\n @panelPaddingSize=\"s\"\n @isOpen={{@isPopoverOpen}}\n @closePopover={{@closePopover}}\n @ownFocus={{false}}\n >\n <:button>\n {{! upstream EuiRangeThumb: a button with the slider role }}\n <button\n type=\"button\"\n role=\"slider\"\n class={{this.thumbClasses}}\n data-test-subj=\"euiColorStopThumb\"\n data-index=\"euiColorStop_{{@index}}\"\n aria-valuemin={{@localMin}}\n aria-valuemax={{@localMax}}\n aria-valuenow={{@stop}}\n aria-disabled={{if @disabled \"true\" \"false\"}}\n aria-valuetext={{this.valueText}}\n aria-label={{this.t\n \"buttonAriaLabel\"\n \"Press the Enter key to modify this stop. Press Escape to focus the group\"\n }}\n title={{this.t \"buttonTitle\" \"Click to edit, drag to reposition\"}}\n tabindex=\"-1\"\n disabled={{@disabled}}\n style={{cssStyle (hash background=this.background)}}\n {{on \"focus\" this.onFocus}}\n {{on \"blur\" (fnSet this.setFocus false)}}\n {{on \"mouseover\" (fnSet this.setFocus true)}}\n {{on \"mouseout\" (fnSet this.setFocus false)}}\n {{on \"keydown\" this.onKeyDown}}\n {{on \"mousedown\" this.onMouseDown}}\n ></button>\n </:button>\n <:content>\n <div class={{this.formClasses}} data-test-subj=\"euiColorStopPopover\">\n <EuiScreenReaderOnly>\n <p aria-live=\"polite\">{{this.t\n \"screenReaderAnnouncement\"\n \"A popup with a color stop edit form opened. Tab forward to cycle through form controls or press escape to close this popup.\"\n }}</p>\n </EuiScreenReaderOnly>\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiFormRow\n @label={{this.t \"stopLabel\" \"Stop value\"}}\n @display=\"rowCompressed\"\n @isInvalid={{this.stopIsInvalid}}\n @error={{if this.stopIsInvalid (this.t \"stopErrorMessage\" \"Value is out of range\")}}\n >\n <EuiFieldNumber\n @compressed={{true}}\n @readOnly={{@readOnly}}\n @isInvalid={{this.stopIsInvalid}}\n @value={{unless this.stopIsInvalid @stop}}\n @min={{unless (or2 @isRangeMin (isUndefined @min)) @localMin}}\n @max={{unless (or2 @isRangeMax (isUndefined @max)) @localMax}}\n {{on \"input\" this.onStopInput}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n {{#unless @readOnly}}\n <EuiFlexItem @grow={{false}}>\n <EuiFormRow @display=\"rowCompressed\" @hasEmptyLabelSpace={{true}}>\n <EuiButtonIcon\n @iconType=\"trash\"\n @color=\"danger\"\n @isDisabled={{isUndefined @onRemove}}\n aria-label={{this.t \"removeLabel\" \"Remove this stop\"}}\n title={{this.t \"removeLabel\" \"Remove this stop\"}}\n {{on \"click\" this.remove}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n {{/unless}}\n </EuiFlexGroup>\n {{#unless @readOnly}}\n <EuiSpacer @size=\"s\" />\n {{/unless}}\n <EuiColorPicker\n @color={{@color}}\n @onChange={{this.onColorChange}}\n @readOnly={{@readOnly}}\n @mode={{if @readOnly \"secondaryInput\" @mode}}\n @swatches={{@swatches}}\n @display=\"inline\"\n @showAlpha={{@showAlpha}}\n @isInvalid={{this.colorIsInvalid}}\n @secondaryInputDisplay={{if (isSwatch @mode) \"none\" \"bottom\"}}\n />\n </div>\n </:content>\n </EuiPopover>\n </template>\n}\n\nfunction fnSet(setter: (value: boolean) => void, value: boolean): () => void {\n return () => setter(value);\n}\n\nfunction or2(a: unknown, b: unknown): boolean {\n return Boolean(a || b);\n}\n\nfunction isUndefined(value: unknown): boolean {\n return value === undefined;\n}\n\nfunction isSwatch(mode?: string): boolean {\n return mode === 'swatch';\n}\n"],"names":["EuiColorStopThumb","Component","constructor","owner","args","deprecateRemovedUpstream","g","prototype","service","i","tracked","background","getChromaColor","color","showAlpha","css","position","stop","trackWidth","globalMin","globalMax","getPositionFromStop","stopIsInvalid","isStopInvalid","colorIsInvalid","isColorInvalid","hasFocusStyle","hasFocus","isPopoverOpen","popoverCss","context","getEuiThemeContext","styles","useEuiBorealisStyles","euiColorStopThumbPopoverStyles","euiColorStopThumbPopover","n","cached","thumbClasses","range","euiRangeThumbStyles","euiColorStopThumbStyles","euiClass","buttonReset","euiRangeThumb","euiColorStopThumb","formClasses","euiColorStopStyles","euiColorStop","t","token","text","euiI18n","lookupToken","valueText","index","count","changeStop","value","localMin","localMax","onChange","Math","min","max","onStopInput","event","parseFloat","target","undefined","action","onColorChange","onMouseDown","openPopover","readOnly","parent","move","e","getStopFromMouseLocation","x","clientX","y","clientY","up","document","removeEventListener","preventDefault","addEventListener","onKeyDown","key","remove","onRemove","closePopover","onFocus","setFocus","setComponentTemplate","precompileTemplate","strictMode","scope","EuiPopover","cssStyle","hash","on","fnSet","EuiScreenReaderOnly","EuiFlexGroup","EuiFlexItem","EuiFormRow","EuiFieldNumber","or2","isUndefined","EuiButtonIcon","EuiSpacer","EuiColorPicker","isSwatch","setter","a","b","Boolean","mode"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thumb.js","sources":["../../../src/components/eui-color-stops/thumb.gts"],"sourcesContent":["import Component from '@glimmer/component';\nimport { cached, tracked } from '@glimmer/tracking';\nimport { hash } from '@ember/helper';\nimport { on } from '@ember/modifier';\nimport { action } from '@ember/object';\nimport { service } from '@ember/service';\n\nimport {\n getChromaColor,\n getPositionFromStop,\n getStopFromMouseLocation,\n isColorInvalid,\n isStopInvalid\n} from '../../-private/color.ts';\nimport { deprecateRemovedUpstream } from '../../-private/removed-upstream.ts';\nimport cssStyle from '../../-private/css-style.ts';\nimport { getEuiThemeContext } from '../../utils/emotion/consume.ts';\nimport {\n buttonReset,\n euiColorStopStyles,\n euiColorStopThumbPopoverStyles,\n euiColorStopThumbStyles\n} from '../../utils/eui/color-picker.ts';\nimport { euiRangeThumbStyles } from '../../utils/eui/styles.generated.ts';\nimport { euiClass, useEuiBorealisStyles } from '../../utils/eui/styles.ts';\nimport EuiButtonIcon from '../eui-button-icon.gts';\nimport EuiColorPicker from '../eui-color-picker.gts';\nimport EuiFieldNumber from '../eui-field-number.gts';\nimport EuiFlexGroup from '../eui-flex-group.gts';\nimport EuiFlexItem from '../eui-flex-item.gts';\nimport EuiFormRow from '../eui-form-row.gts';\nimport EuiPopover from '../eui-popover.gts';\nimport EuiScreenReaderOnly from '../eui-screen-reader-only.gts';\nimport EuiSpacer from '../eui-spacer.gts';\n\nimport type EuiI18n from '../../services/eui-i18n';\nimport type { ColorStop } from '../../-private/color.ts';\nimport type { CSSInterpolation } from '@emotion/css/create-instance';\nimport type Owner from '@ember/owner';\n\ninterface ThumbSignature {\n Element: HTMLButtonElement;\n Args: {\n stop: number;\n color: string;\n index: number;\n count: number;\n onChange: (colorStop: ColorStop) => void;\n onFocus: () => void;\n onRemove?: () => void;\n globalMin: number;\n globalMax: number;\n localMin: number;\n localMax: number;\n min?: number;\n max?: number;\n isRangeMin: boolean;\n isRangeMax: boolean;\n trackWidth: number;\n parent?: HTMLElement;\n mode?: 'default' | 'swatch' | 'picker';\n showAlpha?: boolean;\n swatches?: string[];\n disabled?: boolean;\n readOnly?: boolean;\n isPopoverOpen: boolean;\n openPopover: () => void;\n closePopover: () => void;\n };\n}\n\n/** @private One stop of EuiColorStops: a thumb opening an edit popover. */\nconst noop = (): void => {};\n\nexport default class EuiColorStopThumb extends Component<ThumbSignature> {\n constructor(owner: Owner, args: ThumbSignature['Args']) {\n super(owner, args);\n deprecateRemovedUpstream(\n 'eui-color-stops-thumb',\n 'EuiColorStopThumb',\n 'There is no direct upstream replacement; for predefined gradients use EuiColorPalettePicker.'\n );\n }\n\n @service declare euiI18n: EuiI18n;\n\n @tracked hasFocus = false;\n\n get background(): string | undefined {\n return getChromaColor(this.args.color, this.args.showAlpha)?.css();\n }\n\n get position(): string {\n const { stop, trackWidth, globalMin, globalMax } = this.args;\n\n return `${getPositionFromStop(stop, trackWidth, globalMin, globalMax)}%`;\n }\n\n get stopIsInvalid(): boolean {\n return isStopInvalid(this.args.stop);\n }\n\n get colorIsInvalid(): boolean {\n return isColorInvalid(this.args.color, this.args.showAlpha);\n }\n\n get hasFocusStyle(): boolean {\n return this.hasFocus || this.args.isPopoverOpen;\n }\n\n /** The popover root: EUI 88.5.4 `euiColorStopThumbPopoverStyles`. */\n @cached\n get popoverCss(): CSSInterpolation {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorStopThumbPopoverStyles);\n\n return [styles.euiColorStopThumbPopover, this.hasFocusStyle && styles.hasFocus];\n }\n\n /** Upstream EuiRangeThumb styles with the color stop thumb styles last. */\n @cached\n get thumbClasses(): string {\n const context = getEuiThemeContext(this);\n const range = useEuiBorealisStyles(context, euiRangeThumbStyles);\n const styles = useEuiBorealisStyles(context, euiColorStopThumbStyles);\n\n return `euiRangeThumb euiColorStopThumb ${euiClass(\n context,\n buttonReset,\n range.euiRangeThumb,\n styles.euiColorStopThumb,\n this.args.isPopoverOpen && styles.isPopoverOpen\n )}`;\n }\n\n @cached\n get formClasses(): string {\n const context = getEuiThemeContext(this);\n const styles = useEuiBorealisStyles(context, euiColorStopStyles);\n\n return `euiColorStop ${euiClass(context, styles.euiColorStop)}`;\n }\n\n t = (token: string, text: string): string => this.euiI18n.lookupToken(`euiColorStopThumb.${token}`, text);\n\n get valueText(): string {\n return `Stop: ${this.args.stop}, Color: ${this.args.color} (${this.args.index + 1} of ${this.args.count})`;\n }\n\n /** Clamped to the neighbouring stops. */\n changeStop(value: number): void {\n const { localMin, localMax } = this.args;\n\n this.args.onChange({ stop: Math.min(Math.max(value, localMin), localMax), color: this.args.color });\n }\n\n @action\n onStopInput(event: Event): void {\n let value = parseFloat((event.target as HTMLInputElement).value);\n const { globalMin, globalMax, min, max } = this.args;\n\n if (value > globalMax && max !== undefined) value = globalMax;\n if (value < globalMin && min !== undefined) value = globalMin;\n\n this.args.onChange({ stop: value, color: this.args.color });\n }\n\n @action\n onColorChange(color: string): void {\n this.args.onChange({ stop: this.args.stop, color });\n }\n\n @action\n onMouseDown(event: MouseEvent): void {\n this.args.openPopover();\n\n if (this.args.readOnly) return;\n\n const parent = this.args.parent;\n const move = (e: MouseEvent) => {\n if (!parent) return;\n this.changeStop(\n getStopFromMouseLocation(\n { x: e.clientX, y: e.clientY },\n parent,\n this.args.globalMin,\n this.args.globalMax\n )\n );\n };\n const up = () => this.stopDrag();\n\n event.preventDefault();\n this.stopDrag();\n document.addEventListener('mousemove', move);\n document.addEventListener('mouseup', up);\n window.addEventListener('blur', up);\n this.stopDrag = () => {\n document.removeEventListener('mousemove', move);\n document.removeEventListener('mouseup', up);\n window.removeEventListener('blur', up);\n this.stopDrag = noop;\n };\n }\n\n /** Removes the document drag listeners (also on teardown mid-drag). */\n stopDrag: () => void = noop;\n\n willDestroy(): void {\n super.willDestroy();\n this.stopDrag();\n }\n\n @action\n onKeyDown(event: KeyboardEvent): void {\n switch (event.key) {\n case 'Enter':\n event.preventDefault();\n this.args.openPopover();\n break;\n case 'ArrowLeft':\n event.preventDefault();\n if (!this.args.readOnly) this.changeStop(this.args.stop - 1);\n break;\n case 'ArrowRight':\n event.preventDefault();\n if (!this.args.readOnly) this.changeStop(this.args.stop + 1);\n break;\n }\n }\n\n @action\n remove(): void {\n if (!this.args.onRemove) return;\n\n this.args.closePopover();\n this.args.onRemove();\n }\n\n @action\n onFocus(): void {\n this.hasFocus = true;\n this.args.onFocus();\n }\n\n @action\n setFocus(value: boolean): void {\n this.hasFocus = value;\n }\n\n <template>\n <EuiPopover\n class=\"euiColorStopPopover\"\n style={{cssStyle (hash left=this.position)}}\n @rootCss={{this.popoverCss}}\n @anchorClassName=\"euiColorStopThumbPopover__anchor\"\n @panelPaddingSize=\"s\"\n @isOpen={{@isPopoverOpen}}\n @closePopover={{@closePopover}}\n @ownFocus={{false}}\n >\n <:button>\n {{! upstream EuiRangeThumb: a button with the slider role }}\n <button\n type=\"button\"\n role=\"slider\"\n class={{this.thumbClasses}}\n data-test-subj=\"euiColorStopThumb\"\n data-index=\"euiColorStop_{{@index}}\"\n aria-valuemin={{@localMin}}\n aria-valuemax={{@localMax}}\n aria-valuenow={{@stop}}\n aria-disabled={{if @disabled \"true\" \"false\"}}\n aria-valuetext={{this.valueText}}\n aria-label={{this.t\n \"buttonAriaLabel\"\n \"Press the Enter key to modify this stop. Press Escape to focus the group\"\n }}\n title={{this.t \"buttonTitle\" \"Click to edit, drag to reposition\"}}\n tabindex=\"-1\"\n disabled={{@disabled}}\n style={{cssStyle (hash background=this.background)}}\n {{on \"focus\" this.onFocus}}\n {{on \"blur\" (fnSet this.setFocus false)}}\n {{on \"mouseover\" (fnSet this.setFocus true)}}\n {{on \"mouseout\" (fnSet this.setFocus false)}}\n {{on \"keydown\" this.onKeyDown}}\n {{on \"mousedown\" this.onMouseDown}}\n ></button>\n </:button>\n <:content>\n <div class={{this.formClasses}} data-test-subj=\"euiColorStopPopover\">\n <EuiScreenReaderOnly>\n <p aria-live=\"polite\">{{this.t\n \"screenReaderAnnouncement\"\n \"A popup with a color stop edit form opened. Tab forward to cycle through form controls or press escape to close this popup.\"\n }}</p>\n </EuiScreenReaderOnly>\n <EuiFlexGroup @gutterSize=\"s\" @responsive={{false}}>\n <EuiFlexItem>\n <EuiFormRow\n @label={{this.t \"stopLabel\" \"Stop value\"}}\n @display=\"rowCompressed\"\n @isInvalid={{this.stopIsInvalid}}\n @error={{if this.stopIsInvalid (this.t \"stopErrorMessage\" \"Value is out of range\")}}\n >\n <EuiFieldNumber\n @compressed={{true}}\n @readOnly={{@readOnly}}\n @isInvalid={{this.stopIsInvalid}}\n @value={{unless this.stopIsInvalid @stop}}\n @min={{unless (or2 @isRangeMin (isUndefined @min)) @localMin}}\n @max={{unless (or2 @isRangeMax (isUndefined @max)) @localMax}}\n {{on \"input\" this.onStopInput}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n {{#unless @readOnly}}\n <EuiFlexItem @grow={{false}}>\n <EuiFormRow @display=\"rowCompressed\" @hasEmptyLabelSpace={{true}}>\n <EuiButtonIcon\n @iconType=\"trash\"\n @color=\"danger\"\n @isDisabled={{isUndefined @onRemove}}\n aria-label={{this.t \"removeLabel\" \"Remove this stop\"}}\n title={{this.t \"removeLabel\" \"Remove this stop\"}}\n {{on \"click\" this.remove}}\n />\n </EuiFormRow>\n </EuiFlexItem>\n {{/unless}}\n </EuiFlexGroup>\n {{#unless @readOnly}}\n <EuiSpacer @size=\"s\" />\n {{/unless}}\n <EuiColorPicker\n @color={{@color}}\n @onChange={{this.onColorChange}}\n @readOnly={{@readOnly}}\n @mode={{if @readOnly \"secondaryInput\" @mode}}\n @swatches={{@swatches}}\n @display=\"inline\"\n @showAlpha={{@showAlpha}}\n @isInvalid={{this.colorIsInvalid}}\n @secondaryInputDisplay={{if (isSwatch @mode) \"none\" \"bottom\"}}\n />\n </div>\n </:content>\n </EuiPopover>\n </template>\n}\n\nfunction fnSet(setter: (value: boolean) => void, value: boolean): () => void {\n return () => setter(value);\n}\n\nfunction or2(a: unknown, b: unknown): boolean {\n return Boolean(a || b);\n}\n\nfunction isUndefined(value: unknown): boolean {\n return value === undefined;\n}\n\nfunction isSwatch(mode?: string): boolean {\n return mode === 'swatch';\n}\n"],"names":["noop","EuiColorStopThumb","Component","constructor","owner","args","deprecateRemovedUpstream","g","prototype","service","i","tracked","background","getChromaColor","color","showAlpha","css","position","stop","trackWidth","globalMin","globalMax","getPositionFromStop","stopIsInvalid","isStopInvalid","colorIsInvalid","isColorInvalid","hasFocusStyle","hasFocus","isPopoverOpen","popoverCss","context","getEuiThemeContext","styles","useEuiBorealisStyles","euiColorStopThumbPopoverStyles","euiColorStopThumbPopover","n","cached","thumbClasses","range","euiRangeThumbStyles","euiColorStopThumbStyles","euiClass","buttonReset","euiRangeThumb","euiColorStopThumb","formClasses","euiColorStopStyles","euiColorStop","t","token","text","euiI18n","lookupToken","valueText","index","count","changeStop","value","localMin","localMax","onChange","Math","min","max","onStopInput","event","parseFloat","target","undefined","action","onColorChange","onMouseDown","openPopover","readOnly","parent","move","e","getStopFromMouseLocation","x","clientX","y","clientY","up","stopDrag","preventDefault","document","addEventListener","window","removeEventListener","willDestroy","onKeyDown","key","remove","onRemove","closePopover","onFocus","setFocus","setComponentTemplate","precompileTemplate","strictMode","scope","EuiPopover","cssStyle","hash","on","fnSet","EuiScreenReaderOnly","EuiFlexGroup","EuiFlexItem","EuiFormRow","EuiFieldNumber","or2","isUndefined","EuiButtonIcon","EuiSpacer","EuiColorPicker","isSwatch","setter","a","b","Boolean","mode"],"mappings":"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"}
|
|
@@ -975,6 +975,22 @@ class EuiComboBoxComponent extends Component {
|
|
|
975
975
|
if (api?.highlighted !== undefined) api.actions.highlight?.(undefined);
|
|
976
976
|
return;
|
|
977
977
|
}
|
|
978
|
+
if (!next) {
|
|
979
|
+
// Focus left for nowhere, which is also what Chrome reports when it
|
|
980
|
+
// blurs the focused input while Glimmer removes the combo box. That
|
|
981
|
+
// happens inside the render, which has already read ember-basic-
|
|
982
|
+
// dropdown's `_isOpen`, so closing the list there trips an autotracking
|
|
983
|
+
// assertion (development builds). Leave after the render instead, and
|
|
984
|
+
// not at all when the combo box is being torn down.
|
|
985
|
+
schedule('actions', this, this.leaveComboBox, event, api);
|
|
986
|
+
return;
|
|
987
|
+
}
|
|
988
|
+
this.leaveComboBox(event, api);
|
|
989
|
+
}
|
|
990
|
+
/** The rest of `containerBlur`: focus has left the combo box. */
|
|
991
|
+
leaveComboBox(event, blurApi) {
|
|
992
|
+
if (this.isDestroying || this.isDestroyed) return;
|
|
993
|
+
const api = this.select ?? blurApi;
|
|
978
994
|
this.args.onBlur?.(api, event);
|
|
979
995
|
const hasActiveOption = Boolean(api?.isOpen && api.highlighted !== undefined);
|
|
980
996
|
this.hasFocus = false;
|