{
  "version": 3,
  "sources": ["../../src/icon/edit.js"],
  "sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tDropdownMenu,\n\tTextControl,\n\tToolbarButton,\n\t__experimentalToolsPanel as ToolsPanel,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n} from '@wordpress/components';\nimport {\n\tflipHorizontal as flipHorizontalIcon,\n\tflipVertical as flipVerticalIcon,\n\trotateRight,\n} from '@wordpress/icons';\nimport {\n\tBlockControls,\n\tInspectorControls,\n\tuseBlockProps,\n\tuseBlockEditingMode,\n\t__experimentalUseColorProps as useColorProps,\n\t__experimentalUseBorderProps as useBorderProps,\n\t__experimentalGetSpacingClassesAndStyles as useSpacingProps,\n\tgetDimensionsClassesAndStyles as useDimensionsProps,\n} from '@wordpress/block-editor';\nimport { useState } from '@wordpress/element';\nimport { SVG, Rect, Path } from '@wordpress/primitives';\nimport { useSelect } from '@wordpress/data';\nimport { store as coreDataStore } from '@wordpress/core-data';\n\n/**\n * Internal dependencies\n */\nimport { useToolsPanelDropdownMenuProps } from '../utils/hooks';\nimport HtmlRenderer from '../utils/html-renderer';\nimport { CustomInserterModal } from './components';\n\nconst IconPlaceholder = ( { className, style } ) => (\n\t<SVG\n\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\tviewBox=\"0 0 60 60\"\n\t\tpreserveAspectRatio=\"none\"\n\t\tfill=\"none\"\n\t\taria-hidden=\"true\"\n\t\tclassName={ clsx( 'wp-block-icon__placeholder', className ) }\n\t\tstyle={ style }\n\t>\n\t\t<Rect width=\"60\" height=\"60\" fill=\"currentColor\" fillOpacity={ 0.1 } />\n\t\t<Path\n\t\t\tvectorEffect=\"non-scaling-stroke\"\n\t\t\tstroke=\"currentColor\"\n\t\t\tstrokeOpacity={ 0.25 }\n\t\t\td=\"M60 60 0 0\"\n\t\t/>\n\t</SVG>\n);\n\nexport function Edit( { attributes, setAttributes } ) {\n\tconst { icon, ariaLabel, flipHorizontal, flipVertical, rotation } =\n\t\tattributes;\n\n\tconst [ isInserterOpen, setInserterOpen ] = useState( false );\n\n\tconst isContentOnlyMode = useBlockEditingMode() === 'contentOnly';\n\n\tconst colorProps = useColorProps( attributes );\n\tconst spacingProps = useSpacingProps( attributes );\n\tconst borderProps = useBorderProps( attributes );\n\tconst dimensionsProps = useDimensionsProps( attributes );\n\n\tconst { selectedIcon, allIcons = [] } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getEntityRecord, getEntityRecords } =\n\t\t\t\tselect( coreDataStore );\n\t\t\treturn {\n\t\t\t\tselectedIcon: icon\n\t\t\t\t\t? getEntityRecord( 'root', 'icon', icon )\n\t\t\t\t\t: null,\n\t\t\t\tallIcons: isInserterOpen\n\t\t\t\t\t? getEntityRecords( 'root', 'icon' )\n\t\t\t\t\t: undefined,\n\t\t\t};\n\t\t},\n\t\t[ isInserterOpen, icon ]\n\t);\n\n\tconst iconToDisplay = selectedIcon?.content || '';\n\n\tconst flipClasses = {\n\t\t'is-flip-horizontal': flipHorizontal,\n\t\t'is-flip-vertical': flipVertical,\n\t};\n\n\tconst rotationStyle = rotation ? { rotate: `${ rotation }deg` } : {};\n\n\tconst blockControls = (\n\t\t<>\n\t\t\t{ icon && (\n\t\t\t\t<BlockControls group=\"block\">\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={ flipHorizontalIcon }\n\t\t\t\t\t\tlabel={ __( 'Flip horizontal' ) }\n\t\t\t\t\t\tisPressed={ flipHorizontal }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tflipHorizontal: ! flipHorizontal,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={ flipVerticalIcon }\n\t\t\t\t\t\tlabel={ __( 'Flip vertical' ) }\n\t\t\t\t\t\tisPressed={ flipVertical }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\tflipVertical: ! flipVertical,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\ticon={ rotateRight }\n\t\t\t\t\t\tlabel={ __( 'Rotate' ) }\n\t\t\t\t\t\tonClick={ () =>\n\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\trotation: ( ( rotation || 0 ) + 90 ) % 360,\n\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</BlockControls>\n\t\t\t) }\n\t\t\t<BlockControls group=\"other\">\n\t\t\t\t<ToolbarButton\n\t\t\t\t\tonClick={ () => {\n\t\t\t\t\t\tsetInserterOpen( true );\n\t\t\t\t\t} }\n\t\t\t\t>\n\t\t\t\t\t{ icon ? __( 'Replace' ) : __( 'Choose icon' ) }\n\t\t\t\t</ToolbarButton>\n\t\t\t\t{ isContentOnlyMode && icon && (\n\t\t\t\t\t// Add some extra controls for content attributes when content only mode is active.\n\t\t\t\t\t// With content only mode active, the inspector is hidden, so users need another way\n\t\t\t\t\t// to edit these attributes.\n\t\t\t\t\t<DropdownMenu\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\ttoggleProps={ {\n\t\t\t\t\t\t\tas: ToolbarButton,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\tpopoverProps={ {\n\t\t\t\t\t\t\tclassName: 'is-alternate',\n\t\t\t\t\t\t} }\n\t\t\t\t\t\ttext={ __( 'Label' ) }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ () => (\n\t\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\t\tclassName=\"wp-block-icon__toolbar-content\"\n\t\t\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\t\t\tvalue={ ariaLabel || '' }\n\t\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\t\t\t\tariaLabel: value,\n\t\t\t\t\t\t\t\t\t} )\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t\t'Briefly describe the icon to help screen reader users. Leave blank for decorative icons.'\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</DropdownMenu>\n\t\t\t\t) }\n\t\t\t</BlockControls>\n\t\t</>\n\t);\n\tconst dropdownMenuProps = useToolsPanelDropdownMenuProps();\n\tconst inspectorControls = icon && (\n\t\t<>\n\t\t\t<InspectorControls group=\"settings\">\n\t\t\t\t<ToolsPanel\n\t\t\t\t\tlabel={ __( 'Settings' ) }\n\t\t\t\t\tresetAll={ () =>\n\t\t\t\t\t\tsetAttributes( {\n\t\t\t\t\t\t\tariaLabel: undefined,\n\t\t\t\t\t\t} )\n\t\t\t\t\t}\n\t\t\t\t\tdropdownMenuProps={ dropdownMenuProps }\n\t\t\t\t>\n\t\t\t\t\t<ToolsPanelItem\n\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\tisShownByDefault\n\t\t\t\t\t\thasValue={ () => !! ariaLabel }\n\t\t\t\t\t\tonDeselect={ () =>\n\t\t\t\t\t\t\tsetAttributes( { ariaLabel: undefined } )\n\t\t\t\t\t\t}\n\t\t\t\t\t>\n\t\t\t\t\t\t<TextControl\n\t\t\t\t\t\t\tlabel={ __( 'Label' ) }\n\t\t\t\t\t\t\thelp={ __(\n\t\t\t\t\t\t\t\t'Briefly describe the icon to help screen reader users. Leave blank for decorative icons.'\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\tvalue={ ariaLabel || '' }\n\t\t\t\t\t\t\tonChange={ ( value ) =>\n\t\t\t\t\t\t\t\tsetAttributes( { ariaLabel: value } )\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</ToolsPanelItem>\n\t\t\t\t</ToolsPanel>\n\t\t\t</InspectorControls>\n\t\t</>\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t{ blockControls }\n\t\t\t{ inspectorControls }\n\t\t\t<div { ...useBlockProps() }>\n\t\t\t\t{ icon ? (\n\t\t\t\t\t<HtmlRenderer\n\t\t\t\t\t\thtml={ iconToDisplay }\n\t\t\t\t\t\twrapperProps={ {\n\t\t\t\t\t\t\tclassName: clsx(\n\t\t\t\t\t\t\t\tcolorProps.className,\n\t\t\t\t\t\t\t\tborderProps.className,\n\t\t\t\t\t\t\t\tspacingProps.className,\n\t\t\t\t\t\t\t\tdimensionsProps.className,\n\t\t\t\t\t\t\t\tflipClasses\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tstyle: {\n\t\t\t\t\t\t\t\t...colorProps.style,\n\t\t\t\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t\t\t\t...spacingProps.style,\n\t\t\t\t\t\t\t\t...dimensionsProps.style,\n\t\t\t\t\t\t\t\t...rotationStyle,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) : (\n\t\t\t\t\t<IconPlaceholder\n\t\t\t\t\t\tclassName={ clsx(\n\t\t\t\t\t\t\tborderProps.className,\n\t\t\t\t\t\t\tspacingProps.className,\n\t\t\t\t\t\t\tdimensionsProps.className,\n\t\t\t\t\t\t\tflipClasses\n\t\t\t\t\t\t) }\n\t\t\t\t\t\tstyle={ {\n\t\t\t\t\t\t\t...borderProps.style,\n\t\t\t\t\t\t\t...spacingProps.style,\n\t\t\t\t\t\t\t...dimensionsProps.style,\n\t\t\t\t\t\t\t...rotationStyle,\n\t\t\t\t\t\t\theight: 'auto',\n\t\t\t\t\t\t} }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ isInserterOpen && (\n\t\t\t\t<CustomInserterModal\n\t\t\t\t\ticons={ allIcons }\n\t\t\t\t\tsetInserterOpen={ setInserterOpen }\n\t\t\t\t\tattributes={ attributes }\n\t\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport default Edit;\n"],
  "mappings": "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",
  "names": ["import_components", "clsx", "useColorProps", "useSpacingProps", "useBorderProps", "useDimensionsProps", "coreDataStore", "flipHorizontalIcon", "flipVerticalIcon", "ToolsPanel", "ToolsPanelItem", "HtmlRenderer"]
}
