@wordpress/format-library 3.14.1-next.957ca95e4c.0 → 3.15.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 CHANGED
@@ -2,6 +2,8 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 3.15.0 (2022-09-13)
6
+
5
7
  ## 3.14.0 (2022-08-24)
6
8
 
7
9
  ## 3.13.0 (2022-08-10)
@@ -9,8 +9,6 @@ exports.link = void 0;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
12
- var _lodash = require("lodash");
13
-
14
12
  var _clipboard = _interopRequireDefault(require("@react-native-clipboard/clipboard"));
15
13
 
16
14
  var _i18n = require("@wordpress/i18n");
@@ -108,13 +106,17 @@ const link = {
108
106
  let startIndex = value.start;
109
107
  let endIndex = value.end;
110
108
 
111
- while ((0, _lodash.find)(value.formats[startIndex], startFormat)) {
109
+ while ((_value$formats$startI = value.formats[startIndex]) !== null && _value$formats$startI !== void 0 && _value$formats$startI.find(format => (format === null || format === void 0 ? void 0 : format.type) === startFormat.type)) {
110
+ var _value$formats$startI;
111
+
112
112
  startIndex--;
113
113
  }
114
114
 
115
115
  endIndex++;
116
116
 
117
- while ((0, _lodash.find)(value.formats[endIndex], startFormat)) {
117
+ while ((_value$formats$endInd = value.formats[endIndex]) !== null && _value$formats$endInd !== void 0 && _value$formats$endInd.find(format => (format === null || format === void 0 ? void 0 : format.type) === startFormat.type)) {
118
+ var _value$formats$endInd;
119
+
118
120
  endIndex++;
119
121
  }
120
122
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/link/index.native.js"],"names":["name","link","title","tagName","className","attributes","url","target","edit","LinkEdit","Component","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","speak","linkSelection","clipboardText","Clipboard","getString","render","activeAttributes","linkIcon"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find } from 'lodash';\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},\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 ( find( value.formats[ startIndex ], startFormat ) ) {\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 ( find( value.formats[ endIndex ], startFormat ) ) {\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"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/link/index.native.js"],"names":["name","link","title","tagName","className","attributes","url","target","edit","LinkEdit","Component","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","Clipboard","getString","render","activeAttributes","linkIcon"],"mappings":"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","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},\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"]}
@@ -211,7 +211,7 @@ function InlineLinkUI(_ref) {
211
211
  focusOnMount: focusOnMount.current,
212
212
  onClose: stopAddingLink,
213
213
  position: "bottom center",
214
- __unstableShift: true
214
+ shift: true
215
215
  }, (0, _element.createElement)(_blockEditor.__experimentalLinkControl, {
216
216
  key: forceRemountKey,
217
217
  value: linkValue,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/link/inline.js"],"names":["InlineLinkUI","isActive","activeAttributes","addingLink","value","onChange","speak","stopAddingLink","contentRef","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","nextLinkValue","setNextLinkValue","createPageEntity","userCanCreatePages","select","getSettings","blockEditorStore","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","id","opensInNewTab","target","title","removeLink","newValue","onChangeLink","nextValue","didToggleSetting","didToggleSettingForNewLink","undefined","newUrl","linkFormat","String","opensInNewWindow","newText","toInsert","length","start","end","activeFormats","anchorRef","ref","settings","forceRemountKey","focusOnMount","handleCreate","pageTitle","page","status","rendered","link","kind","createButtonText","searchTerm","mark","current","textStart","textEnd","boundary"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useRef, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withSpokenMessages, Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tuseAnchorRef,\n\tremoveFormat,\n\tslice,\n\treplace,\n} from '@wordpress/rich-text';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref, getFormatBoundary } from './utils';\nimport { link as settings } from './index';\nimport useLinkInstanceKey from './use-link-instance-key';\n\nfunction InlineLinkUI( {\n\tisActive,\n\tactiveAttributes,\n\taddingLink,\n\tvalue,\n\tonChange,\n\tspeak,\n\tstopAddingLink,\n\tcontentRef,\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\t/**\n\t * Pending settings to be applied to the next link. When inserting a new\n\t * link, toggle values cannot be applied immediately, because there is not\n\t * yet a link for them to apply to. Thus, they are maintained in a state\n\t * value until the time that the link can be inserted or edited.\n\t *\n\t * @type {[Object|undefined,Function]}\n\t */\n\tconst [ nextLinkValue, setNextLinkValue ] = useState();\n\n\tconst { createPageEntity, userCanCreatePages } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\n\t\treturn {\n\t\t\tcreatePageEntity: _settings.__experimentalCreatePageEntity,\n\t\t\tuserCanCreatePages: _settings.__experimentalUserCanCreatePages,\n\t\t};\n\t}, [] );\n\n\tconst linkValue = {\n\t\turl: activeAttributes.url,\n\t\ttype: activeAttributes.type,\n\t\tid: activeAttributes.id,\n\t\topensInNewTab: activeAttributes.target === '_blank',\n\t\ttitle: richTextText,\n\t\t...nextLinkValue,\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\t// Merge with values from state, both for the purpose of assigning the\n\t\t// next state value, and for use in constructing the new link format if\n\t\t// the link is ready to be applied.\n\t\tnextValue = {\n\t\t\t...nextLinkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\t// LinkControl calls `onChange` immediately upon the toggling a setting.\n\t\tconst didToggleSetting =\n\t\t\tlinkValue.opensInNewTab !== nextValue.opensInNewTab &&\n\t\t\tlinkValue.url === nextValue.url;\n\n\t\t// If change handler was called as a result of a settings change during\n\t\t// link insertion, it must be held in state until the link is ready to\n\t\t// be applied.\n\t\tconst didToggleSettingForNewLink =\n\t\t\tdidToggleSetting && nextValue.url === undefined;\n\n\t\t// If link will be assigned, the state value can be considered flushed.\n\t\t// Otherwise, persist the pending changes.\n\t\tsetNextLinkValue( didToggleSettingForNewLink ? nextValue : undefined );\n\n\t\tif ( didToggleSettingForNewLink ) {\n\t\t\treturn;\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} );\n\n\t\tconst newText = nextValue.title || newUrl;\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 toInsert = applyFormat(\n\t\t\t\tcreate( { text: newText } ),\n\t\t\t\tlinkFormat,\n\t\t\t\t0,\n\t\t\t\tnewText.length\n\t\t\t);\n\t\t\tonChange( insert( value, toInsert ) );\n\t\t} else {\n\t\t\t// Scenario: we have any active text selection or an active format.\n\t\t\tlet newValue;\n\n\t\t\tif ( newText === richTextText ) {\n\t\t\t\t// If we're not updating the text then ignore.\n\t\t\t\tnewValue = applyFormat( value, linkFormat );\n\t\t\t} else {\n\t\t\t\t// Create new RichText value for the new text in order that we\n\t\t\t\t// can apply formats to it.\n\t\t\t\tnewValue = create( { text: newText } );\n\n\t\t\t\t// Apply the new Link format to this new text value.\n\t\t\t\tnewValue = applyFormat(\n\t\t\t\t\tnewValue,\n\t\t\t\t\tlinkFormat,\n\t\t\t\t\t0,\n\t\t\t\t\tnewText.length\n\t\t\t\t);\n\n\t\t\t\t// Update the original (full) RichTextValue replacing the\n\t\t\t\t// target text with the *new* RichTextValue containing:\n\t\t\t\t// 1. The new text content.\n\t\t\t\t// 2. The new link format.\n\t\t\t\t// Note original formats will be lost when applying this change.\n\t\t\t\t// That is expected behaviour.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/33849#issuecomment-936134179.\n\t\t\t\tnewValue = replace( value, richTextText, newValue );\n\t\t\t}\n\n\t\t\tnewValue.start = newValue.end;\n\t\t\tnewValue.activeFormats = [];\n\t\t\tonChange( newValue );\n\t\t}\n\n\t\t// Focus should only be shifted back to the formatted segment when the\n\t\t// URL is submitted.\n\t\tif ( ! didToggleSetting ) {\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 anchorRef = useAnchorRef( { ref: contentRef, value, settings } );\n\n\t// Generate a string based key that is unique to this anchor reference.\n\t// This is used to force re-mount the LinkControl component to avoid\n\t// potential stale state bugs caused by the component not being remounted\n\t// See https://github.com/WordPress/gutenberg/pull/34742.\n\tconst forceRemountKey = useLinkInstanceKey( anchorRef );\n\n\t// The focusOnMount prop shouldn't evolve during render of a Popover\n\t// otherwise it causes a render of the content.\n\tconst focusOnMount = useRef( addingLink ? 'firstElement' : false );\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\tanchorRef={ anchorRef }\n\t\t\tfocusOnMount={ focusOnMount.current }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tposition=\"bottom center\"\n\t\t\t__unstableShift\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\tkey={ forceRemountKey }\n\t\t\t\tvalue={ linkValue }\n\t\t\t\tonChange={ onChangeLink }\n\t\t\t\tonRemove={ removeLink }\n\t\t\t\tforceIsEditingLink={ addingLink }\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/>\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 withSpokenMessages( InlineLinkUI );\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/link/inline.js"],"names":["InlineLinkUI","isActive","activeAttributes","addingLink","value","onChange","speak","stopAddingLink","contentRef","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","nextLinkValue","setNextLinkValue","createPageEntity","userCanCreatePages","select","getSettings","blockEditorStore","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","id","opensInNewTab","target","title","removeLink","newValue","onChangeLink","nextValue","didToggleSetting","didToggleSettingForNewLink","undefined","newUrl","linkFormat","String","opensInNewWindow","newText","toInsert","length","start","end","activeFormats","anchorRef","ref","settings","forceRemountKey","focusOnMount","handleCreate","pageTitle","page","status","rendered","link","kind","createButtonText","searchTerm","mark","current","textStart","textEnd","boundary"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useRef, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withSpokenMessages, Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tuseAnchorRef,\n\tremoveFormat,\n\tslice,\n\treplace,\n} from '@wordpress/rich-text';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref, getFormatBoundary } from './utils';\nimport { link as settings } from './index';\nimport useLinkInstanceKey from './use-link-instance-key';\n\nfunction InlineLinkUI( {\n\tisActive,\n\tactiveAttributes,\n\taddingLink,\n\tvalue,\n\tonChange,\n\tspeak,\n\tstopAddingLink,\n\tcontentRef,\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\t/**\n\t * Pending settings to be applied to the next link. When inserting a new\n\t * link, toggle values cannot be applied immediately, because there is not\n\t * yet a link for them to apply to. Thus, they are maintained in a state\n\t * value until the time that the link can be inserted or edited.\n\t *\n\t * @type {[Object|undefined,Function]}\n\t */\n\tconst [ nextLinkValue, setNextLinkValue ] = useState();\n\n\tconst { createPageEntity, userCanCreatePages } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\n\t\treturn {\n\t\t\tcreatePageEntity: _settings.__experimentalCreatePageEntity,\n\t\t\tuserCanCreatePages: _settings.__experimentalUserCanCreatePages,\n\t\t};\n\t}, [] );\n\n\tconst linkValue = {\n\t\turl: activeAttributes.url,\n\t\ttype: activeAttributes.type,\n\t\tid: activeAttributes.id,\n\t\topensInNewTab: activeAttributes.target === '_blank',\n\t\ttitle: richTextText,\n\t\t...nextLinkValue,\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\t// Merge with values from state, both for the purpose of assigning the\n\t\t// next state value, and for use in constructing the new link format if\n\t\t// the link is ready to be applied.\n\t\tnextValue = {\n\t\t\t...nextLinkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\t// LinkControl calls `onChange` immediately upon the toggling a setting.\n\t\tconst didToggleSetting =\n\t\t\tlinkValue.opensInNewTab !== nextValue.opensInNewTab &&\n\t\t\tlinkValue.url === nextValue.url;\n\n\t\t// If change handler was called as a result of a settings change during\n\t\t// link insertion, it must be held in state until the link is ready to\n\t\t// be applied.\n\t\tconst didToggleSettingForNewLink =\n\t\t\tdidToggleSetting && nextValue.url === undefined;\n\n\t\t// If link will be assigned, the state value can be considered flushed.\n\t\t// Otherwise, persist the pending changes.\n\t\tsetNextLinkValue( didToggleSettingForNewLink ? nextValue : undefined );\n\n\t\tif ( didToggleSettingForNewLink ) {\n\t\t\treturn;\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} );\n\n\t\tconst newText = nextValue.title || newUrl;\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 toInsert = applyFormat(\n\t\t\t\tcreate( { text: newText } ),\n\t\t\t\tlinkFormat,\n\t\t\t\t0,\n\t\t\t\tnewText.length\n\t\t\t);\n\t\t\tonChange( insert( value, toInsert ) );\n\t\t} else {\n\t\t\t// Scenario: we have any active text selection or an active format.\n\t\t\tlet newValue;\n\n\t\t\tif ( newText === richTextText ) {\n\t\t\t\t// If we're not updating the text then ignore.\n\t\t\t\tnewValue = applyFormat( value, linkFormat );\n\t\t\t} else {\n\t\t\t\t// Create new RichText value for the new text in order that we\n\t\t\t\t// can apply formats to it.\n\t\t\t\tnewValue = create( { text: newText } );\n\n\t\t\t\t// Apply the new Link format to this new text value.\n\t\t\t\tnewValue = applyFormat(\n\t\t\t\t\tnewValue,\n\t\t\t\t\tlinkFormat,\n\t\t\t\t\t0,\n\t\t\t\t\tnewText.length\n\t\t\t\t);\n\n\t\t\t\t// Update the original (full) RichTextValue replacing the\n\t\t\t\t// target text with the *new* RichTextValue containing:\n\t\t\t\t// 1. The new text content.\n\t\t\t\t// 2. The new link format.\n\t\t\t\t// Note original formats will be lost when applying this change.\n\t\t\t\t// That is expected behaviour.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/33849#issuecomment-936134179.\n\t\t\t\tnewValue = replace( value, richTextText, newValue );\n\t\t\t}\n\n\t\t\tnewValue.start = newValue.end;\n\t\t\tnewValue.activeFormats = [];\n\t\t\tonChange( newValue );\n\t\t}\n\n\t\t// Focus should only be shifted back to the formatted segment when the\n\t\t// URL is submitted.\n\t\tif ( ! didToggleSetting ) {\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 anchorRef = useAnchorRef( { ref: contentRef, value, settings } );\n\n\t// Generate a string based key that is unique to this anchor reference.\n\t// This is used to force re-mount the LinkControl component to avoid\n\t// potential stale state bugs caused by the component not being remounted\n\t// See https://github.com/WordPress/gutenberg/pull/34742.\n\tconst forceRemountKey = useLinkInstanceKey( anchorRef );\n\n\t// The focusOnMount prop shouldn't evolve during render of a Popover\n\t// otherwise it causes a render of the content.\n\tconst focusOnMount = useRef( addingLink ? 'firstElement' : false );\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\tanchorRef={ anchorRef }\n\t\t\tfocusOnMount={ focusOnMount.current }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tposition=\"bottom center\"\n\t\t\tshift\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\tkey={ forceRemountKey }\n\t\t\t\tvalue={ linkValue }\n\t\t\t\tonChange={ onChangeLink }\n\t\t\t\tonRemove={ removeLink }\n\t\t\t\tforceIsEditingLink={ addingLink }\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/>\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 withSpokenMessages( InlineLinkUI );\n"]}
@@ -7,8 +7,6 @@ exports.transparentValue = exports.textColor = void 0;
7
7
 
8
8
  var _element = require("@wordpress/element");
9
9
 
10
- var _lodash = require("lodash");
11
-
12
10
  var _i18n = require("@wordpress/i18n");
13
11
 
14
12
  var _blockEditor = require("@wordpress/block-editor");
@@ -23,10 +21,6 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
23
21
 
24
22
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
25
23
 
26
- /**
27
- * External dependencies
28
- */
29
-
30
24
  /**
31
25
  * WordPress dependencies
32
26
  */
@@ -87,7 +81,7 @@ function TextColorEdit(_ref2) {
87
81
  const enableIsAddingColor = (0, _element.useCallback)(() => setIsAddingColor(true), [setIsAddingColor]);
88
82
  const disableIsAddingColor = (0, _element.useCallback)(() => setIsAddingColor(false), [setIsAddingColor]);
89
83
  const colorIndicatorStyle = (0, _element.useMemo)(() => fillComputedColors(contentRef.current, (0, _inline.getActiveColors)(value, name, colors)), [value, colors]);
90
- const hasColorsToChoose = !(0, _lodash.isEmpty)(colors) || !allowCustomControl;
84
+ const hasColorsToChoose = colors.length || !allowCustomControl;
91
85
 
92
86
  if (!hasColorsToChoose && !isActive) {
93
87
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/text-color/index.js"],"names":["transparentValue","name","title","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","color","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","current","hasColorsToChoose","textColorIcon","textColor","tagName","className","attributes","class","__unstableFilterAttributeValue","key","includes","addedCSS","join","edit"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSetting } from '@wordpress/block-editor';\nimport { Icon, textColor as textColorIcon } 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 = useSetting( 'color.custom' );\n\tconst colors = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = ! isEmpty( colors ) || ! 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={ textColorIcon }\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? enableIsAddingColor\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We should not add a background-color if it's already set.\n\t\tif ( value && value.includes( 'background-color' ) ) return value;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn value ? [ addedCSS, value ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/text-color/index.js"],"names":["transparentValue","name","title","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","color","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","current","hasColorsToChoose","length","textColorIcon","textColor","tagName","className","attributes","class","__unstableFilterAttributeValue","key","includes","addedCSS","join","edit"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSetting } from '@wordpress/block-editor';\nimport { Icon, textColor as textColorIcon } 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 = useSetting( 'color.custom' );\n\tconst colors = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ 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={ textColorIcon }\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? enableIsAddingColor\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We should not add a background-color if it's already set.\n\t\tif ( value && value.includes( 'background-color' ) ) return value;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn value ? [ addedCSS, value ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
@@ -9,8 +9,6 @@ exports.textColor = void 0;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
12
- var _lodash = require("lodash");
13
-
14
12
  var _reactNative = require("react-native");
15
13
 
16
14
  var _i18n = require("@wordpress/i18n");
@@ -104,7 +102,7 @@ function TextColorEdit(_ref2) {
104
102
  const enableIsAddingColor = (0, _element.useCallback)(() => setIsAddingColor(true), [setIsAddingColor]);
105
103
  const disableIsAddingColor = (0, _element.useCallback)(() => setIsAddingColor(false), [setIsAddingColor]);
106
104
  const colorIndicatorStyle = (0, _element.useMemo)(() => fillComputedColors(contentRef, (0, _inline.getActiveColors)(value, name, colors)), [value, colors]);
107
- const hasColorsToChoose = !(0, _lodash.isEmpty)(colors) || !allowCustomControl;
105
+ const hasColorsToChoose = colors.length || !allowCustomControl;
108
106
  const onPressButton = (0, _element.useCallback)(() => {
109
107
  if (hasColorsToChoose) {
110
108
  enableIsAddingColor();
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/text-color/index.native.js"],"names":["name","title","getComputedStyleProperty","element","property","props","style","backgroundColor","baseColors","color","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","hasColorsToChoose","onPressButton","outlineStyle","styles","isActiveStyle","customContainerStyles","textColorIcon","textColor","tagName","className","attributes","class","__unstableFilterAttributeValue","key","newValue","replace","includes","addedCSS","transparentValue","join","edit"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { BlockControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport { Icon, textColor as textColorIcon } from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.js';\nimport { transparentValue } from './index.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 {\n\t\tprops: { style = {} },\n\t} = element;\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 = useSetting( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = ! isEmpty( colors ) || ! allowCustomControl;\n\n\tconst onPressButton = useCallback( () => {\n\t\tif ( hasColorsToChoose ) {\n\t\t\tenableIsAddingColor();\n\t\t} else {\n\t\t\tonChange( removeFormat( value, name ) );\n\t\t}\n\t}, [ hasColorsToChoose, value ] );\n\n\tconst outlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles[ 'components-inline-color__outline' ],\n\t\tstyles[ 'components-inline-color__outline--dark' ]\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={ textColorIcon }\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={ onPressButton }\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We need to remove the extra spaces within the styles on mobile\n\t\tconst newValue = value?.replace( / /g, '' );\n\t\t// We should not add a background-color if it's already set\n\t\tif ( newValue && newValue.includes( 'background-color' ) )\n\t\t\treturn newValue;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn newValue ? [ addedCSS, newValue ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/text-color/index.native.js"],"names":["name","title","getComputedStyleProperty","element","property","props","style","backgroundColor","baseColors","color","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","hasColorsToChoose","length","onPressButton","outlineStyle","styles","isActiveStyle","customContainerStyles","textColorIcon","textColor","tagName","className","attributes","class","__unstableFilterAttributeValue","key","newValue","replace","includes","addedCSS","transparentValue","join","edit"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { BlockControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport { Icon, textColor as textColorIcon } from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.js';\nimport { transparentValue } from './index.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 {\n\t\tprops: { style = {} },\n\t} = element;\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 = useSetting( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\n\tconst onPressButton = useCallback( () => {\n\t\tif ( hasColorsToChoose ) {\n\t\t\tenableIsAddingColor();\n\t\t} else {\n\t\t\tonChange( removeFormat( value, name ) );\n\t\t}\n\t}, [ hasColorsToChoose, value ] );\n\n\tconst outlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles[ 'components-inline-color__outline' ],\n\t\tstyles[ 'components-inline-color__outline--dark' ]\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={ textColorIcon }\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={ onPressButton }\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We need to remove the extra spaces within the styles on mobile\n\t\tconst newValue = value?.replace( / /g, '' );\n\t\t// We should not add a background-color if it's already set\n\t\tif ( newValue && newValue.includes( 'background-color' ) )\n\t\t\treturn newValue;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn newValue ? [ addedCSS, newValue ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
@@ -9,8 +9,6 @@ exports.parseClassName = parseClassName;
9
9
 
10
10
  var _element = require("@wordpress/element");
11
11
 
12
- var _lodash = require("lodash");
13
-
14
12
  var _data = require("@wordpress/data");
15
13
 
16
14
  var _richText = require("@wordpress/rich-text");
@@ -23,10 +21,6 @@ var _i18n = require("@wordpress/i18n");
23
21
 
24
22
  var _index = require("./index");
25
23
 
26
- /**
27
- * External dependencies
28
- */
29
-
30
24
  /**
31
25
  * WordPress dependencies
32
26
  */
@@ -123,10 +117,12 @@ function ColorPicker(_ref) {
123
117
  onChange
124
118
  } = _ref;
125
119
  const colors = (0, _data.useSelect)(select => {
120
+ var _getSettings$colors;
121
+
126
122
  const {
127
123
  getSettings
128
124
  } = select(_blockEditor.store);
129
- return (0, _lodash.get)(getSettings(), ['colors'], []);
125
+ return (_getSettings$colors = getSettings().colors) !== null && _getSettings$colors !== void 0 ? _getSettings$colors : [];
130
126
  }, []);
131
127
  const onColorChange = (0, _element.useCallback)(color => {
132
128
  onChange(setColors(value, name, colors, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/text-color/inline.js"],"names":["parseCSS","css","split","reduce","accumulator","rule","property","value","color","transparentValue","backgroundColor","parseClassName","className","colorSettings","name","startsWith","endsWith","colorSlug","replace","colorObject","getActiveColors","activeColorFormat","attributes","style","class","setColors","colors","styles","classNames","push","join","slug","length","type","ColorPicker","onChange","select","getSettings","blockEditorStore","onColorChange","activeColors","InlineColorUI","onClose","contentRef","anchorRef","ref","settings","title","tab"],"mappings":";;;;;;;;;AAQA;;AALA;;AAMA;;AACA;;AAMA;;AAQA;;AACA;;AAKA;;AA9BA;AACA;AACA;;AAGA;AACA;AACA;;AAoBA;AACA;AACA;AAGA,SAASA,QAAT,GAA8B;AAAA,MAAXC,GAAW,uEAAL,EAAK;AAC7B,SAAOA,GAAG,CAACC,KAAJ,CAAW,GAAX,EAAiBC,MAAjB,CAAyB,CAAEC,WAAF,EAAeC,IAAf,KAAyB;AACxD,QAAKA,IAAL,EAAY;AACX,YAAM,CAAEC,QAAF,EAAYC,KAAZ,IAAsBF,IAAI,CAACH,KAAL,CAAY,GAAZ,CAA5B;AACA,UAAKI,QAAQ,KAAK,OAAlB,EAA4BF,WAAW,CAACI,KAAZ,GAAoBD,KAApB;AAC5B,UAAKD,QAAQ,KAAK,kBAAb,IAAmCC,KAAK,KAAKE,uBAAlD,EACCL,WAAW,CAACM,eAAZ,GAA8BH,KAA9B;AACD;;AACD,WAAOH,WAAP;AACA,GARM,EAQJ,EARI,CAAP;AASA;;AAEM,SAASO,cAAT,GAAyD;AAAA,MAAhCC,SAAgC,uEAApB,EAAoB;AAAA,MAAhBC,aAAgB;AAC/D,SAAOD,SAAS,CAACV,KAAV,CAAiB,GAAjB,EAAuBC,MAAvB,CAA+B,CAAEC,WAAF,EAAeU,IAAf,KAAyB;AAC9D;AACA,QAAKA,IAAI,CAACC,UAAL,CAAiB,MAAjB,KAA6BD,IAAI,CAACE,QAAL,CAAe,QAAf,CAAlC,EAA8D;AAC7D,YAAMC,SAAS,GAAGH,IAAI,CACpBI,OADgB,CACP,OADO,EACE,EADF,EAEhBA,OAFgB,CAEP,SAFO,EAEI,EAFJ,CAAlB;AAGA,YAAMC,WAAW,GAAG,kDACnBN,aADmB,EAEnBI,SAFmB,CAApB;AAIAb,MAAAA,WAAW,CAACI,KAAZ,GAAoBW,WAAW,CAACX,KAAhC;AACA;;AACD,WAAOJ,WAAP;AACA,GAbM,EAaJ,EAbI,CAAP;AAcA;;AAEM,SAASgB,eAAT,CAA0Bb,KAA1B,EAAiCO,IAAjC,EAAuCD,aAAvC,EAAuD;AAC7D,QAAMQ,iBAAiB,GAAG,+BAAiBd,KAAjB,EAAwBO,IAAxB,CAA1B;;AAEA,MAAK,CAAEO,iBAAP,EAA2B;AAC1B,WAAO,EAAP;AACA;;AAED,SAAO,EACN,GAAGrB,QAAQ,CAAEqB,iBAAiB,CAACC,UAAlB,CAA6BC,KAA/B,CADL;AAEN,OAAGZ,cAAc,CAAEU,iBAAiB,CAACC,UAAlB,CAA6BE,KAA/B,EAAsCX,aAAtC;AAFX,GAAP;AAIA;;AAED,SAASY,SAAT,CAAoBlB,KAApB,EAA2BO,IAA3B,EAAiCD,aAAjC,EAAgDa,MAAhD,EAAyD;AACxD,QAAM;AAAElB,IAAAA,KAAF;AAASE,IAAAA;AAAT,MAA6B,EAClC,GAAGU,eAAe,CAAEb,KAAF,EAASO,IAAT,EAAeD,aAAf,CADgB;AAElC,OAAGa;AAF+B,GAAnC;;AAKA,MAAK,CAAElB,KAAF,IAAW,CAAEE,eAAlB,EAAoC;AACnC,WAAO,4BAAcH,KAAd,EAAqBO,IAArB,CAAP;AACA;;AAED,QAAMa,MAAM,GAAG,EAAf;AACA,QAAMC,UAAU,GAAG,EAAnB;AACA,QAAMN,UAAU,GAAG,EAAnB;;AAEA,MAAKZ,eAAL,EAAuB;AACtBiB,IAAAA,MAAM,CAACE,IAAP,CAAa,CAAE,kBAAF,EAAsBnB,eAAtB,EAAwCoB,IAAxC,CAA8C,GAA9C,CAAb;AACA,GAFD,MAEO;AACN;AACAH,IAAAA,MAAM,CAACE,IAAP,CAAa,CAAE,kBAAF,EAAsBpB,uBAAtB,EAAyCqB,IAAzC,CAA+C,GAA/C,CAAb;AACA;;AAED,MAAKtB,KAAL,EAAa;AACZ,UAAMW,WAAW,GAAG,6CAA4BN,aAA5B,EAA2CL,KAA3C,CAApB;;AAEA,QAAKW,WAAL,EAAmB;AAClBS,MAAAA,UAAU,CAACC,IAAX,CAAiB,oCAAmB,OAAnB,EAA4BV,WAAW,CAACY,IAAxC,CAAjB;AACA,KAFD,MAEO;AACNJ,MAAAA,MAAM,CAACE,IAAP,CAAa,CAAE,OAAF,EAAWrB,KAAX,EAAmBsB,IAAnB,CAAyB,GAAzB,CAAb;AACA;AACD;;AAED,MAAKH,MAAM,CAACK,MAAZ,EAAqBV,UAAU,CAACC,KAAX,GAAmBI,MAAM,CAACG,IAAP,CAAa,GAAb,CAAnB;AACrB,MAAKF,UAAU,CAACI,MAAhB,EAAyBV,UAAU,CAACE,KAAX,GAAmBI,UAAU,CAACE,IAAX,CAAiB,GAAjB,CAAnB;AAEzB,SAAO,2BAAavB,KAAb,EAAoB;AAAE0B,IAAAA,IAAI,EAAEnB,IAAR;AAAcQ,IAAAA;AAAd,GAApB,CAAP;AACA;;AAED,SAASY,WAAT,OAA4D;AAAA,MAAtC;AAAEpB,IAAAA,IAAF;AAAQR,IAAAA,QAAR;AAAkBC,IAAAA,KAAlB;AAAyB4B,IAAAA;AAAzB,GAAsC;AAC3D,QAAMT,MAAM,GAAG,qBAAaU,MAAF,IAAc;AACvC,UAAM;AAAEC,MAAAA;AAAF,QAAkBD,MAAM,CAAEE,kBAAF,CAA9B;AACA,WAAO,iBAAKD,WAAW,EAAhB,EAAoB,CAAE,QAAF,CAApB,EAAkC,EAAlC,CAAP;AACA,GAHc,EAGZ,EAHY,CAAf;AAIA,QAAME,aAAa,GAAG,0BACnB/B,KAAF,IAAa;AACZ2B,IAAAA,QAAQ,CACPV,SAAS,CAAElB,KAAF,EAASO,IAAT,EAAeY,MAAf,EAAuB;AAAE,OAAEpB,QAAF,GAAcE;AAAhB,KAAvB,CADF,CAAR;AAGA,GALoB,EAMrB,CAAEkB,MAAF,EAAUS,QAAV,EAAoB7B,QAApB,CANqB,CAAtB;AAQA,QAAMkC,YAAY,GAAG,sBACpB,MAAMpB,eAAe,CAAEb,KAAF,EAASO,IAAT,EAAeY,MAAf,CADD,EAEpB,CAAEZ,IAAF,EAAQP,KAAR,EAAemB,MAAf,CAFoB,CAArB;AAKA,SACC,4BAAC,yBAAD;AACC,IAAA,KAAK,EAAGc,YAAY,CAAElC,QAAF,CADrB;AAEC,IAAA,QAAQ,EAAGiC;AAFZ,IADD;AAMA;;AAEc,SAASE,aAAT,QAMX;AAAA,MANmC;AACtC3B,IAAAA,IADsC;AAEtCP,IAAAA,KAFsC;AAGtC4B,IAAAA,QAHsC;AAItCO,IAAAA,OAJsC;AAKtCC,IAAAA;AALsC,GAMnC;;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACC,QAAMC,SAAS,GAAG,kCACjB,4BAAc;AAAEC,IAAAA,GAAG,EAAEF,UAAP;AAAmBpC,IAAAA,KAAnB;AAA0BuC,IAAAA,QAAQ,EAARA;AAA1B,GAAd,CADiB,CAAlB;AAIA,SACC,4BAAC,mBAAD;AACC,IAAA,OAAO,EAAGJ,OADX;AAEC,IAAA,SAAS,EAAC,iCAFX;AAGC,IAAA,SAAS,EAAGE;AAHb,KAKC,4BAAC,oBAAD;AACC,IAAA,IAAI,EAAG,CACN;AACC9B,MAAAA,IAAI,EAAE,OADP;AAECiC,MAAAA,KAAK,EAAE,cAAI,MAAJ;AAFR,KADM,EAKN;AACCjC,MAAAA,IAAI,EAAE,iBADP;AAECiC,MAAAA,KAAK,EAAE,cAAI,YAAJ;AAFR,KALM;AADR,KAYKC,GAAF,IACD,4BAAC,WAAD;AACC,IAAA,IAAI,EAAGlC,IADR;AAEC,IAAA,QAAQ,EAAGkC,GAAG,CAAClC,IAFhB;AAGC,IAAA,KAAK,EAAGP,KAHT;AAIC,IAAA,QAAQ,EAAG4B;AAJZ,IAbF,CALD,CADD;AA6BA","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchorRef,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n\tuseCachedTruthy,\n} from '@wordpress/block-editor';\nimport { Popover, TabPanel } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\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' ) accumulator.color = value;\n\t\t\tif ( property === 'background-color' && value !== transparentValue )\n\t\t\t\taccumulator.backgroundColor = value;\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 ) attributes.style = styles.join( ';' );\n\tif ( classNames.length ) attributes.class = classNames.join( ' ' );\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 get( getSettings(), [ 'colors' ], [] );\n\t}, [] );\n\tconst onColorChange = useCallback(\n\t\t( color ) => {\n\t\t\tonChange(\n\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t);\n\t\t},\n\t\t[ colors, onChange, property ]\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={ onColorChange }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n} ) {\n\t/* \n\t As you change the text color by typing a HEX value into a field,\n\t the return value of document.getSelection jumps to the field you're editing,\n\t not the highlighted text. Given that useAnchorRef uses document.getSelection,\n\t it will return null, since it can't find the <mark> element within the HEX input.\n\t This caches the last truthy value of the selection anchor reference.\n\t */\n\tconst anchorRef = useCachedTruthy(\n\t\tuseAnchorRef( { ref: contentRef, value, settings } )\n\t);\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"components-inline-color-popover\"\n\t\t\tanchorRef={ anchorRef }\n\t\t>\n\t\t\t<TabPanel\n\t\t\t\ttabs={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'color',\n\t\t\t\t\t\ttitle: __( 'Text' ),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'backgroundColor',\n\t\t\t\t\t\ttitle: __( 'Background' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</TabPanel>\n\t\t</Popover>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/text-color/inline.js"],"names":["parseCSS","css","split","reduce","accumulator","rule","property","value","color","transparentValue","backgroundColor","parseClassName","className","colorSettings","name","startsWith","endsWith","colorSlug","replace","colorObject","getActiveColors","activeColorFormat","attributes","style","class","setColors","colors","styles","classNames","push","join","slug","length","type","ColorPicker","onChange","select","getSettings","blockEditorStore","onColorChange","activeColors","InlineColorUI","onClose","contentRef","anchorRef","ref","settings","title","tab"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchorRef,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n\tuseCachedTruthy,\n} from '@wordpress/block-editor';\nimport { Popover, TabPanel } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\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' ) accumulator.color = value;\n\t\t\tif ( property === 'background-color' && value !== transparentValue )\n\t\t\t\taccumulator.backgroundColor = value;\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 ) attributes.style = styles.join( ';' );\n\tif ( classNames.length ) attributes.class = classNames.join( ' ' );\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 onColorChange = useCallback(\n\t\t( color ) => {\n\t\t\tonChange(\n\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t);\n\t\t},\n\t\t[ colors, onChange, property ]\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={ onColorChange }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n} ) {\n\t/* \n\t As you change the text color by typing a HEX value into a field,\n\t the return value of document.getSelection jumps to the field you're editing,\n\t not the highlighted text. Given that useAnchorRef uses document.getSelection,\n\t it will return null, since it can't find the <mark> element within the HEX input.\n\t This caches the last truthy value of the selection anchor reference.\n\t */\n\tconst anchorRef = useCachedTruthy(\n\t\tuseAnchorRef( { ref: contentRef, value, settings } )\n\t);\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"components-inline-color-popover\"\n\t\t\tanchorRef={ anchorRef }\n\t\t>\n\t\t\t<TabPanel\n\t\t\t\ttabs={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'color',\n\t\t\t\t\t\ttitle: __( 'Text' ),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'backgroundColor',\n\t\t\t\t\t\ttitle: __( 'Background' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</TabPanel>\n\t\t</Popover>\n\t);\n}\n"]}
@@ -3,7 +3,6 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  /**
4
4
  * External dependencies
5
5
  */
6
- import { find } from 'lodash';
7
6
  import Clipboard from '@react-native-clipboard/clipboard';
8
7
  /**
9
8
  * WordPress dependencies
@@ -90,13 +89,17 @@ export const link = {
90
89
  let startIndex = value.start;
91
90
  let endIndex = value.end;
92
91
 
93
- while (find(value.formats[startIndex], startFormat)) {
92
+ while ((_value$formats$startI = value.formats[startIndex]) !== null && _value$formats$startI !== void 0 && _value$formats$startI.find(format => (format === null || format === void 0 ? void 0 : format.type) === startFormat.type)) {
93
+ var _value$formats$startI;
94
+
94
95
  startIndex--;
95
96
  }
96
97
 
97
98
  endIndex++;
98
99
 
99
- while (find(value.formats[endIndex], startFormat)) {
100
+ while ((_value$formats$endInd = value.formats[endIndex]) !== null && _value$formats$endInd !== void 0 && _value$formats$endInd.find(format => (format === null || format === void 0 ? void 0 : format.type) === startFormat.type)) {
101
+ var _value$formats$endInd;
102
+
100
103
  endIndex++;
101
104
  }
102
105
 
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/link/index.native.js"],"names":["find","Clipboard","__","Component","withSpokenMessages","RichTextToolbarButton","applyFormat","getActiveFormat","getTextContent","isCollapsed","removeFormat","slice","isURL","link","linkIcon","ModalLinkUI","isValidHref","name","title","tagName","className","attributes","url","target","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","speak","linkSelection","clipboardText","getString","render","activeAttributes"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { find } from 'lodash';\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},\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 ( find( value.formats[ startIndex ], startFormat ) ) {\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 ( find( value.formats[ endIndex ], startFormat ) ) {\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"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/link/index.native.js"],"names":["Clipboard","__","Component","withSpokenMessages","RichTextToolbarButton","applyFormat","getActiveFormat","getTextContent","isCollapsed","removeFormat","slice","isURL","link","linkIcon","ModalLinkUI","isValidHref","name","title","tagName","className","attributes","url","target","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"],"mappings":"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","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},\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"]}
@@ -195,7 +195,7 @@ function InlineLinkUI(_ref) {
195
195
  focusOnMount: focusOnMount.current,
196
196
  onClose: stopAddingLink,
197
197
  position: "bottom center",
198
- __unstableShift: true
198
+ shift: true
199
199
  }, createElement(LinkControl, {
200
200
  key: forceRemountKey,
201
201
  value: linkValue,
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/link/inline.js"],"names":["useState","useRef","createInterpolateElement","__","sprintf","withSpokenMessages","Popover","prependHTTP","create","insert","isCollapsed","applyFormat","useAnchorRef","removeFormat","slice","replace","__experimentalLinkControl","LinkControl","store","blockEditorStore","useSelect","createLinkFormat","isValidHref","getFormatBoundary","link","settings","useLinkInstanceKey","InlineLinkUI","isActive","activeAttributes","addingLink","value","onChange","speak","stopAddingLink","contentRef","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","nextLinkValue","setNextLinkValue","createPageEntity","userCanCreatePages","select","getSettings","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","id","opensInNewTab","target","title","removeLink","newValue","onChangeLink","nextValue","didToggleSetting","didToggleSettingForNewLink","undefined","newUrl","linkFormat","String","opensInNewWindow","newText","toInsert","length","start","end","activeFormats","anchorRef","ref","forceRemountKey","focusOnMount","handleCreate","pageTitle","page","status","rendered","kind","createButtonText","searchTerm","mark","current","textStart","textEnd","boundary"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useRef, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withSpokenMessages, Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tuseAnchorRef,\n\tremoveFormat,\n\tslice,\n\treplace,\n} from '@wordpress/rich-text';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref, getFormatBoundary } from './utils';\nimport { link as settings } from './index';\nimport useLinkInstanceKey from './use-link-instance-key';\n\nfunction InlineLinkUI( {\n\tisActive,\n\tactiveAttributes,\n\taddingLink,\n\tvalue,\n\tonChange,\n\tspeak,\n\tstopAddingLink,\n\tcontentRef,\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\t/**\n\t * Pending settings to be applied to the next link. When inserting a new\n\t * link, toggle values cannot be applied immediately, because there is not\n\t * yet a link for them to apply to. Thus, they are maintained in a state\n\t * value until the time that the link can be inserted or edited.\n\t *\n\t * @type {[Object|undefined,Function]}\n\t */\n\tconst [ nextLinkValue, setNextLinkValue ] = useState();\n\n\tconst { createPageEntity, userCanCreatePages } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\n\t\treturn {\n\t\t\tcreatePageEntity: _settings.__experimentalCreatePageEntity,\n\t\t\tuserCanCreatePages: _settings.__experimentalUserCanCreatePages,\n\t\t};\n\t}, [] );\n\n\tconst linkValue = {\n\t\turl: activeAttributes.url,\n\t\ttype: activeAttributes.type,\n\t\tid: activeAttributes.id,\n\t\topensInNewTab: activeAttributes.target === '_blank',\n\t\ttitle: richTextText,\n\t\t...nextLinkValue,\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\t// Merge with values from state, both for the purpose of assigning the\n\t\t// next state value, and for use in constructing the new link format if\n\t\t// the link is ready to be applied.\n\t\tnextValue = {\n\t\t\t...nextLinkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\t// LinkControl calls `onChange` immediately upon the toggling a setting.\n\t\tconst didToggleSetting =\n\t\t\tlinkValue.opensInNewTab !== nextValue.opensInNewTab &&\n\t\t\tlinkValue.url === nextValue.url;\n\n\t\t// If change handler was called as a result of a settings change during\n\t\t// link insertion, it must be held in state until the link is ready to\n\t\t// be applied.\n\t\tconst didToggleSettingForNewLink =\n\t\t\tdidToggleSetting && nextValue.url === undefined;\n\n\t\t// If link will be assigned, the state value can be considered flushed.\n\t\t// Otherwise, persist the pending changes.\n\t\tsetNextLinkValue( didToggleSettingForNewLink ? nextValue : undefined );\n\n\t\tif ( didToggleSettingForNewLink ) {\n\t\t\treturn;\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} );\n\n\t\tconst newText = nextValue.title || newUrl;\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 toInsert = applyFormat(\n\t\t\t\tcreate( { text: newText } ),\n\t\t\t\tlinkFormat,\n\t\t\t\t0,\n\t\t\t\tnewText.length\n\t\t\t);\n\t\t\tonChange( insert( value, toInsert ) );\n\t\t} else {\n\t\t\t// Scenario: we have any active text selection or an active format.\n\t\t\tlet newValue;\n\n\t\t\tif ( newText === richTextText ) {\n\t\t\t\t// If we're not updating the text then ignore.\n\t\t\t\tnewValue = applyFormat( value, linkFormat );\n\t\t\t} else {\n\t\t\t\t// Create new RichText value for the new text in order that we\n\t\t\t\t// can apply formats to it.\n\t\t\t\tnewValue = create( { text: newText } );\n\n\t\t\t\t// Apply the new Link format to this new text value.\n\t\t\t\tnewValue = applyFormat(\n\t\t\t\t\tnewValue,\n\t\t\t\t\tlinkFormat,\n\t\t\t\t\t0,\n\t\t\t\t\tnewText.length\n\t\t\t\t);\n\n\t\t\t\t// Update the original (full) RichTextValue replacing the\n\t\t\t\t// target text with the *new* RichTextValue containing:\n\t\t\t\t// 1. The new text content.\n\t\t\t\t// 2. The new link format.\n\t\t\t\t// Note original formats will be lost when applying this change.\n\t\t\t\t// That is expected behaviour.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/33849#issuecomment-936134179.\n\t\t\t\tnewValue = replace( value, richTextText, newValue );\n\t\t\t}\n\n\t\t\tnewValue.start = newValue.end;\n\t\t\tnewValue.activeFormats = [];\n\t\t\tonChange( newValue );\n\t\t}\n\n\t\t// Focus should only be shifted back to the formatted segment when the\n\t\t// URL is submitted.\n\t\tif ( ! didToggleSetting ) {\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 anchorRef = useAnchorRef( { ref: contentRef, value, settings } );\n\n\t// Generate a string based key that is unique to this anchor reference.\n\t// This is used to force re-mount the LinkControl component to avoid\n\t// potential stale state bugs caused by the component not being remounted\n\t// See https://github.com/WordPress/gutenberg/pull/34742.\n\tconst forceRemountKey = useLinkInstanceKey( anchorRef );\n\n\t// The focusOnMount prop shouldn't evolve during render of a Popover\n\t// otherwise it causes a render of the content.\n\tconst focusOnMount = useRef( addingLink ? 'firstElement' : false );\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\tanchorRef={ anchorRef }\n\t\t\tfocusOnMount={ focusOnMount.current }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tposition=\"bottom center\"\n\t\t\t__unstableShift\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\tkey={ forceRemountKey }\n\t\t\t\tvalue={ linkValue }\n\t\t\t\tonChange={ onChangeLink }\n\t\t\t\tonRemove={ removeLink }\n\t\t\t\tforceIsEditingLink={ addingLink }\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/>\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 withSpokenMessages( InlineLinkUI );\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/link/inline.js"],"names":["useState","useRef","createInterpolateElement","__","sprintf","withSpokenMessages","Popover","prependHTTP","create","insert","isCollapsed","applyFormat","useAnchorRef","removeFormat","slice","replace","__experimentalLinkControl","LinkControl","store","blockEditorStore","useSelect","createLinkFormat","isValidHref","getFormatBoundary","link","settings","useLinkInstanceKey","InlineLinkUI","isActive","activeAttributes","addingLink","value","onChange","speak","stopAddingLink","contentRef","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","nextLinkValue","setNextLinkValue","createPageEntity","userCanCreatePages","select","getSettings","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","id","opensInNewTab","target","title","removeLink","newValue","onChangeLink","nextValue","didToggleSetting","didToggleSettingForNewLink","undefined","newUrl","linkFormat","String","opensInNewWindow","newText","toInsert","length","start","end","activeFormats","anchorRef","ref","forceRemountKey","focusOnMount","handleCreate","pageTitle","page","status","rendered","kind","createButtonText","searchTerm","mark","current","textStart","textEnd","boundary"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useState, useRef, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { withSpokenMessages, Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tuseAnchorRef,\n\tremoveFormat,\n\tslice,\n\treplace,\n} from '@wordpress/rich-text';\nimport {\n\t__experimentalLinkControl as LinkControl,\n\tstore as blockEditorStore,\n} from '@wordpress/block-editor';\nimport { useSelect } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref, getFormatBoundary } from './utils';\nimport { link as settings } from './index';\nimport useLinkInstanceKey from './use-link-instance-key';\n\nfunction InlineLinkUI( {\n\tisActive,\n\tactiveAttributes,\n\taddingLink,\n\tvalue,\n\tonChange,\n\tspeak,\n\tstopAddingLink,\n\tcontentRef,\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\t/**\n\t * Pending settings to be applied to the next link. When inserting a new\n\t * link, toggle values cannot be applied immediately, because there is not\n\t * yet a link for them to apply to. Thus, they are maintained in a state\n\t * value until the time that the link can be inserted or edited.\n\t *\n\t * @type {[Object|undefined,Function]}\n\t */\n\tconst [ nextLinkValue, setNextLinkValue ] = useState();\n\n\tconst { createPageEntity, userCanCreatePages } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst _settings = getSettings();\n\n\t\treturn {\n\t\t\tcreatePageEntity: _settings.__experimentalCreatePageEntity,\n\t\t\tuserCanCreatePages: _settings.__experimentalUserCanCreatePages,\n\t\t};\n\t}, [] );\n\n\tconst linkValue = {\n\t\turl: activeAttributes.url,\n\t\ttype: activeAttributes.type,\n\t\tid: activeAttributes.id,\n\t\topensInNewTab: activeAttributes.target === '_blank',\n\t\ttitle: richTextText,\n\t\t...nextLinkValue,\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\t// Merge with values from state, both for the purpose of assigning the\n\t\t// next state value, and for use in constructing the new link format if\n\t\t// the link is ready to be applied.\n\t\tnextValue = {\n\t\t\t...nextLinkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\t// LinkControl calls `onChange` immediately upon the toggling a setting.\n\t\tconst didToggleSetting =\n\t\t\tlinkValue.opensInNewTab !== nextValue.opensInNewTab &&\n\t\t\tlinkValue.url === nextValue.url;\n\n\t\t// If change handler was called as a result of a settings change during\n\t\t// link insertion, it must be held in state until the link is ready to\n\t\t// be applied.\n\t\tconst didToggleSettingForNewLink =\n\t\t\tdidToggleSetting && nextValue.url === undefined;\n\n\t\t// If link will be assigned, the state value can be considered flushed.\n\t\t// Otherwise, persist the pending changes.\n\t\tsetNextLinkValue( didToggleSettingForNewLink ? nextValue : undefined );\n\n\t\tif ( didToggleSettingForNewLink ) {\n\t\t\treturn;\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} );\n\n\t\tconst newText = nextValue.title || newUrl;\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 toInsert = applyFormat(\n\t\t\t\tcreate( { text: newText } ),\n\t\t\t\tlinkFormat,\n\t\t\t\t0,\n\t\t\t\tnewText.length\n\t\t\t);\n\t\t\tonChange( insert( value, toInsert ) );\n\t\t} else {\n\t\t\t// Scenario: we have any active text selection or an active format.\n\t\t\tlet newValue;\n\n\t\t\tif ( newText === richTextText ) {\n\t\t\t\t// If we're not updating the text then ignore.\n\t\t\t\tnewValue = applyFormat( value, linkFormat );\n\t\t\t} else {\n\t\t\t\t// Create new RichText value for the new text in order that we\n\t\t\t\t// can apply formats to it.\n\t\t\t\tnewValue = create( { text: newText } );\n\n\t\t\t\t// Apply the new Link format to this new text value.\n\t\t\t\tnewValue = applyFormat(\n\t\t\t\t\tnewValue,\n\t\t\t\t\tlinkFormat,\n\t\t\t\t\t0,\n\t\t\t\t\tnewText.length\n\t\t\t\t);\n\n\t\t\t\t// Update the original (full) RichTextValue replacing the\n\t\t\t\t// target text with the *new* RichTextValue containing:\n\t\t\t\t// 1. The new text content.\n\t\t\t\t// 2. The new link format.\n\t\t\t\t// Note original formats will be lost when applying this change.\n\t\t\t\t// That is expected behaviour.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/pull/33849#issuecomment-936134179.\n\t\t\t\tnewValue = replace( value, richTextText, newValue );\n\t\t\t}\n\n\t\t\tnewValue.start = newValue.end;\n\t\t\tnewValue.activeFormats = [];\n\t\t\tonChange( newValue );\n\t\t}\n\n\t\t// Focus should only be shifted back to the formatted segment when the\n\t\t// URL is submitted.\n\t\tif ( ! didToggleSetting ) {\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 anchorRef = useAnchorRef( { ref: contentRef, value, settings } );\n\n\t// Generate a string based key that is unique to this anchor reference.\n\t// This is used to force re-mount the LinkControl component to avoid\n\t// potential stale state bugs caused by the component not being remounted\n\t// See https://github.com/WordPress/gutenberg/pull/34742.\n\tconst forceRemountKey = useLinkInstanceKey( anchorRef );\n\n\t// The focusOnMount prop shouldn't evolve during render of a Popover\n\t// otherwise it causes a render of the content.\n\tconst focusOnMount = useRef( addingLink ? 'firstElement' : false );\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\tanchorRef={ anchorRef }\n\t\t\tfocusOnMount={ focusOnMount.current }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tposition=\"bottom center\"\n\t\t\tshift\n\t\t>\n\t\t\t<LinkControl\n\t\t\t\tkey={ forceRemountKey }\n\t\t\t\tvalue={ linkValue }\n\t\t\t\tonChange={ onChangeLink }\n\t\t\t\tonRemove={ removeLink }\n\t\t\t\tforceIsEditingLink={ addingLink }\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/>\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 withSpokenMessages( InlineLinkUI );\n"]}
@@ -1,13 +1,8 @@
1
1
  import { createElement, Fragment } from "@wordpress/element";
2
2
 
3
- /**
4
- * External dependencies
5
- */
6
- import { isEmpty } from 'lodash';
7
3
  /**
8
4
  * WordPress dependencies
9
5
  */
10
-
11
6
  import { __ } from '@wordpress/i18n';
12
7
  import { useCallback, useMemo, useState } from '@wordpress/element';
13
8
  import { RichTextToolbarButton, useSetting } from '@wordpress/block-editor';
@@ -72,7 +67,7 @@ function TextColorEdit(_ref2) {
72
67
  const enableIsAddingColor = useCallback(() => setIsAddingColor(true), [setIsAddingColor]);
73
68
  const disableIsAddingColor = useCallback(() => setIsAddingColor(false), [setIsAddingColor]);
74
69
  const colorIndicatorStyle = useMemo(() => fillComputedColors(contentRef.current, getActiveColors(value, name, colors)), [value, colors]);
75
- const hasColorsToChoose = !isEmpty(colors) || !allowCustomControl;
70
+ const hasColorsToChoose = colors.length || !allowCustomControl;
76
71
 
77
72
  if (!hasColorsToChoose && !isActive) {
78
73
  return null;
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/text-color/index.js"],"names":["isEmpty","__","useCallback","useMemo","useState","RichTextToolbarButton","useSetting","Icon","textColor","textColorIcon","removeFormat","default","InlineColorUI","getActiveColors","transparentValue","name","title","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","color","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","current","hasColorsToChoose","tagName","className","attributes","class","__unstableFilterAttributeValue","key","includes","addedCSS","join","edit"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSetting } from '@wordpress/block-editor';\nimport { Icon, textColor as textColorIcon } 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 = useSetting( 'color.custom' );\n\tconst colors = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = ! isEmpty( colors ) || ! 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={ textColorIcon }\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? enableIsAddingColor\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We should not add a background-color if it's already set.\n\t\tif ( value && value.includes( 'background-color' ) ) return value;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn value ? [ addedCSS, value ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/text-color/index.js"],"names":["__","useCallback","useMemo","useState","RichTextToolbarButton","useSetting","Icon","textColor","textColorIcon","removeFormat","default","InlineColorUI","getActiveColors","transparentValue","name","title","EMPTY_ARRAY","getComputedStyleProperty","element","property","ownerDocument","defaultView","style","getComputedStyle","value","getPropertyValue","parentElement","fillComputedColors","color","backgroundColor","TextColorEdit","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","current","hasColorsToChoose","length","tagName","className","attributes","class","__unstableFilterAttributeValue","key","includes","addedCSS","join","edit"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { RichTextToolbarButton, useSetting } from '@wordpress/block-editor';\nimport { Icon, textColor as textColorIcon } 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 = useSetting( 'color.custom' );\n\tconst colors = useSetting( 'color.palette' ) || EMPTY_ARRAY;\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ 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={ textColorIcon }\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? enableIsAddingColor\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We should not add a background-color if it's already set.\n\t\tif ( value && value.includes( 'background-color' ) ) return value;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn value ? [ addedCSS, value ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
@@ -3,7 +3,6 @@ import { createElement, Fragment } from "@wordpress/element";
3
3
  /**
4
4
  * External dependencies
5
5
  */
6
- import { isEmpty } from 'lodash';
7
6
  import { View } from 'react-native';
8
7
  /**
9
8
  * WordPress dependencies
@@ -85,7 +84,7 @@ function TextColorEdit(_ref2) {
85
84
  const enableIsAddingColor = useCallback(() => setIsAddingColor(true), [setIsAddingColor]);
86
85
  const disableIsAddingColor = useCallback(() => setIsAddingColor(false), [setIsAddingColor]);
87
86
  const colorIndicatorStyle = useMemo(() => fillComputedColors(contentRef, getActiveColors(value, name, colors)), [value, colors]);
88
- const hasColorsToChoose = !isEmpty(colors) || !allowCustomControl;
87
+ const hasColorsToChoose = colors.length || !allowCustomControl;
89
88
  const onPressButton = useCallback(() => {
90
89
  if (hasColorsToChoose) {
91
90
  enableIsAddingColor();
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/text-color/index.native.js"],"names":["isEmpty","View","__","useCallback","useMemo","useState","BlockControls","useSetting","ToolbarGroup","ToolbarButton","useMobileGlobalStylesColors","Icon","textColor","textColorIcon","removeFormat","usePreferredColorSchemeStyle","getActiveColors","transparentValue","default","InlineColorUI","styles","name","title","getComputedStyleProperty","element","property","props","style","backgroundColor","baseColors","color","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","hasColorsToChoose","onPressButton","outlineStyle","isActiveStyle","customContainerStyles","tagName","className","attributes","class","__unstableFilterAttributeValue","key","newValue","replace","includes","addedCSS","join","edit"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { isEmpty } from 'lodash';\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { BlockControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport { Icon, textColor as textColorIcon } from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.js';\nimport { transparentValue } from './index.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 {\n\t\tprops: { style = {} },\n\t} = element;\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 = useSetting( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = ! isEmpty( colors ) || ! allowCustomControl;\n\n\tconst onPressButton = useCallback( () => {\n\t\tif ( hasColorsToChoose ) {\n\t\t\tenableIsAddingColor();\n\t\t} else {\n\t\t\tonChange( removeFormat( value, name ) );\n\t\t}\n\t}, [ hasColorsToChoose, value ] );\n\n\tconst outlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles[ 'components-inline-color__outline' ],\n\t\tstyles[ 'components-inline-color__outline--dark' ]\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={ textColorIcon }\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={ onPressButton }\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We need to remove the extra spaces within the styles on mobile\n\t\tconst newValue = value?.replace( / /g, '' );\n\t\t// We should not add a background-color if it's already set\n\t\tif ( newValue && newValue.includes( 'background-color' ) )\n\t\t\treturn newValue;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn newValue ? [ addedCSS, newValue ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/text-color/index.native.js"],"names":["View","__","useCallback","useMemo","useState","BlockControls","useSetting","ToolbarGroup","ToolbarButton","useMobileGlobalStylesColors","Icon","textColor","textColorIcon","removeFormat","usePreferredColorSchemeStyle","getActiveColors","transparentValue","default","InlineColorUI","styles","name","title","getComputedStyleProperty","element","property","props","style","backgroundColor","baseColors","color","background","fillComputedColors","TextColorEdit","value","onChange","isActive","activeAttributes","contentRef","allowCustomControl","colors","isAddingColor","setIsAddingColor","enableIsAddingColor","disableIsAddingColor","colorIndicatorStyle","hasColorsToChoose","length","onPressButton","outlineStyle","isActiveStyle","customContainerStyles","tagName","className","attributes","class","__unstableFilterAttributeValue","key","newValue","replace","includes","addedCSS","join","edit"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { View } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useCallback, useMemo, useState } from '@wordpress/element';\nimport { BlockControls, useSetting } from '@wordpress/block-editor';\nimport {\n\tToolbarGroup,\n\tToolbarButton,\n\tuseMobileGlobalStylesColors,\n} from '@wordpress/components';\nimport { Icon, textColor as textColorIcon } from '@wordpress/icons';\nimport { removeFormat } from '@wordpress/rich-text';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport { getActiveColors } from './inline.js';\nimport { transparentValue } from './index.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 {\n\t\tprops: { style = {} },\n\t} = element;\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 = useSetting( 'color.custom' );\n\tconst colors = useMobileGlobalStylesColors();\n\tconst [ isAddingColor, setIsAddingColor ] = useState( false );\n\tconst enableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( true ),\n\t\t[ setIsAddingColor ]\n\t);\n\tconst disableIsAddingColor = useCallback(\n\t\t() => setIsAddingColor( false ),\n\t\t[ setIsAddingColor ]\n\t);\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[ value, colors ]\n\t);\n\n\tconst hasColorsToChoose = colors.length || ! allowCustomControl;\n\n\tconst onPressButton = useCallback( () => {\n\t\tif ( hasColorsToChoose ) {\n\t\t\tenableIsAddingColor();\n\t\t} else {\n\t\t\tonChange( removeFormat( value, name ) );\n\t\t}\n\t}, [ hasColorsToChoose, value ] );\n\n\tconst outlineStyle = usePreferredColorSchemeStyle(\n\t\tstyles[ 'components-inline-color__outline' ],\n\t\tstyles[ 'components-inline-color__outline--dark' ]\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={ textColorIcon }\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={ onPressButton }\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={ disableIsAddingColor }\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\t/*\n\t * Since this format relies on the <mark> tag, it's important to\n\t * prevent the default yellow background color applied by most\n\t * browsers. The solution is to detect when this format is used with a\n\t * text color but no background color, and in such cases to override\n\t * the default styling with a transparent background.\n\t *\n\t * @see https://github.com/WordPress/gutenberg/pull/35516\n\t */\n\t__unstableFilterAttributeValue( key, value ) {\n\t\tif ( key !== 'style' ) return value;\n\t\t// We need to remove the extra spaces within the styles on mobile\n\t\tconst newValue = value?.replace( / /g, '' );\n\t\t// We should not add a background-color if it's already set\n\t\tif ( newValue && newValue.includes( 'background-color' ) )\n\t\t\treturn newValue;\n\t\tconst addedCSS = [ 'background-color', transparentValue ].join( ':' );\n\t\t// Prepend `addedCSS` to avoid a double `;;` as any the existing CSS\n\t\t// rules will already include a `;`.\n\t\treturn newValue ? [ addedCSS, newValue ].join( ';' ) : addedCSS;\n\t},\n\tedit: TextColorEdit,\n};\n"]}
@@ -1,13 +1,8 @@
1
1
  import { createElement } from "@wordpress/element";
2
2
 
3
- /**
4
- * External dependencies
5
- */
6
- import { get } from 'lodash';
7
3
  /**
8
4
  * WordPress dependencies
9
5
  */
10
-
11
6
  import { useCallback, useMemo } from '@wordpress/element';
12
7
  import { useSelect } from '@wordpress/data';
13
8
  import { applyFormat, removeFormat, getActiveFormat, useAnchorRef } from '@wordpress/rich-text';
@@ -108,10 +103,12 @@ function ColorPicker(_ref) {
108
103
  onChange
109
104
  } = _ref;
110
105
  const colors = useSelect(select => {
106
+ var _getSettings$colors;
107
+
111
108
  const {
112
109
  getSettings
113
110
  } = select(blockEditorStore);
114
- return get(getSettings(), ['colors'], []);
111
+ return (_getSettings$colors = getSettings().colors) !== null && _getSettings$colors !== void 0 ? _getSettings$colors : [];
115
112
  }, []);
116
113
  const onColorChange = useCallback(color => {
117
114
  onChange(setColors(value, name, colors, {
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/text-color/inline.js"],"names":["get","useCallback","useMemo","useSelect","applyFormat","removeFormat","getActiveFormat","useAnchorRef","ColorPalette","getColorClassName","getColorObjectByColorValue","getColorObjectByAttributeValues","store","blockEditorStore","useCachedTruthy","Popover","TabPanel","__","textColor","settings","transparentValue","parseCSS","css","split","reduce","accumulator","rule","property","value","color","backgroundColor","parseClassName","className","colorSettings","name","startsWith","endsWith","colorSlug","replace","colorObject","getActiveColors","activeColorFormat","attributes","style","class","setColors","colors","styles","classNames","push","join","slug","length","type","ColorPicker","onChange","select","getSettings","onColorChange","activeColors","InlineColorUI","onClose","contentRef","anchorRef","ref","title","tab"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { get } from 'lodash';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchorRef,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n\tuseCachedTruthy,\n} from '@wordpress/block-editor';\nimport { Popover, TabPanel } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\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' ) accumulator.color = value;\n\t\t\tif ( property === 'background-color' && value !== transparentValue )\n\t\t\t\taccumulator.backgroundColor = value;\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 ) attributes.style = styles.join( ';' );\n\tif ( classNames.length ) attributes.class = classNames.join( ' ' );\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 get( getSettings(), [ 'colors' ], [] );\n\t}, [] );\n\tconst onColorChange = useCallback(\n\t\t( color ) => {\n\t\t\tonChange(\n\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t);\n\t\t},\n\t\t[ colors, onChange, property ]\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={ onColorChange }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n} ) {\n\t/* \n\t As you change the text color by typing a HEX value into a field,\n\t the return value of document.getSelection jumps to the field you're editing,\n\t not the highlighted text. Given that useAnchorRef uses document.getSelection,\n\t it will return null, since it can't find the <mark> element within the HEX input.\n\t This caches the last truthy value of the selection anchor reference.\n\t */\n\tconst anchorRef = useCachedTruthy(\n\t\tuseAnchorRef( { ref: contentRef, value, settings } )\n\t);\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"components-inline-color-popover\"\n\t\t\tanchorRef={ anchorRef }\n\t\t>\n\t\t\t<TabPanel\n\t\t\t\ttabs={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'color',\n\t\t\t\t\t\ttitle: __( 'Text' ),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'backgroundColor',\n\t\t\t\t\t\ttitle: __( 'Background' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</TabPanel>\n\t\t</Popover>\n\t);\n}\n"]}
1
+ {"version":3,"sources":["@wordpress/format-library/src/text-color/inline.js"],"names":["useCallback","useMemo","useSelect","applyFormat","removeFormat","getActiveFormat","useAnchorRef","ColorPalette","getColorClassName","getColorObjectByColorValue","getColorObjectByAttributeValues","store","blockEditorStore","useCachedTruthy","Popover","TabPanel","__","textColor","settings","transparentValue","parseCSS","css","split","reduce","accumulator","rule","property","value","color","backgroundColor","parseClassName","className","colorSettings","name","startsWith","endsWith","colorSlug","replace","colorObject","getActiveColors","activeColorFormat","attributes","style","class","setColors","colors","styles","classNames","push","join","slug","length","type","ColorPicker","onChange","select","getSettings","onColorChange","activeColors","InlineColorUI","onClose","contentRef","anchorRef","ref","title","tab"],"mappings":"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","sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useCallback, useMemo } from '@wordpress/element';\nimport { useSelect } from '@wordpress/data';\nimport {\n\tapplyFormat,\n\tremoveFormat,\n\tgetActiveFormat,\n\tuseAnchorRef,\n} from '@wordpress/rich-text';\nimport {\n\tColorPalette,\n\tgetColorClassName,\n\tgetColorObjectByColorValue,\n\tgetColorObjectByAttributeValues,\n\tstore as blockEditorStore,\n\tuseCachedTruthy,\n} from '@wordpress/block-editor';\nimport { Popover, TabPanel } from '@wordpress/components';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport { textColor as settings, transparentValue } from './index';\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' ) accumulator.color = value;\n\t\t\tif ( property === 'background-color' && value !== transparentValue )\n\t\t\t\taccumulator.backgroundColor = value;\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 ) attributes.style = styles.join( ';' );\n\tif ( classNames.length ) attributes.class = classNames.join( ' ' );\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 onColorChange = useCallback(\n\t\t( color ) => {\n\t\t\tonChange(\n\t\t\t\tsetColors( value, name, colors, { [ property ]: color } )\n\t\t\t);\n\t\t},\n\t\t[ colors, onChange, property ]\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={ onColorChange }\n\t\t/>\n\t);\n}\n\nexport default function InlineColorUI( {\n\tname,\n\tvalue,\n\tonChange,\n\tonClose,\n\tcontentRef,\n} ) {\n\t/* \n\t As you change the text color by typing a HEX value into a field,\n\t the return value of document.getSelection jumps to the field you're editing,\n\t not the highlighted text. Given that useAnchorRef uses document.getSelection,\n\t it will return null, since it can't find the <mark> element within the HEX input.\n\t This caches the last truthy value of the selection anchor reference.\n\t */\n\tconst anchorRef = useCachedTruthy(\n\t\tuseAnchorRef( { ref: contentRef, value, settings } )\n\t);\n\n\treturn (\n\t\t<Popover\n\t\t\tonClose={ onClose }\n\t\t\tclassName=\"components-inline-color-popover\"\n\t\t\tanchorRef={ anchorRef }\n\t\t>\n\t\t\t<TabPanel\n\t\t\t\ttabs={ [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'color',\n\t\t\t\t\t\ttitle: __( 'Text' ),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'backgroundColor',\n\t\t\t\t\t\ttitle: __( 'Background' ),\n\t\t\t\t\t},\n\t\t\t\t] }\n\t\t\t>\n\t\t\t\t{ ( tab ) => (\n\t\t\t\t\t<ColorPicker\n\t\t\t\t\t\tname={ name }\n\t\t\t\t\t\tproperty={ tab.name }\n\t\t\t\t\t\tvalue={ value }\n\t\t\t\t\t\tonChange={ onChange }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</TabPanel>\n\t\t</Popover>\n\t);\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wordpress/format-library",
3
- "version": "3.14.1-next.957ca95e4c.0",
3
+ "version": "3.15.0",
4
4
  "description": "Format library for the WordPress editor.",
5
5
  "author": "The WordPress Contributors",
6
6
  "license": "GPL-2.0-or-later",
@@ -26,18 +26,17 @@
26
26
  "react-native": "src/index",
27
27
  "dependencies": {
28
28
  "@babel/runtime": "^7.16.0",
29
- "@wordpress/a11y": "^3.16.1-next.957ca95e4c.0",
30
- "@wordpress/block-editor": "^9.8.1-next.957ca95e4c.0",
31
- "@wordpress/components": "^20.0.2-next.957ca95e4c.0",
32
- "@wordpress/compose": "^5.14.1-next.957ca95e4c.0",
33
- "@wordpress/data": "^7.0.1-next.957ca95e4c.0",
34
- "@wordpress/element": "^4.14.1-next.957ca95e4c.0",
35
- "@wordpress/html-entities": "^3.16.1-next.957ca95e4c.0",
36
- "@wordpress/i18n": "^4.16.1-next.957ca95e4c.0",
37
- "@wordpress/icons": "^9.7.1-next.957ca95e4c.0",
38
- "@wordpress/rich-text": "^5.14.1-next.957ca95e4c.0",
39
- "@wordpress/url": "^3.17.1-next.957ca95e4c.0",
40
- "lodash": "^4.17.21"
29
+ "@wordpress/a11y": "^3.17.0",
30
+ "@wordpress/block-editor": "^10.0.0",
31
+ "@wordpress/components": "^21.0.0",
32
+ "@wordpress/compose": "^5.15.0",
33
+ "@wordpress/data": "^7.1.0",
34
+ "@wordpress/element": "^4.15.0",
35
+ "@wordpress/html-entities": "^3.17.0",
36
+ "@wordpress/i18n": "^4.17.0",
37
+ "@wordpress/icons": "^9.8.0",
38
+ "@wordpress/rich-text": "^5.15.0",
39
+ "@wordpress/url": "^3.18.0"
41
40
  },
42
41
  "peerDependencies": {
43
42
  "react": "^17.0.0",
@@ -46,5 +45,5 @@
46
45
  "publishConfig": {
47
46
  "access": "public"
48
47
  },
49
- "gitHead": "272a74bbbaab10ee24424eafe9578e705fbfbbb4"
48
+ "gitHead": "0d732d4b184adcb28cc83087603e81b764390d4b"
50
49
  }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { find } from 'lodash';
5
4
  import Clipboard from '@react-native-clipboard/clipboard';
6
5
 
7
6
  /**
@@ -86,13 +85,21 @@ export const link = {
86
85
  let startIndex = value.start;
87
86
  let endIndex = value.end;
88
87
 
89
- while ( find( value.formats[ startIndex ], startFormat ) ) {
88
+ while (
89
+ value.formats[ startIndex ]?.find(
90
+ ( format ) => format?.type === startFormat.type
91
+ )
92
+ ) {
90
93
  startIndex--;
91
94
  }
92
95
 
93
96
  endIndex++;
94
97
 
95
- while ( find( value.formats[ endIndex ], startFormat ) ) {
98
+ while (
99
+ value.formats[ endIndex ]?.find(
100
+ ( format ) => format?.type === startFormat.type
101
+ )
102
+ ) {
96
103
  endIndex++;
97
104
  }
98
105
 
@@ -227,7 +227,7 @@ function InlineLinkUI( {
227
227
  focusOnMount={ focusOnMount.current }
228
228
  onClose={ stopAddingLink }
229
229
  position="bottom center"
230
- __unstableShift
230
+ shift
231
231
  >
232
232
  <LinkControl
233
233
  key={ forceRemountKey }
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { isEmpty } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -82,7 +77,7 @@ function TextColorEdit( {
82
77
  [ value, colors ]
83
78
  );
84
79
 
85
- const hasColorsToChoose = ! isEmpty( colors ) || ! allowCustomControl;
80
+ const hasColorsToChoose = colors.length || ! allowCustomControl;
86
81
  if ( ! hasColorsToChoose && ! isActive ) {
87
82
  return null;
88
83
  }
@@ -1,7 +1,6 @@
1
1
  /**
2
2
  * External dependencies
3
3
  */
4
- import { isEmpty } from 'lodash';
5
4
  import { View } from 'react-native';
6
5
 
7
6
  /**
@@ -89,7 +88,7 @@ function TextColorEdit( {
89
88
  [ value, colors ]
90
89
  );
91
90
 
92
- const hasColorsToChoose = ! isEmpty( colors ) || ! allowCustomControl;
91
+ const hasColorsToChoose = colors.length || ! allowCustomControl;
93
92
 
94
93
  const onPressButton = useCallback( () => {
95
94
  if ( hasColorsToChoose ) {
@@ -1,8 +1,3 @@
1
- /**
2
- * External dependencies
3
- */
4
- import { get } from 'lodash';
5
-
6
1
  /**
7
2
  * WordPress dependencies
8
3
  */
@@ -112,7 +107,7 @@ function setColors( value, name, colorSettings, colors ) {
112
107
  function ColorPicker( { name, property, value, onChange } ) {
113
108
  const colors = useSelect( ( select ) => {
114
109
  const { getSettings } = select( blockEditorStore );
115
- return get( getSettings(), [ 'colors' ], [] );
110
+ return getSettings().colors ?? [];
116
111
  }, [] );
117
112
  const onColorChange = useCallback(
118
113
  ( color ) => {
@@ -12,7 +12,7 @@ import {
12
12
  * WordPress dependencies
13
13
  */
14
14
  import { setDefaultBlockName, unregisterBlockType } from '@wordpress/blocks';
15
- import { registerBlock, coreBlocks } from '@wordpress/block-library';
15
+ import { coreBlocks } from '@wordpress/block-library';
16
16
 
17
17
  const COLOR_PINK = '#f78da7';
18
18
  const paragraph = coreBlocks[ 'core/paragraph' ];
@@ -22,7 +22,7 @@ const TEXT_WITH_COLOR = `<!-- wp:paragraph -->
22
22
  <!-- /wp:paragraph -->`;
23
23
 
24
24
  beforeAll( () => {
25
- registerBlock( paragraph );
25
+ paragraph.init();
26
26
  setDefaultBlockName( paragraph.name );
27
27
  } );
28
28
 
@@ -164,7 +164,7 @@ describe( 'Text color', () => {
164
164
  initialHtml: `<!-- wp:paragraph -->
165
165
  <p>this <span class="has-inline-color has-green-color">is</span> <span class="has-inline-color has-red-color">test</span></p>
166
166
  <!-- /wp:paragraph -->
167
-
167
+
168
168
  <!-- wp:paragraph -->
169
169
  <p><span style="color:#08a5e9" class="has-inline-color">this is a test</span></p>
170
170
  <!-- /wp:paragraph -->`,
@@ -1,15 +0,0 @@
1
- /**
2
- * Internal dependencies
3
- */
4
- import InlineLinkUI from '../inline';
5
- /**
6
- * External dependencies
7
- */
8
- import { shallow } from 'enzyme';
9
-
10
- describe( 'InlineLinkUI', () => {
11
- it( 'InlineLinkUI renders', () => {
12
- const wrapper = shallow( <InlineLinkUI /> );
13
- expect( wrapper ).toBeTruthy();
14
- } );
15
- } );