@wordpress/block-editor
Version:
8 lines (7 loc) • 6.13 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/editor-styles/index.js"],
"sourcesContent": ["/**\n * External dependencies\n */\nimport { colord, extend } from 'colord';\nimport namesPlugin from 'colord/plugins/names';\nimport a11yPlugin from 'colord/plugins/a11y';\n\n/**\n * WordPress dependencies\n */\nimport { SVG } from '@wordpress/components';\nimport { useCallback, useMemo, memo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport transformStyles from '../../utils/transform-styles';\nimport { store as blockEditorStore } from '../../store';\nimport { unlock } from '../../lock-unlock';\n\nextend( [ namesPlugin, a11yPlugin ] );\n\nfunction useDarkThemeBodyClassName( styles, scope ) {\n\treturn useCallback(\n\t\t( node ) => {\n\t\t\tif ( ! node ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst { ownerDocument } = node;\n\t\t\tconst { defaultView, body } = ownerDocument;\n\t\t\tconst canvas = scope ? ownerDocument.querySelector( scope ) : body;\n\n\t\t\tlet backgroundColor;\n\n\t\t\tif ( ! canvas ) {\n\t\t\t\t// The real .editor-styles-wrapper element might not exist in the\n\t\t\t\t// DOM, so calculate the background color by creating a fake\n\t\t\t\t// wrapper.\n\t\t\t\tconst tempCanvas = ownerDocument.createElement( 'div' );\n\t\t\t\ttempCanvas.classList.add( 'editor-styles-wrapper' );\n\t\t\t\tbody.appendChild( tempCanvas );\n\n\t\t\t\tbackgroundColor = defaultView\n\t\t\t\t\t?.getComputedStyle( tempCanvas, null )\n\t\t\t\t\t.getPropertyValue( 'background-color' );\n\n\t\t\t\tbody.removeChild( tempCanvas );\n\t\t\t} else {\n\t\t\t\tbackgroundColor = defaultView\n\t\t\t\t\t?.getComputedStyle( canvas, null )\n\t\t\t\t\t.getPropertyValue( 'background-color' );\n\t\t\t}\n\t\t\tconst colordBackgroundColor = colord( backgroundColor );\n\t\t\t// If background is transparent, it should be treated as light color.\n\t\t\tif (\n\t\t\t\tcolordBackgroundColor.luminance() > 0.5 ||\n\t\t\t\tcolordBackgroundColor.alpha() === 0\n\t\t\t) {\n\t\t\t\tbody.classList.remove( 'is-dark-theme' );\n\t\t\t} else {\n\t\t\t\tbody.classList.add( 'is-dark-theme' );\n\t\t\t}\n\t\t},\n\t\t[ styles, scope ]\n\t);\n}\n\nfunction EditorStyles( { styles, scope, transformOptions } ) {\n\tconst overrides = useSelect(\n\t\t( select ) => unlock( select( blockEditorStore ) ).getStyleOverrides(),\n\t\t[]\n\t);\n\tconst [ transformedStyles, transformedSvgs ] = useMemo( () => {\n\t\tconst _styles = Object.values( styles ?? [] );\n\n\t\tfor ( const [ id, override ] of overrides ) {\n\t\t\tconst index = _styles.findIndex( ( { id: _id } ) => id === _id );\n\t\t\tconst overrideWithId = { ...override, id };\n\t\t\tif ( index === -1 ) {\n\t\t\t\t_styles.push( overrideWithId );\n\t\t\t} else {\n\t\t\t\t_styles[ index ] = overrideWithId;\n\t\t\t}\n\t\t}\n\n\t\treturn [\n\t\t\ttransformStyles(\n\t\t\t\t_styles.filter( ( style ) => style?.css ),\n\t\t\t\tscope,\n\t\t\t\ttransformOptions\n\t\t\t),\n\t\t\t_styles\n\t\t\t\t.filter( ( style ) => style.__unstableType === 'svgs' )\n\t\t\t\t.map( ( style ) => style.assets )\n\t\t\t\t.join( '' ),\n\t\t];\n\t}, [ styles, overrides, scope, transformOptions ] );\n\n\treturn (\n\t\t<>\n\t\t\t{ /* Use an empty style element to have a document reference,\n\t\t\t but this could be any element. */ }\n\t\t\t<style\n\t\t\t\tref={ useDarkThemeBodyClassName( transformedStyles, scope ) }\n\t\t\t/>\n\t\t\t{ transformedStyles.map( ( css, index ) => (\n\t\t\t\t<style key={ index }>{ css }</style>\n\t\t\t) ) }\n\t\t\t<SVG\n\t\t\t\txmlns=\"http://www.w3.org/2000/svg\"\n\t\t\t\tviewBox=\"0 0 0 0\"\n\t\t\t\twidth=\"0\"\n\t\t\t\theight=\"0\"\n\t\t\t\trole=\"none\"\n\t\t\t\tstyle={ {\n\t\t\t\t\tvisibility: 'hidden',\n\t\t\t\t\tposition: 'absolute',\n\t\t\t\t\tleft: '-9999px',\n\t\t\t\t\toverflow: 'hidden',\n\t\t\t\t} }\n\t\t\t\tdangerouslySetInnerHTML={ { __html: transformedSvgs } }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default memo( EditorStyles );\n"],
"mappings": "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",
"names": ["namesPlugin", "a11yPlugin", "blockEditorStore", "transformStyles"]
}