@wordpress/format-library 5.9.0 → 5.11.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 +4 -0
- package/build/image/index.js.map +1 -1
- package/build/link/index.js +2 -1
- package/build/link/index.js.map +1 -1
- package/build/link/inline.js +1 -1
- package/build/link/inline.js.map +1 -1
- package/build/link/use-link-instance-key.js.map +1 -1
- package/build-module/bold/index.js +1 -3
- package/build-module/bold/index.js.map +1 -1
- package/build-module/code/index.js +1 -3
- package/build-module/code/index.js.map +1 -1
- package/build-module/image/index.js +1 -3
- package/build-module/image/index.js.map +1 -1
- package/build-module/italic/index.js +1 -3
- package/build-module/italic/index.js.map +1 -1
- package/build-module/language/index.js +1 -3
- package/build-module/language/index.js.map +1 -1
- package/build-module/link/index.js +3 -4
- package/build-module/link/index.js.map +1 -1
- package/build-module/link/index.native.js +1 -3
- package/build-module/link/index.native.js.map +1 -1
- package/build-module/link/inline.js +1 -1
- package/build-module/link/inline.js.map +1 -1
- package/build-module/link/modal-screens/link-settings-screen.native.js +1 -3
- package/build-module/link/modal-screens/link-settings-screen.native.js.map +1 -1
- package/build-module/link/modal.native.js +1 -2
- package/build-module/link/modal.native.js.map +1 -1
- package/build-module/link/use-link-instance-key.js.map +1 -1
- package/build-module/strikethrough/index.js +1 -3
- package/build-module/strikethrough/index.js.map +1 -1
- package/build-module/text-color/index.js +1 -3
- package/build-module/text-color/index.js.map +1 -1
- package/build-module/text-color/index.native.js +1 -3
- package/build-module/text-color/index.native.js.map +1 -1
- package/build-module/text-color/inline.js +1 -2
- package/build-module/text-color/inline.js.map +1 -1
- package/build-module/underline/index.js +1 -3
- package/build-module/underline/index.js.map +1 -1
- package/package.json +16 -15
- package/src/link/index.js +9 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","useState","useLayoutEffect","useEffect","getTextContent","applyFormat","removeFormat","slice","isCollapsed","insert","create","isURL","isEmail","isPhoneNumber","RichTextToolbarButton","RichTextShortcut","decodeEntities","link","linkIcon","speak","InlineLinkUI","isValidHref","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","name","title","Edit","isActive","activeAttributes","value","onChange","onFocus","contentRef","addingLink","setAddingLink","openedBy","setOpenedBy","editableContentElement","current","handleClick","event","target","closest","el","action","addEventListener","removeEventListener","addLink","text","type","attributes","url","replace","stopAddingLink","tagName","focus","onFocusOutside","onRemoveFormat","shouldAutoFocus","children","character","onUse","icon","onClick","currentTarget","shortcutType","shortcutCharacter","focusOnMount","className","id","_id","rel","__unstablePasteRule","html","plainText","pastedText","trim","test","window","console","log","format","length","edit"],"sources":["@wordpress/format-library/src/link/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useLayoutEffect, useEffect } from '@wordpress/element';\nimport {\n\tgetTextContent,\n\tapplyFormat,\n\tremoveFormat,\n\tslice,\n\tisCollapsed,\n\tinsert,\n\tcreate,\n} from '@wordpress/rich-text';\nimport { isURL, isEmail, isPhoneNumber } from '@wordpress/url';\nimport {\n\tRichTextToolbarButton,\n\tRichTextShortcut,\n} from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport InlineLinkUI from './inline';\nimport { isValidHref } from './utils';\n\nconst name = 'core/link';\nconst title = __( 'Link' );\n\nfunction Edit( {\n\tisActive,\n\tactiveAttributes,\n\tvalue,\n\tonChange,\n\tonFocus,\n\tcontentRef,\n} ) {\n\tconst [ addingLink, setAddingLink ] = useState( false );\n\n\t// We only need to store the button element that opened the popover. We can ignore the other states, as they will be handled by the onFocus prop to return to the rich text field.\n\tconst [ openedBy, setOpenedBy ] = useState( null );\n\n\tuseEffect( () => {\n\t\t// When the link becomes inactive (i.e. isActive is false), reset the editingLink state\n\t\t// and the creatingLink state. This means that if the Link UI is displayed and the link\n\t\t// becomes inactive (e.g. used arrow keys to move cursor outside of link bounds), the UI will close.\n\t\tif ( ! isActive ) {\n\t\t\tsetAddingLink( false );\n\t\t}\n\t}, [ isActive ] );\n\n\tuseLayoutEffect( () => {\n\t\tconst editableContentElement = contentRef.current;\n\t\tif ( ! editableContentElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction handleClick( event ) {\n\t\t\t// There is a situation whereby there is an existing link in the rich text\n\t\t\t// and the user clicks on the leftmost edge of that link and fails to activate\n\t\t\t// the link format, but the click event still fires on the `<a>` element.\n\t\t\t// This causes the `editingLink` state to be set to `true` and the link UI\n\t\t\t// to be rendered in \"creating\" mode. We need to check isActive to see if\n\t\t\t// we have an active link format.\n\t\t\tconst link = event.target.closest( '[contenteditable] a' );\n\t\t\tif (\n\t\t\t\t! link || // other formats (e.g. bold) may be nested within the link.\n\t\t\t\t! isActive\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAddingLink( true );\n\t\t\tsetOpenedBy( {\n\t\t\t\tel: link,\n\t\t\t\taction: 'click',\n\t\t\t} );\n\t\t}\n\n\t\teditableContentElement.addEventListener( 'click', handleClick );\n\n\t\treturn () => {\n\t\t\teditableContentElement.removeEventListener( 'click', handleClick );\n\t\t};\n\t}, [ contentRef, isActive ] );\n\n\tfunction addLink( target ) {\n\t\tconst text = getTextContent( slice( value ) );\n\n\t\tif ( ! isActive && text && isURL( text ) && isValidHref( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: text },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else if ( ! isActive && text && isEmail( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: `mailto:${ text }` },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else if ( ! isActive && text && isPhoneNumber( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: `tel:${ text.replace( /\\D/g, '' ) }` },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else {\n\t\t\tif ( target ) {\n\t\t\t\tsetOpenedBy( {\n\t\t\t\t\tel: target,\n\t\t\t\t\taction: null, // We don't need to distinguish between click or keyboard here\n\t\t\t\t} );\n\t\t\t}\n\t\t\tsetAddingLink( true );\n\t\t}\n\t}\n\n\t/**\n\t * Runs when the popover is closed via escape keypress, unlinking the selected text,\n\t * but _not_ on a click outside the popover. onFocusOutside handles that.\n\t */\n\tfunction stopAddingLink() {\n\t\t// Don't let the click handler on the toolbar button trigger again.\n\n\t\t// There are two places for us to return focus to on Escape keypress:\n\t\t// 1. The rich text field.\n\t\t// 2. The toolbar button.\n\n\t\t// The toolbar button is the only one we need to handle returning focus to.\n\t\t// Otherwise, we rely on the passed in onFocus to return focus to the rich text field.\n\n\t\t// Close the popover\n\t\tsetAddingLink( false );\n\n\t\t// Return focus to the toolbar button or the rich text field\n\t\tif ( openedBy?.el?.tagName === 'BUTTON' ) {\n\t\t\topenedBy.el.focus();\n\t\t} else {\n\t\t\tonFocus();\n\t\t}\n\t\t// Remove the openedBy state\n\t\tsetOpenedBy( null );\n\t}\n\n\t// Test for this:\n\t// 1. Click on the link button\n\t// 2. Click the Options button in the top right of header\n\t// 3. Focus should be in the dropdown of the Options button\n\t// 4. Press Escape\n\t// 5. Focus should be on the Options button\n\tfunction onFocusOutside() {\n\t\tsetAddingLink( false );\n\t\tsetOpenedBy( null );\n\t}\n\n\tfunction onRemoveFormat() {\n\t\tonChange( removeFormat( value, name ) );\n\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t}\n\n\t// Only autofocus if we have clicked a link within the editor\n\tconst shouldAutoFocus = ! (\n\t\topenedBy?.el?.tagName === 'A' && openedBy?.action === 'click'\n\t);\n\n\treturn (\n\t\t<>\n\t\t\t<RichTextShortcut type=\"primary\" character=\"k\" onUse={ addLink } />\n\t\t\t<RichTextShortcut\n\t\t\t\ttype=\"primaryShift\"\n\t\t\t\tcharacter=\"k\"\n\t\t\t\tonUse={ onRemoveFormat }\n\t\t\t/>\n\t\t\t<RichTextToolbarButton\n\t\t\t\tname=\"link\"\n\t\t\t\ticon={ linkIcon }\n\t\t\t\ttitle={ isActive ? __( 'Link' ) : title }\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\taddLink( event.currentTarget );\n\t\t\t\t} }\n\t\t\t\tisActive={ isActive || addingLink }\n\t\t\t\tshortcutType=\"primary\"\n\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\taria-expanded={ addingLink }\n\t\t\t/>\n\t\t\t{ addingLink && (\n\t\t\t\t<InlineLinkUI\n\t\t\t\t\tstopAddingLink={ stopAddingLink }\n\t\t\t\t\tonFocusOutside={ onFocusOutside }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\tfocusOnMount={ shouldAutoFocus ? 'firstElement' : false }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const link = {\n\tname,\n\ttitle,\n\ttagName: 'a',\n\tclassName: null,\n\tattributes: {\n\t\turl: 'href',\n\t\ttype: 'data-type',\n\t\tid: 'data-id',\n\t\t_id: 'id',\n\t\ttarget: 'target',\n\t\trel: 'rel',\n\t},\n\t__unstablePasteRule( value, { html, plainText } ) {\n\t\tconst pastedText = ( html || plainText )\n\t\t\t.replace( /<[^>]+>/g, '' )\n\t\t\t.trim();\n\n\t\t// A URL was pasted, turn the selection into a link.\n\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\tif ( ! isURL( pastedText ) || ! /^https?:/.test( pastedText ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Created link:\\n\\n', pastedText );\n\n\t\tconst format = {\n\t\t\ttype: name,\n\t\t\tattributes: {\n\t\t\t\turl: decodeEntities( pastedText ),\n\t\t\t},\n\t\t};\n\n\t\tif ( isCollapsed( value ) ) {\n\t\t\treturn insert(\n\t\t\t\tvalue,\n\t\t\t\tapplyFormat(\n\t\t\t\t\tcreate( { text: plainText } ),\n\t\t\t\t\tformat,\n\t\t\t\t\t0,\n\t\t\t\t\tplainText.length\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn applyFormat( value, format );\n\t},\n\tedit: Edit,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["__","useState","useLayoutEffect","useEffect","getTextContent","applyFormat","removeFormat","slice","isCollapsed","insert","create","isURL","isEmail","isPhoneNumber","RichTextToolbarButton","RichTextShortcut","decodeEntities","link","linkIcon","speak","InlineLinkUI","isValidHref","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","name","title","Edit","isActive","activeAttributes","value","onChange","onFocus","contentRef","addingLink","setAddingLink","openedBy","setOpenedBy","editableContentElement","current","handleClick","event","target","closest","el","action","addEventListener","removeEventListener","addLink","text","type","attributes","url","replace","stopAddingLink","tagName","focus","onFocusOutside","onRemoveFormat","shouldAutoFocus","hasSelection","children","character","onUse","icon","onClick","currentTarget","shortcutType","shortcutCharacter","focusOnMount","className","id","_id","rel","__unstablePasteRule","html","plainText","pastedText","trim","test","window","console","log","format","length","edit"],"sources":["@wordpress/format-library/src/link/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useLayoutEffect, useEffect } from '@wordpress/element';\nimport {\n\tgetTextContent,\n\tapplyFormat,\n\tremoveFormat,\n\tslice,\n\tisCollapsed,\n\tinsert,\n\tcreate,\n} from '@wordpress/rich-text';\nimport { isURL, isEmail, isPhoneNumber } from '@wordpress/url';\nimport {\n\tRichTextToolbarButton,\n\tRichTextShortcut,\n} from '@wordpress/block-editor';\nimport { decodeEntities } from '@wordpress/html-entities';\nimport { link as linkIcon } from '@wordpress/icons';\nimport { speak } from '@wordpress/a11y';\n\n/**\n * Internal dependencies\n */\nimport InlineLinkUI from './inline';\nimport { isValidHref } from './utils';\n\nconst name = 'core/link';\nconst title = __( 'Link' );\n\nfunction Edit( {\n\tisActive,\n\tactiveAttributes,\n\tvalue,\n\tonChange,\n\tonFocus,\n\tcontentRef,\n} ) {\n\tconst [ addingLink, setAddingLink ] = useState( false );\n\n\t// We only need to store the button element that opened the popover. We can ignore the other states, as they will be handled by the onFocus prop to return to the rich text field.\n\tconst [ openedBy, setOpenedBy ] = useState( null );\n\n\tuseEffect( () => {\n\t\t// When the link becomes inactive (i.e. isActive is false), reset the editingLink state\n\t\t// and the creatingLink state. This means that if the Link UI is displayed and the link\n\t\t// becomes inactive (e.g. used arrow keys to move cursor outside of link bounds), the UI will close.\n\t\tif ( ! isActive ) {\n\t\t\tsetAddingLink( false );\n\t\t}\n\t}, [ isActive ] );\n\n\tuseLayoutEffect( () => {\n\t\tconst editableContentElement = contentRef.current;\n\t\tif ( ! editableContentElement ) {\n\t\t\treturn;\n\t\t}\n\n\t\tfunction handleClick( event ) {\n\t\t\t// There is a situation whereby there is an existing link in the rich text\n\t\t\t// and the user clicks on the leftmost edge of that link and fails to activate\n\t\t\t// the link format, but the click event still fires on the `<a>` element.\n\t\t\t// This causes the `editingLink` state to be set to `true` and the link UI\n\t\t\t// to be rendered in \"creating\" mode. We need to check isActive to see if\n\t\t\t// we have an active link format.\n\t\t\tconst link = event.target.closest( '[contenteditable] a' );\n\t\t\tif (\n\t\t\t\t! link || // other formats (e.g. bold) may be nested within the link.\n\t\t\t\t! isActive\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tsetAddingLink( true );\n\t\t\tsetOpenedBy( {\n\t\t\t\tel: link,\n\t\t\t\taction: 'click',\n\t\t\t} );\n\t\t}\n\n\t\teditableContentElement.addEventListener( 'click', handleClick );\n\n\t\treturn () => {\n\t\t\teditableContentElement.removeEventListener( 'click', handleClick );\n\t\t};\n\t}, [ contentRef, isActive ] );\n\n\tfunction addLink( target ) {\n\t\tconst text = getTextContent( slice( value ) );\n\n\t\tif ( ! isActive && text && isURL( text ) && isValidHref( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: text },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else if ( ! isActive && text && isEmail( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: `mailto:${ text }` },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else if ( ! isActive && text && isPhoneNumber( text ) ) {\n\t\t\tonChange(\n\t\t\t\tapplyFormat( value, {\n\t\t\t\t\ttype: name,\n\t\t\t\t\tattributes: { url: `tel:${ text.replace( /\\D/g, '' ) }` },\n\t\t\t\t} )\n\t\t\t);\n\t\t} else {\n\t\t\tif ( target ) {\n\t\t\t\tsetOpenedBy( {\n\t\t\t\t\tel: target,\n\t\t\t\t\taction: null, // We don't need to distinguish between click or keyboard here\n\t\t\t\t} );\n\t\t\t}\n\t\t\tsetAddingLink( true );\n\t\t}\n\t}\n\n\t/**\n\t * Runs when the popover is closed via escape keypress, unlinking the selected text,\n\t * but _not_ on a click outside the popover. onFocusOutside handles that.\n\t */\n\tfunction stopAddingLink() {\n\t\t// Don't let the click handler on the toolbar button trigger again.\n\n\t\t// There are two places for us to return focus to on Escape keypress:\n\t\t// 1. The rich text field.\n\t\t// 2. The toolbar button.\n\n\t\t// The toolbar button is the only one we need to handle returning focus to.\n\t\t// Otherwise, we rely on the passed in onFocus to return focus to the rich text field.\n\n\t\t// Close the popover\n\t\tsetAddingLink( false );\n\n\t\t// Return focus to the toolbar button or the rich text field\n\t\tif ( openedBy?.el?.tagName === 'BUTTON' ) {\n\t\t\topenedBy.el.focus();\n\t\t} else {\n\t\t\tonFocus();\n\t\t}\n\t\t// Remove the openedBy state\n\t\tsetOpenedBy( null );\n\t}\n\n\t// Test for this:\n\t// 1. Click on the link button\n\t// 2. Click the Options button in the top right of header\n\t// 3. Focus should be in the dropdown of the Options button\n\t// 4. Press Escape\n\t// 5. Focus should be on the Options button\n\tfunction onFocusOutside() {\n\t\tsetAddingLink( false );\n\t\tsetOpenedBy( null );\n\t}\n\n\tfunction onRemoveFormat() {\n\t\tonChange( removeFormat( value, name ) );\n\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t}\n\n\t// Only autofocus if we have clicked a link within the editor\n\tconst shouldAutoFocus = ! (\n\t\topenedBy?.el?.tagName === 'A' && openedBy?.action === 'click'\n\t);\n\n\tconst hasSelection = ! isCollapsed( value );\n\n\treturn (\n\t\t<>\n\t\t\t{ hasSelection && (\n\t\t\t\t<RichTextShortcut\n\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\tcharacter=\"k\"\n\t\t\t\t\tonUse={ addLink }\n\t\t\t\t/>\n\t\t\t) }\n\t\t\t<RichTextShortcut\n\t\t\t\ttype=\"primaryShift\"\n\t\t\t\tcharacter=\"k\"\n\t\t\t\tonUse={ onRemoveFormat }\n\t\t\t/>\n\t\t\t<RichTextToolbarButton\n\t\t\t\tname=\"link\"\n\t\t\t\ticon={ linkIcon }\n\t\t\t\ttitle={ isActive ? __( 'Link' ) : title }\n\t\t\t\tonClick={ ( event ) => {\n\t\t\t\t\taddLink( event.currentTarget );\n\t\t\t\t} }\n\t\t\t\tisActive={ isActive || addingLink }\n\t\t\t\tshortcutType=\"primary\"\n\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\taria-haspopup=\"true\"\n\t\t\t\taria-expanded={ addingLink }\n\t\t\t/>\n\t\t\t{ addingLink && (\n\t\t\t\t<InlineLinkUI\n\t\t\t\t\tstopAddingLink={ stopAddingLink }\n\t\t\t\t\tonFocusOutside={ onFocusOutside }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\tfocusOnMount={ shouldAutoFocus ? 'firstElement' : false }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const link = {\n\tname,\n\ttitle,\n\ttagName: 'a',\n\tclassName: null,\n\tattributes: {\n\t\turl: 'href',\n\t\ttype: 'data-type',\n\t\tid: 'data-id',\n\t\t_id: 'id',\n\t\ttarget: 'target',\n\t\trel: 'rel',\n\t},\n\t__unstablePasteRule( value, { html, plainText } ) {\n\t\tconst pastedText = ( html || plainText )\n\t\t\t.replace( /<[^>]+>/g, '' )\n\t\t\t.trim();\n\n\t\t// A URL was pasted, turn the selection into a link.\n\t\t// For the link pasting feature, allow only http(s) protocols.\n\t\tif ( ! isURL( pastedText ) || ! /^https?:/.test( pastedText ) ) {\n\t\t\treturn value;\n\t\t}\n\n\t\t// Allows us to ask for this information when we get a report.\n\t\twindow.console.log( 'Created link:\\n\\n', pastedText );\n\n\t\tconst format = {\n\t\t\ttype: name,\n\t\t\tattributes: {\n\t\t\t\turl: decodeEntities( pastedText ),\n\t\t\t},\n\t\t};\n\n\t\tif ( isCollapsed( value ) ) {\n\t\t\treturn insert(\n\t\t\t\tvalue,\n\t\t\t\tapplyFormat(\n\t\t\t\t\tcreate( { text: plainText } ),\n\t\t\t\t\tformat,\n\t\t\t\t\t0,\n\t\t\t\t\tplainText.length\n\t\t\t\t)\n\t\t\t);\n\t\t}\n\n\t\treturn applyFormat( value, format );\n\t},\n\tedit: Edit,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,9 +19,7 @@ import { link as linkIcon } from '@wordpress/icons';
|
|
|
19
19
|
*/
|
|
20
20
|
import ModalLinkUI from './modal';
|
|
21
21
|
import { isValidHref } from './utils';
|
|
22
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
23
|
const name = 'core/link';
|
|
26
24
|
export const link = {
|
|
27
25
|
name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Clipboard","__","Component","withSpokenMessages","RichTextToolbarButton","applyFormat","getActiveFormat","getTextContent","isCollapsed","removeFormat","slice","isURL","link","linkIcon","ModalLinkUI","isValidHref","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","name","title","tagName","className","attributes","url","target","rel","edit","LinkEdit","constructor","arguments","addLink","bind","stopAddingLink","onRemoveFormat","getURLFromClipboard","state","addingLink","value","onChange","props","text","newValue","type","start","end","activeFormats","needsSelectionUpdate","setState","clipboardURL","undefined","getLinkSelection","isActive","startFormat","startIndex","endIndex","formats","find","format","speak","linkSelection","clipboardText","getString","render","activeAttributes","children","isVisible","onClose","onRemove","icon","onClick","shortcutType","shortcutCharacter"],"sources":["@wordpress/format-library/src/link/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport Clipboard from '@react-native-clipboard/clipboard';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Component } from '@wordpress/element';\nimport { withSpokenMessages } from '@wordpress/components';\nimport { RichTextToolbarButton } from '@wordpress/block-editor';\nimport {\n\tapplyFormat,\n\tgetActiveFormat,\n\tgetTextContent,\n\tisCollapsed,\n\tremoveFormat,\n\tslice,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\nimport { link as linkIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ModalLinkUI from './modal';\nimport { isValidHref } from './utils';\n\nconst name = 'core/link';\n\nexport const link = {\n\tname,\n\ttitle: __( 'Link' ),\n\ttagName: 'a',\n\tclassName: null,\n\tattributes: {\n\t\turl: 'href',\n\t\ttarget: 'target',\n\t\trel: 'rel',\n\t},\n\tedit: withSpokenMessages(\n\t\tclass LinkEdit extends Component {\n\t\t\tconstructor() {\n\t\t\t\tsuper( ...arguments );\n\n\t\t\t\tthis.addLink = this.addLink.bind( this );\n\t\t\t\tthis.stopAddingLink = this.stopAddingLink.bind( this );\n\t\t\t\tthis.onRemoveFormat = this.onRemoveFormat.bind( this );\n\t\t\t\tthis.getURLFromClipboard =\n\t\t\t\t\tthis.getURLFromClipboard.bind( this );\n\t\t\t\tthis.state = {\n\t\t\t\t\taddingLink: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\taddLink() {\n\t\t\t\tconst { value, onChange } = this.props;\n\t\t\t\tconst text = getTextContent( slice( value ) );\n\n\t\t\t\tif ( text && isURL( text ) && isValidHref( text ) ) {\n\t\t\t\t\tconst newValue = applyFormat( value, {\n\t\t\t\t\t\ttype: name,\n\t\t\t\t\t\tattributes: { url: text },\n\t\t\t\t\t} );\n\t\t\t\t\tnewValue.start = newValue.end;\n\t\t\t\t\tnewValue.activeFormats = [];\n\t\t\t\t\tonChange( { ...newValue, needsSelectionUpdate: true } );\n\t\t\t\t} else {\n\t\t\t\t\tthis.setState( { addingLink: true } );\n\t\t\t\t\tthis.getURLFromClipboard();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstopAddingLink() {\n\t\t\t\tthis.setState( { addingLink: false, clipboardURL: undefined } );\n\t\t\t}\n\n\t\t\tgetLinkSelection() {\n\t\t\t\tconst { value, isActive } = this.props;\n\t\t\t\tconst startFormat = getActiveFormat( value, 'core/link' );\n\n\t\t\t\t// If the link isn't selected, get the link manually by looking around the cursor\n\t\t\t\t// TODO: handle partly selected links.\n\t\t\t\tif ( startFormat && isCollapsed( value ) && isActive ) {\n\t\t\t\t\tlet startIndex = value.start;\n\t\t\t\t\tlet endIndex = value.end;\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\tvalue.formats[ startIndex ]?.find(\n\t\t\t\t\t\t\t( format ) => format?.type === startFormat.type\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tstartIndex--;\n\t\t\t\t\t}\n\n\t\t\t\t\tendIndex++;\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\tvalue.formats[ endIndex ]?.find(\n\t\t\t\t\t\t\t( format ) => format?.type === startFormat.type\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tendIndex++;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tstart: startIndex + 1,\n\t\t\t\t\t\tend: endIndex,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tonRemoveFormat() {\n\t\t\t\tconst { onChange, speak, value } = this.props;\n\t\t\t\tconst startFormat = getActiveFormat( value, 'core/link' );\n\n\t\t\t\t// Before we try to remove anything we check if there is something at the caret position to remove.\n\t\t\t\tif ( isCollapsed( value ) && startFormat === undefined ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst linkSelection = this.getLinkSelection();\n\n\t\t\t\tonChange( removeFormat( linkSelection, name ) );\n\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t}\n\n\t\t\tasync getURLFromClipboard() {\n\t\t\t\tconst clipboardText = await Clipboard.getString();\n\t\t\t\tif ( ! clipboardText ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Check if pasted text is URL.\n\t\t\t\tif ( ! isURL( clipboardText ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.setState( { clipboardURL: clipboardText } );\n\t\t\t}\n\n\t\t\trender() {\n\t\t\t\tconst { isActive, activeAttributes, onChange } = this.props;\n\t\t\t\tconst linkSelection = this.getLinkSelection();\n\t\t\t\t// If no URL is set and we have a clipboard URL let's use it.\n\t\t\t\tif ( ! activeAttributes.url && this.state.clipboardURL ) {\n\t\t\t\t\tactiveAttributes.url = this.state.clipboardURL;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ModalLinkUI\n\t\t\t\t\t\t\tisVisible={ this.state.addingLink }\n\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\t\t\tonClose={ this.stopAddingLink }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tonRemove={ this.onRemoveFormat }\n\t\t\t\t\t\t\tvalue={ linkSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RichTextToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tonClick={ this.addLink }\n\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\tshortcutType=\"primary\"\n\t\t\t\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t),\n};\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Clipboard","__","Component","withSpokenMessages","RichTextToolbarButton","applyFormat","getActiveFormat","getTextContent","isCollapsed","removeFormat","slice","isURL","link","linkIcon","ModalLinkUI","isValidHref","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","name","title","tagName","className","attributes","url","target","rel","edit","LinkEdit","constructor","arguments","addLink","bind","stopAddingLink","onRemoveFormat","getURLFromClipboard","state","addingLink","value","onChange","props","text","newValue","type","start","end","activeFormats","needsSelectionUpdate","setState","clipboardURL","undefined","getLinkSelection","isActive","startFormat","startIndex","endIndex","formats","find","format","speak","linkSelection","clipboardText","getString","render","activeAttributes","children","isVisible","onClose","onRemove","icon","onClick","shortcutType","shortcutCharacter"],"sources":["@wordpress/format-library/src/link/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport Clipboard from '@react-native-clipboard/clipboard';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { Component } from '@wordpress/element';\nimport { withSpokenMessages } from '@wordpress/components';\nimport { RichTextToolbarButton } from '@wordpress/block-editor';\nimport {\n\tapplyFormat,\n\tgetActiveFormat,\n\tgetTextContent,\n\tisCollapsed,\n\tremoveFormat,\n\tslice,\n} from '@wordpress/rich-text';\nimport { isURL } from '@wordpress/url';\nimport { link as linkIcon } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport ModalLinkUI from './modal';\nimport { isValidHref } from './utils';\n\nconst name = 'core/link';\n\nexport const link = {\n\tname,\n\ttitle: __( 'Link' ),\n\ttagName: 'a',\n\tclassName: null,\n\tattributes: {\n\t\turl: 'href',\n\t\ttarget: 'target',\n\t\trel: 'rel',\n\t},\n\tedit: withSpokenMessages(\n\t\tclass LinkEdit extends Component {\n\t\t\tconstructor() {\n\t\t\t\tsuper( ...arguments );\n\n\t\t\t\tthis.addLink = this.addLink.bind( this );\n\t\t\t\tthis.stopAddingLink = this.stopAddingLink.bind( this );\n\t\t\t\tthis.onRemoveFormat = this.onRemoveFormat.bind( this );\n\t\t\t\tthis.getURLFromClipboard =\n\t\t\t\t\tthis.getURLFromClipboard.bind( this );\n\t\t\t\tthis.state = {\n\t\t\t\t\taddingLink: false,\n\t\t\t\t};\n\t\t\t}\n\n\t\t\taddLink() {\n\t\t\t\tconst { value, onChange } = this.props;\n\t\t\t\tconst text = getTextContent( slice( value ) );\n\n\t\t\t\tif ( text && isURL( text ) && isValidHref( text ) ) {\n\t\t\t\t\tconst newValue = applyFormat( value, {\n\t\t\t\t\t\ttype: name,\n\t\t\t\t\t\tattributes: { url: text },\n\t\t\t\t\t} );\n\t\t\t\t\tnewValue.start = newValue.end;\n\t\t\t\t\tnewValue.activeFormats = [];\n\t\t\t\t\tonChange( { ...newValue, needsSelectionUpdate: true } );\n\t\t\t\t} else {\n\t\t\t\t\tthis.setState( { addingLink: true } );\n\t\t\t\t\tthis.getURLFromClipboard();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tstopAddingLink() {\n\t\t\t\tthis.setState( { addingLink: false, clipboardURL: undefined } );\n\t\t\t}\n\n\t\t\tgetLinkSelection() {\n\t\t\t\tconst { value, isActive } = this.props;\n\t\t\t\tconst startFormat = getActiveFormat( value, 'core/link' );\n\n\t\t\t\t// If the link isn't selected, get the link manually by looking around the cursor\n\t\t\t\t// TODO: handle partly selected links.\n\t\t\t\tif ( startFormat && isCollapsed( value ) && isActive ) {\n\t\t\t\t\tlet startIndex = value.start;\n\t\t\t\t\tlet endIndex = value.end;\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\tvalue.formats[ startIndex ]?.find(\n\t\t\t\t\t\t\t( format ) => format?.type === startFormat.type\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tstartIndex--;\n\t\t\t\t\t}\n\n\t\t\t\t\tendIndex++;\n\n\t\t\t\t\twhile (\n\t\t\t\t\t\tvalue.formats[ endIndex ]?.find(\n\t\t\t\t\t\t\t( format ) => format?.type === startFormat.type\n\t\t\t\t\t\t)\n\t\t\t\t\t) {\n\t\t\t\t\t\tendIndex++;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\t...value,\n\t\t\t\t\t\tstart: startIndex + 1,\n\t\t\t\t\t\tend: endIndex,\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn value;\n\t\t\t}\n\n\t\t\tonRemoveFormat() {\n\t\t\t\tconst { onChange, speak, value } = this.props;\n\t\t\t\tconst startFormat = getActiveFormat( value, 'core/link' );\n\n\t\t\t\t// Before we try to remove anything we check if there is something at the caret position to remove.\n\t\t\t\tif ( isCollapsed( value ) && startFormat === undefined ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst linkSelection = this.getLinkSelection();\n\n\t\t\t\tonChange( removeFormat( linkSelection, name ) );\n\t\t\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t\t\t}\n\n\t\t\tasync getURLFromClipboard() {\n\t\t\t\tconst clipboardText = await Clipboard.getString();\n\t\t\t\tif ( ! clipboardText ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Check if pasted text is URL.\n\t\t\t\tif ( ! isURL( clipboardText ) ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tthis.setState( { clipboardURL: clipboardText } );\n\t\t\t}\n\n\t\t\trender() {\n\t\t\t\tconst { isActive, activeAttributes, onChange } = this.props;\n\t\t\t\tconst linkSelection = this.getLinkSelection();\n\t\t\t\t// If no URL is set and we have a clipboard URL let's use it.\n\t\t\t\tif ( ! activeAttributes.url && this.state.clipboardURL ) {\n\t\t\t\t\tactiveAttributes.url = this.state.clipboardURL;\n\t\t\t\t}\n\t\t\t\treturn (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<ModalLinkUI\n\t\t\t\t\t\t\tisVisible={ this.state.addingLink }\n\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\t\t\tonClose={ this.stopAddingLink }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t\tonRemove={ this.onRemoveFormat }\n\t\t\t\t\t\t\tvalue={ linkSelection }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<RichTextToolbarButton\n\t\t\t\t\t\t\tname=\"link\"\n\t\t\t\t\t\t\ticon={ linkIcon }\n\t\t\t\t\t\t\ttitle={ __( 'Link' ) }\n\t\t\t\t\t\t\tonClick={ this.addLink }\n\t\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\t\tshortcutType=\"primary\"\n\t\t\t\t\t\t\tshortcutCharacter=\"k\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t),\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -183,7 +183,7 @@ function InlineLinkUI({
|
|
|
183
183
|
};
|
|
184
184
|
}
|
|
185
185
|
function createButtonText(searchTerm) {
|
|
186
|
-
return createInterpolateElement(sprintf(
|
|
186
|
+
return createInterpolateElement(sprintf(/* translators: %s: search term. */
|
|
187
187
|
__('Create page: <mark>%s</mark>'), searchTerm), {
|
|
188
188
|
mark: /*#__PURE__*/_jsx("mark", {})
|
|
189
189
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","createInterpolateElement","__","sprintf","speak","Popover","prependHTTP","create","insert","isCollapsed","applyFormat","removeFormat","slice","replace","split","concat","useAnchor","__experimentalLinkControl","LinkControl","store","blockEditorStore","useDispatch","useSelect","createLinkFormat","isValidHref","getFormatBoundary","link","settings","jsx","_jsx","LINK_SETTINGS","DEFAULT_LINK_SETTINGS","id","title","InlineLinkUI","isActive","activeAttributes","value","onChange","onFocusOutside","stopAddingLink","contentRef","focusOnMount","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","selectionChange","createPageEntity","userCanCreatePages","selectionStart","select","getSettings","getSelectionStart","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","opensInNewTab","target","nofollow","rel","includes","removeLink","newValue","onChangeLink","nextValue","hasLink","isNewLink","newUrl","linkFormat","undefined","String","opensInNewWindow","newText","inserted","start","length","clientId","identifier","attributeKey","boundary","valBefore","valAfter","newValAfter","popoverAnchor","editableContentElement","current","handleCreate","pageTitle","page","status","rendered","kind","createButtonText","searchTerm","mark","anchor","animate","onClose","placement","offset","shift","constrainTabbing","children","onRemove","hasRichPreviews","createSuggestion","withCreateSuggestion","createSuggestionButtonText","hasTextControl","showInitialSuggestions","suggestionsQuery","initialSuggestionsSearchOptions","subtype","perPage","textStart","textEnd","end"],"sources":["@wordpress/format-library/src/link/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tremoveFormat,\n\tslice,\n\treplace,\n\tsplit,\n\tconcat,\n\tuseAnchor,\n} from '@wordpress/rich-text';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref, getFormatBoundary } from './utils';\nimport { link as settings } from './index';\n\nconst LINK_SETTINGS = [\n\t...LinkControl.DEFAULT_LINK_SETTINGS,\n\t{\n\t\tid: 'nofollow',\n\t\ttitle: __( 'Mark as nofollow' ),\n\t},\n];\n\nfunction InlineLinkUI( {\n\tisActive,\n\tactiveAttributes,\n\tvalue,\n\tonChange,\n\tonFocusOutside,\n\tstopAddingLink,\n\tcontentRef,\n\tfocusOnMount,\n} ) {\n\tconst richLinkTextValue = getRichTextValueFromSelection( value, isActive );\n\n\t// Get the text content minus any HTML tags.\n\tconst richTextText = richLinkTextValue.text;\n\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\n\tconst { createPageEntity, userCanCreatePages, selectionStart } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getSelectionStart } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\tcreatePageEntity: _settings.__experimentalCreatePageEntity,\n\t\t\t\tuserCanCreatePages: _settings.__experimentalUserCanCreatePages,\n\t\t\t\tselectionStart: getSelectionStart(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst linkValue = useMemo(\n\t\t() => ( {\n\t\t\turl: activeAttributes.url,\n\t\t\ttype: activeAttributes.type,\n\t\t\tid: activeAttributes.id,\n\t\t\topensInNewTab: activeAttributes.target === '_blank',\n\t\t\tnofollow: activeAttributes.rel?.includes( 'nofollow' ),\n\t\t\ttitle: richTextText,\n\t\t} ),\n\t\t[\n\t\t\tactiveAttributes.id,\n\t\t\tactiveAttributes.rel,\n\t\t\tactiveAttributes.target,\n\t\t\tactiveAttributes.type,\n\t\t\tactiveAttributes.url,\n\t\t\trichTextText,\n\t\t]\n\t);\n\n\tfunction removeLink() {\n\t\tconst newValue = removeFormat( value, 'core/link' );\n\t\tonChange( newValue );\n\t\tstopAddingLink();\n\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t}\n\n\tfunction onChangeLink( nextValue ) {\n\t\tconst hasLink = linkValue?.url;\n\t\tconst isNewLink = ! hasLink;\n\n\t\t// Merge the next value with the current link value.\n\t\tnextValue = {\n\t\t\t...linkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\tconst newUrl = prependHTTP( nextValue.url );\n\t\tconst linkFormat = createLinkFormat( {\n\t\t\turl: newUrl,\n\t\t\ttype: nextValue.type,\n\t\t\tid:\n\t\t\t\tnextValue.id !== undefined && nextValue.id !== null\n\t\t\t\t\t? String( nextValue.id )\n\t\t\t\t\t: undefined,\n\t\t\topensInNewWindow: nextValue.opensInNewTab,\n\t\t\tnofollow: nextValue.nofollow,\n\t\t} );\n\n\t\tconst newText = nextValue.title || newUrl;\n\n\t\t// Scenario: we have any active text selection or an active format.\n\t\tlet newValue;\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\t// Scenario: we don't have any actively selected text or formats.\n\t\t\tconst inserted = insert( value, newText );\n\n\t\t\tnewValue = applyFormat(\n\t\t\t\tinserted,\n\t\t\t\tlinkFormat,\n\t\t\t\tvalue.start,\n\t\t\t\tvalue.start + newText.length\n\t\t\t);\n\n\t\t\tonChange( newValue );\n\n\t\t\t// Close the Link UI.\n\t\t\tstopAddingLink();\n\n\t\t\t// Move the selection to the end of the inserted link outside of the format boundary\n\t\t\t// so the user can continue typing after the link.\n\t\t\tselectionChange( {\n\t\t\t\tclientId: selectionStart.clientId,\n\t\t\t\tidentifier: selectionStart.attributeKey,\n\t\t\t\tstart: value.start + newText.length + 1,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t} else if ( newText === richTextText ) {\n\t\t\tnewValue = applyFormat( value, linkFormat );\n\t\t} else {\n\t\t\t// Scenario: Editing an existing link.\n\n\t\t\t// Create new RichText value for the new text in order that we\n\t\t\t// can apply formats to it.\n\t\t\tnewValue = create( { text: newText } );\n\t\t\t// Apply the new Link format to this new text value.\n\t\t\tnewValue = applyFormat( newValue, linkFormat, 0, newText.length );\n\n\t\t\t// Get the boundaries of the active link format.\n\t\t\tconst boundary = getFormatBoundary( value, {\n\t\t\t\ttype: 'core/link',\n\t\t\t} );\n\n\t\t\t// Split the value at the start of the active link format.\n\t\t\t// Passing \"start\" as the 3rd parameter is required to ensure\n\t\t\t// the second half of the split value is split at the format's\n\t\t\t// start boundary and avoids relying on the value's \"end\" property\n\t\t\t// which may not correspond correctly.\n\t\t\tconst [ valBefore, valAfter ] = split(\n\t\t\t\tvalue,\n\t\t\t\tboundary.start,\n\t\t\t\tboundary.start\n\t\t\t);\n\n\t\t\t// Update the original (full) RichTextValue replacing the\n\t\t\t// target text with the *new* RichTextValue containing:\n\t\t\t// 1. The new text content.\n\t\t\t// 2. The new link format.\n\t\t\t// As \"replace\" will operate on the first match only, it is\n\t\t\t// run only against the second half of the value which was\n\t\t\t// split at the active format's boundary. This avoids a bug\n\t\t\t// with incorrectly targetted replacements.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/41771.\n\t\t\t// Note original formats will be lost when applying this change.\n\t\t\t// That is expected behaviour.\n\t\t\t// See: https://github.com/WordPress/gutenberg/pull/33849#issuecomment-936134179.\n\t\t\tconst newValAfter = replace( valAfter, richTextText, newValue );\n\n\t\t\tnewValue = concat( valBefore, newValAfter );\n\t\t}\n\n\t\tonChange( newValue );\n\n\t\t// Focus should only be returned to the rich text on submit if this link is not\n\t\t// being created for the first time. If it is then focus should remain within the\n\t\t// Link UI because it should remain open for the user to modify the link they have\n\t\t// just created.\n\t\tif ( ! isNewLink ) {\n\t\t\tstopAddingLink();\n\t\t}\n\n\t\tif ( ! isValidHref( newUrl ) ) {\n\t\t\tspeak(\n\t\t\t\t__(\n\t\t\t\t\t'Warning: the link has been inserted but may have errors. Please test it.'\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted.' ), 'assertive' );\n\t\t}\n\t}\n\n\tconst popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings: {\n\t\t\t...settings,\n\t\t\tisActive,\n\t\t},\n\t} );\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst page = await createPageEntity( {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: page.type,\n\t\t\ttitle: page.title.rendered,\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\n\t}\n\n\tfunction createButtonText( searchTerm ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t__( 'Create page: <mark>%s</mark>' ),\n\t\t\t\tsearchTerm\n\t\t\t),\n\t\t\t{ mark: <mark /> }\n\t\t);\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tanchor={ popoverAnchor }\n\t\t\tanimate={ false }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tonFocusOutside={ onFocusOutside }\n\t\t\tplacement=\"bottom\"\n\t\t\toffset={ 8 }\n\t\t\tshift\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tconstrainTabbing\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\tvalue={ linkValue }\n\t\t\t\tonChange={ onChangeLink }\n\t\t\t\tonRemove={ removeLink }\n\t\t\t\thasRichPreviews\n\t\t\t\tcreateSuggestion={ createPageEntity && handleCreate }\n\t\t\t\twithCreateSuggestion={ userCanCreatePages }\n\t\t\t\tcreateSuggestionButtonText={ createButtonText }\n\t\t\t\thasTextControl\n\t\t\t\tsettings={ LINK_SETTINGS }\n\t\t\t\tshowInitialSuggestions\n\t\t\t\tsuggestionsQuery={ {\n\t\t\t\t\t// always show Pages as initial suggestions\n\t\t\t\t\tinitialSuggestionsSearchOptions: {\n\t\t\t\t\t\ttype: 'post',\n\t\t\t\t\t\tsubtype: 'page',\n\t\t\t\t\t\tperPage: 20,\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Popover>\n\t);\n}\n\nfunction getRichTextValueFromSelection( value, isActive ) {\n\t// Default to the selection ranges on the RichTextValue object.\n\tlet textStart = value.start;\n\tlet textEnd = value.end;\n\n\t// If the format is currently active then the rich text value\n\t// should always be taken from the bounds of the active format\n\t// and not the selected text.\n\tif ( isActive ) {\n\t\tconst boundary = getFormatBoundary( value, {\n\t\t\ttype: 'core/link',\n\t\t} );\n\n\t\ttextStart = boundary.start;\n\n\t\t// Text *selection* always extends +1 beyond the edge of the format.\n\t\t// We account for that here.\n\t\ttextEnd = boundary.end + 1;\n\t}\n\n\t// Get a RichTextValue containing the selected text content.\n\treturn slice( value, textStart, textEnd );\n}\n\nexport default InlineLinkUI;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useMemo","createInterpolateElement","__","sprintf","speak","Popover","prependHTTP","create","insert","isCollapsed","applyFormat","removeFormat","slice","replace","split","concat","useAnchor","__experimentalLinkControl","LinkControl","store","blockEditorStore","useDispatch","useSelect","createLinkFormat","isValidHref","getFormatBoundary","link","settings","jsx","_jsx","LINK_SETTINGS","DEFAULT_LINK_SETTINGS","id","title","InlineLinkUI","isActive","activeAttributes","value","onChange","onFocusOutside","stopAddingLink","contentRef","focusOnMount","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","selectionChange","createPageEntity","userCanCreatePages","selectionStart","select","getSettings","getSelectionStart","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","opensInNewTab","target","nofollow","rel","includes","removeLink","newValue","onChangeLink","nextValue","hasLink","isNewLink","newUrl","linkFormat","undefined","String","opensInNewWindow","newText","inserted","start","length","clientId","identifier","attributeKey","boundary","valBefore","valAfter","newValAfter","popoverAnchor","editableContentElement","current","handleCreate","pageTitle","page","status","rendered","kind","createButtonText","searchTerm","mark","anchor","animate","onClose","placement","offset","shift","constrainTabbing","children","onRemove","hasRichPreviews","createSuggestion","withCreateSuggestion","createSuggestionButtonText","hasTextControl","showInitialSuggestions","suggestionsQuery","initialSuggestionsSearchOptions","subtype","perPage","textStart","textEnd","end"],"sources":["@wordpress/format-library/src/link/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tremoveFormat,\n\tslice,\n\treplace,\n\tsplit,\n\tconcat,\n\tuseAnchor,\n} from '@wordpress/rich-text';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useDispatch, useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref, getFormatBoundary } from './utils';\nimport { link as settings } from './index';\n\nconst LINK_SETTINGS = [\n\t...LinkControl.DEFAULT_LINK_SETTINGS,\n\t{\n\t\tid: 'nofollow',\n\t\ttitle: __( 'Mark as nofollow' ),\n\t},\n];\n\nfunction InlineLinkUI( {\n\tisActive,\n\tactiveAttributes,\n\tvalue,\n\tonChange,\n\tonFocusOutside,\n\tstopAddingLink,\n\tcontentRef,\n\tfocusOnMount,\n} ) {\n\tconst richLinkTextValue = getRichTextValueFromSelection( value, isActive );\n\n\t// Get the text content minus any HTML tags.\n\tconst richTextText = richLinkTextValue.text;\n\n\tconst { selectionChange } = useDispatch( blockEditorStore );\n\n\tconst { createPageEntity, userCanCreatePages, selectionStart } = useSelect(\n\t\t( select ) => {\n\t\t\tconst { getSettings, getSelectionStart } =\n\t\t\t\tselect( blockEditorStore );\n\t\t\tconst _settings = getSettings();\n\n\t\t\treturn {\n\t\t\t\tcreatePageEntity: _settings.__experimentalCreatePageEntity,\n\t\t\t\tuserCanCreatePages: _settings.__experimentalUserCanCreatePages,\n\t\t\t\tselectionStart: getSelectionStart(),\n\t\t\t};\n\t\t},\n\t\t[]\n\t);\n\n\tconst linkValue = useMemo(\n\t\t() => ( {\n\t\t\turl: activeAttributes.url,\n\t\t\ttype: activeAttributes.type,\n\t\t\tid: activeAttributes.id,\n\t\t\topensInNewTab: activeAttributes.target === '_blank',\n\t\t\tnofollow: activeAttributes.rel?.includes( 'nofollow' ),\n\t\t\ttitle: richTextText,\n\t\t} ),\n\t\t[\n\t\t\tactiveAttributes.id,\n\t\t\tactiveAttributes.rel,\n\t\t\tactiveAttributes.target,\n\t\t\tactiveAttributes.type,\n\t\t\tactiveAttributes.url,\n\t\t\trichTextText,\n\t\t]\n\t);\n\n\tfunction removeLink() {\n\t\tconst newValue = removeFormat( value, 'core/link' );\n\t\tonChange( newValue );\n\t\tstopAddingLink();\n\t\tspeak( __( 'Link removed.' ), 'assertive' );\n\t}\n\n\tfunction onChangeLink( nextValue ) {\n\t\tconst hasLink = linkValue?.url;\n\t\tconst isNewLink = ! hasLink;\n\n\t\t// Merge the next value with the current link value.\n\t\tnextValue = {\n\t\t\t...linkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\tconst newUrl = prependHTTP( nextValue.url );\n\t\tconst linkFormat = createLinkFormat( {\n\t\t\turl: newUrl,\n\t\t\ttype: nextValue.type,\n\t\t\tid:\n\t\t\t\tnextValue.id !== undefined && nextValue.id !== null\n\t\t\t\t\t? String( nextValue.id )\n\t\t\t\t\t: undefined,\n\t\t\topensInNewWindow: nextValue.opensInNewTab,\n\t\t\tnofollow: nextValue.nofollow,\n\t\t} );\n\n\t\tconst newText = nextValue.title || newUrl;\n\n\t\t// Scenario: we have any active text selection or an active format.\n\t\tlet newValue;\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\t// Scenario: we don't have any actively selected text or formats.\n\t\t\tconst inserted = insert( value, newText );\n\n\t\t\tnewValue = applyFormat(\n\t\t\t\tinserted,\n\t\t\t\tlinkFormat,\n\t\t\t\tvalue.start,\n\t\t\t\tvalue.start + newText.length\n\t\t\t);\n\n\t\t\tonChange( newValue );\n\n\t\t\t// Close the Link UI.\n\t\t\tstopAddingLink();\n\n\t\t\t// Move the selection to the end of the inserted link outside of the format boundary\n\t\t\t// so the user can continue typing after the link.\n\t\t\tselectionChange( {\n\t\t\t\tclientId: selectionStart.clientId,\n\t\t\t\tidentifier: selectionStart.attributeKey,\n\t\t\t\tstart: value.start + newText.length + 1,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t} else if ( newText === richTextText ) {\n\t\t\tnewValue = applyFormat( value, linkFormat );\n\t\t} else {\n\t\t\t// Scenario: Editing an existing link.\n\n\t\t\t// Create new RichText value for the new text in order that we\n\t\t\t// can apply formats to it.\n\t\t\tnewValue = create( { text: newText } );\n\t\t\t// Apply the new Link format to this new text value.\n\t\t\tnewValue = applyFormat( newValue, linkFormat, 0, newText.length );\n\n\t\t\t// Get the boundaries of the active link format.\n\t\t\tconst boundary = getFormatBoundary( value, {\n\t\t\t\ttype: 'core/link',\n\t\t\t} );\n\n\t\t\t// Split the value at the start of the active link format.\n\t\t\t// Passing \"start\" as the 3rd parameter is required to ensure\n\t\t\t// the second half of the split value is split at the format's\n\t\t\t// start boundary and avoids relying on the value's \"end\" property\n\t\t\t// which may not correspond correctly.\n\t\t\tconst [ valBefore, valAfter ] = split(\n\t\t\t\tvalue,\n\t\t\t\tboundary.start,\n\t\t\t\tboundary.start\n\t\t\t);\n\n\t\t\t// Update the original (full) RichTextValue replacing the\n\t\t\t// target text with the *new* RichTextValue containing:\n\t\t\t// 1. The new text content.\n\t\t\t// 2. The new link format.\n\t\t\t// As \"replace\" will operate on the first match only, it is\n\t\t\t// run only against the second half of the value which was\n\t\t\t// split at the active format's boundary. This avoids a bug\n\t\t\t// with incorrectly targetted replacements.\n\t\t\t// See: https://github.com/WordPress/gutenberg/issues/41771.\n\t\t\t// Note original formats will be lost when applying this change.\n\t\t\t// That is expected behaviour.\n\t\t\t// See: https://github.com/WordPress/gutenberg/pull/33849#issuecomment-936134179.\n\t\t\tconst newValAfter = replace( valAfter, richTextText, newValue );\n\n\t\t\tnewValue = concat( valBefore, newValAfter );\n\t\t}\n\n\t\tonChange( newValue );\n\n\t\t// Focus should only be returned to the rich text on submit if this link is not\n\t\t// being created for the first time. If it is then focus should remain within the\n\t\t// Link UI because it should remain open for the user to modify the link they have\n\t\t// just created.\n\t\tif ( ! isNewLink ) {\n\t\t\tstopAddingLink();\n\t\t}\n\n\t\tif ( ! isValidHref( newUrl ) ) {\n\t\t\tspeak(\n\t\t\t\t__(\n\t\t\t\t\t'Warning: the link has been inserted but may have errors. Please test it.'\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted.' ), 'assertive' );\n\t\t}\n\t}\n\n\tconst popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings: {\n\t\t\t...settings,\n\t\t\tisActive,\n\t\t},\n\t} );\n\n\tasync function handleCreate( pageTitle ) {\n\t\tconst page = await createPageEntity( {\n\t\t\ttitle: pageTitle,\n\t\t\tstatus: 'draft',\n\t\t} );\n\n\t\treturn {\n\t\t\tid: page.id,\n\t\t\ttype: page.type,\n\t\t\ttitle: page.title.rendered,\n\t\t\turl: page.link,\n\t\t\tkind: 'post-type',\n\t\t};\n\t}\n\n\tfunction createButtonText( searchTerm ) {\n\t\treturn createInterpolateElement(\n\t\t\tsprintf(\n\t\t\t\t/* translators: %s: search term. */\n\t\t\t\t__( 'Create page: <mark>%s</mark>' ),\n\t\t\t\tsearchTerm\n\t\t\t),\n\t\t\t{ mark: <mark /> }\n\t\t);\n\t}\n\n\treturn (\n\t\t<Popover\n\t\t\tanchor={ popoverAnchor }\n\t\t\tanimate={ false }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tonFocusOutside={ onFocusOutside }\n\t\t\tplacement=\"bottom\"\n\t\t\toffset={ 8 }\n\t\t\tshift\n\t\t\tfocusOnMount={ focusOnMount }\n\t\t\tconstrainTabbing\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\tvalue={ linkValue }\n\t\t\t\tonChange={ onChangeLink }\n\t\t\t\tonRemove={ removeLink }\n\t\t\t\thasRichPreviews\n\t\t\t\tcreateSuggestion={ createPageEntity && handleCreate }\n\t\t\t\twithCreateSuggestion={ userCanCreatePages }\n\t\t\t\tcreateSuggestionButtonText={ createButtonText }\n\t\t\t\thasTextControl\n\t\t\t\tsettings={ LINK_SETTINGS }\n\t\t\t\tshowInitialSuggestions\n\t\t\t\tsuggestionsQuery={ {\n\t\t\t\t\t// always show Pages as initial suggestions\n\t\t\t\t\tinitialSuggestionsSearchOptions: {\n\t\t\t\t\t\ttype: 'post',\n\t\t\t\t\t\tsubtype: 'page',\n\t\t\t\t\t\tperPage: 20,\n\t\t\t\t\t},\n\t\t\t\t} }\n\t\t\t/>\n\t\t</Popover>\n\t);\n}\n\nfunction getRichTextValueFromSelection( value, isActive ) {\n\t// Default to the selection ranges on the RichTextValue object.\n\tlet textStart = value.start;\n\tlet textEnd = value.end;\n\n\t// If the format is currently active then the rich text value\n\t// should always be taken from the bounds of the active format\n\t// and not the selected text.\n\tif ( isActive ) {\n\t\tconst boundary = getFormatBoundary( value, {\n\t\t\ttype: 'core/link',\n\t\t} );\n\n\t\ttextStart = boundary.start;\n\n\t\t// Text *selection* always extends +1 beyond the edge of the format.\n\t\t// We account for that here.\n\t\ttextEnd = boundary.end + 1;\n\t}\n\n\t// Get a RichTextValue containing the selected text content.\n\treturn slice( value, textStart, textEnd );\n}\n\nexport default InlineLinkUI;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -19,9 +19,7 @@ import { external, textColor } from '@wordpress/icons';
|
|
|
19
19
|
import { createLinkFormat, isValidHref } from '../utils';
|
|
20
20
|
import linkSettingsScreens from './screens';
|
|
21
21
|
import styles from '../modal.scss';
|
|
22
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
23
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
24
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
22
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
23
|
const LinkSettingsScreen = ({
|
|
26
24
|
onRemove,
|
|
27
25
|
onClose,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useNavigation","useRoute","__","useState","useContext","useEffect","useMemo","prependHTTP","BottomSheet","BottomSheetContext","create","insert","isCollapsed","applyFormat","getTextContent","slice","external","textColor","createLinkFormat","isValidHref","linkSettingsScreens","styles","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","LinkSettingsScreen","onRemove","onClose","onChange","speak","value","isActive","activeAttributes","isVisible","text","setText","opensInNewWindow","setOpensInNewWindows","target","linkValues","setLinkValues","isActiveLink","isRemovingLink","shouldEnableBottomSheetMaxHeight","onHandleClosingBottomSheet","listProps","navigation","route","inputValue","url","params","onLinkCellPressed","navigate","picker","submit","skipStateUpdates","submitLink","shouldCloseBottomSheet","removeLink","clearFormat","activeFormats","linkText","format","newAttributes","toInsert","length","start","end","textLength","needsSelectionUpdate","submitValue","unsubscribe","addListener","shouldShowLinkOptions","children","LinkCell","onPress","Cell","icon","label","placeholder","onChangeValue","onSubmit","separatorType","undefined","SwitchCell","onValueChange","labelStyle","clearLinkButton","safeAreaBottomInset"],"sources":["@wordpress/format-library/src/link/modal-screens/link-settings-screen.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useContext, useEffect, useMemo } from '@wordpress/element';\nimport { prependHTTP } from '@wordpress/url';\nimport { BottomSheet, BottomSheetContext } from '@wordpress/components';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tgetTextContent,\n\tslice,\n} from '@wordpress/rich-text';\nimport { external, textColor } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref } from '../utils';\nimport linkSettingsScreens from './screens';\n\nimport styles from '../modal.scss';\n\nconst LinkSettingsScreen = ( {\n\tonRemove,\n\tonClose,\n\tonChange,\n\tspeak,\n\tvalue,\n\tisActive,\n\tactiveAttributes,\n\tisVisible,\n} ) => {\n\tconst [ text, setText ] = useState( getTextContent( slice( value ) ) );\n\tconst [ opensInNewWindow, setOpensInNewWindows ] = useState(\n\t\tactiveAttributes.target === '_blank'\n\t);\n\tconst [ linkValues, setLinkValues ] = useState( {\n\t\tisActiveLink: isActive,\n\t\tisRemovingLink: false,\n\t} );\n\n\tconst {\n\t\tshouldEnableBottomSheetMaxHeight,\n\t\tonHandleClosingBottomSheet,\n\t\tlistProps,\n\t} = useContext( BottomSheetContext );\n\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst { inputValue = activeAttributes.url || '' } = route.params || {};\n\tconst onLinkCellPressed = () => {\n\t\tshouldEnableBottomSheetMaxHeight( false );\n\t\tnavigation.navigate( linkSettingsScreens.picker, { inputValue } );\n\t};\n\tuseEffect( () => {\n\t\tonHandleClosingBottomSheet( () => {\n\t\t\tsubmit( inputValue, { skipStateUpdates: true } );\n\t\t} );\n\t}, [ inputValue, opensInNewWindow, text ] );\n\n\tuseEffect( () => {\n\t\tconst { isActiveLink, isRemovingLink } = linkValues;\n\t\tif ( !! inputValue && ! isActiveLink && isVisible ) {\n\t\t\tsubmitLink( { shouldCloseBottomSheet: false } );\n\t\t} else if (\n\t\t\t( ( inputValue === '' && isActiveLink ) || isRemovingLink ) &&\n\t\t\tisVisible\n\t\t) {\n\t\t\tremoveLink( { shouldCloseBottomSheet: false } );\n\t\t}\n\t}, [\n\t\tinputValue,\n\t\tisVisible,\n\t\tlinkValues.isActiveLink,\n\t\tlinkValues.isRemovingLink,\n\t] );\n\n\tconst clearFormat = ( { skipStateUpdates = false } = {} ) => {\n\t\tonChange( { ...value, activeFormats: [] } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: false, isRemovingLink: true } );\n\t\t}\n\t};\n\n\tconst submitLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tconst url = prependHTTP( inputValue );\n\t\tconst linkText = text || inputValue;\n\t\tconst format = createLinkFormat( {\n\t\t\turl,\n\t\t\topensInNewWindow,\n\t\t\ttext: linkText,\n\t\t} );\n\t\tlet newAttributes;\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\t// Insert link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text: linkText } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\tlinkText.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert );\n\t\t} else if ( text !== getTextContent( slice( value ) ) ) {\n\t\t\t// Edit text in selected link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\ttext.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert, value.start, value.end );\n\t\t} else {\n\t\t\t// Transform selected text into link.\n\t\t\tnewAttributes = applyFormat( value, format );\n\t\t}\n\t\t// Move selection to end of link.\n\t\tconst textLength = newAttributes.text.length;\n\t\t// check for zero width spaces\n\t\tif ( newAttributes.end > textLength ) {\n\t\t\tnewAttributes.start = textLength;\n\t\t\tnewAttributes.end = textLength;\n\t\t} else {\n\t\t\tnewAttributes.start = newAttributes.end;\n\t\t}\n\t\tnewAttributes.activeFormats = [];\n\t\tonChange( { ...newAttributes, needsSelectionUpdate: true } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: true, isRemovingLink: false } );\n\t\t}\n\n\t\tif ( ! isValidHref( url ) ) {\n\t\t\tspeak(\n\t\t\t\t__(\n\t\t\t\t\t'Warning: the link has been inserted but may have errors. Please test it.'\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted' ), 'assertive' );\n\t\t}\n\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst removeLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tclearFormat( { skipStateUpdates } );\n\t\tonRemove();\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst submit = ( submitValue, { skipStateUpdates = false } = {} ) => {\n\t\tif ( submitValue === '' ) {\n\t\t\tremoveLink( { skipStateUpdates } );\n\t\t} else {\n\t\t\tsubmitLink( { skipStateUpdates } );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tconst unsubscribe = navigation.addListener( 'focus', () => {\n\t\t\tconst { params = {} } = route;\n\t\t\tif ( ! text && params.text ) {\n\t\t\t\tsetText( params.text );\n\t\t\t}\n\t\t} );\n\t\treturn unsubscribe;\n\t}, [ navigation, route.params?.text, text ] );\n\n\treturn useMemo( () => {\n\t\tconst shouldShowLinkOptions = !! inputValue;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BottomSheet.LinkCell\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonPress={ onLinkCellPressed }\n\t\t\t\t/>\n\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\ticon={ textColor }\n\t\t\t\t\tlabel={ __( 'Link text' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tplaceholder={ __( 'Add link text' ) }\n\t\t\t\t\tonChangeValue={ setText }\n\t\t\t\t\tonSubmit={ submit }\n\t\t\t\t\tseparatorType={ shouldShowLinkOptions ? undefined : 'none' }\n\t\t\t\t/>\n\t\t\t\t{ shouldShowLinkOptions && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BottomSheet.SwitchCell\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tvalue={ opensInNewWindow }\n\t\t\t\t\t\t\tonValueChange={ setOpensInNewWindows }\n\t\t\t\t\t\t\tseparatorType=\"fullWidth\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\t\tlabelStyle={ styles.clearLinkButton }\n\t\t\t\t\t\t\tseparatorType=\"none\"\n\t\t\t\t\t\t\tonPress={ removeLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [ inputValue, text, opensInNewWindow, listProps.safeAreaBottomInset ] );\n};\n\nexport default LinkSettingsScreen;\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useNavigation","useRoute","__","useState","useContext","useEffect","useMemo","prependHTTP","BottomSheet","BottomSheetContext","create","insert","isCollapsed","applyFormat","getTextContent","slice","external","textColor","createLinkFormat","isValidHref","linkSettingsScreens","styles","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","LinkSettingsScreen","onRemove","onClose","onChange","speak","value","isActive","activeAttributes","isVisible","text","setText","opensInNewWindow","setOpensInNewWindows","target","linkValues","setLinkValues","isActiveLink","isRemovingLink","shouldEnableBottomSheetMaxHeight","onHandleClosingBottomSheet","listProps","navigation","route","inputValue","url","params","onLinkCellPressed","navigate","picker","submit","skipStateUpdates","submitLink","shouldCloseBottomSheet","removeLink","clearFormat","activeFormats","linkText","format","newAttributes","toInsert","length","start","end","textLength","needsSelectionUpdate","submitValue","unsubscribe","addListener","shouldShowLinkOptions","children","LinkCell","onPress","Cell","icon","label","placeholder","onChangeValue","onSubmit","separatorType","undefined","SwitchCell","onValueChange","labelStyle","clearLinkButton","safeAreaBottomInset"],"sources":["@wordpress/format-library/src/link/modal-screens/link-settings-screen.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useContext, useEffect, useMemo } from '@wordpress/element';\nimport { prependHTTP } from '@wordpress/url';\nimport { BottomSheet, BottomSheetContext } from '@wordpress/components';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tgetTextContent,\n\tslice,\n} from '@wordpress/rich-text';\nimport { external, textColor } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref } from '../utils';\nimport linkSettingsScreens from './screens';\n\nimport styles from '../modal.scss';\n\nconst LinkSettingsScreen = ( {\n\tonRemove,\n\tonClose,\n\tonChange,\n\tspeak,\n\tvalue,\n\tisActive,\n\tactiveAttributes,\n\tisVisible,\n} ) => {\n\tconst [ text, setText ] = useState( getTextContent( slice( value ) ) );\n\tconst [ opensInNewWindow, setOpensInNewWindows ] = useState(\n\t\tactiveAttributes.target === '_blank'\n\t);\n\tconst [ linkValues, setLinkValues ] = useState( {\n\t\tisActiveLink: isActive,\n\t\tisRemovingLink: false,\n\t} );\n\n\tconst {\n\t\tshouldEnableBottomSheetMaxHeight,\n\t\tonHandleClosingBottomSheet,\n\t\tlistProps,\n\t} = useContext( BottomSheetContext );\n\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst { inputValue = activeAttributes.url || '' } = route.params || {};\n\tconst onLinkCellPressed = () => {\n\t\tshouldEnableBottomSheetMaxHeight( false );\n\t\tnavigation.navigate( linkSettingsScreens.picker, { inputValue } );\n\t};\n\tuseEffect( () => {\n\t\tonHandleClosingBottomSheet( () => {\n\t\t\tsubmit( inputValue, { skipStateUpdates: true } );\n\t\t} );\n\t}, [ inputValue, opensInNewWindow, text ] );\n\n\tuseEffect( () => {\n\t\tconst { isActiveLink, isRemovingLink } = linkValues;\n\t\tif ( !! inputValue && ! isActiveLink && isVisible ) {\n\t\t\tsubmitLink( { shouldCloseBottomSheet: false } );\n\t\t} else if (\n\t\t\t( ( inputValue === '' && isActiveLink ) || isRemovingLink ) &&\n\t\t\tisVisible\n\t\t) {\n\t\t\tremoveLink( { shouldCloseBottomSheet: false } );\n\t\t}\n\t}, [\n\t\tinputValue,\n\t\tisVisible,\n\t\tlinkValues.isActiveLink,\n\t\tlinkValues.isRemovingLink,\n\t] );\n\n\tconst clearFormat = ( { skipStateUpdates = false } = {} ) => {\n\t\tonChange( { ...value, activeFormats: [] } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: false, isRemovingLink: true } );\n\t\t}\n\t};\n\n\tconst submitLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tconst url = prependHTTP( inputValue );\n\t\tconst linkText = text || inputValue;\n\t\tconst format = createLinkFormat( {\n\t\t\turl,\n\t\t\topensInNewWindow,\n\t\t\ttext: linkText,\n\t\t} );\n\t\tlet newAttributes;\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\t// Insert link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text: linkText } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\tlinkText.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert );\n\t\t} else if ( text !== getTextContent( slice( value ) ) ) {\n\t\t\t// Edit text in selected link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\ttext.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert, value.start, value.end );\n\t\t} else {\n\t\t\t// Transform selected text into link.\n\t\t\tnewAttributes = applyFormat( value, format );\n\t\t}\n\t\t// Move selection to end of link.\n\t\tconst textLength = newAttributes.text.length;\n\t\t// check for zero width spaces\n\t\tif ( newAttributes.end > textLength ) {\n\t\t\tnewAttributes.start = textLength;\n\t\t\tnewAttributes.end = textLength;\n\t\t} else {\n\t\t\tnewAttributes.start = newAttributes.end;\n\t\t}\n\t\tnewAttributes.activeFormats = [];\n\t\tonChange( { ...newAttributes, needsSelectionUpdate: true } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: true, isRemovingLink: false } );\n\t\t}\n\n\t\tif ( ! isValidHref( url ) ) {\n\t\t\tspeak(\n\t\t\t\t__(\n\t\t\t\t\t'Warning: the link has been inserted but may have errors. Please test it.'\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted' ), 'assertive' );\n\t\t}\n\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst removeLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tclearFormat( { skipStateUpdates } );\n\t\tonRemove();\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst submit = ( submitValue, { skipStateUpdates = false } = {} ) => {\n\t\tif ( submitValue === '' ) {\n\t\t\tremoveLink( { skipStateUpdates } );\n\t\t} else {\n\t\t\tsubmitLink( { skipStateUpdates } );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tconst unsubscribe = navigation.addListener( 'focus', () => {\n\t\t\tconst { params = {} } = route;\n\t\t\tif ( ! text && params.text ) {\n\t\t\t\tsetText( params.text );\n\t\t\t}\n\t\t} );\n\t\treturn unsubscribe;\n\t}, [ navigation, route.params?.text, text ] );\n\n\treturn useMemo( () => {\n\t\tconst shouldShowLinkOptions = !! inputValue;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BottomSheet.LinkCell\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonPress={ onLinkCellPressed }\n\t\t\t\t/>\n\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\ticon={ textColor }\n\t\t\t\t\tlabel={ __( 'Link text' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tplaceholder={ __( 'Add link text' ) }\n\t\t\t\t\tonChangeValue={ setText }\n\t\t\t\t\tonSubmit={ submit }\n\t\t\t\t\tseparatorType={ shouldShowLinkOptions ? undefined : 'none' }\n\t\t\t\t/>\n\t\t\t\t{ shouldShowLinkOptions && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BottomSheet.SwitchCell\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tvalue={ opensInNewWindow }\n\t\t\t\t\t\t\tonValueChange={ setOpensInNewWindows }\n\t\t\t\t\t\t\tseparatorType=\"fullWidth\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\t\tlabelStyle={ styles.clearLinkButton }\n\t\t\t\t\t\t\tseparatorType=\"none\"\n\t\t\t\t\t\t\tonPress={ removeLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [ inputValue, text, opensInNewWindow, listProps.safeAreaBottomInset ] );\n};\n\nexport default LinkSettingsScreen;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -10,8 +10,7 @@ import { BottomSheet, withSpokenMessages } from '@wordpress/components';
|
|
|
10
10
|
import screens from './modal-screens/screens';
|
|
11
11
|
import LinkSettingsScreen from './modal-screens/link-settings-screen';
|
|
12
12
|
import LinkPickerScreen from './modal-screens/link-picker-screen';
|
|
13
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
14
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
14
|
const ModalLinkUI = ({
|
|
16
15
|
isVisible,
|
|
17
16
|
...restProps
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","BottomSheet","withSpokenMessages","screens","LinkSettingsScreen","LinkPickerScreen","jsx","_jsx","jsxs","_jsxs","ModalLinkUI","isVisible","restProps","hideHeader","onClose","hasNavigation","testID","children","NavigationContainer","animate","main","NavigationScreen","name","settings","picker","isScrollable","fullScreen"],"sources":["@wordpress/format-library/src/link/modal.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { BottomSheet, withSpokenMessages } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport screens from './modal-screens/screens';\nimport LinkSettingsScreen from './modal-screens/link-settings-screen';\nimport LinkPickerScreen from './modal-screens/link-picker-screen';\n\nconst ModalLinkUI = ( { isVisible, ...restProps } ) => {\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<BottomSheet\n\t\t\t\tisVisible={ isVisible }\n\t\t\t\thideHeader\n\t\t\t\tonClose={ restProps.onClose }\n\t\t\t\thasNavigation\n\t\t\t\ttestID=\"link-settings-modal\"\n\t\t\t>\n\t\t\t\t<BottomSheet.NavigationContainer animate main>\n\t\t\t\t\t<BottomSheet.NavigationScreen name={ screens.settings }>\n\t\t\t\t\t\t<LinkSettingsScreen\n\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t{ ...restProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\t\tname={ screens.picker }\n\t\t\t\t\t\tisScrollable\n\t\t\t\t\t\tfullScreen\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkPickerScreen />\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t</BottomSheet.NavigationContainer>\n\t\t\t</BottomSheet>\n\t\t);\n\t}, [ isVisible ] );\n};\n\nexport default withSpokenMessages( ModalLinkUI );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,uBAAuB;;AAEvE;AACA;AACA;AACA,OAAOC,OAAO,MAAM,yBAAyB;AAC7C,OAAOC,kBAAkB,MAAM,sCAAsC;AACrE,OAAOC,gBAAgB,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"names":["useMemo","BottomSheet","withSpokenMessages","screens","LinkSettingsScreen","LinkPickerScreen","jsx","_jsx","jsxs","_jsxs","ModalLinkUI","isVisible","restProps","hideHeader","onClose","hasNavigation","testID","children","NavigationContainer","animate","main","NavigationScreen","name","settings","picker","isScrollable","fullScreen"],"sources":["@wordpress/format-library/src/link/modal.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { BottomSheet, withSpokenMessages } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport screens from './modal-screens/screens';\nimport LinkSettingsScreen from './modal-screens/link-settings-screen';\nimport LinkPickerScreen from './modal-screens/link-picker-screen';\n\nconst ModalLinkUI = ( { isVisible, ...restProps } ) => {\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<BottomSheet\n\t\t\t\tisVisible={ isVisible }\n\t\t\t\thideHeader\n\t\t\t\tonClose={ restProps.onClose }\n\t\t\t\thasNavigation\n\t\t\t\ttestID=\"link-settings-modal\"\n\t\t\t>\n\t\t\t\t<BottomSheet.NavigationContainer animate main>\n\t\t\t\t\t<BottomSheet.NavigationScreen name={ screens.settings }>\n\t\t\t\t\t\t<LinkSettingsScreen\n\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t{ ...restProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\t\tname={ screens.picker }\n\t\t\t\t\t\tisScrollable\n\t\t\t\t\t\tfullScreen\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkPickerScreen />\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t</BottomSheet.NavigationContainer>\n\t\t\t</BottomSheet>\n\t\t);\n\t}, [ isVisible ] );\n};\n\nexport default withSpokenMessages( ModalLinkUI );\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,uBAAuB;;AAEvE;AACA;AACA;AACA,OAAOC,OAAO,MAAM,yBAAyB;AAC7C,OAAOC,kBAAkB,MAAM,sCAAsC;AACrE,OAAOC,gBAAgB,MAAM,oCAAoC;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAElE,MAAMC,WAAW,GAAGA,CAAE;EAAEC,SAAS;EAAE,GAAGC;AAAU,CAAC,KAAM;EACtD,OAAOZ,OAAO,CAAE,MAAM;IACrB,oBACCO,IAAA,CAACN,WAAW;MACXU,SAAS,EAAGA,SAAW;MACvBE,UAAU;MACVC,OAAO,EAAGF,SAAS,CAACE,OAAS;MAC7BC,aAAa;MACbC,MAAM,EAAC,qBAAqB;MAAAC,QAAA,eAE5BR,KAAA,CAACR,WAAW,CAACiB,mBAAmB;QAACC,OAAO;QAACC,IAAI;QAAAH,QAAA,gBAC5CV,IAAA,CAACN,WAAW,CAACoB,gBAAgB;UAACC,IAAI,EAAGnB,OAAO,CAACoB,QAAU;UAAAN,QAAA,eACtDV,IAAA,CAACH,kBAAkB;YAClBO,SAAS,EAAGA,SAAW;YAAA,GAClBC;UAAS,CACd;QAAC,CAC2B,CAAC,eAC/BL,IAAA,CAACN,WAAW,CAACoB,gBAAgB;UAC5BC,IAAI,EAAGnB,OAAO,CAACqB,MAAQ;UACvBC,YAAY;UACZC,UAAU;UAAAT,QAAA,eAEVV,IAAA,CAACF,gBAAgB,IAAE;QAAC,CACS,CAAC;MAAA,CACC;IAAC,CACtB,CAAC;EAEhB,CAAC,EAAE,CAAEM,SAAS,CAAG,CAAC;AACnB,CAAC;AAED,eAAeT,kBAAkB,CAAEQ,WAAY,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["weakMap","WeakMap","id","prefix","getKey","_id","useLinkInstanceKey","instance","has","get","set"],"sources":["@wordpress/format-library/src/link/use-link-instance-key.js"],"sourcesContent":["// Weakly referenced map allows unused ids to be garbage collected.\nconst weakMap = new WeakMap();\n\n// Incrementing zero-based ID value.\nlet id = -1;\n\nconst prefix = 'link-control-instance';\n\nfunction getKey( _id ) {\n\treturn `${ prefix }-${ _id }`;\n}\n\n/**\n * Builds a unique link control key for the given object reference.\n *\n * @param {Object} instance an unique object reference specific to this link control instance.\n * @return {string | undefined} the unique key to use for this link control.\n */\nfunction useLinkInstanceKey( instance ) {\n\tif ( ! instance ) {\n\t\treturn;\n\t}\n\tif ( weakMap.has( instance ) ) {\n\t\treturn getKey( weakMap.get( instance ) );\n\t}\n\n\tid += 1;\n\n\tweakMap.set( instance, id );\n\n\treturn getKey( id );\n}\n\nexport default useLinkInstanceKey;\n"],"mappings":"AAAA;AACA,MAAMA,OAAO,GAAG,IAAIC,OAAO,CAAC,CAAC;;AAE7B;AACA,IAAIC,EAAE,GAAG,CAAC,CAAC;AAEX,MAAMC,MAAM,GAAG,uBAAuB;AAEtC,SAASC,MAAMA,CAAEC,GAAG,EAAG;EACtB,
|
|
1
|
+
{"version":3,"names":["weakMap","WeakMap","id","prefix","getKey","_id","useLinkInstanceKey","instance","has","get","set"],"sources":["@wordpress/format-library/src/link/use-link-instance-key.js"],"sourcesContent":["// Weakly referenced map allows unused ids to be garbage collected.\nconst weakMap = new WeakMap();\n\n// Incrementing zero-based ID value.\nlet id = -1;\n\nconst prefix = 'link-control-instance';\n\nfunction getKey( _id ) {\n\treturn `${ prefix }-${ _id }`;\n}\n\n/**\n * Builds a unique link control key for the given object reference.\n *\n * @param {Object} instance an unique object reference specific to this link control instance.\n * @return {string | undefined} the unique key to use for this link control.\n */\nfunction useLinkInstanceKey( instance ) {\n\tif ( ! instance ) {\n\t\treturn;\n\t}\n\tif ( weakMap.has( instance ) ) {\n\t\treturn getKey( weakMap.get( instance ) );\n\t}\n\n\tid += 1;\n\n\tweakMap.set( instance, id );\n\n\treturn getKey( id );\n}\n\nexport default useLinkInstanceKey;\n"],"mappings":"AAAA;AACA,MAAMA,OAAO,GAAG,IAAIC,OAAO,CAAC,CAAC;;AAE7B;AACA,IAAIC,EAAE,GAAG,CAAC,CAAC;AAEX,MAAMC,MAAM,GAAG,uBAAuB;AAEtC,SAASC,MAAMA,CAAEC,GAAG,EAAG;EACtB,OAAO,GAAIF,MAAM,IAAME,GAAG,EAAG;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAEC,QAAQ,EAAG;EACvC,IAAK,CAAEA,QAAQ,EAAG;IACjB;EACD;EACA,IAAKP,OAAO,CAACQ,GAAG,CAAED,QAAS,CAAC,EAAG;IAC9B,OAAOH,MAAM,CAAEJ,OAAO,CAACS,GAAG,CAAEF,QAAS,CAAE,CAAC;EACzC;EAEAL,EAAE,IAAI,CAAC;EAEPF,OAAO,CAACU,GAAG,CAAEH,QAAQ,EAAEL,EAAG,CAAC;EAE3B,OAAOE,MAAM,CAAEF,EAAG,CAAC;AACpB;AAEA,eAAeI,kBAAkB","ignoreList":[]}
|
|
@@ -5,9 +5,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
5
5
|
import { toggleFormat } from '@wordpress/rich-text';
|
|
6
6
|
import { RichTextToolbarButton, RichTextShortcut } from '@wordpress/block-editor';
|
|
7
7
|
import { formatStrikethrough } from '@wordpress/icons';
|
|
8
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
10
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
8
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
9
|
const name = 'core/strikethrough';
|
|
12
10
|
const title = __('Strikethrough');
|
|
13
11
|
export const strikethrough = {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","toggleFormat","RichTextToolbarButton","RichTextShortcut","formatStrikethrough","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","name","title","strikethrough","tagName","className","edit","isActive","value","onChange","onFocus","onClick","type","children","character","onUse","icon","role"],"sources":["@wordpress/format-library/src/strikethrough/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { toggleFormat } from '@wordpress/rich-text';\nimport {\n\tRichTextToolbarButton,\n\tRichTextShortcut,\n} from '@wordpress/block-editor';\nimport { formatStrikethrough } from '@wordpress/icons';\n\nconst name = 'core/strikethrough';\nconst title = __( 'Strikethrough' );\n\nexport const strikethrough = {\n\tname,\n\ttitle,\n\ttagName: 's',\n\tclassName: null,\n\tedit( { isActive, value, onChange, onFocus } ) {\n\t\tfunction onClick() {\n\t\t\tonChange( toggleFormat( value, { type: name, title } ) );\n\t\t\tonFocus();\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<RichTextShortcut\n\t\t\t\t\ttype=\"access\"\n\t\t\t\t\tcharacter=\"d\"\n\t\t\t\t\tonUse={ onClick }\n\t\t\t\t/>\n\t\t\t\t<RichTextToolbarButton\n\t\t\t\t\ticon={ formatStrikethrough }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SACCC,qBAAqB,EACrBC,gBAAgB,QACV,yBAAyB;AAChC,SAASC,mBAAmB,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"names":["__","toggleFormat","RichTextToolbarButton","RichTextShortcut","formatStrikethrough","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","name","title","strikethrough","tagName","className","edit","isActive","value","onChange","onFocus","onClick","type","children","character","onUse","icon","role"],"sources":["@wordpress/format-library/src/strikethrough/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { toggleFormat } from '@wordpress/rich-text';\nimport {\n\tRichTextToolbarButton,\n\tRichTextShortcut,\n} from '@wordpress/block-editor';\nimport { formatStrikethrough } from '@wordpress/icons';\n\nconst name = 'core/strikethrough';\nconst title = __( 'Strikethrough' );\n\nexport const strikethrough = {\n\tname,\n\ttitle,\n\ttagName: 's',\n\tclassName: null,\n\tedit( { isActive, value, onChange, onFocus } ) {\n\t\tfunction onClick() {\n\t\t\tonChange( toggleFormat( value, { type: name, title } ) );\n\t\t\tonFocus();\n\t\t}\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<RichTextShortcut\n\t\t\t\t\ttype=\"access\"\n\t\t\t\t\tcharacter=\"d\"\n\t\t\t\t\tonUse={ onClick }\n\t\t\t\t/>\n\t\t\t\t<RichTextToolbarButton\n\t\t\t\t\ticon={ formatStrikethrough }\n\t\t\t\t\ttitle={ title }\n\t\t\t\t\tonClick={ onClick }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t\t/>\n\t\t\t</>\n\t\t);\n\t},\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SACCC,qBAAqB,EACrBC,gBAAgB,QACV,yBAAyB;AAChC,SAASC,mBAAmB,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAEvD,MAAMC,IAAI,GAAG,oBAAoB;AACjC,MAAMC,KAAK,GAAGZ,EAAE,CAAE,eAAgB,CAAC;AAEnC,OAAO,MAAMa,aAAa,GAAG;EAC5BF,IAAI;EACJC,KAAK;EACLE,OAAO,EAAE,GAAG;EACZC,SAAS,EAAE,IAAI;EACfC,IAAIA,CAAE;IAAEC,QAAQ;IAAEC,KAAK;IAAEC,QAAQ;IAAEC;EAAQ,CAAC,EAAG;IAC9C,SAASC,OAAOA,CAAA,EAAG;MAClBF,QAAQ,CAAElB,YAAY,CAAEiB,KAAK,EAAE;QAAEI,IAAI,EAAEX,IAAI;QAAEC;MAAM,CAAE,CAAE,CAAC;MACxDQ,OAAO,CAAC,CAAC;IACV;IAEA,oBACCV,KAAA,CAAAF,SAAA;MAAAe,QAAA,gBACCjB,IAAA,CAACH,gBAAgB;QAChBmB,IAAI,EAAC,QAAQ;QACbE,SAAS,EAAC,GAAG;QACbC,KAAK,EAAGJ;MAAS,CACjB,CAAC,eACFf,IAAA,CAACJ,qBAAqB;QACrBwB,IAAI,EAAGtB,mBAAqB;QAC5BQ,KAAK,EAAGA,KAAO;QACfS,OAAO,EAAGA,OAAS;QACnBJ,QAAQ,EAAGA,QAAU;QACrBU,IAAI,EAAC;MAAkB,CACvB,CAAC;IAAA,CACD,CAAC;EAEL;AACD,CAAC","ignoreList":[]}
|
|
@@ -11,9 +11,7 @@ import { removeFormat } from '@wordpress/rich-text';
|
|
|
11
11
|
* Internal dependencies
|
|
12
12
|
*/
|
|
13
13
|
import { default as InlineColorUI, getActiveColors } from './inline';
|
|
14
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
15
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
16
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
17
15
|
export const transparentValue = 'rgba(0, 0, 0, 0)';
|
|
18
16
|
const name = 'core/text-color';
|
|
19
17
|
const title = __('Highlight');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__","useMemo","useState","RichTextToolbarButton","useSettings","Icon","color","colorIcon","textColor","textColorIcon","removeFormat","default","InlineColorUI","getActiveColors","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","transparentValue","name","title","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","colorIndicatorStyle","current","hasColorsToChoose","length","children","className","icon","Object","keys","onClick","role","onClose","tagName","attributes","class","edit"],"sources":["@wordpress/format-library/src/text-color/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSettings } from '@wordpress/block-editor';\nimport {\n\tIcon,\n\tcolor as colorIcon,\n\ttextColor as textColorIcon,\n} from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { default as InlineColorUI, getActiveColors } from './inline';\n\nexport const transparentValue = 'rgba(0, 0, 0, 0)';\n\nconst name = 'core/text-color';\nconst title = __( 'Highlight' );\n\nconst EMPTY_ARRAY = [];\n\nfunction getComputedStyleProperty( element, property ) {\n\tconst { ownerDocument } = element;\n\tconst { defaultView } = ownerDocument;\n\tconst style = defaultView.getComputedStyle( element );\n\tconst value = style.getPropertyValue( property );\n\n\tif (\n\t\tproperty === 'background-color' &&\n\t\tvalue === transparentValue &&\n\t\telement.parentElement\n\t) {\n\t\treturn getComputedStyleProperty( element.parentElement, property );\n\t}\n\n\treturn value;\n}\n\nfunction fillComputedColors( element, { color, backgroundColor } ) {\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tcolor: color || getComputedStyleProperty( element, 'color' ),\n\t\tbackgroundColor:\n\t\t\tbackgroundColor === transparentValue\n\t\t\t\t? getComputedStyleProperty( element, 'background-color' )\n\t\t\t\t: backgroundColor,\n\t};\n}\n\nfunction TextColorEdit( {\n\tvalue,\n\tonChange,\n\tisActive,\n\tactiveAttributes,\n\tcontentRef,\n} ) {\n\tconst [ allowCustomControl, colors = EMPTY_ARRAY ] = useSettings(\n\t\t'color.custom',\n\t\t'color.palette'\n\t);\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst colorIndicatorStyle = useMemo(\n\t\t() =>\n\t\t\tfillComputedColors(\n\t\t\t\tcontentRef.current,\n\t\t\t\tgetActiveColors( value, name, colors )\n\t\t\t),\n\t\t[ contentRef, value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\tif ( ! hasColorsToChoose && ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RichTextToolbarButton\n\t\t\t\tclassName=\"format-library-text-color-button\"\n\t\t\t\tisActive={ isActive }\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tObject.keys( activeAttributes ).length\n\t\t\t\t\t\t\t\t? textColorIcon\n\t\t\t\t\t\t\t\t: colorIcon\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ colorIndicatorStyle }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\ttitle={ title }\n\t\t\t\t// If has no colors to choose but a color is active remove the color onClick.\n\t\t\t\tonClick={\n\t\t\t\t\thasColorsToChoose\n\t\t\t\t\t\t? () => setIsAddingColor( true )\n\t\t\t\t\t\t: () => onChange( removeFormat( value, name ) )\n\t\t\t\t}\n\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t/>\n\t\t\t{ isAddingColor && (\n\t\t\t\t<InlineColorUI\n\t\t\t\t\tname={ name }\n\t\t\t\t\tonClose={ () => setIsAddingColor( false ) }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const textColor = {\n\tname,\n\ttitle,\n\ttagName: 'mark',\n\tclassName: 'has-inline-color',\n\tattributes: {\n\t\tstyle: 'style',\n\t\tclass: 'class',\n\t},\n\tedit: TextColorEdit,\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,EAAE,QAAQ,iBAAiB;AACpC,SAASC,OAAO,EAAEC,QAAQ,QAAQ,oBAAoB;AACtD,SAASC,qBAAqB,EAAEC,WAAW,QAAQ,yBAAyB;AAC5E,SACCC,IAAI,EACJC,KAAK,IAAIC,SAAS,EAClBC,SAAS,IAAIC,aAAa,QACpB,kBAAkB;AACzB,SAASC,YAAY,QAAQ,sBAAsB;;AAEnD;AACA;AACA;AACA,SAASC,OAAO,IAAIC,aAAa,EAAEC,eAAe,QAAQ,UAAU;AAAC,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"names":["__","useMemo","useState","RichTextToolbarButton","useSettings","Icon","color","colorIcon","textColor","textColorIcon","removeFormat","default","InlineColorUI","getActiveColors","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","transparentValue","name","title","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","colorIndicatorStyle","current","hasColorsToChoose","length","children","className","icon","Object","keys","onClick","role","onClose","tagName","attributes","class","edit"],"sources":["@wordpress/format-library/src/text-color/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSettings } from '@wordpress/block-editor';\nimport {\n\tIcon,\n\tcolor as colorIcon,\n\ttextColor as textColorIcon,\n} from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\n\n/**\n * Internal dependencies\n */\nimport { default as InlineColorUI, getActiveColors } from './inline';\n\nexport const transparentValue = 'rgba(0, 0, 0, 0)';\n\nconst name = 'core/text-color';\nconst title = __( 'Highlight' );\n\nconst EMPTY_ARRAY = [];\n\nfunction getComputedStyleProperty( element, property ) {\n\tconst { ownerDocument } = element;\n\tconst { defaultView } = ownerDocument;\n\tconst style = defaultView.getComputedStyle( element );\n\tconst value = style.getPropertyValue( property );\n\n\tif (\n\t\tproperty === 'background-color' &&\n\t\tvalue === transparentValue &&\n\t\telement.parentElement\n\t) {\n\t\treturn getComputedStyleProperty( element.parentElement, property );\n\t}\n\n\treturn value;\n}\n\nfunction fillComputedColors( element, { color, backgroundColor } ) {\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tcolor: color || getComputedStyleProperty( element, 'color' ),\n\t\tbackgroundColor:\n\t\t\tbackgroundColor === transparentValue\n\t\t\t\t? getComputedStyleProperty( element, 'background-color' )\n\t\t\t\t: backgroundColor,\n\t};\n}\n\nfunction TextColorEdit( {\n\tvalue,\n\tonChange,\n\tisActive,\n\tactiveAttributes,\n\tcontentRef,\n} ) {\n\tconst [ allowCustomControl, colors = EMPTY_ARRAY ] = useSettings(\n\t\t'color.custom',\n\t\t'color.palette'\n\t);\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst colorIndicatorStyle = useMemo(\n\t\t() =>\n\t\t\tfillComputedColors(\n\t\t\t\tcontentRef.current,\n\t\t\t\tgetActiveColors( value, name, colors )\n\t\t\t),\n\t\t[ contentRef, value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\tif ( ! hasColorsToChoose && ! isActive ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<RichTextToolbarButton\n\t\t\t\tclassName=\"format-library-text-color-button\"\n\t\t\t\tisActive={ isActive }\n\t\t\t\ticon={\n\t\t\t\t\t<Icon\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\tObject.keys( activeAttributes ).length\n\t\t\t\t\t\t\t\t? textColorIcon\n\t\t\t\t\t\t\t\t: colorIcon\n\t\t\t\t\t\t}\n\t\t\t\t\t\tstyle={ colorIndicatorStyle }\n\t\t\t\t\t/>\n\t\t\t\t}\n\t\t\t\ttitle={ title }\n\t\t\t\t// If has no colors to choose but a color is active remove the color onClick.\n\t\t\t\tonClick={\n\t\t\t\t\thasColorsToChoose\n\t\t\t\t\t\t? () => setIsAddingColor( true )\n\t\t\t\t\t\t: () => onChange( removeFormat( value, name ) )\n\t\t\t\t}\n\t\t\t\trole=\"menuitemcheckbox\"\n\t\t\t/>\n\t\t\t{ isAddingColor && (\n\t\t\t\t<InlineColorUI\n\t\t\t\t\tname={ name }\n\t\t\t\t\tonClose={ () => setIsAddingColor( false ) }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t\tisActive={ isActive }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const textColor = {\n\tname,\n\ttitle,\n\ttagName: 'mark',\n\tclassName: 'has-inline-color',\n\tattributes: {\n\t\tstyle: 'style',\n\t\tclass: 'class',\n\t},\n\tedit: TextColorEdit,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -20,9 +20,7 @@ import { usePreferredColorSchemeStyle } from '@wordpress/compose';
|
|
|
20
20
|
import { getActiveColors } from './inline.native.js';
|
|
21
21
|
import { default as InlineColorUI } from './inline';
|
|
22
22
|
import styles from './style.scss';
|
|
23
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
24
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
25
|
-
import { Fragment as _Fragment } from "react/jsx-runtime";
|
|
23
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
26
24
|
const name = 'core/text-color';
|
|
27
25
|
const title = __('Text color');
|
|
28
26
|
function getComputedStyleProperty(element, property) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StyleSheet","View","__","useMemo","useState","BlockControls","useSettings","useMobileGlobalStylesColors","ToolbarGroup","ToolbarButton","Icon","color","colorIcon","textColor","textColorIcon","removeFormat","usePreferredColorSchemeStyle","getActiveColors","default","InlineColorUI","styles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","name","title","getComputedStyleProperty","element","property","_element$props$style","style","props","backgroundColor","baseColors","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","colorIndicatorStyle","hasColorsToChoose","length","outlineStyle","borderWidth","hairlineWidth","isActiveStyle","customContainerStyles","children","pointerEvents","icon","Object","keys","extraProps","onClick","onClose","tagName","className","attributes","class","edit"],"sources":["@wordpress/format-library/src/text-color/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { StyleSheet, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tuseSettings,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/block-editor';\nimport { ToolbarGroup, ToolbarButton } from '@wordpress/components';\nimport {\n\tIcon,\n\tcolor as colorIcon,\n\ttextColor as textColorIcon,\n} from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.native.js';\nimport { default as InlineColorUI } from './inline';\nimport styles from './style.scss';\n\nconst name = 'core/text-color';\nconst title = __( 'Text color' );\n\nfunction getComputedStyleProperty( element, property ) {\n\tconst style = element?.props?.style ?? {};\n\n\tif ( property === 'background-color' ) {\n\t\tconst { backgroundColor, baseColors } = style;\n\n\t\tif ( backgroundColor !== 'transparent' ) {\n\t\t\treturn backgroundColor;\n\t\t} else if ( baseColors && baseColors?.color?.background ) {\n\t\t\treturn baseColors?.color?.background;\n\t\t}\n\n\t\treturn 'transparent';\n\t}\n}\n\nfunction fillComputedColors( element, { color, backgroundColor } ) {\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tcolor: color || getComputedStyleProperty( element, 'color' ),\n\t\tbackgroundColor: getComputedStyleProperty(\n\t\t\telement,\n\t\t\t'background-color'\n\t\t),\n\t};\n}\n\nfunction TextColorEdit( {\n\tvalue,\n\tonChange,\n\tisActive,\n\tactiveAttributes,\n\tcontentRef,\n} ) {\n\tconst [ allowCustomControl ] = useSettings( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst colorIndicatorStyle = useMemo(\n\t\t() =>\n\t\t\tfillComputedColors(\n\t\t\t\tcontentRef,\n\t\t\t\tgetActiveColors( value, name, colors )\n\t\t\t),\n\t\t[ contentRef, value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\n\tconst outlineStyle = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles[ 'components-inline-color__outline' ],\n\t\t\tstyles[ 'components-inline-color__outline--dark' ]\n\t\t),\n\t\t{ borderWidth: StyleSheet.hairlineWidth },\n\t];\n\n\tif ( ! hasColorsToChoose && ! isActive ) {\n\t\treturn null;\n\t}\n\n\tconst isActiveStyle = {\n\t\t...colorIndicatorStyle,\n\t\t...( ! colorIndicatorStyle?.backgroundColor\n\t\t\t? { backgroundColor: 'transparent' }\n\t\t\t: {} ),\n\t\t...styles[ 'components-inline-color--is-active' ],\n\t};\n\n\tconst customContainerStyles =\n\t\tstyles[ 'components-inline-color__button-container' ];\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ isActive && (\n\t\t\t\t\t\t<View style={ outlineStyle } pointerEvents=\"none\" />\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"text-color\"\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\tObject.keys( activeAttributes ).length\n\t\t\t\t\t\t\t\t\t\t? textColorIcon\n\t\t\t\t\t\t\t\t\t\t: colorIcon\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tcolorIndicatorStyle?.color && {\n\t\t\t\t\t\t\t\t\t\tcolor: colorIndicatorStyle.color,\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/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\textraProps={ {\n\t\t\t\t\t\t\tisActiveStyle,\n\t\t\t\t\t\t\tcustomContainerStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// If has no colors to choose but a color is active remove the color onClick\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\thasColorsToChoose\n\t\t\t\t\t\t\t\t? () => setIsAddingColor( true )\n\t\t\t\t\t\t\t\t: () => onChange( removeFormat( value, name ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ isAddingColor && (\n\t\t\t\t<InlineColorUI\n\t\t\t\t\tname={ name }\n\t\t\t\t\tonClose={ () => setIsAddingColor( false ) }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const textColor = {\n\tname,\n\ttitle,\n\ttagName: 'mark',\n\tclassName: 'has-inline-color',\n\tattributes: {\n\t\tstyle: 'style',\n\t\tclass: 'class',\n\t},\n\tedit: TextColorEdit,\n};\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,UAAU,EAAEC,IAAI,QAAQ,cAAc;;AAE/C;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,OAAO,EAAEC,QAAQ,QAAQ,oBAAoB;AACtD,SACCC,aAAa,EACbC,WAAW,EACXC,2BAA2B,QACrB,yBAAyB;AAChC,SAASC,YAAY,EAAEC,aAAa,QAAQ,uBAAuB;AACnE,SACCC,IAAI,EACJC,KAAK,IAAIC,SAAS,EAClBC,SAAS,IAAIC,aAAa,QACpB,kBAAkB;AACzB,SAASC,YAAY,QAAQ,sBAAsB;AACnD,SAASC,4BAA4B,QAAQ,oBAAoB;;AAEjE;AACA;AACA;AACA,SAASC,eAAe,QAAQ,oBAAoB;AACpD,SAASC,OAAO,IAAIC,aAAa,QAAQ,UAAU;AACnD,OAAOC,MAAM,MAAM,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA
|
|
1
|
+
{"version":3,"names":["StyleSheet","View","__","useMemo","useState","BlockControls","useSettings","useMobileGlobalStylesColors","ToolbarGroup","ToolbarButton","Icon","color","colorIcon","textColor","textColorIcon","removeFormat","usePreferredColorSchemeStyle","getActiveColors","default","InlineColorUI","styles","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","name","title","getComputedStyleProperty","element","property","_element$props$style","style","props","backgroundColor","baseColors","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","colorIndicatorStyle","hasColorsToChoose","length","outlineStyle","borderWidth","hairlineWidth","isActiveStyle","customContainerStyles","children","pointerEvents","icon","Object","keys","extraProps","onClick","onClose","tagName","className","attributes","class","edit"],"sources":["@wordpress/format-library/src/text-color/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { StyleSheet, View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useMemo, useState } from '@wordpress/element';\nimport {\n\tBlockControls,\n\tuseSettings,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/block-editor';\nimport { ToolbarGroup, ToolbarButton } from '@wordpress/components';\nimport {\n\tIcon,\n\tcolor as colorIcon,\n\ttextColor as textColorIcon,\n} from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.native.js';\nimport { default as InlineColorUI } from './inline';\nimport styles from './style.scss';\n\nconst name = 'core/text-color';\nconst title = __( 'Text color' );\n\nfunction getComputedStyleProperty( element, property ) {\n\tconst style = element?.props?.style ?? {};\n\n\tif ( property === 'background-color' ) {\n\t\tconst { backgroundColor, baseColors } = style;\n\n\t\tif ( backgroundColor !== 'transparent' ) {\n\t\t\treturn backgroundColor;\n\t\t} else if ( baseColors && baseColors?.color?.background ) {\n\t\t\treturn baseColors?.color?.background;\n\t\t}\n\n\t\treturn 'transparent';\n\t}\n}\n\nfunction fillComputedColors( element, { color, backgroundColor } ) {\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn;\n\t}\n\n\treturn {\n\t\tcolor: color || getComputedStyleProperty( element, 'color' ),\n\t\tbackgroundColor: getComputedStyleProperty(\n\t\t\telement,\n\t\t\t'background-color'\n\t\t),\n\t};\n}\n\nfunction TextColorEdit( {\n\tvalue,\n\tonChange,\n\tisActive,\n\tactiveAttributes,\n\tcontentRef,\n} ) {\n\tconst [ allowCustomControl ] = useSettings( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst colorIndicatorStyle = useMemo(\n\t\t() =>\n\t\t\tfillComputedColors(\n\t\t\t\tcontentRef,\n\t\t\t\tgetActiveColors( value, name, colors )\n\t\t\t),\n\t\t[ contentRef, value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\n\tconst outlineStyle = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles[ 'components-inline-color__outline' ],\n\t\t\tstyles[ 'components-inline-color__outline--dark' ]\n\t\t),\n\t\t{ borderWidth: StyleSheet.hairlineWidth },\n\t];\n\n\tif ( ! hasColorsToChoose && ! isActive ) {\n\t\treturn null;\n\t}\n\n\tconst isActiveStyle = {\n\t\t...colorIndicatorStyle,\n\t\t...( ! colorIndicatorStyle?.backgroundColor\n\t\t\t? { backgroundColor: 'transparent' }\n\t\t\t: {} ),\n\t\t...styles[ 'components-inline-color--is-active' ],\n\t};\n\n\tconst customContainerStyles =\n\t\tstyles[ 'components-inline-color__button-container' ];\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls>\n\t\t\t\t<ToolbarGroup>\n\t\t\t\t\t{ isActive && (\n\t\t\t\t\t\t<View style={ outlineStyle } pointerEvents=\"none\" />\n\t\t\t\t\t) }\n\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tname=\"text-color\"\n\t\t\t\t\t\tisActive={ isActive }\n\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t<Icon\n\t\t\t\t\t\t\t\ticon={\n\t\t\t\t\t\t\t\t\tObject.keys( activeAttributes ).length\n\t\t\t\t\t\t\t\t\t\t? textColorIcon\n\t\t\t\t\t\t\t\t\t\t: colorIcon\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t\t\tcolorIndicatorStyle?.color && {\n\t\t\t\t\t\t\t\t\t\tcolor: colorIndicatorStyle.color,\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/>\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitle={ title }\n\t\t\t\t\t\textraProps={ {\n\t\t\t\t\t\t\tisActiveStyle,\n\t\t\t\t\t\t\tcustomContainerStyles,\n\t\t\t\t\t\t} }\n\t\t\t\t\t\t// If has no colors to choose but a color is active remove the color onClick\n\t\t\t\t\t\tonClick={\n\t\t\t\t\t\t\thasColorsToChoose\n\t\t\t\t\t\t\t\t? () => setIsAddingColor( true )\n\t\t\t\t\t\t\t\t: () => onChange( removeFormat( value, name ) )\n\t\t\t\t\t\t}\n\t\t\t\t\t/>\n\t\t\t\t</ToolbarGroup>\n\t\t\t</BlockControls>\n\t\t\t{ isAddingColor && (\n\t\t\t\t<InlineColorUI\n\t\t\t\t\tname={ name }\n\t\t\t\t\tonClose={ () => setIsAddingColor( false ) }\n\t\t\t\t\tactiveAttributes={ activeAttributes }\n\t\t\t\t\tvalue={ value }\n\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\tcontentRef={ contentRef }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</>\n\t);\n}\n\nexport const textColor = {\n\tname,\n\ttitle,\n\ttagName: 'mark',\n\tclassName: 'has-inline-color',\n\tattributes: {\n\t\tstyle: 'style',\n\t\tclass: 'class',\n\t},\n\tedit: TextColorEdit,\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -13,8 +13,7 @@ import { __ } from '@wordpress/i18n';
|
|
|
13
13
|
*/
|
|
14
14
|
import { textColor as settings, transparentValue } from './index';
|
|
15
15
|
import { unlock } from '../lock-unlock';
|
|
16
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
17
|
-
import { jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
17
|
const {
|
|
19
18
|
Tabs
|
|
20
19
|
} = unlock(componentsPrivateApis);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useSelect","applyFormat","removeFormat","getActiveFormat","useAnchor","ColorPalette","getColorClassName","getColorObjectByColorValue","getColorObjectByAttributeValues","store","blockEditorStore","Popover","privateApis","componentsPrivateApis","__","textColor","settings","transparentValue","unlock","jsx","_jsx","jsxs","_jsxs","Tabs","TABS","name","title","parseCSS","css","split","reduce","accumulator","rule","property","value","color","backgroundColor","parseClassName","className","colorSettings","startsWith","endsWith","colorSlug","replace","colorObject","getActiveColors","activeColorFormat","attributes","style","class","setColors","colors","styles","classNames","push","join","slug","length","type","ColorPicker","onChange","select","_getSettings$colors","getSettings","activeColors","InlineColorUI","onClose","contentRef","isActive","popoverAnchor","editableContentElement","current","anchor","children","TabList","map","tab","Tab","tabId","TabPanel","focusable"],"sources":["@wordpress/format-library/src/text-color/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchor,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst TABS = [\n\t{ name: 'color', title: __( 'Text' ) },\n\t{ name: 'backgroundColor', title: __( 'Background' ) },\n];\n\nfunction parseCSS( css = '' ) {\n\treturn css.split( ';' ).reduce( ( accumulator, rule ) => {\n\t\tif ( rule ) {\n\t\t\tconst [ property, value ] = rule.split( ':' );\n\t\t\tif ( property === 'color' ) {\n\t\t\t\taccumulator.color = value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tproperty === 'background-color' &&\n\t\t\t\tvalue !== transparentValue\n\t\t\t) {\n\t\t\t\taccumulator.backgroundColor = value;\n\t\t\t}\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function parseClassName( className = '', colorSettings ) {\n\treturn className.split( ' ' ).reduce( ( accumulator, name ) => {\n\t\t// `colorSlug` could contain dashes, so simply match the start and end.\n\t\tif ( name.startsWith( 'has-' ) && name.endsWith( '-color' ) ) {\n\t\t\tconst colorSlug = name\n\t\t\t\t.replace( /^has-/, '' )\n\t\t\t\t.replace( /-color$/, '' );\n\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\tcolorSettings,\n\t\t\t\tcolorSlug\n\t\t\t);\n\t\t\taccumulator.color = colorObject.color;\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function getActiveColors( value, name, colorSettings ) {\n\tconst activeColorFormat = getActiveFormat( value, name );\n\n\tif ( ! activeColorFormat ) {\n\t\treturn {};\n\t}\n\n\treturn {\n\t\t...parseCSS( activeColorFormat.attributes.style ),\n\t\t...parseClassName( activeColorFormat.attributes.class, colorSettings ),\n\t};\n}\n\nfunction setColors( value, name, colorSettings, colors ) {\n\tconst { color, backgroundColor } = {\n\t\t...getActiveColors( value, name, colorSettings ),\n\t\t...colors,\n\t};\n\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn removeFormat( value, name );\n\t}\n\n\tconst styles = [];\n\tconst classNames = [];\n\tconst attributes = {};\n\n\tif ( backgroundColor ) {\n\t\tstyles.push( [ 'background-color', backgroundColor ].join( ':' ) );\n\t} else {\n\t\t// Override default browser color for mark element.\n\t\tstyles.push( [ 'background-color', transparentValue ].join( ':' ) );\n\t}\n\n\tif ( color ) {\n\t\tconst colorObject = getColorObjectByColorValue( colorSettings, color );\n\n\t\tif ( colorObject ) {\n\t\t\tclassNames.push( getColorClassName( 'color', colorObject.slug ) );\n\t\t} else {\n\t\t\tstyles.push( [ 'color', color ].join( ':' ) );\n\t\t}\n\t}\n\n\tif ( styles.length ) {\n\t\tattributes.style = styles.join( ';' );\n\t}\n\tif ( classNames.length ) {\n\t\tattributes.class = classNames.join( ' ' );\n\t}\n\n\treturn applyFormat( value, { type: name, attributes } );\n}\n\nfunction ColorPicker( { name, property, value, onChange } ) {\n\tconst colors = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().colors ?? [];\n\t}, [] );\n\tconst activeColors = useMemo(\n\t\t() => getActiveColors( value, name, colors ),\n\t\t[ name, value, colors ]\n\t);\n\n\treturn (\n\t\t<ColorPalette\n\t\t\tvalue={ activeColors[ property ] }\n\t\t\tonChange={ ( color ) => {\n\t\t\t\tonChange(\n\t\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n\tisActive,\n} ) {\n\tconst popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings: { ...settings, isActive },\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"format-library__inline-color-popover\"\n\t\t\tanchor={ popoverAnchor }\n\t\t>\n\t\t\t<Tabs>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t\t<Tabs.Tab tabId={ tab.name } key={ tab.name }>\n\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t) ) }\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\ttabId={ tab.name }\n\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t</Popover>\n\t);\n}\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["useMemo","useSelect","applyFormat","removeFormat","getActiveFormat","useAnchor","ColorPalette","getColorClassName","getColorObjectByColorValue","getColorObjectByAttributeValues","store","blockEditorStore","Popover","privateApis","componentsPrivateApis","__","textColor","settings","transparentValue","unlock","jsx","_jsx","jsxs","_jsxs","Tabs","TABS","name","title","parseCSS","css","split","reduce","accumulator","rule","property","value","color","backgroundColor","parseClassName","className","colorSettings","startsWith","endsWith","colorSlug","replace","colorObject","getActiveColors","activeColorFormat","attributes","style","class","setColors","colors","styles","classNames","push","join","slug","length","type","ColorPicker","onChange","select","_getSettings$colors","getSettings","activeColors","InlineColorUI","onClose","contentRef","isActive","popoverAnchor","editableContentElement","current","anchor","children","TabList","map","tab","Tab","tabId","TabPanel","focusable"],"sources":["@wordpress/format-library/src/text-color/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchor,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport {\n\tPopover,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\nimport { unlock } from '../lock-unlock';\n\nconst { Tabs } = unlock( componentsPrivateApis );\n\nconst TABS = [\n\t{ name: 'color', title: __( 'Text' ) },\n\t{ name: 'backgroundColor', title: __( 'Background' ) },\n];\n\nfunction parseCSS( css = '' ) {\n\treturn css.split( ';' ).reduce( ( accumulator, rule ) => {\n\t\tif ( rule ) {\n\t\t\tconst [ property, value ] = rule.split( ':' );\n\t\t\tif ( property === 'color' ) {\n\t\t\t\taccumulator.color = value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\tproperty === 'background-color' &&\n\t\t\t\tvalue !== transparentValue\n\t\t\t) {\n\t\t\t\taccumulator.backgroundColor = value;\n\t\t\t}\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function parseClassName( className = '', colorSettings ) {\n\treturn className.split( ' ' ).reduce( ( accumulator, name ) => {\n\t\t// `colorSlug` could contain dashes, so simply match the start and end.\n\t\tif ( name.startsWith( 'has-' ) && name.endsWith( '-color' ) ) {\n\t\t\tconst colorSlug = name\n\t\t\t\t.replace( /^has-/, '' )\n\t\t\t\t.replace( /-color$/, '' );\n\t\t\tconst colorObject = getColorObjectByAttributeValues(\n\t\t\t\tcolorSettings,\n\t\t\t\tcolorSlug\n\t\t\t);\n\t\t\taccumulator.color = colorObject.color;\n\t\t}\n\t\treturn accumulator;\n\t}, {} );\n}\n\nexport function getActiveColors( value, name, colorSettings ) {\n\tconst activeColorFormat = getActiveFormat( value, name );\n\n\tif ( ! activeColorFormat ) {\n\t\treturn {};\n\t}\n\n\treturn {\n\t\t...parseCSS( activeColorFormat.attributes.style ),\n\t\t...parseClassName( activeColorFormat.attributes.class, colorSettings ),\n\t};\n}\n\nfunction setColors( value, name, colorSettings, colors ) {\n\tconst { color, backgroundColor } = {\n\t\t...getActiveColors( value, name, colorSettings ),\n\t\t...colors,\n\t};\n\n\tif ( ! color && ! backgroundColor ) {\n\t\treturn removeFormat( value, name );\n\t}\n\n\tconst styles = [];\n\tconst classNames = [];\n\tconst attributes = {};\n\n\tif ( backgroundColor ) {\n\t\tstyles.push( [ 'background-color', backgroundColor ].join( ':' ) );\n\t} else {\n\t\t// Override default browser color for mark element.\n\t\tstyles.push( [ 'background-color', transparentValue ].join( ':' ) );\n\t}\n\n\tif ( color ) {\n\t\tconst colorObject = getColorObjectByColorValue( colorSettings, color );\n\n\t\tif ( colorObject ) {\n\t\t\tclassNames.push( getColorClassName( 'color', colorObject.slug ) );\n\t\t} else {\n\t\t\tstyles.push( [ 'color', color ].join( ':' ) );\n\t\t}\n\t}\n\n\tif ( styles.length ) {\n\t\tattributes.style = styles.join( ';' );\n\t}\n\tif ( classNames.length ) {\n\t\tattributes.class = classNames.join( ' ' );\n\t}\n\n\treturn applyFormat( value, { type: name, attributes } );\n}\n\nfunction ColorPicker( { name, property, value, onChange } ) {\n\tconst colors = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\treturn getSettings().colors ?? [];\n\t}, [] );\n\tconst activeColors = useMemo(\n\t\t() => getActiveColors( value, name, colors ),\n\t\t[ name, value, colors ]\n\t);\n\n\treturn (\n\t\t<ColorPalette\n\t\t\tvalue={ activeColors[ property ] }\n\t\t\tonChange={ ( color ) => {\n\t\t\t\tonChange(\n\t\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t\t);\n\t\t\t} }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n\tisActive,\n} ) {\n\tconst popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings: { ...settings, isActive },\n\t} );\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"format-library__inline-color-popover\"\n\t\t\tanchor={ popoverAnchor }\n\t\t>\n\t\t\t<Tabs>\n\t\t\t\t<Tabs.TabList>\n\t\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t\t<Tabs.Tab tabId={ tab.name } key={ tab.name }>\n\t\t\t\t\t\t\t{ tab.title }\n\t\t\t\t\t\t</Tabs.Tab>\n\t\t\t\t\t) ) }\n\t\t\t\t</Tabs.TabList>\n\t\t\t\t{ TABS.map( ( tab ) => (\n\t\t\t\t\t<Tabs.TabPanel\n\t\t\t\t\t\ttabId={ tab.name }\n\t\t\t\t\t\tfocusable={ false }\n\t\t\t\t\t\tkey={ tab.name }\n\t\t\t\t\t>\n\t\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Tabs.TabPanel>\n\t\t\t\t) ) }\n\t\t\t</Tabs>\n\t\t</Popover>\n\t);\n}\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,SAAS,QAAQ,iBAAiB;AAC3C,SACCC,WAAW,EACXC,YAAY,EACZC,eAAe,EACfC,SAAS,QACH,sBAAsB;AAC7B,SACCC,YAAY,EACZC,iBAAiB,EACjBC,0BAA0B,EAC1BC,+BAA+B,EAC/BC,KAAK,IAAIC,gBAAgB,QACnB,yBAAyB;AAChC,SACCC,OAAO,EACPC,WAAW,IAAIC,qBAAqB,QAC9B,uBAAuB;AAC9B,SAASC,EAAE,QAAQ,iBAAiB;;AAEpC;AACA;AACA;AACA,SAASC,SAAS,IAAIC,QAAQ,EAAEC,gBAAgB,QAAQ,SAAS;AACjE,SAASC,MAAM,QAAQ,gBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAExC,MAAM;EAAEC;AAAK,CAAC,GAAGL,MAAM,CAAEL,qBAAsB,CAAC;AAEhD,MAAMW,IAAI,GAAG,CACZ;EAAEC,IAAI,EAAE,OAAO;EAAEC,KAAK,EAAEZ,EAAE,CAAE,MAAO;AAAE,CAAC,EACtC;EAAEW,IAAI,EAAE,iBAAiB;EAAEC,KAAK,EAAEZ,EAAE,CAAE,YAAa;AAAE,CAAC,CACtD;AAED,SAASa,QAAQA,CAAEC,GAAG,GAAG,EAAE,EAAG;EAC7B,OAAOA,GAAG,CAACC,KAAK,CAAE,GAAI,CAAC,CAACC,MAAM,CAAE,CAAEC,WAAW,EAAEC,IAAI,KAAM;IACxD,IAAKA,IAAI,EAAG;MACX,MAAM,CAAEC,QAAQ,EAAEC,KAAK,CAAE,GAAGF,IAAI,CAACH,KAAK,CAAE,GAAI,CAAC;MAC7C,IAAKI,QAAQ,KAAK,OAAO,EAAG;QAC3BF,WAAW,CAACI,KAAK,GAAGD,KAAK;MAC1B;MACA,IACCD,QAAQ,KAAK,kBAAkB,IAC/BC,KAAK,KAAKjB,gBAAgB,EACzB;QACDc,WAAW,CAACK,eAAe,GAAGF,KAAK;MACpC;IACD;IACA,OAAOH,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC;AACR;AAEA,OAAO,SAASM,cAAcA,CAAEC,SAAS,GAAG,EAAE,EAAEC,aAAa,EAAG;EAC/D,OAAOD,SAAS,CAACT,KAAK,CAAE,GAAI,CAAC,CAACC,MAAM,CAAE,CAAEC,WAAW,EAAEN,IAAI,KAAM;IAC9D;IACA,IAAKA,IAAI,CAACe,UAAU,CAAE,MAAO,CAAC,IAAIf,IAAI,CAACgB,QAAQ,CAAE,QAAS,CAAC,EAAG;MAC7D,MAAMC,SAAS,GAAGjB,IAAI,CACpBkB,OAAO,CAAE,OAAO,EAAE,EAAG,CAAC,CACtBA,OAAO,CAAE,SAAS,EAAE,EAAG,CAAC;MAC1B,MAAMC,WAAW,GAAGpC,+BAA+B,CAClD+B,aAAa,EACbG,SACD,CAAC;MACDX,WAAW,CAACI,KAAK,GAAGS,WAAW,CAACT,KAAK;IACtC;IACA,OAAOJ,WAAW;EACnB,CAAC,EAAE,CAAC,CAAE,CAAC;AACR;AAEA,OAAO,SAASc,eAAeA,CAAEX,KAAK,EAAET,IAAI,EAAEc,aAAa,EAAG;EAC7D,MAAMO,iBAAiB,GAAG3C,eAAe,CAAE+B,KAAK,EAAET,IAAK,CAAC;EAExD,IAAK,CAAEqB,iBAAiB,EAAG;IAC1B,OAAO,CAAC,CAAC;EACV;EAEA,OAAO;IACN,GAAGnB,QAAQ,CAAEmB,iBAAiB,CAACC,UAAU,CAACC,KAAM,CAAC;IACjD,GAAGX,cAAc,CAAES,iBAAiB,CAACC,UAAU,CAACE,KAAK,EAAEV,aAAc;EACtE,CAAC;AACF;AAEA,SAASW,SAASA,CAAEhB,KAAK,EAAET,IAAI,EAAEc,aAAa,EAAEY,MAAM,EAAG;EACxD,MAAM;IAAEhB,KAAK;IAAEC;EAAgB,CAAC,GAAG;IAClC,GAAGS,eAAe,CAAEX,KAAK,EAAET,IAAI,EAAEc,aAAc,CAAC;IAChD,GAAGY;EACJ,CAAC;EAED,IAAK,CAAEhB,KAAK,IAAI,CAAEC,eAAe,EAAG;IACnC,OAAOlC,YAAY,CAAEgC,KAAK,EAAET,IAAK,CAAC;EACnC;EAEA,MAAM2B,MAAM,GAAG,EAAE;EACjB,MAAMC,UAAU,GAAG,EAAE;EACrB,MAAMN,UAAU,GAAG,CAAC,CAAC;EAErB,IAAKX,eAAe,EAAG;IACtBgB,MAAM,CAACE,IAAI,CAAE,CAAE,kBAAkB,EAAElB,eAAe,CAAE,CAACmB,IAAI,CAAE,GAAI,CAAE,CAAC;EACnE,CAAC,MAAM;IACN;IACAH,MAAM,CAACE,IAAI,CAAE,CAAE,kBAAkB,EAAErC,gBAAgB,CAAE,CAACsC,IAAI,CAAE,GAAI,CAAE,CAAC;EACpE;EAEA,IAAKpB,KAAK,EAAG;IACZ,MAAMS,WAAW,GAAGrC,0BAA0B,CAAEgC,aAAa,EAAEJ,KAAM,CAAC;IAEtE,IAAKS,WAAW,EAAG;MAClBS,UAAU,CAACC,IAAI,CAAEhD,iBAAiB,CAAE,OAAO,EAAEsC,WAAW,CAACY,IAAK,CAAE,CAAC;IAClE,CAAC,MAAM;MACNJ,MAAM,CAACE,IAAI,CAAE,CAAE,OAAO,EAAEnB,KAAK,CAAE,CAACoB,IAAI,CAAE,GAAI,CAAE,CAAC;IAC9C;EACD;EAEA,IAAKH,MAAM,CAACK,MAAM,EAAG;IACpBV,UAAU,CAACC,KAAK,GAAGI,MAAM,CAACG,IAAI,CAAE,GAAI,CAAC;EACtC;EACA,IAAKF,UAAU,CAACI,MAAM,EAAG;IACxBV,UAAU,CAACE,KAAK,GAAGI,UAAU,CAACE,IAAI,CAAE,GAAI,CAAC;EAC1C;EAEA,OAAOtD,WAAW,CAAEiC,KAAK,EAAE;IAAEwB,IAAI,EAAEjC,IAAI;IAAEsB;EAAW,CAAE,CAAC;AACxD;AAEA,SAASY,WAAWA,CAAE;EAAElC,IAAI;EAAEQ,QAAQ;EAAEC,KAAK;EAAE0B;AAAS,CAAC,EAAG;EAC3D,MAAMT,MAAM,GAAGnD,SAAS,CAAI6D,MAAM,IAAM;IAAA,IAAAC,mBAAA;IACvC,MAAM;MAAEC;IAAY,CAAC,GAAGF,MAAM,CAAEnD,gBAAiB,CAAC;IAClD,QAAAoD,mBAAA,GAAOC,WAAW,CAAC,CAAC,CAACZ,MAAM,cAAAW,mBAAA,cAAAA,mBAAA,GAAI,EAAE;EAClC,CAAC,EAAE,EAAG,CAAC;EACP,MAAME,YAAY,GAAGjE,OAAO,CAC3B,MAAM8C,eAAe,CAAEX,KAAK,EAAET,IAAI,EAAE0B,MAAO,CAAC,EAC5C,CAAE1B,IAAI,EAAES,KAAK,EAAEiB,MAAM,CACtB,CAAC;EAED,oBACC/B,IAAA,CAACf,YAAY;IACZ6B,KAAK,EAAG8B,YAAY,CAAE/B,QAAQ,CAAI;IAClC2B,QAAQ,EAAKzB,KAAK,IAAM;MACvByB,QAAQ,CACPV,SAAS,CAAEhB,KAAK,EAAET,IAAI,EAAE0B,MAAM,EAAE;QAAE,CAAElB,QAAQ,GAAIE;MAAM,CAAE,CACzD,CAAC;IACF;EAAG,CACH,CAAC;AAEJ;AAEA,eAAe,SAAS8B,aAAaA,CAAE;EACtCxC,IAAI;EACJS,KAAK;EACL0B,QAAQ;EACRM,OAAO;EACPC,UAAU;EACVC;AACD,CAAC,EAAG;EACH,MAAMC,aAAa,GAAGjE,SAAS,CAAE;IAChCkE,sBAAsB,EAAEH,UAAU,CAACI,OAAO;IAC1CvD,QAAQ,EAAE;MAAE,GAAGA,QAAQ;MAAEoD;IAAS;EACnC,CAAE,CAAC;EAEH,oBACChD,IAAA,CAACT,OAAO;IACPuD,OAAO,EAAGA,OAAS;IACnB5B,SAAS,EAAC,sCAAsC;IAChDkC,MAAM,EAAGH,aAAe;IAAAI,QAAA,eAExBnD,KAAA,CAACC,IAAI;MAAAkD,QAAA,gBACJrD,IAAA,CAACG,IAAI,CAACmD,OAAO;QAAAD,QAAA,EACVjD,IAAI,CAACmD,GAAG,CAAIC,GAAG,iBAChBxD,IAAA,CAACG,IAAI,CAACsD,GAAG;UAACC,KAAK,EAAGF,GAAG,CAACnD,IAAM;UAAAgD,QAAA,EACzBG,GAAG,CAAClD;QAAK,GADuBkD,GAAG,CAACnD,IAE7B,CACT;MAAC,CACU,CAAC,EACbD,IAAI,CAACmD,GAAG,CAAIC,GAAG,iBAChBxD,IAAA,CAACG,IAAI,CAACwD,QAAQ;QACbD,KAAK,EAAGF,GAAG,CAACnD,IAAM;QAClBuD,SAAS,EAAG,KAAO;QAAAP,QAAA,eAGnBrD,IAAA,CAACuC,WAAW;UACXlC,IAAI,EAAGA,IAAM;UACbQ,QAAQ,EAAG2C,GAAG,CAACnD,IAAM;UACrBS,KAAK,EAAGA,KAAO;UACf0B,QAAQ,EAAGA;QAAU,CACrB;MAAC,GAPIgB,GAAG,CAACnD,IAQI,CACd,CAAC;IAAA,CACE;EAAC,CACC,CAAC;AAEZ","ignoreList":[]}
|