@wordpress/components 29.5.1 → 29.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +21 -0
- package/build/angle-picker-control/index.js +1 -1
- package/build/angle-picker-control/index.js.map +1 -1
- package/build/autocomplete/index.js +5 -30
- package/build/autocomplete/index.js.map +1 -1
- package/build/custom-select-control-v2/styles.js +9 -9
- package/build/custom-select-control-v2/styles.js.map +1 -1
- package/build/font-size-picker/font-size-picker-select.js +1 -8
- package/build/font-size-picker/font-size-picker-select.js.map +1 -1
- package/build/font-size-picker/index.js +12 -34
- package/build/font-size-picker/index.js.map +1 -1
- package/build/font-size-picker/styles.js +12 -19
- package/build/font-size-picker/styles.js.map +1 -1
- package/build/font-size-picker/utils.js +0 -22
- package/build/font-size-picker/utils.js.map +1 -1
- package/build/number-control/index.js +6 -4
- package/build/number-control/index.js.map +1 -1
- package/build/range-control/index.js +6 -5
- package/build/range-control/index.js.map +1 -1
- package/build/toolbar/toolbar-dropdown-menu/index.js +4 -3
- package/build/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
- package/build/toolbar/toolbar-item/index.js +4 -3
- package/build/toolbar/toolbar-item/index.js.map +1 -1
- package/build/utils/get-node-text.js +30 -0
- package/build/utils/get-node-text.js.map +1 -0
- package/build/utils/math.js +18 -15
- package/build/utils/math.js.map +1 -1
- package/build-module/angle-picker-control/index.js +1 -1
- package/build-module/angle-picker-control/index.js.map +1 -1
- package/build-module/autocomplete/index.js +3 -28
- package/build-module/autocomplete/index.js.map +1 -1
- package/build-module/custom-select-control-v2/styles.js +9 -9
- package/build-module/custom-select-control-v2/styles.js.map +1 -1
- package/build-module/font-size-picker/font-size-picker-select.js +2 -9
- package/build-module/font-size-picker/font-size-picker-select.js.map +1 -1
- package/build-module/font-size-picker/index.js +14 -36
- package/build-module/font-size-picker/index.js.map +1 -1
- package/build-module/font-size-picker/styles.js +11 -18
- package/build-module/font-size-picker/styles.js.map +1 -1
- package/build-module/font-size-picker/utils.js +0 -22
- package/build-module/font-size-picker/utils.js.map +1 -1
- package/build-module/number-control/index.js +7 -5
- package/build-module/number-control/index.js.map +1 -1
- package/build-module/range-control/index.js +6 -5
- package/build-module/range-control/index.js.map +1 -1
- package/build-module/toolbar/toolbar-dropdown-menu/index.js +3 -2
- package/build-module/toolbar/toolbar-dropdown-menu/index.js.map +1 -1
- package/build-module/toolbar/toolbar-item/index.js +3 -2
- package/build-module/toolbar/toolbar-item/index.js.map +1 -1
- package/build-module/utils/get-node-text.js +24 -0
- package/build-module/utils/get-node-text.js.map +1 -0
- package/build-module/utils/math.js +17 -14
- package/build-module/utils/math.js.map +1 -1
- package/build-style/style-rtl.css +1 -3
- package/build-style/style.css +1 -3
- package/build-types/angle-picker-control/index.d.ts +1 -1
- package/build-types/autocomplete/index.d.ts +2 -2
- package/build-types/autocomplete/index.d.ts.map +1 -1
- package/build-types/custom-select-control-v2/styles.d.ts.map +1 -1
- package/build-types/font-size-picker/font-size-picker-select.d.ts.map +1 -1
- package/build-types/font-size-picker/index.d.ts.map +1 -1
- package/build-types/font-size-picker/styles.d.ts +0 -4
- package/build-types/font-size-picker/styles.d.ts.map +1 -1
- package/build-types/font-size-picker/utils.d.ts +1 -9
- package/build-types/font-size-picker/utils.d.ts.map +1 -1
- package/build-types/number-control/index.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts +6 -5
- package/build-types/range-control/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts +2 -2
- package/build-types/toolbar/toolbar-dropdown-menu/index.d.ts.map +1 -1
- package/build-types/toolbar/toolbar-item/index.d.ts +2 -2
- package/build-types/toolbar/toolbar-item/index.d.ts.map +1 -1
- package/build-types/utils/get-node-text.d.ts +3 -0
- package/build-types/utils/get-node-text.d.ts.map +1 -0
- package/build-types/utils/math.d.ts +10 -11
- package/build-types/utils/math.d.ts.map +1 -1
- package/package.json +19 -19
- package/src/angle-picker-control/README.md +1 -1
- package/src/angle-picker-control/index.tsx +1 -1
- package/src/autocomplete/index.tsx +3 -30
- package/src/button/style.scss +0 -2
- package/src/custom-select-control-v2/styles.ts +1 -0
- package/src/font-size-picker/font-size-picker-select.tsx +2 -12
- package/src/font-size-picker/index.tsx +18 -47
- package/src/font-size-picker/styles.ts +0 -5
- package/src/font-size-picker/test/index.tsx +36 -80
- package/src/font-size-picker/test/utils.ts +1 -37
- package/src/font-size-picker/utils.ts +1 -24
- package/src/form-token-field/style.scss +1 -1
- package/src/number-control/index.tsx +8 -7
- package/src/number-control/test/index.tsx +15 -2
- package/src/range-control/index.tsx +6 -5
- package/src/toolbar/toolbar-dropdown-menu/index.tsx +3 -2
- package/src/toolbar/toolbar-item/index.tsx +3 -2
- package/src/utils/get-node-text.ts +24 -0
- package/src/utils/math.js +17 -22
- package/src/utils/test/get-node-text.js +37 -0
- package/src/utils/test/math.js +28 -32
- package/src/utils/theme-variables.scss +0 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -321,17 +321,18 @@ function UnforwardedRangeControl(props, forwardedRef) {
|
|
|
321
321
|
* import { useState } from '@wordpress/element';
|
|
322
322
|
*
|
|
323
323
|
* const MyRangeControl = () => {
|
|
324
|
-
* const [
|
|
324
|
+
* const [ value, setValue ] = useState();
|
|
325
325
|
* return (
|
|
326
326
|
* <RangeControl
|
|
327
327
|
* __nextHasNoMarginBottom
|
|
328
328
|
* __next40pxDefaultSize
|
|
329
329
|
* help="Please select how transparent you would like this."
|
|
330
|
-
* initialPosition={50}
|
|
330
|
+
* initialPosition={ 50 }
|
|
331
331
|
* label="Opacity"
|
|
332
|
-
* max={100}
|
|
333
|
-
* min={0}
|
|
334
|
-
*
|
|
332
|
+
* max={ 100 }
|
|
333
|
+
* min={ 0 }
|
|
334
|
+
* value={ value }
|
|
335
|
+
* onChange={ setValue }
|
|
335
336
|
* />
|
|
336
337
|
* );
|
|
337
338
|
* };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_compose","_baseControl","_button","_icon","_utils","_utils2","_math","_inputRange","_rail","_tooltip","_rangeControlStyles","_space","_deprecated36pxSize","_jsxRuntime","noop","computeResetValue","resetFallbackValue","initialPosition","undefined","Number","isNaN","UnforwardedRangeControl","props","forwardedRef","__nextHasNoMarginBottom","afterIcon","allowReset","beforeIcon","className","color","colorProp","COLORS","theme","accent","currentInput","disabled","help","hideLabelFromVision","isShiftStepEnabled","label","marks","max","min","onBlur","onChange","onFocus","onMouseLeave","onMouseMove","railColor","renderTooltipContent","v","__next40pxDefaultSize","shiftStep","showTooltip","showTooltipProp","step","trackColor","value","valueProp","withInputField","__shouldNotWarnDeprecated36pxSize","otherProps","setValue","useControlledRangeValue","initial","isResetPendent","useRef","hasTooltip","hasInputField","setShowTooltip","useState","isFocused","setIsFocused","inputRef","isCurrentlyFocused","current","matches","isThumbFocused","isValueReset","currentValue","inputSliderValue","rangeFillValue","fillValue","fillValueOffset","clamp","classes","clsx","wrapperClasses","id","useInstanceId","describedBy","enableTooltip","isFinite","handleOnRangeChange","event","nextValue","parseFloat","target","handleOnChange","next","floatClamp","handleOnInputNumberBlur","handleOnReset","resetValue","handleShowTooltip","handleHideTooltip","handleOnBlur","handleOnFocus","offsetStyle","isRTL","maybeWarnDeprecated36pxSize","componentName","size","jsx","default","__associatedWPComponentName","children","jsxs","Root","BeforeIconWrapper","icon","Wrapper","ref","useMergeRefs","Track","style","width","ThumbWrapper","Thumb","tooltipPosition","show","AfterIconWrapper","InputNumber","inputMode","__unstableInputWidth","space","ActionRightWrapper","accessibleWhenDisabled","variant","onClick","__","RangeControl","exports","forwardRef","_default"],"sources":["@wordpress/components/src/range-control/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ChangeEvent, FocusEvent, ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useRef, useState, forwardRef } from '@wordpress/element';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BaseControl from '../base-control';\nimport Button from '../button';\nimport Icon from '../icon';\nimport { COLORS } from '../utils';\nimport { floatClamp, useControlledRangeValue } from './utils';\nimport { clamp } from '../utils/math';\nimport InputRange from './input-range';\nimport RangeRail from './rail';\nimport SimpleTooltip from './tooltip';\nimport {\n\tActionRightWrapper,\n\tAfterIconWrapper,\n\tBeforeIconWrapper,\n\tInputNumber,\n\tRoot,\n\tTrack,\n\tThumbWrapper,\n\tThumb,\n\tWrapper,\n} from './styles/range-control-styles';\n\nimport type { RangeControlProps } from './types';\nimport type { WordPressComponentProps } from '../context';\nimport { space } from '../utils/space';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\nconst noop = () => {};\n\n/**\n * Computes the value that `RangeControl` should reset to when pressing\n * the reset button.\n */\nfunction computeResetValue( {\n\tresetFallbackValue,\n\tinitialPosition,\n}: Pick< RangeControlProps, 'resetFallbackValue' | 'initialPosition' > ) {\n\tif ( resetFallbackValue !== undefined ) {\n\t\treturn ! Number.isNaN( resetFallbackValue ) ? resetFallbackValue : null;\n\t}\n\n\tif ( initialPosition !== undefined ) {\n\t\treturn ! Number.isNaN( initialPosition ) ? initialPosition : null;\n\t}\n\n\treturn null;\n}\n\nfunction UnforwardedRangeControl(\n\tprops: WordPressComponentProps< RangeControlProps, 'input', false >,\n\tforwardedRef: ForwardedRef< HTMLInputElement >\n) {\n\tconst {\n\t\t__nextHasNoMarginBottom = false,\n\t\tafterIcon,\n\t\tallowReset = false,\n\t\tbeforeIcon,\n\t\tclassName,\n\t\tcolor: colorProp = COLORS.theme.accent,\n\t\tcurrentInput,\n\t\tdisabled = false,\n\t\thelp,\n\t\thideLabelFromVision = false,\n\t\tinitialPosition,\n\t\tisShiftStepEnabled = true,\n\t\tlabel,\n\t\tmarks = false,\n\t\tmax = 100,\n\t\tmin = 0,\n\t\tonBlur = noop,\n\t\tonChange = noop,\n\t\tonFocus = noop,\n\t\tonMouseLeave = noop,\n\t\tonMouseMove = noop,\n\t\trailColor,\n\t\trenderTooltipContent = ( v ) => v,\n\t\tresetFallbackValue,\n\t\t__next40pxDefaultSize = false,\n\t\tshiftStep = 10,\n\t\tshowTooltip: showTooltipProp,\n\t\tstep = 1,\n\t\ttrackColor,\n\t\tvalue: valueProp,\n\t\twithInputField = true,\n\t\t__shouldNotWarnDeprecated36pxSize,\n\t\t...otherProps\n\t} = props;\n\n\tconst [ value, setValue ] = useControlledRangeValue( {\n\t\tmin,\n\t\tmax,\n\t\tvalue: valueProp ?? null,\n\t\tinitial: initialPosition,\n\t} );\n\tconst isResetPendent = useRef( false );\n\n\tlet hasTooltip = showTooltipProp;\n\tlet hasInputField = withInputField;\n\n\tif ( step === 'any' ) {\n\t\t// The tooltip and number input field are hidden when the step is \"any\"\n\t\t// because the decimals get too lengthy to fit well.\n\t\thasTooltip = false;\n\t\thasInputField = false;\n\t}\n\n\tconst [ showTooltip, setShowTooltip ] = useState( hasTooltip );\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\tconst inputRef = useRef< HTMLInputElement >();\n\tconst isCurrentlyFocused = inputRef.current?.matches( ':focus' );\n\tconst isThumbFocused = ! disabled && isFocused;\n\n\tconst isValueReset = value === null;\n\tconst currentValue = value !== undefined ? value : currentInput;\n\n\tconst inputSliderValue = isValueReset ? '' : currentValue;\n\tconst rangeFillValue = isValueReset ? ( max - min ) / 2 + min : value;\n\n\tconst fillValue = isValueReset\n\t\t? 50\n\t\t: ( ( value - min ) / ( max - min ) ) * 100;\n\tconst fillValueOffset = `${ clamp( fillValue, 0, 100 ) }%`;\n\n\tconst classes = clsx( 'components-range-control', className );\n\n\tconst wrapperClasses = clsx(\n\t\t'components-range-control__wrapper',\n\t\t!! marks && 'is-marked'\n\t);\n\n\tconst id = useInstanceId(\n\t\tUnforwardedRangeControl,\n\t\t'inspector-range-control'\n\t);\n\tconst describedBy = !! help ? `${ id }__help` : undefined;\n\tconst enableTooltip = hasTooltip !== false && Number.isFinite( value );\n\n\tconst handleOnRangeChange = ( event: ChangeEvent< HTMLInputElement > ) => {\n\t\tconst nextValue = parseFloat( event.target.value );\n\t\tsetValue( nextValue );\n\t\tonChange( nextValue );\n\t};\n\n\tconst handleOnChange = ( next?: string ) => {\n\t\t// @ts-expect-error TODO: Investigate if it's problematic for setValue() to\n\t\t// potentially receive a NaN when next is undefined.\n\t\tlet nextValue = parseFloat( next );\n\t\tsetValue( nextValue );\n\n\t\t/*\n\t\t * Calls onChange only when nextValue is numeric\n\t\t * otherwise may queue a reset for the blur event.\n\t\t */\n\t\tif ( ! isNaN( nextValue ) ) {\n\t\t\tif ( nextValue < min || nextValue > max ) {\n\t\t\t\tnextValue = floatClamp( nextValue, min, max ) as number;\n\t\t\t}\n\n\t\t\tonChange( nextValue );\n\t\t\tisResetPendent.current = false;\n\t\t} else if ( allowReset ) {\n\t\t\tisResetPendent.current = true;\n\t\t}\n\t};\n\n\tconst handleOnInputNumberBlur = () => {\n\t\tif ( isResetPendent.current ) {\n\t\t\thandleOnReset();\n\t\t\tisResetPendent.current = false;\n\t\t}\n\t};\n\n\tconst handleOnReset = () => {\n\t\t// Reset to `resetFallbackValue` if defined, otherwise set internal value\n\t\t// to `null` — which, if propagated to the `value` prop, will cause\n\t\t// the value to be reset to the `initialPosition` prop if defined.\n\t\tconst resetValue = Number.isNaN( resetFallbackValue )\n\t\t\t? null\n\t\t\t: resetFallbackValue ?? null;\n\n\t\tsetValue( resetValue );\n\n\t\t/**\n\t\t * Previously, this callback would always receive undefined as\n\t\t * an argument. This behavior is unexpected, specifically\n\t\t * when resetFallbackValue is defined.\n\t\t *\n\t\t * The value of undefined is not ideal. Passing it through\n\t\t * to internal <input /> elements would change it from a\n\t\t * controlled component to an uncontrolled component.\n\t\t *\n\t\t * For now, to minimize unexpected regressions, we're going to\n\t\t * preserve the undefined callback argument, except when a\n\t\t * resetFallbackValue is defined.\n\t\t */\n\t\tonChange( resetValue ?? undefined );\n\t};\n\n\tconst handleShowTooltip = () => setShowTooltip( true );\n\tconst handleHideTooltip = () => setShowTooltip( false );\n\n\tconst handleOnBlur = ( event: FocusEvent< HTMLInputElement > ) => {\n\t\tonBlur( event );\n\t\tsetIsFocused( false );\n\t\thandleHideTooltip();\n\t};\n\n\tconst handleOnFocus = ( event: FocusEvent< HTMLInputElement > ) => {\n\t\tonFocus( event );\n\t\tsetIsFocused( true );\n\t\thandleShowTooltip();\n\t};\n\n\tconst offsetStyle = {\n\t\t[ isRTL() ? 'right' : 'left' ]: fillValueOffset,\n\t};\n\n\t// Add default size deprecation warning.\n\tmaybeWarnDeprecated36pxSize( {\n\t\tcomponentName: 'RangeControl',\n\t\t__next40pxDefaultSize,\n\t\tsize: undefined,\n\t\t__shouldNotWarnDeprecated36pxSize,\n\t} );\n\n\treturn (\n\t\t<BaseControl\n\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t__associatedWPComponentName=\"RangeControl\"\n\t\t\tclassName={ classes }\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tid={ `${ id }` }\n\t\t\thelp={ help }\n\t\t>\n\t\t\t<Root\n\t\t\t\tclassName=\"components-range-control__root\"\n\t\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\t>\n\t\t\t\t{ beforeIcon && (\n\t\t\t\t\t<BeforeIconWrapper>\n\t\t\t\t\t\t<Icon icon={ beforeIcon } />\n\t\t\t\t\t</BeforeIconWrapper>\n\t\t\t\t) }\n\t\t\t\t<Wrapper\n\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t\tclassName={ wrapperClasses }\n\t\t\t\t\tcolor={ colorProp }\n\t\t\t\t\tmarks={ !! marks }\n\t\t\t\t>\n\t\t\t\t\t<InputRange\n\t\t\t\t\t\t{ ...otherProps }\n\t\t\t\t\t\tclassName=\"components-range-control__slider\"\n\t\t\t\t\t\tdescribedBy={ describedBy }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tid={ `${ id }` }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tmax={ max }\n\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\t\t\tonChange={ handleOnRangeChange }\n\t\t\t\t\t\tonFocus={ handleOnFocus }\n\t\t\t\t\t\tonMouseMove={ onMouseMove }\n\t\t\t\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\t\t\t\tref={ useMergeRefs( [ inputRef, forwardedRef ] ) }\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\tvalue={ inputSliderValue ?? undefined }\n\t\t\t\t\t/>\n\t\t\t\t\t<RangeRail\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tmarks={ marks }\n\t\t\t\t\t\tmax={ max }\n\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\trailColor={ railColor }\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\tvalue={ rangeFillValue }\n\t\t\t\t\t/>\n\t\t\t\t\t<Track\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\tclassName=\"components-range-control__track\"\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tstyle={ { width: fillValueOffset } }\n\t\t\t\t\t\ttrackColor={ trackColor }\n\t\t\t\t\t/>\n\t\t\t\t\t<ThumbWrapper\n\t\t\t\t\t\tclassName=\"components-range-control__thumb-wrapper\"\n\t\t\t\t\t\tstyle={ offsetStyle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Thumb\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\tisFocused={ isThumbFocused }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ThumbWrapper>\n\t\t\t\t\t{ enableTooltip && (\n\t\t\t\t\t\t<SimpleTooltip\n\t\t\t\t\t\t\tclassName=\"components-range-control__tooltip\"\n\t\t\t\t\t\t\tinputRef={ inputRef }\n\t\t\t\t\t\t\ttooltipPosition=\"bottom\"\n\t\t\t\t\t\t\trenderTooltipContent={ renderTooltipContent }\n\t\t\t\t\t\t\tshow={ isCurrentlyFocused || showTooltip }\n\t\t\t\t\t\t\tstyle={ offsetStyle }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Wrapper>\n\t\t\t\t{ afterIcon && (\n\t\t\t\t\t<AfterIconWrapper>\n\t\t\t\t\t\t<Icon icon={ afterIcon } />\n\t\t\t\t\t</AfterIconWrapper>\n\t\t\t\t) }\n\t\t\t\t{ hasInputField && (\n\t\t\t\t\t<InputNumber\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tclassName=\"components-range-control__number\"\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tinputMode=\"decimal\"\n\t\t\t\t\t\tisShiftStepEnabled={ isShiftStepEnabled }\n\t\t\t\t\t\tmax={ max }\n\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\tonBlur={ handleOnInputNumberBlur }\n\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\tshiftStep={ shiftStep }\n\t\t\t\t\t\tsize={\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t? '__unstable-large'\n\t\t\t\t\t\t\t\t: 'default'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t__unstableInputWidth={\n\t\t\t\t\t\t\t__next40pxDefaultSize ? space( 20 ) : space( 16 )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\t// @ts-expect-error TODO: Investigate if the `null` value is necessary\n\t\t\t\t\t\tvalue={ inputSliderValue }\n\t\t\t\t\t\t__shouldNotWarnDeprecated36pxSize\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ allowReset && (\n\t\t\t\t\t<ActionRightWrapper>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"components-range-control__reset\"\n\t\t\t\t\t\t\t// If the RangeControl itself is disabled, the reset button shouldn't be in the tab sequence.\n\t\t\t\t\t\t\taccessibleWhenDisabled={ ! disabled }\n\t\t\t\t\t\t\t// The reset button should be disabled if RangeControl itself is disabled,\n\t\t\t\t\t\t\t// or if the current `value` is equal to the value that would be currently\n\t\t\t\t\t\t\t// assigned when clicking the button.\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\tdisabled ||\n\t\t\t\t\t\t\t\tvalue ===\n\t\t\t\t\t\t\t\t\tcomputeResetValue( {\n\t\t\t\t\t\t\t\t\t\tresetFallbackValue,\n\t\t\t\t\t\t\t\t\t\tinitialPosition,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={ handleOnReset }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</ActionRightWrapper>\n\t\t\t\t) }\n\t\t\t</Root>\n\t\t</BaseControl>\n\t);\n}\n\n/**\n * RangeControls are used to make selections from a range of incremental values.\n *\n * ```jsx\n * import { RangeControl } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyRangeControl = () => {\n * const [ isChecked, setChecked ] = useState( true );\n * return (\n * <RangeControl\n * __nextHasNoMarginBottom\n * __next40pxDefaultSize\n * help=\"Please select how transparent you would like this.\"\n * initialPosition={50}\n * label=\"Opacity\"\n * max={100}\n * min={0}\n * onChange={() => {}}\n * />\n * );\n * };\n * ```\n */\nexport const RangeControl = forwardRef( UnforwardedRangeControl );\n\nexport default RangeControl;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["_clsx","_interopRequireDefault","require","_i18n","_element","_compose","_baseControl","_button","_icon","_utils","_utils2","_math","_inputRange","_rail","_tooltip","_rangeControlStyles","_space","_deprecated36pxSize","_jsxRuntime","noop","computeResetValue","resetFallbackValue","initialPosition","undefined","Number","isNaN","UnforwardedRangeControl","props","forwardedRef","__nextHasNoMarginBottom","afterIcon","allowReset","beforeIcon","className","color","colorProp","COLORS","theme","accent","currentInput","disabled","help","hideLabelFromVision","isShiftStepEnabled","label","marks","max","min","onBlur","onChange","onFocus","onMouseLeave","onMouseMove","railColor","renderTooltipContent","v","__next40pxDefaultSize","shiftStep","showTooltip","showTooltipProp","step","trackColor","value","valueProp","withInputField","__shouldNotWarnDeprecated36pxSize","otherProps","setValue","useControlledRangeValue","initial","isResetPendent","useRef","hasTooltip","hasInputField","setShowTooltip","useState","isFocused","setIsFocused","inputRef","isCurrentlyFocused","current","matches","isThumbFocused","isValueReset","currentValue","inputSliderValue","rangeFillValue","fillValue","fillValueOffset","clamp","classes","clsx","wrapperClasses","id","useInstanceId","describedBy","enableTooltip","isFinite","handleOnRangeChange","event","nextValue","parseFloat","target","handleOnChange","next","floatClamp","handleOnInputNumberBlur","handleOnReset","resetValue","handleShowTooltip","handleHideTooltip","handleOnBlur","handleOnFocus","offsetStyle","isRTL","maybeWarnDeprecated36pxSize","componentName","size","jsx","default","__associatedWPComponentName","children","jsxs","Root","BeforeIconWrapper","icon","Wrapper","ref","useMergeRefs","Track","style","width","ThumbWrapper","Thumb","tooltipPosition","show","AfterIconWrapper","InputNumber","inputMode","__unstableInputWidth","space","ActionRightWrapper","accessibleWhenDisabled","variant","onClick","__","RangeControl","exports","forwardRef","_default"],"sources":["@wordpress/components/src/range-control/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { ChangeEvent, FocusEvent, ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __, isRTL } from '@wordpress/i18n';\nimport { useRef, useState, forwardRef } from '@wordpress/element';\nimport { useInstanceId, useMergeRefs } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BaseControl from '../base-control';\nimport Button from '../button';\nimport Icon from '../icon';\nimport { COLORS } from '../utils';\nimport { floatClamp, useControlledRangeValue } from './utils';\nimport { clamp } from '../utils/math';\nimport InputRange from './input-range';\nimport RangeRail from './rail';\nimport SimpleTooltip from './tooltip';\nimport {\n\tActionRightWrapper,\n\tAfterIconWrapper,\n\tBeforeIconWrapper,\n\tInputNumber,\n\tRoot,\n\tTrack,\n\tThumbWrapper,\n\tThumb,\n\tWrapper,\n} from './styles/range-control-styles';\n\nimport type { RangeControlProps } from './types';\nimport type { WordPressComponentProps } from '../context';\nimport { space } from '../utils/space';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\nconst noop = () => {};\n\n/**\n * Computes the value that `RangeControl` should reset to when pressing\n * the reset button.\n */\nfunction computeResetValue( {\n\tresetFallbackValue,\n\tinitialPosition,\n}: Pick< RangeControlProps, 'resetFallbackValue' | 'initialPosition' > ) {\n\tif ( resetFallbackValue !== undefined ) {\n\t\treturn ! Number.isNaN( resetFallbackValue ) ? resetFallbackValue : null;\n\t}\n\n\tif ( initialPosition !== undefined ) {\n\t\treturn ! Number.isNaN( initialPosition ) ? initialPosition : null;\n\t}\n\n\treturn null;\n}\n\nfunction UnforwardedRangeControl(\n\tprops: WordPressComponentProps< RangeControlProps, 'input', false >,\n\tforwardedRef: ForwardedRef< HTMLInputElement >\n) {\n\tconst {\n\t\t__nextHasNoMarginBottom = false,\n\t\tafterIcon,\n\t\tallowReset = false,\n\t\tbeforeIcon,\n\t\tclassName,\n\t\tcolor: colorProp = COLORS.theme.accent,\n\t\tcurrentInput,\n\t\tdisabled = false,\n\t\thelp,\n\t\thideLabelFromVision = false,\n\t\tinitialPosition,\n\t\tisShiftStepEnabled = true,\n\t\tlabel,\n\t\tmarks = false,\n\t\tmax = 100,\n\t\tmin = 0,\n\t\tonBlur = noop,\n\t\tonChange = noop,\n\t\tonFocus = noop,\n\t\tonMouseLeave = noop,\n\t\tonMouseMove = noop,\n\t\trailColor,\n\t\trenderTooltipContent = ( v ) => v,\n\t\tresetFallbackValue,\n\t\t__next40pxDefaultSize = false,\n\t\tshiftStep = 10,\n\t\tshowTooltip: showTooltipProp,\n\t\tstep = 1,\n\t\ttrackColor,\n\t\tvalue: valueProp,\n\t\twithInputField = true,\n\t\t__shouldNotWarnDeprecated36pxSize,\n\t\t...otherProps\n\t} = props;\n\n\tconst [ value, setValue ] = useControlledRangeValue( {\n\t\tmin,\n\t\tmax,\n\t\tvalue: valueProp ?? null,\n\t\tinitial: initialPosition,\n\t} );\n\tconst isResetPendent = useRef( false );\n\n\tlet hasTooltip = showTooltipProp;\n\tlet hasInputField = withInputField;\n\n\tif ( step === 'any' ) {\n\t\t// The tooltip and number input field are hidden when the step is \"any\"\n\t\t// because the decimals get too lengthy to fit well.\n\t\thasTooltip = false;\n\t\thasInputField = false;\n\t}\n\n\tconst [ showTooltip, setShowTooltip ] = useState( hasTooltip );\n\tconst [ isFocused, setIsFocused ] = useState( false );\n\n\tconst inputRef = useRef< HTMLInputElement >();\n\tconst isCurrentlyFocused = inputRef.current?.matches( ':focus' );\n\tconst isThumbFocused = ! disabled && isFocused;\n\n\tconst isValueReset = value === null;\n\tconst currentValue = value !== undefined ? value : currentInput;\n\n\tconst inputSliderValue = isValueReset ? '' : currentValue;\n\tconst rangeFillValue = isValueReset ? ( max - min ) / 2 + min : value;\n\n\tconst fillValue = isValueReset\n\t\t? 50\n\t\t: ( ( value - min ) / ( max - min ) ) * 100;\n\tconst fillValueOffset = `${ clamp( fillValue, 0, 100 ) }%`;\n\n\tconst classes = clsx( 'components-range-control', className );\n\n\tconst wrapperClasses = clsx(\n\t\t'components-range-control__wrapper',\n\t\t!! marks && 'is-marked'\n\t);\n\n\tconst id = useInstanceId(\n\t\tUnforwardedRangeControl,\n\t\t'inspector-range-control'\n\t);\n\tconst describedBy = !! help ? `${ id }__help` : undefined;\n\tconst enableTooltip = hasTooltip !== false && Number.isFinite( value );\n\n\tconst handleOnRangeChange = ( event: ChangeEvent< HTMLInputElement > ) => {\n\t\tconst nextValue = parseFloat( event.target.value );\n\t\tsetValue( nextValue );\n\t\tonChange( nextValue );\n\t};\n\n\tconst handleOnChange = ( next?: string ) => {\n\t\t// @ts-expect-error TODO: Investigate if it's problematic for setValue() to\n\t\t// potentially receive a NaN when next is undefined.\n\t\tlet nextValue = parseFloat( next );\n\t\tsetValue( nextValue );\n\n\t\t/*\n\t\t * Calls onChange only when nextValue is numeric\n\t\t * otherwise may queue a reset for the blur event.\n\t\t */\n\t\tif ( ! isNaN( nextValue ) ) {\n\t\t\tif ( nextValue < min || nextValue > max ) {\n\t\t\t\tnextValue = floatClamp( nextValue, min, max ) as number;\n\t\t\t}\n\n\t\t\tonChange( nextValue );\n\t\t\tisResetPendent.current = false;\n\t\t} else if ( allowReset ) {\n\t\t\tisResetPendent.current = true;\n\t\t}\n\t};\n\n\tconst handleOnInputNumberBlur = () => {\n\t\tif ( isResetPendent.current ) {\n\t\t\thandleOnReset();\n\t\t\tisResetPendent.current = false;\n\t\t}\n\t};\n\n\tconst handleOnReset = () => {\n\t\t// Reset to `resetFallbackValue` if defined, otherwise set internal value\n\t\t// to `null` — which, if propagated to the `value` prop, will cause\n\t\t// the value to be reset to the `initialPosition` prop if defined.\n\t\tconst resetValue = Number.isNaN( resetFallbackValue )\n\t\t\t? null\n\t\t\t: resetFallbackValue ?? null;\n\n\t\tsetValue( resetValue );\n\n\t\t/**\n\t\t * Previously, this callback would always receive undefined as\n\t\t * an argument. This behavior is unexpected, specifically\n\t\t * when resetFallbackValue is defined.\n\t\t *\n\t\t * The value of undefined is not ideal. Passing it through\n\t\t * to internal <input /> elements would change it from a\n\t\t * controlled component to an uncontrolled component.\n\t\t *\n\t\t * For now, to minimize unexpected regressions, we're going to\n\t\t * preserve the undefined callback argument, except when a\n\t\t * resetFallbackValue is defined.\n\t\t */\n\t\tonChange( resetValue ?? undefined );\n\t};\n\n\tconst handleShowTooltip = () => setShowTooltip( true );\n\tconst handleHideTooltip = () => setShowTooltip( false );\n\n\tconst handleOnBlur = ( event: FocusEvent< HTMLInputElement > ) => {\n\t\tonBlur( event );\n\t\tsetIsFocused( false );\n\t\thandleHideTooltip();\n\t};\n\n\tconst handleOnFocus = ( event: FocusEvent< HTMLInputElement > ) => {\n\t\tonFocus( event );\n\t\tsetIsFocused( true );\n\t\thandleShowTooltip();\n\t};\n\n\tconst offsetStyle = {\n\t\t[ isRTL() ? 'right' : 'left' ]: fillValueOffset,\n\t};\n\n\t// Add default size deprecation warning.\n\tmaybeWarnDeprecated36pxSize( {\n\t\tcomponentName: 'RangeControl',\n\t\t__next40pxDefaultSize,\n\t\tsize: undefined,\n\t\t__shouldNotWarnDeprecated36pxSize,\n\t} );\n\n\treturn (\n\t\t<BaseControl\n\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t__associatedWPComponentName=\"RangeControl\"\n\t\t\tclassName={ classes }\n\t\t\tlabel={ label }\n\t\t\thideLabelFromVision={ hideLabelFromVision }\n\t\t\tid={ `${ id }` }\n\t\t\thelp={ help }\n\t\t>\n\t\t\t<Root\n\t\t\t\tclassName=\"components-range-control__root\"\n\t\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\t>\n\t\t\t\t{ beforeIcon && (\n\t\t\t\t\t<BeforeIconWrapper>\n\t\t\t\t\t\t<Icon icon={ beforeIcon } />\n\t\t\t\t\t</BeforeIconWrapper>\n\t\t\t\t) }\n\t\t\t\t<Wrapper\n\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t\tclassName={ wrapperClasses }\n\t\t\t\t\tcolor={ colorProp }\n\t\t\t\t\tmarks={ !! marks }\n\t\t\t\t>\n\t\t\t\t\t<InputRange\n\t\t\t\t\t\t{ ...otherProps }\n\t\t\t\t\t\tclassName=\"components-range-control__slider\"\n\t\t\t\t\t\tdescribedBy={ describedBy }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tid={ `${ id }` }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\tmax={ max }\n\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\tonBlur={ handleOnBlur }\n\t\t\t\t\t\tonChange={ handleOnRangeChange }\n\t\t\t\t\t\tonFocus={ handleOnFocus }\n\t\t\t\t\t\tonMouseMove={ onMouseMove }\n\t\t\t\t\t\tonMouseLeave={ onMouseLeave }\n\t\t\t\t\t\tref={ useMergeRefs( [ inputRef, forwardedRef ] ) }\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\tvalue={ inputSliderValue ?? undefined }\n\t\t\t\t\t/>\n\t\t\t\t\t<RangeRail\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tmarks={ marks }\n\t\t\t\t\t\tmax={ max }\n\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\trailColor={ railColor }\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\tvalue={ rangeFillValue }\n\t\t\t\t\t/>\n\t\t\t\t\t<Track\n\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\tclassName=\"components-range-control__track\"\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tstyle={ { width: fillValueOffset } }\n\t\t\t\t\t\ttrackColor={ trackColor }\n\t\t\t\t\t/>\n\t\t\t\t\t<ThumbWrapper\n\t\t\t\t\t\tclassName=\"components-range-control__thumb-wrapper\"\n\t\t\t\t\t\tstyle={ offsetStyle }\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Thumb\n\t\t\t\t\t\t\taria-hidden\n\t\t\t\t\t\t\tisFocused={ isThumbFocused }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ThumbWrapper>\n\t\t\t\t\t{ enableTooltip && (\n\t\t\t\t\t\t<SimpleTooltip\n\t\t\t\t\t\t\tclassName=\"components-range-control__tooltip\"\n\t\t\t\t\t\t\tinputRef={ inputRef }\n\t\t\t\t\t\t\ttooltipPosition=\"bottom\"\n\t\t\t\t\t\t\trenderTooltipContent={ renderTooltipContent }\n\t\t\t\t\t\t\tshow={ isCurrentlyFocused || showTooltip }\n\t\t\t\t\t\t\tstyle={ offsetStyle }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) }\n\t\t\t\t</Wrapper>\n\t\t\t\t{ afterIcon && (\n\t\t\t\t\t<AfterIconWrapper>\n\t\t\t\t\t\t<Icon icon={ afterIcon } />\n\t\t\t\t\t</AfterIconWrapper>\n\t\t\t\t) }\n\t\t\t\t{ hasInputField && (\n\t\t\t\t\t<InputNumber\n\t\t\t\t\t\taria-label={ label }\n\t\t\t\t\t\tclassName=\"components-range-control__number\"\n\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\tinputMode=\"decimal\"\n\t\t\t\t\t\tisShiftStepEnabled={ isShiftStepEnabled }\n\t\t\t\t\t\tmax={ max }\n\t\t\t\t\t\tmin={ min }\n\t\t\t\t\t\tonBlur={ handleOnInputNumberBlur }\n\t\t\t\t\t\tonChange={ handleOnChange }\n\t\t\t\t\t\tshiftStep={ shiftStep }\n\t\t\t\t\t\tsize={\n\t\t\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\t\t\t\t? '__unstable-large'\n\t\t\t\t\t\t\t\t: 'default'\n\t\t\t\t\t\t}\n\t\t\t\t\t\t__unstableInputWidth={\n\t\t\t\t\t\t\t__next40pxDefaultSize ? space( 20 ) : space( 16 )\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstep={ step }\n\t\t\t\t\t\t// @ts-expect-error TODO: Investigate if the `null` value is necessary\n\t\t\t\t\t\tvalue={ inputSliderValue }\n\t\t\t\t\t\t__shouldNotWarnDeprecated36pxSize\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t\t{ allowReset && (\n\t\t\t\t\t<ActionRightWrapper>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tclassName=\"components-range-control__reset\"\n\t\t\t\t\t\t\t// If the RangeControl itself is disabled, the reset button shouldn't be in the tab sequence.\n\t\t\t\t\t\t\taccessibleWhenDisabled={ ! disabled }\n\t\t\t\t\t\t\t// The reset button should be disabled if RangeControl itself is disabled,\n\t\t\t\t\t\t\t// or if the current `value` is equal to the value that would be currently\n\t\t\t\t\t\t\t// assigned when clicking the button.\n\t\t\t\t\t\t\tdisabled={\n\t\t\t\t\t\t\t\tdisabled ||\n\t\t\t\t\t\t\t\tvalue ===\n\t\t\t\t\t\t\t\t\tcomputeResetValue( {\n\t\t\t\t\t\t\t\t\t\tresetFallbackValue,\n\t\t\t\t\t\t\t\t\t\tinitialPosition,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tvariant=\"secondary\"\n\t\t\t\t\t\t\tsize=\"small\"\n\t\t\t\t\t\t\tonClick={ handleOnReset }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t</ActionRightWrapper>\n\t\t\t\t) }\n\t\t\t</Root>\n\t\t</BaseControl>\n\t);\n}\n\n/**\n * RangeControls are used to make selections from a range of incremental values.\n *\n * ```jsx\n * import { RangeControl } from '@wordpress/components';\n * import { useState } from '@wordpress/element';\n *\n * const MyRangeControl = () => {\n * const [ value, setValue ] = useState();\n * return (\n * <RangeControl\n * __nextHasNoMarginBottom\n * __next40pxDefaultSize\n * help=\"Please select how transparent you would like this.\"\n * initialPosition={ 50 }\n * label=\"Opacity\"\n * max={ 100 }\n * min={ 0 }\n * value={ value }\n * onChange={ setValue }\n * />\n * );\n * };\n * ```\n */\nexport const RangeControl = forwardRef( UnforwardedRangeControl );\n\nexport default RangeControl;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = void 0;
|
|
7
|
+
exports.default = exports.ToolbarDropdownMenu = void 0;
|
|
8
8
|
var _element = require("@wordpress/element");
|
|
9
9
|
var _toolbarItem = _interopRequireDefault(require("../toolbar-item"));
|
|
10
10
|
var _toolbarContext = _interopRequireDefault(require("../toolbar-context"));
|
|
@@ -22,7 +22,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
22
22
|
* Internal dependencies
|
|
23
23
|
*/
|
|
24
24
|
|
|
25
|
-
function
|
|
25
|
+
function UnforwardedToolbarDropdownMenu(props, ref) {
|
|
26
26
|
const accessibleToolbarState = (0, _element.useContext)(_toolbarContext.default);
|
|
27
27
|
if (!accessibleToolbarState) {
|
|
28
28
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_dropdownMenu.default, {
|
|
@@ -45,5 +45,6 @@ function ToolbarDropdownMenu(props, ref) {
|
|
|
45
45
|
})
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
const ToolbarDropdownMenu = exports.ToolbarDropdownMenu = (0, _element.forwardRef)(UnforwardedToolbarDropdownMenu);
|
|
49
|
+
var _default = exports.default = ToolbarDropdownMenu;
|
|
49
50
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_element","require","_toolbarItem","_interopRequireDefault","_toolbarContext","_dropdownMenu","_jsxRuntime","
|
|
1
|
+
{"version":3,"names":["_element","require","_toolbarItem","_interopRequireDefault","_toolbarContext","_dropdownMenu","_jsxRuntime","UnforwardedToolbarDropdownMenu","props","ref","accessibleToolbarState","useContext","ToolbarContext","jsx","default","toggleProps","children","toolbarItemProps","popoverProps","ToolbarDropdownMenu","exports","forwardRef","_default"],"sources":["@wordpress/components/src/toolbar/toolbar-dropdown-menu/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { forwardRef, useContext } from '@wordpress/element';\n\n/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\n\n/**\n * Internal dependencies\n */\nimport ToolbarItem from '../toolbar-item';\nimport ToolbarContext from '../toolbar-context';\nimport DropdownMenu from '../../dropdown-menu';\nimport type { DropdownMenuProps } from '../../dropdown-menu/types';\n\nfunction UnforwardedToolbarDropdownMenu(\n\tprops: DropdownMenuProps,\n\tref: ForwardedRef< any >\n) {\n\tconst accessibleToolbarState = useContext( ToolbarContext );\n\n\tif ( ! accessibleToolbarState ) {\n\t\treturn <DropdownMenu { ...props } />;\n\t}\n\n\t// ToolbarItem will pass all props to the render prop child, which will pass\n\t// all props to the toggle of DropdownMenu. This means that ToolbarDropdownMenu\n\t// has the same API as DropdownMenu.\n\treturn (\n\t\t<ToolbarItem ref={ ref } { ...props.toggleProps }>\n\t\t\t{ ( toolbarItemProps ) => (\n\t\t\t\t<DropdownMenu\n\t\t\t\t\t{ ...props }\n\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t...props.popoverProps,\n\t\t\t\t\t} }\n\t\t\t\t\ttoggleProps={ toolbarItemProps }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</ToolbarItem>\n\t);\n}\n\nexport const ToolbarDropdownMenu = forwardRef( UnforwardedToolbarDropdownMenu );\nexport default ToolbarDropdownMenu;\n"],"mappings":";;;;;;;AAGA,IAAAA,QAAA,GAAAC,OAAA;AAUA,IAAAC,YAAA,GAAAC,sBAAA,CAAAF,OAAA;AACA,IAAAG,eAAA,GAAAD,sBAAA,CAAAF,OAAA;AACA,IAAAI,aAAA,GAAAF,sBAAA,CAAAF,OAAA;AAA+C,IAAAK,WAAA,GAAAL,OAAA;AAf/C;AACA;AACA;;AAGA;AACA;AACA;;AAGA;AACA;AACA;;AAMA,SAASM,8BAA8BA,CACtCC,KAAwB,EACxBC,GAAwB,EACvB;EACD,MAAMC,sBAAsB,GAAG,IAAAC,mBAAU,EAAEC,uBAAe,CAAC;EAE3D,IAAK,CAAEF,sBAAsB,EAAG;IAC/B,oBAAO,IAAAJ,WAAA,CAAAO,GAAA,EAACR,aAAA,CAAAS,OAAY;MAAA,GAAMN;IAAK,CAAI,CAAC;EACrC;;EAEA;EACA;EACA;EACA,oBACC,IAAAF,WAAA,CAAAO,GAAA,EAACX,YAAA,CAAAY,OAAW;IAACL,GAAG,EAAGA,GAAK;IAAA,GAAMD,KAAK,CAACO,WAAW;IAAAC,QAAA,EAC1CC,gBAAgB,iBACnB,IAAAX,WAAA,CAAAO,GAAA,EAACR,aAAA,CAAAS,OAAY;MAAA,GACPN,KAAK;MACVU,YAAY,EAAG;QACd,GAAGV,KAAK,CAACU;MACV,CAAG;MACHH,WAAW,EAAGE;IAAkB,CAChC;EACD,CACW,CAAC;AAEhB;AAEO,MAAME,mBAAmB,GAAAC,OAAA,CAAAD,mBAAA,GAAG,IAAAE,mBAAU,EAAEd,8BAA+B,CAAC;AAAC,IAAAe,QAAA,GAAAF,OAAA,CAAAN,OAAA,GACjEK,mBAAmB","ignoreList":[]}
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = void 0;
|
|
7
|
+
exports.default = exports.ToolbarItem = void 0;
|
|
8
8
|
var Ariakit = _interopRequireWildcard(require("@ariakit/react"));
|
|
9
9
|
var _element = require("@wordpress/element");
|
|
10
10
|
var _warning = _interopRequireDefault(require("@wordpress/warning"));
|
|
@@ -24,7 +24,7 @@ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e;
|
|
|
24
24
|
* Internal dependencies
|
|
25
25
|
*/
|
|
26
26
|
|
|
27
|
-
function
|
|
27
|
+
function UnforwardedToolbarItem({
|
|
28
28
|
children,
|
|
29
29
|
as: Component,
|
|
30
30
|
...props
|
|
@@ -62,5 +62,6 @@ function ToolbarItem({
|
|
|
62
62
|
render: render
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
|
|
65
|
+
const ToolbarItem = exports.ToolbarItem = (0, _element.forwardRef)(UnforwardedToolbarItem);
|
|
66
|
+
var _default = exports.default = ToolbarItem;
|
|
66
67
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Ariakit","_interopRequireWildcard","require","_element","_warning","_interopRequireDefault","_toolbarContext","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","
|
|
1
|
+
{"version":3,"names":["Ariakit","_interopRequireWildcard","require","_element","_warning","_interopRequireDefault","_toolbarContext","_jsxRuntime","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","UnforwardedToolbarItem","children","as","Component","props","ref","accessibleToolbarStore","useContext","ToolbarContext","isRenderProp","globalThis","SCRIPT_DEBUG","warning","allProps","jsx","render","ToolbarItem","accessibleWhenDisabled","store","exports","forwardRef","_default"],"sources":["@wordpress/components/src/toolbar/toolbar-item/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport * as Ariakit from '@ariakit/react';\nimport type { ForwardedRef } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useContext } from '@wordpress/element';\nimport warning from '@wordpress/warning';\n\n/**\n * Internal dependencies\n */\nimport ToolbarContext from '../toolbar-context';\nimport type { ToolbarItemProps } from './types';\n\nfunction UnforwardedToolbarItem(\n\t{ children, as: Component, ...props }: ToolbarItemProps,\n\tref: ForwardedRef< any >\n) {\n\tconst accessibleToolbarStore = useContext( ToolbarContext );\n\tconst isRenderProp = typeof children === 'function';\n\n\tif ( ! isRenderProp && ! Component ) {\n\t\twarning(\n\t\t\t'`ToolbarItem` is a generic headless component. You must pass either a `children` prop as a function or an `as` prop as a component. ' +\n\t\t\t\t'See https://developer.wordpress.org/block-editor/components/toolbar-item/'\n\t\t);\n\t\treturn null;\n\t}\n\n\tconst allProps = { ...props, ref, 'data-toolbar-item': true };\n\n\tif ( ! accessibleToolbarStore ) {\n\t\tif ( Component ) {\n\t\t\treturn <Component { ...allProps }>{ children }</Component>;\n\t\t}\n\t\tif ( ! isRenderProp ) {\n\t\t\treturn null;\n\t\t}\n\t\treturn children( allProps );\n\t}\n\n\tconst render = isRenderProp\n\t\t? children\n\t\t: Component && <Component>{ children }</Component>;\n\n\treturn (\n\t\t<Ariakit.ToolbarItem\n\t\t\taccessibleWhenDisabled\n\t\t\t{ ...allProps }\n\t\t\tstore={ accessibleToolbarStore }\n\t\t\trender={ render }\n\t\t/>\n\t);\n}\n\nexport const ToolbarItem = forwardRef( UnforwardedToolbarItem );\nexport default ToolbarItem;\n"],"mappings":";;;;;;;AAGA,IAAAA,OAAA,GAAAC,uBAAA,CAAAC,OAAA;AAMA,IAAAC,QAAA,GAAAD,OAAA;AACA,IAAAE,QAAA,GAAAC,sBAAA,CAAAH,OAAA;AAKA,IAAAI,eAAA,GAAAD,sBAAA,CAAAH,OAAA;AAAgD,IAAAK,WAAA,GAAAL,OAAA;AAAA,SAAAM,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAfhD;AACA;AACA;;AAIA;AACA;AACA;;AAIA;AACA;AACA;;AAIA,SAASW,sBAAsBA,CAC9B;EAAEC,QAAQ;EAAEC,EAAE,EAAEC,SAAS;EAAE,GAAGC;AAAwB,CAAC,EACvDC,GAAwB,EACvB;EACD,MAAMC,sBAAsB,GAAG,IAAAC,mBAAU,EAAEC,uBAAe,CAAC;EAC3D,MAAMC,YAAY,GAAG,OAAOR,QAAQ,KAAK,UAAU;EAEnD,IAAK,CAAEQ,YAAY,IAAI,CAAEN,SAAS,EAAG;IACpCO,UAAA,CAAAC,YAAA,gBAAAC,gBAAO,EACN,sIAAsI,GACrI,2EACF,CAAC;IACD,OAAO,IAAI;EACZ;EAEA,MAAMC,QAAQ,GAAG;IAAE,GAAGT,KAAK;IAAEC,GAAG;IAAE,mBAAmB,EAAE;EAAK,CAAC;EAE7D,IAAK,CAAEC,sBAAsB,EAAG;IAC/B,IAAKH,SAAS,EAAG;MAChB,oBAAO,IAAAxB,WAAA,CAAAmC,GAAA,EAACX,SAAS;QAAA,GAAMU,QAAQ;QAAAZ,QAAA,EAAKA;MAAQ,CAAa,CAAC;IAC3D;IACA,IAAK,CAAEQ,YAAY,EAAG;MACrB,OAAO,IAAI;IACZ;IACA,OAAOR,QAAQ,CAAEY,QAAS,CAAC;EAC5B;EAEA,MAAME,MAAM,GAAGN,YAAY,GACxBR,QAAQ,GACRE,SAAS,iBAAI,IAAAxB,WAAA,CAAAmC,GAAA,EAACX,SAAS;IAAAF,QAAA,EAAGA;EAAQ,CAAa,CAAC;EAEnD,oBACC,IAAAtB,WAAA,CAAAmC,GAAA,EAAC1C,OAAO,CAAC4C,WAAW;IACnBC,sBAAsB;IAAA,GACjBJ,QAAQ;IACbK,KAAK,EAAGZ,sBAAwB;IAChCS,MAAM,EAAGA;EAAQ,CACjB,CAAC;AAEJ;AAEO,MAAMC,WAAW,GAAAG,OAAA,CAAAH,WAAA,GAAG,IAAAI,mBAAU,EAAEpB,sBAAuB,CAAC;AAAC,IAAAqB,QAAA,GAAAF,OAAA,CAAAjC,OAAA,GACjD8B,WAAW","ignoreList":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
const getNodeText = node => {
|
|
8
|
+
if (node === null) {
|
|
9
|
+
return '';
|
|
10
|
+
}
|
|
11
|
+
switch (typeof node) {
|
|
12
|
+
case 'string':
|
|
13
|
+
case 'number':
|
|
14
|
+
return node.toString();
|
|
15
|
+
case 'object':
|
|
16
|
+
{
|
|
17
|
+
if (node instanceof Array) {
|
|
18
|
+
return node.map(getNodeText).join('');
|
|
19
|
+
}
|
|
20
|
+
if ('props' in node) {
|
|
21
|
+
return getNodeText(node.props.children);
|
|
22
|
+
}
|
|
23
|
+
return '';
|
|
24
|
+
}
|
|
25
|
+
default:
|
|
26
|
+
return '';
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
var _default = exports.default = getNodeText;
|
|
30
|
+
//# sourceMappingURL=get-node-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getNodeText","node","toString","Array","map","join","props","children","_default","exports","default"],"sources":["@wordpress/components/src/utils/get-node-text.ts"],"sourcesContent":["const getNodeText = ( node: React.ReactNode ): string => {\n\tif ( node === null ) {\n\t\treturn '';\n\t}\n\n\tswitch ( typeof node ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn node.toString();\n\t\tcase 'object': {\n\t\t\tif ( node instanceof Array ) {\n\t\t\t\treturn node.map( getNodeText ).join( '' );\n\t\t\t}\n\t\t\tif ( 'props' in node ) {\n\t\t\t\treturn getNodeText( node.props.children );\n\t\t\t}\n\t\t\treturn '';\n\t\t}\n\t\tdefault:\n\t\t\treturn '';\n\t}\n};\n\nexport default getNodeText;\n"],"mappings":";;;;;;AAAA,MAAMA,WAAW,GAAKC,IAAqB,IAAc;EACxD,IAAKA,IAAI,KAAK,IAAI,EAAG;IACpB,OAAO,EAAE;EACV;EAEA,QAAS,OAAOA,IAAI;IACnB,KAAK,QAAQ;IACb,KAAK,QAAQ;MACZ,OAAOA,IAAI,CAACC,QAAQ,CAAC,CAAC;IACvB,KAAK,QAAQ;MAAE;QACd,IAAKD,IAAI,YAAYE,KAAK,EAAG;UAC5B,OAAOF,IAAI,CAACG,GAAG,CAAEJ,WAAY,CAAC,CAACK,IAAI,CAAE,EAAG,CAAC;QAC1C;QACA,IAAK,OAAO,IAAIJ,IAAI,EAAG;UACtB,OAAOD,WAAW,CAAEC,IAAI,CAACK,KAAK,CAACC,QAAS,CAAC;QAC1C;QACA,OAAO,EAAE;MACV;IACA;MACC,OAAO,EAAE;EACX;AACD,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAEaV,WAAW","ignoreList":[]}
|
package/build/utils/math.js
CHANGED
|
@@ -5,8 +5,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.add = add;
|
|
7
7
|
exports.clamp = clamp;
|
|
8
|
+
exports.ensureValidStep = ensureValidStep;
|
|
8
9
|
exports.getNumber = getNumber;
|
|
9
|
-
exports.roundClamp = roundClamp;
|
|
10
10
|
exports.subtract = subtract;
|
|
11
11
|
/**
|
|
12
12
|
* Parses and retrieves a number value.
|
|
@@ -62,9 +62,9 @@ function getPrecision(value) {
|
|
|
62
62
|
/**
|
|
63
63
|
* Clamps a value based on a min/max range.
|
|
64
64
|
*
|
|
65
|
-
* @param {number} value The value.
|
|
66
|
-
* @param {number}
|
|
67
|
-
* @param {number}
|
|
65
|
+
* @param {number|string} value The value.
|
|
66
|
+
* @param {number} min The minimum range.
|
|
67
|
+
* @param {number} max The maximum range.
|
|
68
68
|
*
|
|
69
69
|
* @return {number} The clamped value.
|
|
70
70
|
*/
|
|
@@ -74,21 +74,24 @@ function clamp(value, min, max) {
|
|
|
74
74
|
}
|
|
75
75
|
|
|
76
76
|
/**
|
|
77
|
-
*
|
|
77
|
+
* Rounds a value to the nearest step offset by a minimum.
|
|
78
78
|
*
|
|
79
|
-
* @param {number
|
|
80
|
-
* @param {number}
|
|
81
|
-
* @param {number}
|
|
82
|
-
* @param {number} step A multiplier for the value.
|
|
79
|
+
* @param {number|string} value The value.
|
|
80
|
+
* @param {number} min The minimum range.
|
|
81
|
+
* @param {number} step The increment for the value.
|
|
83
82
|
*
|
|
84
|
-
* @return {number} The
|
|
83
|
+
* @return {number} The value as a valid step.
|
|
85
84
|
*/
|
|
86
|
-
function
|
|
85
|
+
function ensureValidStep(value, min, step) {
|
|
87
86
|
const baseValue = getNumber(value);
|
|
88
87
|
const stepValue = getNumber(step);
|
|
89
|
-
const precision = getPrecision(step);
|
|
90
|
-
const
|
|
91
|
-
|
|
92
|
-
|
|
88
|
+
const precision = Math.max(getPrecision(step), getPrecision(min));
|
|
89
|
+
const realMin = Math.abs(min) === Infinity ? 0 : min;
|
|
90
|
+
// If the step is not a factor of the minimum then the step must be
|
|
91
|
+
// offset by the minimum.
|
|
92
|
+
const tare = realMin % stepValue ? realMin : 0;
|
|
93
|
+
const rounded = Math.round((baseValue - tare) / stepValue) * stepValue;
|
|
94
|
+
const fromMin = rounded + tare;
|
|
95
|
+
return precision ? getNumber(fromMin.toFixed(precision)) : fromMin;
|
|
93
96
|
}
|
|
94
97
|
//# sourceMappingURL=math.js.map
|
package/build/utils/math.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getNumber","value","number","Number","isNaN","add","args","reduce","sum","arg","subtract","diff","index","getPrecision","split","undefined","length","clamp","min","max","baseValue","Math","
|
|
1
|
+
{"version":3,"names":["getNumber","value","number","Number","isNaN","add","args","reduce","sum","arg","subtract","diff","index","getPrecision","split","undefined","length","clamp","min","max","baseValue","Math","ensureValidStep","step","stepValue","precision","realMin","abs","Infinity","tare","rounded","round","fromMin","toFixed"],"sources":["@wordpress/components/src/utils/math.js"],"sourcesContent":["/**\n * Parses and retrieves a number value.\n *\n * @param {unknown} value The incoming value.\n *\n * @return {number} The parsed number value.\n */\nexport function getNumber( value ) {\n\tconst number = Number( value );\n\n\treturn isNaN( number ) ? 0 : number;\n}\n\n/**\n * Safely adds 2 values.\n *\n * @param {Array<number|string>} args Values to add together.\n *\n * @return {number} The sum of values.\n */\nexport function add( ...args ) {\n\treturn args.reduce(\n\t\t/** @type {(sum:number, arg: number|string) => number} */\n\t\t( sum, arg ) => sum + getNumber( arg ),\n\t\t0\n\t);\n}\n\n/**\n * Safely subtracts 2 values.\n *\n * @param {Array<number|string>} args Values to subtract together.\n *\n * @return {number} The difference of the values.\n */\nexport function subtract( ...args ) {\n\treturn args.reduce(\n\t\t/** @type {(diff:number, arg: number|string, index:number) => number} */\n\t\t( diff, arg, index ) => {\n\t\t\tconst value = getNumber( arg );\n\t\t\treturn index === 0 ? value : diff - value;\n\t\t},\n\t\t0\n\t);\n}\n\n/**\n * Determines the decimal position of a number value.\n *\n * @param {number} value The number to evaluate.\n *\n * @return {number} The number of decimal places.\n */\nfunction getPrecision( value ) {\n\tconst split = ( value + '' ).split( '.' );\n\treturn split[ 1 ] !== undefined ? split[ 1 ].length : 0;\n}\n\n/**\n * Clamps a value based on a min/max range.\n *\n * @param {number|string} value The value.\n * @param {number} min The minimum range.\n * @param {number} max The maximum range.\n *\n * @return {number} The clamped value.\n */\nexport function clamp( value, min, max ) {\n\tconst baseValue = getNumber( value );\n\treturn Math.max( min, Math.min( baseValue, max ) );\n}\n\n/**\n * Rounds a value to the nearest step offset by a minimum.\n *\n * @param {number|string} value The value.\n * @param {number} min The minimum range.\n * @param {number} step The increment for the value.\n *\n * @return {number} The value as a valid step.\n */\nexport function ensureValidStep( value, min, step ) {\n\tconst baseValue = getNumber( value );\n\tconst stepValue = getNumber( step );\n\tconst precision = Math.max( getPrecision( step ), getPrecision( min ) );\n\tconst realMin = Math.abs( min ) === Infinity ? 0 : min;\n\t// If the step is not a factor of the minimum then the step must be\n\t// offset by the minimum.\n\tconst tare = realMin % stepValue ? realMin : 0;\n\tconst rounded = Math.round( ( baseValue - tare ) / stepValue ) * stepValue;\n\tconst fromMin = rounded + tare;\n\treturn precision ? getNumber( fromMin.toFixed( precision ) ) : fromMin;\n}\n"],"mappings":";;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,SAASA,CAAEC,KAAK,EAAG;EAClC,MAAMC,MAAM,GAAGC,MAAM,CAAEF,KAAM,CAAC;EAE9B,OAAOG,KAAK,CAAEF,MAAO,CAAC,GAAG,CAAC,GAAGA,MAAM;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,GAAGA,CAAE,GAAGC,IAAI,EAAG;EAC9B,OAAOA,IAAI,CAACC,MAAM,CACjB;EACA,CAAEC,GAAG,EAAEC,GAAG,KAAMD,GAAG,GAAGR,SAAS,CAAES,GAAI,CAAC,EACtC,CACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,QAAQA,CAAE,GAAGJ,IAAI,EAAG;EACnC,OAAOA,IAAI,CAACC,MAAM,CACjB;EACA,CAAEI,IAAI,EAAEF,GAAG,EAAEG,KAAK,KAAM;IACvB,MAAMX,KAAK,GAAGD,SAAS,CAAES,GAAI,CAAC;IAC9B,OAAOG,KAAK,KAAK,CAAC,GAAGX,KAAK,GAAGU,IAAI,GAAGV,KAAK;EAC1C,CAAC,EACD,CACD,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASY,YAAYA,CAAEZ,KAAK,EAAG;EAC9B,MAAMa,KAAK,GAAG,CAAEb,KAAK,GAAG,EAAE,EAAGa,KAAK,CAAE,GAAI,CAAC;EACzC,OAAOA,KAAK,CAAE,CAAC,CAAE,KAAKC,SAAS,GAAGD,KAAK,CAAE,CAAC,CAAE,CAACE,MAAM,GAAG,CAAC;AACxD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASC,KAAKA,CAAEhB,KAAK,EAAEiB,GAAG,EAAEC,GAAG,EAAG;EACxC,MAAMC,SAAS,GAAGpB,SAAS,CAAEC,KAAM,CAAC;EACpC,OAAOoB,IAAI,CAACF,GAAG,CAAED,GAAG,EAAEG,IAAI,CAACH,GAAG,CAAEE,SAAS,EAAED,GAAI,CAAE,CAAC;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASG,eAAeA,CAAErB,KAAK,EAAEiB,GAAG,EAAEK,IAAI,EAAG;EACnD,MAAMH,SAAS,GAAGpB,SAAS,CAAEC,KAAM,CAAC;EACpC,MAAMuB,SAAS,GAAGxB,SAAS,CAAEuB,IAAK,CAAC;EACnC,MAAME,SAAS,GAAGJ,IAAI,CAACF,GAAG,CAAEN,YAAY,CAAEU,IAAK,CAAC,EAAEV,YAAY,CAAEK,GAAI,CAAE,CAAC;EACvE,MAAMQ,OAAO,GAAGL,IAAI,CAACM,GAAG,CAAET,GAAI,CAAC,KAAKU,QAAQ,GAAG,CAAC,GAAGV,GAAG;EACtD;EACA;EACA,MAAMW,IAAI,GAAGH,OAAO,GAAGF,SAAS,GAAGE,OAAO,GAAG,CAAC;EAC9C,MAAMI,OAAO,GAAGT,IAAI,CAACU,KAAK,CAAE,CAAEX,SAAS,GAAGS,IAAI,IAAKL,SAAU,CAAC,GAAGA,SAAS;EAC1E,MAAMQ,OAAO,GAAGF,OAAO,GAAGD,IAAI;EAC9B,OAAOJ,SAAS,GAAGzB,SAAS,CAAEgC,OAAO,CAACC,OAAO,CAAER,SAAU,CAAE,CAAC,GAAGO,OAAO;AACvE","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["clsx","forwardRef","isRTL","__","Flex","FlexBlock","Spacer","NumberControl","AngleCircle","UnitText","jsx","_jsx","jsxs","_jsxs","UnforwardedAnglePickerControl","props","ref","className","label","onChange","value","restProps","handleOnNumberChange","unprocessedValue","undefined","inputValue","parseInt","classes","unitText","children","prefixedUnitText","suffixedUnitText","gap","__next40pxDefaultSize","max","min","step","spinControls","prefix","suffix","marginBottom","marginTop","AnglePickerControl"],"sources":["@wordpress/components/src/angle-picker-control/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\nimport { isRTL, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { Flex, FlexBlock } from '../flex';\nimport { Spacer } from '../spacer';\nimport NumberControl from '../number-control';\nimport AngleCircle from './angle-circle';\nimport { UnitText } from './styles/angle-picker-control-styles';\n\nimport type { WordPressComponentProps } from '../context';\nimport type { AnglePickerControlProps } from './types';\n\nfunction UnforwardedAnglePickerControl(\n\tprops: WordPressComponentProps< AnglePickerControlProps, 'div' >,\n\tref: ForwardedRef< any >\n) {\n\tconst {\n\t\tclassName,\n\t\tlabel = __( 'Angle' ),\n\t\tonChange,\n\t\tvalue,\n\t\t...restProps\n\t} = props;\n\n\tconst handleOnNumberChange = ( unprocessedValue: string | undefined ) => {\n\t\tif ( onChange === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst inputValue =\n\t\t\tunprocessedValue !== undefined && unprocessedValue !== ''\n\t\t\t\t? parseInt( unprocessedValue, 10 )\n\t\t\t\t: 0;\n\t\tonChange( inputValue );\n\t};\n\n\tconst classes = clsx( 'components-angle-picker-control', className );\n\n\tconst unitText = <UnitText>°</UnitText>;\n\tconst [ prefixedUnitText, suffixedUnitText ] = isRTL()\n\t\t? [ unitText, null ]\n\t\t: [ null, unitText ];\n\n\treturn (\n\t\t<Flex { ...restProps } ref={ ref } className={ classes } gap={ 2 }>\n\t\t\t<FlexBlock>\n\t\t\t\t<NumberControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tclassName=\"components-angle-picker-control__input-field\"\n\t\t\t\t\tmax={ 360 }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tonChange={ handleOnNumberChange }\n\t\t\t\t\tstep=\"1\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\tprefix={ prefixedUnitText }\n\t\t\t\t\tsuffix={ suffixedUnitText }\n\t\t\t\t/>\n\t\t\t</FlexBlock>\n\t\t\t<Spacer marginBottom=\"1\" marginTop=\"auto\">\n\t\t\t\t<AngleCircle\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</Spacer>\n\t\t</Flex>\n\t);\n}\n\n/**\n * `AnglePickerControl` is a React component to render a UI that allows users to\n * pick an angle. Users can choose an angle in a visual UI with the mouse by\n * dragging an angle indicator inside a circle or by directly inserting the\n * desired angle in a text field.\n *\n * ```jsx\n * import { useState } from '@wordpress/element';\n * import { AnglePickerControl } from '@wordpress/components';\n *\n * function Example() {\n * const [ angle, setAngle ] = useState( 0 );\n * return (\n * <AnglePickerControl\n * value={ angle }\n * onChange={ setAngle }\n *
|
|
1
|
+
{"version":3,"names":["clsx","forwardRef","isRTL","__","Flex","FlexBlock","Spacer","NumberControl","AngleCircle","UnitText","jsx","_jsx","jsxs","_jsxs","UnforwardedAnglePickerControl","props","ref","className","label","onChange","value","restProps","handleOnNumberChange","unprocessedValue","undefined","inputValue","parseInt","classes","unitText","children","prefixedUnitText","suffixedUnitText","gap","__next40pxDefaultSize","max","min","step","spinControls","prefix","suffix","marginBottom","marginTop","AnglePickerControl"],"sources":["@wordpress/components/src/angle-picker-control/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport type { ForwardedRef } from 'react';\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef } from '@wordpress/element';\nimport { isRTL, __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { Flex, FlexBlock } from '../flex';\nimport { Spacer } from '../spacer';\nimport NumberControl from '../number-control';\nimport AngleCircle from './angle-circle';\nimport { UnitText } from './styles/angle-picker-control-styles';\n\nimport type { WordPressComponentProps } from '../context';\nimport type { AnglePickerControlProps } from './types';\n\nfunction UnforwardedAnglePickerControl(\n\tprops: WordPressComponentProps< AnglePickerControlProps, 'div' >,\n\tref: ForwardedRef< any >\n) {\n\tconst {\n\t\tclassName,\n\t\tlabel = __( 'Angle' ),\n\t\tonChange,\n\t\tvalue,\n\t\t...restProps\n\t} = props;\n\n\tconst handleOnNumberChange = ( unprocessedValue: string | undefined ) => {\n\t\tif ( onChange === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst inputValue =\n\t\t\tunprocessedValue !== undefined && unprocessedValue !== ''\n\t\t\t\t? parseInt( unprocessedValue, 10 )\n\t\t\t\t: 0;\n\t\tonChange( inputValue );\n\t};\n\n\tconst classes = clsx( 'components-angle-picker-control', className );\n\n\tconst unitText = <UnitText>°</UnitText>;\n\tconst [ prefixedUnitText, suffixedUnitText ] = isRTL()\n\t\t? [ unitText, null ]\n\t\t: [ null, unitText ];\n\n\treturn (\n\t\t<Flex { ...restProps } ref={ ref } className={ classes } gap={ 2 }>\n\t\t\t<FlexBlock>\n\t\t\t\t<NumberControl\n\t\t\t\t\t__next40pxDefaultSize\n\t\t\t\t\tlabel={ label }\n\t\t\t\t\tclassName=\"components-angle-picker-control__input-field\"\n\t\t\t\t\tmax={ 360 }\n\t\t\t\t\tmin={ 0 }\n\t\t\t\t\tonChange={ handleOnNumberChange }\n\t\t\t\t\tstep=\"1\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tspinControls=\"none\"\n\t\t\t\t\tprefix={ prefixedUnitText }\n\t\t\t\t\tsuffix={ suffixedUnitText }\n\t\t\t\t/>\n\t\t\t</FlexBlock>\n\t\t\t<Spacer marginBottom=\"1\" marginTop=\"auto\">\n\t\t\t\t<AngleCircle\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t/>\n\t\t\t</Spacer>\n\t\t</Flex>\n\t);\n}\n\n/**\n * `AnglePickerControl` is a React component to render a UI that allows users to\n * pick an angle. Users can choose an angle in a visual UI with the mouse by\n * dragging an angle indicator inside a circle or by directly inserting the\n * desired angle in a text field.\n *\n * ```jsx\n * import { useState } from '@wordpress/element';\n * import { AnglePickerControl } from '@wordpress/components';\n *\n * function Example() {\n * const [ angle, setAngle ] = useState( 0 );\n * return (\n * <AnglePickerControl\n * value={ angle }\n * onChange={ setAngle }\n * />\n * );\n * }\n * ```\n */\nexport const AnglePickerControl = forwardRef( UnforwardedAnglePickerControl );\n\nexport default AnglePickerControl;\n"],"mappings":"AAAA;AACA;AACA;;AAEA,OAAOA,IAAI,MAAM,MAAM;;AAEvB;AACA;AACA;AACA,SAASC,UAAU,QAAQ,oBAAoB;AAC/C,SAASC,KAAK,EAAEC,EAAE,QAAQ,iBAAiB;;AAE3C;AACA;AACA;AACA,SAASC,IAAI,EAAEC,SAAS,QAAQ,SAAS;AACzC,SAASC,MAAM,QAAQ,WAAW;AAClC,OAAOC,aAAa,MAAM,mBAAmB;AAC7C,OAAOC,WAAW,MAAM,gBAAgB;AACxC,SAASC,QAAQ,QAAQ,sCAAsC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAKhE,SAASC,6BAA6BA,CACrCC,KAAgE,EAChEC,GAAwB,EACvB;EACD,MAAM;IACLC,SAAS;IACTC,KAAK,GAAGf,EAAE,CAAE,OAAQ,CAAC;IACrBgB,QAAQ;IACRC,KAAK;IACL,GAAGC;EACJ,CAAC,GAAGN,KAAK;EAET,MAAMO,oBAAoB,GAAKC,gBAAoC,IAAM;IACxE,IAAKJ,QAAQ,KAAKK,SAAS,EAAG;MAC7B;IACD;IAEA,MAAMC,UAAU,GACfF,gBAAgB,KAAKC,SAAS,IAAID,gBAAgB,KAAK,EAAE,GACtDG,QAAQ,CAAEH,gBAAgB,EAAE,EAAG,CAAC,GAChC,CAAC;IACLJ,QAAQ,CAAEM,UAAW,CAAC;EACvB,CAAC;EAED,MAAME,OAAO,GAAG3B,IAAI,CAAE,iCAAiC,EAAEiB,SAAU,CAAC;EAEpE,MAAMW,QAAQ,gBAAGjB,IAAA,CAACF,QAAQ;IAAAoB,QAAA,EAAC;EAAC,CAAU,CAAC;EACvC,MAAM,CAAEC,gBAAgB,EAAEC,gBAAgB,CAAE,GAAG7B,KAAK,CAAC,CAAC,GACnD,CAAE0B,QAAQ,EAAE,IAAI,CAAE,GAClB,CAAE,IAAI,EAAEA,QAAQ,CAAE;EAErB,oBACCf,KAAA,CAACT,IAAI;IAAA,GAAMiB,SAAS;IAAGL,GAAG,EAAGA,GAAK;IAACC,SAAS,EAAGU,OAAS;IAACK,GAAG,EAAG,CAAG;IAAAH,QAAA,gBACjElB,IAAA,CAACN,SAAS;MAAAwB,QAAA,eACTlB,IAAA,CAACJ,aAAa;QACb0B,qBAAqB;QACrBf,KAAK,EAAGA,KAAO;QACfD,SAAS,EAAC,8CAA8C;QACxDiB,GAAG,EAAG,GAAK;QACXC,GAAG,EAAG,CAAG;QACThB,QAAQ,EAAGG,oBAAsB;QACjCc,IAAI,EAAC,GAAG;QACRhB,KAAK,EAAGA,KAAO;QACfiB,YAAY,EAAC,MAAM;QACnBC,MAAM,EAAGR,gBAAkB;QAC3BS,MAAM,EAAGR;MAAkB,CAC3B;IAAC,CACQ,CAAC,eACZpB,IAAA,CAACL,MAAM;MAACkC,YAAY,EAAC,GAAG;MAACC,SAAS,EAAC,MAAM;MAAAZ,QAAA,eACxClB,IAAA,CAACH,WAAW;QACX,eAAY,MAAM;QAClBY,KAAK,EAAGA,KAAO;QACfD,QAAQ,EAAGA;MAAU,CACrB;IAAC,CACK,CAAC;EAAA,CACJ,CAAC;AAET;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMuB,kBAAkB,GAAGzC,UAAU,CAAEa,6BAA8B,CAAC;AAE7E,eAAe4B,kBAAkB","ignoreList":[]}
|
|
@@ -18,34 +18,8 @@ import { isAppleOS } from '@wordpress/keycodes';
|
|
|
18
18
|
import { getAutoCompleterUI } from './autocompleter-ui';
|
|
19
19
|
import { escapeRegExp } from '../utils/strings';
|
|
20
20
|
import { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';
|
|
21
|
+
import getNodeText from '../utils/get-node-text';
|
|
21
22
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
-
const getNodeText = node => {
|
|
23
|
-
if (node === null) {
|
|
24
|
-
return '';
|
|
25
|
-
}
|
|
26
|
-
switch (typeof node) {
|
|
27
|
-
case 'string':
|
|
28
|
-
case 'number':
|
|
29
|
-
return node.toString();
|
|
30
|
-
break;
|
|
31
|
-
case 'boolean':
|
|
32
|
-
return '';
|
|
33
|
-
break;
|
|
34
|
-
case 'object':
|
|
35
|
-
{
|
|
36
|
-
if (node instanceof Array) {
|
|
37
|
-
return node.map(getNodeText).join('');
|
|
38
|
-
}
|
|
39
|
-
if ('props' in node) {
|
|
40
|
-
return getNodeText(node.props.children);
|
|
41
|
-
}
|
|
42
|
-
break;
|
|
43
|
-
}
|
|
44
|
-
default:
|
|
45
|
-
return '';
|
|
46
|
-
}
|
|
47
|
-
return '';
|
|
48
|
-
};
|
|
49
23
|
const EMPTY_FILTERED_OPTIONS = [];
|
|
50
24
|
|
|
51
25
|
// Used for generating the instance ID
|
|
@@ -284,11 +258,12 @@ export function useAutocomplete({
|
|
|
284
258
|
const listBoxId = isExpanded ? `components-autocomplete-listbox-${instanceId}` : undefined;
|
|
285
259
|
const activeId = isExpanded ? `components-autocomplete-item-${instanceId}-${selectedKey}` : null;
|
|
286
260
|
const hasSelection = record.start !== undefined;
|
|
261
|
+
const showPopover = !!textContent && hasSelection && !!AutocompleterUI;
|
|
287
262
|
return {
|
|
288
263
|
listBoxId,
|
|
289
264
|
activeId,
|
|
290
265
|
onKeyDown: withIgnoreIMEEvents(handleKeyDown),
|
|
291
|
-
popover:
|
|
266
|
+
popover: showPopover && /*#__PURE__*/_jsx(AutocompleterUI, {
|
|
292
267
|
className: className,
|
|
293
268
|
filterValue: filterValue,
|
|
294
269
|
instanceId: instanceId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["removeAccents","renderToString","useEffect","useState","useRef","useMemo","useInstanceId","useMergeRefs","useRefEffect","create","slice","insert","isCollapsed","getTextContent","speak","isAppleOS","getAutoCompleterUI","escapeRegExp","withIgnoreIMEEvents","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","getNodeText","node","toString","Array","map","join","props","children","EMPTY_FILTERED_OPTIONS","AUTOCOMPLETE_HOOK_REFERENCE","useAutocomplete","record","onChange","onReplace","completers","contentRef","instanceId","selectedIndex","setSelectedIndex","filteredOptions","setFilteredOptions","filterValue","setFilterValue","autocompleter","setAutocompleter","AutocompleterUI","setAutocompleterUI","backspacingRef","insertCompletion","replacement","end","start","triggerPrefix","length","toInsert","html","select","option","getOptionCompletion","isDisabled","completion","value","isCompletionObject","obj","action","undefined","completionObject","reset","onChangeOptions","options","handleKeyDown","event","current","key","defaultPrevented","newIndex","label","preventDefault","textContent","completer","reduce","lastTrigger","currentCompleter","triggerIndex","lastIndexOf","lastTriggerIndex","allowContext","textWithoutTrigger","tooDistantFromTrigger","mismatch","wordsFromTrigger","split","hasOneTriggerWord","matchingWhileBackspacing","textAfterSelection","test","safeTrigger","text","match","RegExp","query","selectedKey","className","isExpanded","listBoxId","activeId","hasSelection","onKeyDown","popover","onSelect","useLastDifferentValue","history","Set","add","size","delete","from","useAutocompleteProps","ref","onKeyDownRef","previousRecord","mergedRefs","element","_onKeyDown","addEventListener","removeEventListener","didUserInput","Autocomplete","isSelected"],"sources":["@wordpress/components/src/autocomplete/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport {\n\trenderToString,\n\tuseEffect,\n\tuseState,\n\tuseRef,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useInstanceId, useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport {\n\tcreate,\n\tslice,\n\tinsert,\n\tisCollapsed,\n\tgetTextContent,\n} from '@wordpress/rich-text';\nimport { speak } from '@wordpress/a11y';\nimport { isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { getAutoCompleterUI } from './autocompleter-ui';\nimport { escapeRegExp } from '../utils/strings';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport type {\n\tAutocompleteProps,\n\tAutocompleterUIProps,\n\tInsertOption,\n\tKeyedOption,\n\tOptionCompletion,\n\tReplaceOption,\n\tUseAutocompleteProps,\n\tWPCompleter,\n} from './types';\n\nconst getNodeText = ( node: React.ReactNode ): string => {\n\tif ( node === null ) {\n\t\treturn '';\n\t}\n\n\tswitch ( typeof node ) {\n\t\tcase 'string':\n\t\tcase 'number':\n\t\t\treturn node.toString();\n\t\t\tbreak;\n\t\tcase 'boolean':\n\t\t\treturn '';\n\t\t\tbreak;\n\t\tcase 'object': {\n\t\t\tif ( node instanceof Array ) {\n\t\t\t\treturn node.map( getNodeText ).join( '' );\n\t\t\t}\n\t\t\tif ( 'props' in node ) {\n\t\t\t\treturn getNodeText( node.props.children );\n\t\t\t}\n\t\t\tbreak;\n\t\t}\n\t\tdefault:\n\t\t\treturn '';\n\t}\n\n\treturn '';\n};\n\nconst EMPTY_FILTERED_OPTIONS: KeyedOption[] = [];\n\n// Used for generating the instance ID\nconst AUTOCOMPLETE_HOOK_REFERENCE = {};\n\nexport function useAutocomplete( {\n\trecord,\n\tonChange,\n\tonReplace,\n\tcompleters,\n\tcontentRef,\n}: UseAutocompleteProps ) {\n\tconst instanceId = useInstanceId( AUTOCOMPLETE_HOOK_REFERENCE );\n\tconst [ selectedIndex, setSelectedIndex ] = useState( 0 );\n\n\tconst [ filteredOptions, setFilteredOptions ] = useState<\n\t\tArray< KeyedOption >\n\t>( EMPTY_FILTERED_OPTIONS );\n\tconst [ filterValue, setFilterValue ] =\n\t\tuseState< AutocompleterUIProps[ 'filterValue' ] >( '' );\n\tconst [ autocompleter, setAutocompleter ] = useState< WPCompleter | null >(\n\t\tnull\n\t);\n\tconst [ AutocompleterUI, setAutocompleterUI ] = useState<\n\t\t( ( props: AutocompleterUIProps ) => JSX.Element | null ) | null\n\t>( null );\n\n\tconst backspacingRef = useRef( false );\n\n\tfunction insertCompletion( replacement: React.ReactNode ) {\n\t\tif ( autocompleter === null ) {\n\t\t\treturn;\n\t\t}\n\t\tconst end = record.start;\n\t\tconst start =\n\t\t\tend - autocompleter.triggerPrefix.length - filterValue.length;\n\t\tconst toInsert = create( { html: renderToString( replacement ) } );\n\n\t\tonChange( insert( record, toInsert, start, end ) );\n\t}\n\n\tfunction select( option: KeyedOption ) {\n\t\tconst { getOptionCompletion } = autocompleter || {};\n\n\t\tif ( option.isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( getOptionCompletion ) {\n\t\t\tconst completion = getOptionCompletion( option.value, filterValue );\n\n\t\t\tconst isCompletionObject = (\n\t\t\t\tobj: OptionCompletion\n\t\t\t): obj is InsertOption | ReplaceOption => {\n\t\t\t\treturn (\n\t\t\t\t\tobj !== null &&\n\t\t\t\t\ttypeof obj === 'object' &&\n\t\t\t\t\t'action' in obj &&\n\t\t\t\t\tobj.action !== undefined &&\n\t\t\t\t\t'value' in obj &&\n\t\t\t\t\tobj.value !== undefined\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst completionObject = isCompletionObject( completion )\n\t\t\t\t? completion\n\t\t\t\t: ( {\n\t\t\t\t\t\taction: 'insert-at-caret',\n\t\t\t\t\t\tvalue: completion,\n\t\t\t\t } as InsertOption );\n\n\t\t\tif ( 'replace' === completionObject.action ) {\n\t\t\t\tonReplace( [ completionObject.value ] );\n\t\t\t\t// When replacing, the component will unmount, so don't reset\n\t\t\t\t// state (below) on an unmounted component.\n\t\t\t\treturn;\n\t\t\t} else if ( 'insert-at-caret' === completionObject.action ) {\n\t\t\t\tinsertCompletion( completionObject.value );\n\t\t\t}\n\t\t}\n\n\t\t// Reset autocomplete state after insertion rather than before\n\t\t// so insertion events don't cause the completion menu to redisplay.\n\t\treset();\n\t}\n\n\tfunction reset() {\n\t\tsetSelectedIndex( 0 );\n\t\tsetFilteredOptions( EMPTY_FILTERED_OPTIONS );\n\t\tsetFilterValue( '' );\n\t\tsetAutocompleter( null );\n\t\tsetAutocompleterUI( null );\n\t}\n\n\t/**\n\t * Load options for an autocompleter.\n\t *\n\t * @param {Array} options\n\t */\n\tfunction onChangeOptions( options: Array< KeyedOption > ) {\n\t\tsetSelectedIndex(\n\t\t\toptions.length === filteredOptions.length ? selectedIndex : 0\n\t\t);\n\t\tsetFilteredOptions( options );\n\t}\n\n\tfunction handleKeyDown( event: KeyboardEvent ) {\n\t\tbackspacingRef.current = event.key === 'Backspace';\n\n\t\tif ( ! autocompleter ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( filteredOptions.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.key ) {\n\t\t\tcase 'ArrowUp': {\n\t\t\t\tconst newIndex =\n\t\t\t\t\t( selectedIndex === 0\n\t\t\t\t\t\t? filteredOptions.length\n\t\t\t\t\t\t: selectedIndex ) - 1;\n\t\t\t\tsetSelectedIndex( newIndex );\n\t\t\t\t// See the related PR as to why this is necessary: https://github.com/WordPress/gutenberg/pull/54902.\n\t\t\t\tif ( isAppleOS() ) {\n\t\t\t\t\tspeak(\n\t\t\t\t\t\tgetNodeText( filteredOptions[ newIndex ].label ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'ArrowDown': {\n\t\t\t\tconst newIndex = ( selectedIndex + 1 ) % filteredOptions.length;\n\t\t\t\tsetSelectedIndex( newIndex );\n\t\t\t\tif ( isAppleOS() ) {\n\t\t\t\t\tspeak(\n\t\t\t\t\t\tgetNodeText( filteredOptions[ newIndex ].label ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'Escape':\n\t\t\t\tsetAutocompleter( null );\n\t\t\t\tsetAutocompleterUI( null );\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\tselect( filteredOptions[ selectedIndex ] );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ArrowLeft':\n\t\t\tcase 'ArrowRight':\n\t\t\t\treset();\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Any handled key should prevent original behavior. This relies on\n\t\t// the early return in the default case.\n\t\tevent.preventDefault();\n\t}\n\n\t// textContent is a primitive (string), memoizing is not strictly necessary\n\t// but this is a preemptive performance improvement, since the autocompleter\n\t// is a potential bottleneck for the editor type metric.\n\tconst textContent = useMemo( () => {\n\t\tif ( isCollapsed( record ) ) {\n\t\t\treturn getTextContent( slice( record, 0 ) );\n\t\t}\n\t\treturn '';\n\t}, [ record ] );\n\n\tuseEffect( () => {\n\t\tif ( ! textContent ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the completer with the highest triggerPrefix index in the\n\t\t// textContent.\n\t\tconst completer = completers.reduce< WPCompleter | null >(\n\t\t\t( lastTrigger, currentCompleter ) => {\n\t\t\t\tconst triggerIndex = textContent.lastIndexOf(\n\t\t\t\t\tcurrentCompleter.triggerPrefix\n\t\t\t\t);\n\t\t\t\tconst lastTriggerIndex =\n\t\t\t\t\tlastTrigger !== null\n\t\t\t\t\t\t? textContent.lastIndexOf( lastTrigger.triggerPrefix )\n\t\t\t\t\t\t: -1;\n\n\t\t\t\treturn triggerIndex > lastTriggerIndex\n\t\t\t\t\t? currentCompleter\n\t\t\t\t\t: lastTrigger;\n\t\t\t},\n\t\t\tnull\n\t\t);\n\n\t\tif ( ! completer ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst { allowContext, triggerPrefix } = completer;\n\t\tconst triggerIndex = textContent.lastIndexOf( triggerPrefix );\n\t\tconst textWithoutTrigger = textContent.slice(\n\t\t\ttriggerIndex + triggerPrefix.length\n\t\t);\n\n\t\tconst tooDistantFromTrigger = textWithoutTrigger.length > 50; // 50 chars seems to be a good limit.\n\t\t// This is a final barrier to prevent the effect from completing with\n\t\t// an extremely long string, which causes the editor to slow-down\n\t\t// significantly. This could happen, for example, if `matchingWhileBackspacing`\n\t\t// is true and one of the \"words\" end up being too long. If that's the case,\n\t\t// it will be caught by this guard.\n\t\tif ( tooDistantFromTrigger ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mismatch = filteredOptions.length === 0;\n\t\tconst wordsFromTrigger = textWithoutTrigger.split( /\\s/ );\n\t\t// We need to allow the effect to run when not backspacing and if there\n\t\t// was a mismatch. i.e when typing a trigger + the match string or when\n\t\t// clicking in an existing trigger word on the page. We do that if we\n\t\t// detect that we have one word from trigger in the current textual context.\n\t\t//\n\t\t// Ex.: \"Some text @a\" <-- \"@a\" will be detected as the trigger word and\n\t\t// allow the effect to run. It will run until there's a mismatch.\n\t\tconst hasOneTriggerWord = wordsFromTrigger.length === 1;\n\t\t// This is used to allow the effect to run when backspacing and if\n\t\t// \"touching\" a word that \"belongs\" to a trigger. We consider a \"trigger\n\t\t// word\" any word up to the limit of 3 from the trigger character.\n\t\t// Anything beyond that is ignored if there's a mismatch. This allows\n\t\t// us to \"escape\" a mismatch when backspacing, but still imposing some\n\t\t// sane limits.\n\t\t//\n\t\t// Ex: \"Some text @marcelo sekkkk\" <--- \"kkkk\" caused a mismatch, but\n\t\t// if the user presses backspace here, it will show the completion popup again.\n\t\tconst matchingWhileBackspacing =\n\t\t\tbackspacingRef.current && wordsFromTrigger.length <= 3;\n\n\t\tif ( mismatch && ! ( matchingWhileBackspacing || hasOneTriggerWord ) ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst textAfterSelection = getTextContent(\n\t\t\tslice( record, undefined, getTextContent( record ).length )\n\t\t);\n\n\t\tif (\n\t\t\tallowContext &&\n\t\t\t! allowContext(\n\t\t\t\ttextContent.slice( 0, triggerIndex ),\n\t\t\t\ttextAfterSelection\n\t\t\t)\n\t\t) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t/^\\s/.test( textWithoutTrigger ) ||\n\t\t\t/\\s\\s+$/.test( textWithoutTrigger )\n\t\t) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! /[\\u0000-\\uFFFF]*$/.test( textWithoutTrigger ) ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst safeTrigger = escapeRegExp( completer.triggerPrefix );\n\t\tconst text = removeAccents( textContent );\n\t\tconst match = text\n\t\t\t.slice( text.lastIndexOf( completer.triggerPrefix ) )\n\t\t\t.match( new RegExp( `${ safeTrigger }([\\u0000-\\uFFFF]*)$` ) );\n\t\tconst query = match && match[ 1 ];\n\n\t\tsetAutocompleter( completer );\n\t\tsetAutocompleterUI( () =>\n\t\t\tcompleter !== autocompleter\n\t\t\t\t? getAutoCompleterUI( completer )\n\t\t\t\t: AutocompleterUI\n\t\t);\n\t\tsetFilterValue( query === null ? '' : query );\n\t\t// We want to avoid introducing unexpected side effects.\n\t\t// See https://github.com/WordPress/gutenberg/pull/41820\n\t}, [ textContent ] );\n\n\tconst { key: selectedKey = '' } = filteredOptions[ selectedIndex ] || {};\n\tconst { className } = autocompleter || {};\n\tconst isExpanded = !! autocompleter && filteredOptions.length > 0;\n\tconst listBoxId = isExpanded\n\t\t? `components-autocomplete-listbox-${ instanceId }`\n\t\t: undefined;\n\tconst activeId = isExpanded\n\t\t? `components-autocomplete-item-${ instanceId }-${ selectedKey }`\n\t\t: null;\n\tconst hasSelection = record.start !== undefined;\n\n\treturn {\n\t\tlistBoxId,\n\t\tactiveId,\n\t\tonKeyDown: withIgnoreIMEEvents( handleKeyDown ),\n\t\tpopover: hasSelection && AutocompleterUI && (\n\t\t\t<AutocompleterUI\n\t\t\t\tclassName={ className }\n\t\t\t\tfilterValue={ filterValue }\n\t\t\t\tinstanceId={ instanceId }\n\t\t\t\tlistBoxId={ listBoxId }\n\t\t\t\tselectedIndex={ selectedIndex }\n\t\t\t\tonChangeOptions={ onChangeOptions }\n\t\t\t\tonSelect={ select }\n\t\t\t\tvalue={ record }\n\t\t\t\tcontentRef={ contentRef }\n\t\t\t\treset={ reset }\n\t\t\t/>\n\t\t),\n\t};\n}\n\nfunction useLastDifferentValue( value: UseAutocompleteProps[ 'record' ] ) {\n\tconst history = useRef< Set< typeof value > >( new Set() );\n\n\thistory.current.add( value );\n\n\t// Keep the history size to 2.\n\tif ( history.current.size > 2 ) {\n\t\thistory.current.delete( Array.from( history.current )[ 0 ] );\n\t}\n\n\treturn Array.from( history.current )[ 0 ];\n}\n\nexport function useAutocompleteProps( options: UseAutocompleteProps ) {\n\tconst ref = useRef< HTMLElement >( null );\n\tconst onKeyDownRef = useRef< ( event: KeyboardEvent ) => void >();\n\tconst { record } = options;\n\tconst previousRecord = useLastDifferentValue( record );\n\tconst { popover, listBoxId, activeId, onKeyDown } = useAutocomplete( {\n\t\t...options,\n\t\tcontentRef: ref,\n\t} );\n\tonKeyDownRef.current = onKeyDown;\n\n\tconst mergedRefs = useMergeRefs( [\n\t\tref,\n\t\tuseRefEffect( ( element: HTMLElement ) => {\n\t\t\tfunction _onKeyDown( event: KeyboardEvent ) {\n\t\t\t\tonKeyDownRef.current?.( event );\n\t\t\t}\n\t\t\telement.addEventListener( 'keydown', _onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', _onKeyDown );\n\t\t\t};\n\t\t}, [] ),\n\t] );\n\n\t// We only want to show the popover if the user has typed something.\n\tconst didUserInput = record.text !== previousRecord?.text;\n\n\tif ( ! didUserInput ) {\n\t\treturn { ref: mergedRefs };\n\t}\n\n\treturn {\n\t\tref: mergedRefs,\n\t\tchildren: popover,\n\t\t'aria-autocomplete': listBoxId ? 'list' : undefined,\n\t\t'aria-owns': listBoxId,\n\t\t'aria-activedescendant': activeId,\n\t};\n}\n\nexport default function Autocomplete( {\n\tchildren,\n\tisSelected,\n\t...options\n}: AutocompleteProps ) {\n\tconst { popover, ...props } = useAutocomplete( options );\n\treturn (\n\t\t<>\n\t\t\t{ children( props ) }\n\t\t\t{ isSelected && popover }\n\t\t</>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["removeAccents","renderToString","useEffect","useState","useRef","useMemo","useInstanceId","useMergeRefs","useRefEffect","create","slice","insert","isCollapsed","getTextContent","speak","isAppleOS","getAutoCompleterUI","escapeRegExp","withIgnoreIMEEvents","getNodeText","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","EMPTY_FILTERED_OPTIONS","AUTOCOMPLETE_HOOK_REFERENCE","useAutocomplete","record","onChange","onReplace","completers","contentRef","instanceId","selectedIndex","setSelectedIndex","filteredOptions","setFilteredOptions","filterValue","setFilterValue","autocompleter","setAutocompleter","AutocompleterUI","setAutocompleterUI","backspacingRef","insertCompletion","replacement","end","start","triggerPrefix","length","toInsert","html","select","option","getOptionCompletion","isDisabled","completion","value","isCompletionObject","obj","action","undefined","completionObject","reset","onChangeOptions","options","handleKeyDown","event","current","key","defaultPrevented","newIndex","label","preventDefault","textContent","completer","reduce","lastTrigger","currentCompleter","triggerIndex","lastIndexOf","lastTriggerIndex","allowContext","textWithoutTrigger","tooDistantFromTrigger","mismatch","wordsFromTrigger","split","hasOneTriggerWord","matchingWhileBackspacing","textAfterSelection","test","safeTrigger","text","match","RegExp","query","selectedKey","className","isExpanded","listBoxId","activeId","hasSelection","showPopover","onKeyDown","popover","onSelect","useLastDifferentValue","history","Set","add","size","delete","Array","from","useAutocompleteProps","ref","onKeyDownRef","previousRecord","mergedRefs","element","_onKeyDown","addEventListener","removeEventListener","didUserInput","children","Autocomplete","isSelected","props"],"sources":["@wordpress/components/src/autocomplete/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport removeAccents from 'remove-accents';\n\n/**\n * WordPress dependencies\n */\nimport {\n\trenderToString,\n\tuseEffect,\n\tuseState,\n\tuseRef,\n\tuseMemo,\n} from '@wordpress/element';\nimport { useInstanceId, useMergeRefs, useRefEffect } from '@wordpress/compose';\nimport {\n\tcreate,\n\tslice,\n\tinsert,\n\tisCollapsed,\n\tgetTextContent,\n} from '@wordpress/rich-text';\nimport { speak } from '@wordpress/a11y';\nimport { isAppleOS } from '@wordpress/keycodes';\n\n/**\n * Internal dependencies\n */\nimport { getAutoCompleterUI } from './autocompleter-ui';\nimport { escapeRegExp } from '../utils/strings';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport type {\n\tAutocompleteProps,\n\tAutocompleterUIProps,\n\tInsertOption,\n\tKeyedOption,\n\tOptionCompletion,\n\tReplaceOption,\n\tUseAutocompleteProps,\n\tWPCompleter,\n} from './types';\nimport getNodeText from '../utils/get-node-text';\n\nconst EMPTY_FILTERED_OPTIONS: KeyedOption[] = [];\n\n// Used for generating the instance ID\nconst AUTOCOMPLETE_HOOK_REFERENCE = {};\n\nexport function useAutocomplete( {\n\trecord,\n\tonChange,\n\tonReplace,\n\tcompleters,\n\tcontentRef,\n}: UseAutocompleteProps ) {\n\tconst instanceId = useInstanceId( AUTOCOMPLETE_HOOK_REFERENCE );\n\tconst [ selectedIndex, setSelectedIndex ] = useState( 0 );\n\n\tconst [ filteredOptions, setFilteredOptions ] = useState<\n\t\tArray< KeyedOption >\n\t>( EMPTY_FILTERED_OPTIONS );\n\tconst [ filterValue, setFilterValue ] =\n\t\tuseState< AutocompleterUIProps[ 'filterValue' ] >( '' );\n\tconst [ autocompleter, setAutocompleter ] = useState< WPCompleter | null >(\n\t\tnull\n\t);\n\tconst [ AutocompleterUI, setAutocompleterUI ] = useState<\n\t\t( ( props: AutocompleterUIProps ) => JSX.Element | null ) | null\n\t>( null );\n\n\tconst backspacingRef = useRef( false );\n\n\tfunction insertCompletion( replacement: React.ReactNode ) {\n\t\tif ( autocompleter === null ) {\n\t\t\treturn;\n\t\t}\n\t\tconst end = record.start;\n\t\tconst start =\n\t\t\tend - autocompleter.triggerPrefix.length - filterValue.length;\n\t\tconst toInsert = create( { html: renderToString( replacement ) } );\n\n\t\tonChange( insert( record, toInsert, start, end ) );\n\t}\n\n\tfunction select( option: KeyedOption ) {\n\t\tconst { getOptionCompletion } = autocompleter || {};\n\n\t\tif ( option.isDisabled ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( getOptionCompletion ) {\n\t\t\tconst completion = getOptionCompletion( option.value, filterValue );\n\n\t\t\tconst isCompletionObject = (\n\t\t\t\tobj: OptionCompletion\n\t\t\t): obj is InsertOption | ReplaceOption => {\n\t\t\t\treturn (\n\t\t\t\t\tobj !== null &&\n\t\t\t\t\ttypeof obj === 'object' &&\n\t\t\t\t\t'action' in obj &&\n\t\t\t\t\tobj.action !== undefined &&\n\t\t\t\t\t'value' in obj &&\n\t\t\t\t\tobj.value !== undefined\n\t\t\t\t);\n\t\t\t};\n\n\t\t\tconst completionObject = isCompletionObject( completion )\n\t\t\t\t? completion\n\t\t\t\t: ( {\n\t\t\t\t\t\taction: 'insert-at-caret',\n\t\t\t\t\t\tvalue: completion,\n\t\t\t\t } as InsertOption );\n\n\t\t\tif ( 'replace' === completionObject.action ) {\n\t\t\t\tonReplace( [ completionObject.value ] );\n\t\t\t\t// When replacing, the component will unmount, so don't reset\n\t\t\t\t// state (below) on an unmounted component.\n\t\t\t\treturn;\n\t\t\t} else if ( 'insert-at-caret' === completionObject.action ) {\n\t\t\t\tinsertCompletion( completionObject.value );\n\t\t\t}\n\t\t}\n\n\t\t// Reset autocomplete state after insertion rather than before\n\t\t// so insertion events don't cause the completion menu to redisplay.\n\t\treset();\n\t}\n\n\tfunction reset() {\n\t\tsetSelectedIndex( 0 );\n\t\tsetFilteredOptions( EMPTY_FILTERED_OPTIONS );\n\t\tsetFilterValue( '' );\n\t\tsetAutocompleter( null );\n\t\tsetAutocompleterUI( null );\n\t}\n\n\t/**\n\t * Load options for an autocompleter.\n\t *\n\t * @param {Array} options\n\t */\n\tfunction onChangeOptions( options: Array< KeyedOption > ) {\n\t\tsetSelectedIndex(\n\t\t\toptions.length === filteredOptions.length ? selectedIndex : 0\n\t\t);\n\t\tsetFilteredOptions( options );\n\t}\n\n\tfunction handleKeyDown( event: KeyboardEvent ) {\n\t\tbackspacingRef.current = event.key === 'Backspace';\n\n\t\tif ( ! autocompleter ) {\n\t\t\treturn;\n\t\t}\n\t\tif ( filteredOptions.length === 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\n\t\tswitch ( event.key ) {\n\t\t\tcase 'ArrowUp': {\n\t\t\t\tconst newIndex =\n\t\t\t\t\t( selectedIndex === 0\n\t\t\t\t\t\t? filteredOptions.length\n\t\t\t\t\t\t: selectedIndex ) - 1;\n\t\t\t\tsetSelectedIndex( newIndex );\n\t\t\t\t// See the related PR as to why this is necessary: https://github.com/WordPress/gutenberg/pull/54902.\n\t\t\t\tif ( isAppleOS() ) {\n\t\t\t\t\tspeak(\n\t\t\t\t\t\tgetNodeText( filteredOptions[ newIndex ].label ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'ArrowDown': {\n\t\t\t\tconst newIndex = ( selectedIndex + 1 ) % filteredOptions.length;\n\t\t\t\tsetSelectedIndex( newIndex );\n\t\t\t\tif ( isAppleOS() ) {\n\t\t\t\t\tspeak(\n\t\t\t\t\t\tgetNodeText( filteredOptions[ newIndex ].label ),\n\t\t\t\t\t\t'assertive'\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase 'Escape':\n\t\t\t\tsetAutocompleter( null );\n\t\t\t\tsetAutocompleterUI( null );\n\t\t\t\tevent.preventDefault();\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\tselect( filteredOptions[ selectedIndex ] );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ArrowLeft':\n\t\t\tcase 'ArrowRight':\n\t\t\t\treset();\n\t\t\t\treturn;\n\n\t\t\tdefault:\n\t\t\t\treturn;\n\t\t}\n\n\t\t// Any handled key should prevent original behavior. This relies on\n\t\t// the early return in the default case.\n\t\tevent.preventDefault();\n\t}\n\n\t// textContent is a primitive (string), memoizing is not strictly necessary\n\t// but this is a preemptive performance improvement, since the autocompleter\n\t// is a potential bottleneck for the editor type metric.\n\tconst textContent = useMemo( () => {\n\t\tif ( isCollapsed( record ) ) {\n\t\t\treturn getTextContent( slice( record, 0 ) );\n\t\t}\n\t\treturn '';\n\t}, [ record ] );\n\n\tuseEffect( () => {\n\t\tif ( ! textContent ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\t// Find the completer with the highest triggerPrefix index in the\n\t\t// textContent.\n\t\tconst completer = completers.reduce< WPCompleter | null >(\n\t\t\t( lastTrigger, currentCompleter ) => {\n\t\t\t\tconst triggerIndex = textContent.lastIndexOf(\n\t\t\t\t\tcurrentCompleter.triggerPrefix\n\t\t\t\t);\n\t\t\t\tconst lastTriggerIndex =\n\t\t\t\t\tlastTrigger !== null\n\t\t\t\t\t\t? textContent.lastIndexOf( lastTrigger.triggerPrefix )\n\t\t\t\t\t\t: -1;\n\n\t\t\t\treturn triggerIndex > lastTriggerIndex\n\t\t\t\t\t? currentCompleter\n\t\t\t\t\t: lastTrigger;\n\t\t\t},\n\t\t\tnull\n\t\t);\n\n\t\tif ( ! completer ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst { allowContext, triggerPrefix } = completer;\n\t\tconst triggerIndex = textContent.lastIndexOf( triggerPrefix );\n\t\tconst textWithoutTrigger = textContent.slice(\n\t\t\ttriggerIndex + triggerPrefix.length\n\t\t);\n\n\t\tconst tooDistantFromTrigger = textWithoutTrigger.length > 50; // 50 chars seems to be a good limit.\n\t\t// This is a final barrier to prevent the effect from completing with\n\t\t// an extremely long string, which causes the editor to slow-down\n\t\t// significantly. This could happen, for example, if `matchingWhileBackspacing`\n\t\t// is true and one of the \"words\" end up being too long. If that's the case,\n\t\t// it will be caught by this guard.\n\t\tif ( tooDistantFromTrigger ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst mismatch = filteredOptions.length === 0;\n\t\tconst wordsFromTrigger = textWithoutTrigger.split( /\\s/ );\n\t\t// We need to allow the effect to run when not backspacing and if there\n\t\t// was a mismatch. i.e when typing a trigger + the match string or when\n\t\t// clicking in an existing trigger word on the page. We do that if we\n\t\t// detect that we have one word from trigger in the current textual context.\n\t\t//\n\t\t// Ex.: \"Some text @a\" <-- \"@a\" will be detected as the trigger word and\n\t\t// allow the effect to run. It will run until there's a mismatch.\n\t\tconst hasOneTriggerWord = wordsFromTrigger.length === 1;\n\t\t// This is used to allow the effect to run when backspacing and if\n\t\t// \"touching\" a word that \"belongs\" to a trigger. We consider a \"trigger\n\t\t// word\" any word up to the limit of 3 from the trigger character.\n\t\t// Anything beyond that is ignored if there's a mismatch. This allows\n\t\t// us to \"escape\" a mismatch when backspacing, but still imposing some\n\t\t// sane limits.\n\t\t//\n\t\t// Ex: \"Some text @marcelo sekkkk\" <--- \"kkkk\" caused a mismatch, but\n\t\t// if the user presses backspace here, it will show the completion popup again.\n\t\tconst matchingWhileBackspacing =\n\t\t\tbackspacingRef.current && wordsFromTrigger.length <= 3;\n\n\t\tif ( mismatch && ! ( matchingWhileBackspacing || hasOneTriggerWord ) ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst textAfterSelection = getTextContent(\n\t\t\tslice( record, undefined, getTextContent( record ).length )\n\t\t);\n\n\t\tif (\n\t\t\tallowContext &&\n\t\t\t! allowContext(\n\t\t\t\ttextContent.slice( 0, triggerIndex ),\n\t\t\t\ttextAfterSelection\n\t\t\t)\n\t\t) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (\n\t\t\t/^\\s/.test( textWithoutTrigger ) ||\n\t\t\t/\\s\\s+$/.test( textWithoutTrigger )\n\t\t) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! /[\\u0000-\\uFFFF]*$/.test( textWithoutTrigger ) ) {\n\t\t\tif ( autocompleter ) {\n\t\t\t\treset();\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tconst safeTrigger = escapeRegExp( completer.triggerPrefix );\n\t\tconst text = removeAccents( textContent );\n\t\tconst match = text\n\t\t\t.slice( text.lastIndexOf( completer.triggerPrefix ) )\n\t\t\t.match( new RegExp( `${ safeTrigger }([\\u0000-\\uFFFF]*)$` ) );\n\t\tconst query = match && match[ 1 ];\n\n\t\tsetAutocompleter( completer );\n\t\tsetAutocompleterUI( () =>\n\t\t\tcompleter !== autocompleter\n\t\t\t\t? getAutoCompleterUI( completer )\n\t\t\t\t: AutocompleterUI\n\t\t);\n\t\tsetFilterValue( query === null ? '' : query );\n\t\t// We want to avoid introducing unexpected side effects.\n\t\t// See https://github.com/WordPress/gutenberg/pull/41820\n\t}, [ textContent ] );\n\n\tconst { key: selectedKey = '' } = filteredOptions[ selectedIndex ] || {};\n\tconst { className } = autocompleter || {};\n\tconst isExpanded = !! autocompleter && filteredOptions.length > 0;\n\tconst listBoxId = isExpanded\n\t\t? `components-autocomplete-listbox-${ instanceId }`\n\t\t: undefined;\n\tconst activeId = isExpanded\n\t\t? `components-autocomplete-item-${ instanceId }-${ selectedKey }`\n\t\t: null;\n\tconst hasSelection = record.start !== undefined;\n\tconst showPopover = !! textContent && hasSelection && !! AutocompleterUI;\n\n\treturn {\n\t\tlistBoxId,\n\t\tactiveId,\n\t\tonKeyDown: withIgnoreIMEEvents( handleKeyDown ),\n\t\tpopover: showPopover && (\n\t\t\t<AutocompleterUI\n\t\t\t\tclassName={ className }\n\t\t\t\tfilterValue={ filterValue }\n\t\t\t\tinstanceId={ instanceId }\n\t\t\t\tlistBoxId={ listBoxId }\n\t\t\t\tselectedIndex={ selectedIndex }\n\t\t\t\tonChangeOptions={ onChangeOptions }\n\t\t\t\tonSelect={ select }\n\t\t\t\tvalue={ record }\n\t\t\t\tcontentRef={ contentRef }\n\t\t\t\treset={ reset }\n\t\t\t/>\n\t\t),\n\t};\n}\n\nfunction useLastDifferentValue( value: UseAutocompleteProps[ 'record' ] ) {\n\tconst history = useRef< Set< typeof value > >( new Set() );\n\n\thistory.current.add( value );\n\n\t// Keep the history size to 2.\n\tif ( history.current.size > 2 ) {\n\t\thistory.current.delete( Array.from( history.current )[ 0 ] );\n\t}\n\n\treturn Array.from( history.current )[ 0 ];\n}\n\nexport function useAutocompleteProps( options: UseAutocompleteProps ) {\n\tconst ref = useRef< HTMLElement >( null );\n\tconst onKeyDownRef = useRef< ( event: KeyboardEvent ) => void >();\n\tconst { record } = options;\n\tconst previousRecord = useLastDifferentValue( record );\n\tconst { popover, listBoxId, activeId, onKeyDown } = useAutocomplete( {\n\t\t...options,\n\t\tcontentRef: ref,\n\t} );\n\tonKeyDownRef.current = onKeyDown;\n\n\tconst mergedRefs = useMergeRefs( [\n\t\tref,\n\t\tuseRefEffect( ( element: HTMLElement ) => {\n\t\t\tfunction _onKeyDown( event: KeyboardEvent ) {\n\t\t\t\tonKeyDownRef.current?.( event );\n\t\t\t}\n\t\t\telement.addEventListener( 'keydown', _onKeyDown );\n\t\t\treturn () => {\n\t\t\t\telement.removeEventListener( 'keydown', _onKeyDown );\n\t\t\t};\n\t\t}, [] ),\n\t] );\n\n\t// We only want to show the popover if the user has typed something.\n\tconst didUserInput = record.text !== previousRecord?.text;\n\n\tif ( ! didUserInput ) {\n\t\treturn { ref: mergedRefs };\n\t}\n\n\treturn {\n\t\tref: mergedRefs,\n\t\tchildren: popover,\n\t\t'aria-autocomplete': listBoxId ? 'list' : undefined,\n\t\t'aria-owns': listBoxId,\n\t\t'aria-activedescendant': activeId,\n\t};\n}\n\nexport default function Autocomplete( {\n\tchildren,\n\tisSelected,\n\t...options\n}: AutocompleteProps ) {\n\tconst { popover, ...props } = useAutocomplete( options );\n\treturn (\n\t\t<>\n\t\t\t{ children( props ) }\n\t\t\t{ isSelected && popover }\n\t\t</>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,aAAa,MAAM,gBAAgB;;AAE1C;AACA;AACA;AACA,SACCC,cAAc,EACdC,SAAS,EACTC,QAAQ,EACRC,MAAM,EACNC,OAAO,QACD,oBAAoB;AAC3B,SAASC,aAAa,EAAEC,YAAY,EAAEC,YAAY,QAAQ,oBAAoB;AAC9E,SACCC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,WAAW,EACXC,cAAc,QACR,sBAAsB;AAC7B,SAASC,KAAK,QAAQ,iBAAiB;AACvC,SAASC,SAAS,QAAQ,qBAAqB;;AAE/C;AACA;AACA;AACA,SAASC,kBAAkB,QAAQ,oBAAoB;AACvD,SAASC,YAAY,QAAQ,kBAAkB;AAC/C,SAASC,mBAAmB,QAAQ,iCAAiC;AAWrE,OAAOC,WAAW,MAAM,wBAAwB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAEjD,MAAMC,sBAAqC,GAAG,EAAE;;AAEhD;AACA,MAAMC,2BAA2B,GAAG,CAAC,CAAC;AAEtC,OAAO,SAASC,eAAeA,CAAE;EAChCC,MAAM;EACNC,QAAQ;EACRC,SAAS;EACTC,UAAU;EACVC;AACqB,CAAC,EAAG;EACzB,MAAMC,UAAU,GAAG5B,aAAa,CAAEqB,2BAA4B,CAAC;EAC/D,MAAM,CAAEQ,aAAa,EAAEC,gBAAgB,CAAE,GAAGjC,QAAQ,CAAE,CAAE,CAAC;EAEzD,MAAM,CAAEkC,eAAe,EAAEC,kBAAkB,CAAE,GAAGnC,QAAQ,CAErDuB,sBAAuB,CAAC;EAC3B,MAAM,CAAEa,WAAW,EAAEC,cAAc,CAAE,GACpCrC,QAAQ,CAA2C,EAAG,CAAC;EACxD,MAAM,CAAEsC,aAAa,EAAEC,gBAAgB,CAAE,GAAGvC,QAAQ,CACnD,IACD,CAAC;EACD,MAAM,CAAEwC,eAAe,EAAEC,kBAAkB,CAAE,GAAGzC,QAAQ,CAErD,IAAK,CAAC;EAET,MAAM0C,cAAc,GAAGzC,MAAM,CAAE,KAAM,CAAC;EAEtC,SAAS0C,gBAAgBA,CAAEC,WAA4B,EAAG;IACzD,IAAKN,aAAa,KAAK,IAAI,EAAG;MAC7B;IACD;IACA,MAAMO,GAAG,GAAGnB,MAAM,CAACoB,KAAK;IACxB,MAAMA,KAAK,GACVD,GAAG,GAAGP,aAAa,CAACS,aAAa,CAACC,MAAM,GAAGZ,WAAW,CAACY,MAAM;IAC9D,MAAMC,QAAQ,GAAG3C,MAAM,CAAE;MAAE4C,IAAI,EAAEpD,cAAc,CAAE8C,WAAY;IAAE,CAAE,CAAC;IAElEjB,QAAQ,CAAEnB,MAAM,CAAEkB,MAAM,EAAEuB,QAAQ,EAAEH,KAAK,EAAED,GAAI,CAAE,CAAC;EACnD;EAEA,SAASM,MAAMA,CAAEC,MAAmB,EAAG;IACtC,MAAM;MAAEC;IAAoB,CAAC,GAAGf,aAAa,IAAI,CAAC,CAAC;IAEnD,IAAKc,MAAM,CAACE,UAAU,EAAG;MACxB;IACD;IAEA,IAAKD,mBAAmB,EAAG;MAC1B,MAAME,UAAU,GAAGF,mBAAmB,CAAED,MAAM,CAACI,KAAK,EAAEpB,WAAY,CAAC;MAEnE,MAAMqB,kBAAkB,GACvBC,GAAqB,IACoB;QACzC,OACCA,GAAG,KAAK,IAAI,IACZ,OAAOA,GAAG,KAAK,QAAQ,IACvB,QAAQ,IAAIA,GAAG,IACfA,GAAG,CAACC,MAAM,KAAKC,SAAS,IACxB,OAAO,IAAIF,GAAG,IACdA,GAAG,CAACF,KAAK,KAAKI,SAAS;MAEzB,CAAC;MAED,MAAMC,gBAAgB,GAAGJ,kBAAkB,CAAEF,UAAW,CAAC,GACtDA,UAAU,GACR;QACFI,MAAM,EAAE,iBAAiB;QACzBH,KAAK,EAAED;MACP,CAAmB;MAEtB,IAAK,SAAS,KAAKM,gBAAgB,CAACF,MAAM,EAAG;QAC5C/B,SAAS,CAAE,CAAEiC,gBAAgB,CAACL,KAAK,CAAG,CAAC;QACvC;QACA;QACA;MACD,CAAC,MAAM,IAAK,iBAAiB,KAAKK,gBAAgB,CAACF,MAAM,EAAG;QAC3DhB,gBAAgB,CAAEkB,gBAAgB,CAACL,KAAM,CAAC;MAC3C;IACD;;IAEA;IACA;IACAM,KAAK,CAAC,CAAC;EACR;EAEA,SAASA,KAAKA,CAAA,EAAG;IAChB7B,gBAAgB,CAAE,CAAE,CAAC;IACrBE,kBAAkB,CAAEZ,sBAAuB,CAAC;IAC5Cc,cAAc,CAAE,EAAG,CAAC;IACpBE,gBAAgB,CAAE,IAAK,CAAC;IACxBE,kBAAkB,CAAE,IAAK,CAAC;EAC3B;;EAEA;AACD;AACA;AACA;AACA;EACC,SAASsB,eAAeA,CAAEC,OAA6B,EAAG;IACzD/B,gBAAgB,CACf+B,OAAO,CAAChB,MAAM,KAAKd,eAAe,CAACc,MAAM,GAAGhB,aAAa,GAAG,CAC7D,CAAC;IACDG,kBAAkB,CAAE6B,OAAQ,CAAC;EAC9B;EAEA,SAASC,aAAaA,CAAEC,KAAoB,EAAG;IAC9CxB,cAAc,CAACyB,OAAO,GAAGD,KAAK,CAACE,GAAG,KAAK,WAAW;IAElD,IAAK,CAAE9B,aAAa,EAAG;MACtB;IACD;IACA,IAAKJ,eAAe,CAACc,MAAM,KAAK,CAAC,EAAG;MACnC;IACD;IAEA,IAAKkB,KAAK,CAACG,gBAAgB,EAAG;MAC7B;IACD;IAEA,QAASH,KAAK,CAACE,GAAG;MACjB,KAAK,SAAS;QAAE;UACf,MAAME,QAAQ,GACb,CAAEtC,aAAa,KAAK,CAAC,GAClBE,eAAe,CAACc,MAAM,GACtBhB,aAAa,IAAK,CAAC;UACvBC,gBAAgB,CAAEqC,QAAS,CAAC;UAC5B;UACA,IAAK1D,SAAS,CAAC,CAAC,EAAG;YAClBD,KAAK,CACJK,WAAW,CAAEkB,eAAe,CAAEoC,QAAQ,CAAE,CAACC,KAAM,CAAC,EAChD,WACD,CAAC;UACF;UACA;QACD;MAEA,KAAK,WAAW;QAAE;UACjB,MAAMD,QAAQ,GAAG,CAAEtC,aAAa,GAAG,CAAC,IAAKE,eAAe,CAACc,MAAM;UAC/Df,gBAAgB,CAAEqC,QAAS,CAAC;UAC5B,IAAK1D,SAAS,CAAC,CAAC,EAAG;YAClBD,KAAK,CACJK,WAAW,CAAEkB,eAAe,CAAEoC,QAAQ,CAAE,CAACC,KAAM,CAAC,EAChD,WACD,CAAC;UACF;UACA;QACD;MAEA,KAAK,QAAQ;QACZhC,gBAAgB,CAAE,IAAK,CAAC;QACxBE,kBAAkB,CAAE,IAAK,CAAC;QAC1ByB,KAAK,CAACM,cAAc,CAAC,CAAC;QACtB;MAED,KAAK,OAAO;QACXrB,MAAM,CAAEjB,eAAe,CAAEF,aAAa,CAAG,CAAC;QAC1C;MAED,KAAK,WAAW;MAChB,KAAK,YAAY;QAChB8B,KAAK,CAAC,CAAC;QACP;MAED;QACC;IACF;;IAEA;IACA;IACAI,KAAK,CAACM,cAAc,CAAC,CAAC;EACvB;;EAEA;EACA;EACA;EACA,MAAMC,WAAW,GAAGvE,OAAO,CAAE,MAAM;IAClC,IAAKO,WAAW,CAAEiB,MAAO,CAAC,EAAG;MAC5B,OAAOhB,cAAc,CAAEH,KAAK,CAAEmB,MAAM,EAAE,CAAE,CAAE,CAAC;IAC5C;IACA,OAAO,EAAE;EACV,CAAC,EAAE,CAAEA,MAAM,CAAG,CAAC;EAEf3B,SAAS,CAAE,MAAM;IAChB,IAAK,CAAE0E,WAAW,EAAG;MACpB,IAAKnC,aAAa,EAAG;QACpBwB,KAAK,CAAC,CAAC;MACR;MACA;IACD;;IAEA;IACA;IACA,MAAMY,SAAS,GAAG7C,UAAU,CAAC8C,MAAM,CAClC,CAAEC,WAAW,EAAEC,gBAAgB,KAAM;MACpC,MAAMC,YAAY,GAAGL,WAAW,CAACM,WAAW,CAC3CF,gBAAgB,CAAC9B,aAClB,CAAC;MACD,MAAMiC,gBAAgB,GACrBJ,WAAW,KAAK,IAAI,GACjBH,WAAW,CAACM,WAAW,CAAEH,WAAW,CAAC7B,aAAc,CAAC,GACpD,CAAC,CAAC;MAEN,OAAO+B,YAAY,GAAGE,gBAAgB,GACnCH,gBAAgB,GAChBD,WAAW;IACf,CAAC,EACD,IACD,CAAC;IAED,IAAK,CAAEF,SAAS,EAAG;MAClB,IAAKpC,aAAa,EAAG;QACpBwB,KAAK,CAAC,CAAC;MACR;MACA;IACD;IAEA,MAAM;MAAEmB,YAAY;MAAElC;IAAc,CAAC,GAAG2B,SAAS;IACjD,MAAMI,YAAY,GAAGL,WAAW,CAACM,WAAW,CAAEhC,aAAc,CAAC;IAC7D,MAAMmC,kBAAkB,GAAGT,WAAW,CAAClE,KAAK,CAC3CuE,YAAY,GAAG/B,aAAa,CAACC,MAC9B,CAAC;IAED,MAAMmC,qBAAqB,GAAGD,kBAAkB,CAAClC,MAAM,GAAG,EAAE,CAAC,CAAC;IAC9D;IACA;IACA;IACA;IACA;IACA,IAAKmC,qBAAqB,EAAG;MAC5B;IACD;IAEA,MAAMC,QAAQ,GAAGlD,eAAe,CAACc,MAAM,KAAK,CAAC;IAC7C,MAAMqC,gBAAgB,GAAGH,kBAAkB,CAACI,KAAK,CAAE,IAAK,CAAC;IACzD;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAMC,iBAAiB,GAAGF,gBAAgB,CAACrC,MAAM,KAAK,CAAC;IACvD;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,MAAMwC,wBAAwB,GAC7B9C,cAAc,CAACyB,OAAO,IAAIkB,gBAAgB,CAACrC,MAAM,IAAI,CAAC;IAEvD,IAAKoC,QAAQ,IAAI,EAAII,wBAAwB,IAAID,iBAAiB,CAAE,EAAG;MACtE,IAAKjD,aAAa,EAAG;QACpBwB,KAAK,CAAC,CAAC;MACR;MACA;IACD;IAEA,MAAM2B,kBAAkB,GAAG/E,cAAc,CACxCH,KAAK,CAAEmB,MAAM,EAAEkC,SAAS,EAAElD,cAAc,CAAEgB,MAAO,CAAC,CAACsB,MAAO,CAC3D,CAAC;IAED,IACCiC,YAAY,IACZ,CAAEA,YAAY,CACbR,WAAW,CAAClE,KAAK,CAAE,CAAC,EAAEuE,YAAa,CAAC,EACpCW,kBACD,CAAC,EACA;MACD,IAAKnD,aAAa,EAAG;QACpBwB,KAAK,CAAC,CAAC;MACR;MACA;IACD;IAEA,IACC,KAAK,CAAC4B,IAAI,CAAER,kBAAmB,CAAC,IAChC,QAAQ,CAACQ,IAAI,CAAER,kBAAmB,CAAC,EAClC;MACD,IAAK5C,aAAa,EAAG;QACpBwB,KAAK,CAAC,CAAC;MACR;MACA;IACD;IAEA,IAAK,CAAE,mBAAmB,CAAC4B,IAAI,CAAER,kBAAmB,CAAC,EAAG;MACvD,IAAK5C,aAAa,EAAG;QACpBwB,KAAK,CAAC,CAAC;MACR;MACA;IACD;IAEA,MAAM6B,WAAW,GAAG7E,YAAY,CAAE4D,SAAS,CAAC3B,aAAc,CAAC;IAC3D,MAAM6C,IAAI,GAAG/F,aAAa,CAAE4E,WAAY,CAAC;IACzC,MAAMoB,KAAK,GAAGD,IAAI,CAChBrF,KAAK,CAAEqF,IAAI,CAACb,WAAW,CAAEL,SAAS,CAAC3B,aAAc,CAAE,CAAC,CACpD8C,KAAK,CAAE,IAAIC,MAAM,CAAE,GAAIH,WAAW,qBAAuB,CAAE,CAAC;IAC9D,MAAMI,KAAK,GAAGF,KAAK,IAAIA,KAAK,CAAE,CAAC,CAAE;IAEjCtD,gBAAgB,CAAEmC,SAAU,CAAC;IAC7BjC,kBAAkB,CAAE,MACnBiC,SAAS,KAAKpC,aAAa,GACxBzB,kBAAkB,CAAE6D,SAAU,CAAC,GAC/BlC,eACJ,CAAC;IACDH,cAAc,CAAE0D,KAAK,KAAK,IAAI,GAAG,EAAE,GAAGA,KAAM,CAAC;IAC7C;IACA;EACD,CAAC,EAAE,CAAEtB,WAAW,CAAG,CAAC;EAEpB,MAAM;IAAEL,GAAG,EAAE4B,WAAW,GAAG;EAAG,CAAC,GAAG9D,eAAe,CAAEF,aAAa,CAAE,IAAI,CAAC,CAAC;EACxE,MAAM;IAAEiE;EAAU,CAAC,GAAG3D,aAAa,IAAI,CAAC,CAAC;EACzC,MAAM4D,UAAU,GAAG,CAAC,CAAE5D,aAAa,IAAIJ,eAAe,CAACc,MAAM,GAAG,CAAC;EACjE,MAAMmD,SAAS,GAAGD,UAAU,GACzB,mCAAoCnE,UAAU,EAAG,GACjD6B,SAAS;EACZ,MAAMwC,QAAQ,GAAGF,UAAU,GACxB,gCAAiCnE,UAAU,IAAMiE,WAAW,EAAG,GAC/D,IAAI;EACP,MAAMK,YAAY,GAAG3E,MAAM,CAACoB,KAAK,KAAKc,SAAS;EAC/C,MAAM0C,WAAW,GAAG,CAAC,CAAE7B,WAAW,IAAI4B,YAAY,IAAI,CAAC,CAAE7D,eAAe;EAExE,OAAO;IACN2D,SAAS;IACTC,QAAQ;IACRG,SAAS,EAAExF,mBAAmB,CAAEkD,aAAc,CAAC;IAC/CuC,OAAO,EAAEF,WAAW,iBACnBpF,IAAA,CAACsB,eAAe;MACfyD,SAAS,EAAGA,SAAW;MACvB7D,WAAW,EAAGA,WAAa;MAC3BL,UAAU,EAAGA,UAAY;MACzBoE,SAAS,EAAGA,SAAW;MACvBnE,aAAa,EAAGA,aAAe;MAC/B+B,eAAe,EAAGA,eAAiB;MACnC0C,QAAQ,EAAGtD,MAAQ;MACnBK,KAAK,EAAG9B,MAAQ;MAChBI,UAAU,EAAGA,UAAY;MACzBgC,KAAK,EAAGA;IAAO,CACf;EAEH,CAAC;AACF;AAEA,SAAS4C,qBAAqBA,CAAElD,KAAuC,EAAG;EACzE,MAAMmD,OAAO,GAAG1G,MAAM,CAAyB,IAAI2G,GAAG,CAAC,CAAE,CAAC;EAE1DD,OAAO,CAACxC,OAAO,CAAC0C,GAAG,CAAErD,KAAM,CAAC;;EAE5B;EACA,IAAKmD,OAAO,CAACxC,OAAO,CAAC2C,IAAI,GAAG,CAAC,EAAG;IAC/BH,OAAO,CAACxC,OAAO,CAAC4C,MAAM,CAAEC,KAAK,CAACC,IAAI,CAAEN,OAAO,CAACxC,OAAQ,CAAC,CAAE,CAAC,CAAG,CAAC;EAC7D;EAEA,OAAO6C,KAAK,CAACC,IAAI,CAAEN,OAAO,CAACxC,OAAQ,CAAC,CAAE,CAAC,CAAE;AAC1C;AAEA,OAAO,SAAS+C,oBAAoBA,CAAElD,OAA6B,EAAG;EACrE,MAAMmD,GAAG,GAAGlH,MAAM,CAAiB,IAAK,CAAC;EACzC,MAAMmH,YAAY,GAAGnH,MAAM,CAAqC,CAAC;EACjE,MAAM;IAAEyB;EAAO,CAAC,GAAGsC,OAAO;EAC1B,MAAMqD,cAAc,GAAGX,qBAAqB,CAAEhF,MAAO,CAAC;EACtD,MAAM;IAAE8E,OAAO;IAAEL,SAAS;IAAEC,QAAQ;IAAEG;EAAU,CAAC,GAAG9E,eAAe,CAAE;IACpE,GAAGuC,OAAO;IACVlC,UAAU,EAAEqF;EACb,CAAE,CAAC;EACHC,YAAY,CAACjD,OAAO,GAAGoC,SAAS;EAEhC,MAAMe,UAAU,GAAGlH,YAAY,CAAE,CAChC+G,GAAG,EACH9G,YAAY,CAAIkH,OAAoB,IAAM;IACzC,SAASC,UAAUA,CAAEtD,KAAoB,EAAG;MAC3CkD,YAAY,CAACjD,OAAO,GAAID,KAAM,CAAC;IAChC;IACAqD,OAAO,CAACE,gBAAgB,CAAE,SAAS,EAAED,UAAW,CAAC;IACjD,OAAO,MAAM;MACZD,OAAO,CAACG,mBAAmB,CAAE,SAAS,EAAEF,UAAW,CAAC;IACrD,CAAC;EACF,CAAC,EAAE,EAAG,CAAC,CACN,CAAC;;EAEH;EACA,MAAMG,YAAY,GAAGjG,MAAM,CAACkE,IAAI,KAAKyB,cAAc,EAAEzB,IAAI;EAEzD,IAAK,CAAE+B,YAAY,EAAG;IACrB,OAAO;MAAER,GAAG,EAAEG;IAAW,CAAC;EAC3B;EAEA,OAAO;IACNH,GAAG,EAAEG,UAAU;IACfM,QAAQ,EAAEpB,OAAO;IACjB,mBAAmB,EAAEL,SAAS,GAAG,MAAM,GAAGvC,SAAS;IACnD,WAAW,EAAEuC,SAAS;IACtB,uBAAuB,EAAEC;EAC1B,CAAC;AACF;AAEA,eAAe,SAASyB,YAAYA,CAAE;EACrCD,QAAQ;EACRE,UAAU;EACV,GAAG9D;AACe,CAAC,EAAG;EACtB,MAAM;IAAEwC,OAAO;IAAE,GAAGuB;EAAM,CAAC,GAAGtG,eAAe,CAAEuC,OAAQ,CAAC;EACxD,oBACC1C,KAAA,CAAAF,SAAA;IAAAwG,QAAA,GACGA,QAAQ,CAAEG,KAAM,CAAC,EACjBD,UAAU,IAAItB,OAAO;EAAA,CACtB,CAAC;AAEL","ignoreList":[]}
|