@wordpress/format-library 4.15.0 → 4.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/build/bold/index.js +1 -10
- package/build/bold/index.js.map +1 -1
- package/build/code/index.js +3 -17
- package/build/code/index.js.map +1 -1
- package/build/default-formats.js +0 -14
- package/build/default-formats.js.map +1 -1
- package/build/default-formats.native.js +0 -6
- package/build/default-formats.native.js.map +1 -1
- package/build/image/index.js +5 -14
- package/build/image/index.js.map +1 -1
- package/build/index.js +1 -3
- package/build/index.js.map +1 -1
- package/build/italic/index.js +1 -10
- package/build/italic/index.js.map +1 -1
- package/build/keyboard/index.js +1 -10
- package/build/keyboard/index.js.map +1 -1
- package/build/language/index.js +1 -11
- package/build/language/index.js.map +1 -1
- package/build/link/index.js +5 -26
- package/build/link/index.js.map +1 -1
- package/build/link/index.native.js +14 -39
- package/build/link/index.native.js.map +1 -1
- package/build/link/inline.js +47 -84
- package/build/link/inline.js.map +1 -1
- package/build/link/modal-screens/link-picker-screen.native.js +1 -13
- package/build/link/modal-screens/link-picker-screen.native.js.map +1 -1
- package/build/link/modal-screens/link-settings-screen.native.js +9 -36
- package/build/link/modal-screens/link-settings-screen.native.js.map +1 -1
- package/build/link/modal-screens/screens.native.js.map +1 -1
- package/build/link/modal.native.js +1 -9
- package/build/link/modal.native.js.map +1 -1
- package/build/link/use-link-instance-key.js +3 -7
- package/build/link/use-link-instance-key.js.map +1 -1
- package/build/link/utils.js +23 -47
- package/build/link/utils.js.map +1 -1
- package/build/strikethrough/index.js +1 -9
- package/build/strikethrough/index.js.map +1 -1
- package/build/subscript/index.js +1 -10
- package/build/subscript/index.js.map +1 -1
- package/build/superscript/index.js +1 -10
- package/build/superscript/index.js.map +1 -1
- package/build/text-color/index.js +7 -25
- package/build/text-color/index.js.map +1 -1
- package/build/text-color/index.native.js +11 -34
- package/build/text-color/index.native.js.map +1 -1
- package/build/text-color/inline.js +5 -26
- package/build/text-color/inline.js.map +1 -1
- package/build/text-color/inline.native.js +9 -25
- package/build/text-color/inline.native.js.map +1 -1
- package/build/underline/index.js +1 -8
- package/build/underline/index.js.map +1 -1
- package/build/unknown/index.js +1 -11
- package/build/unknown/index.js.map +1 -1
- package/build-module/bold/index.js +0 -7
- package/build-module/bold/index.js.map +1 -1
- package/build-module/code/index.js +2 -14
- package/build-module/code/index.js.map +1 -1
- package/build-module/default-formats.js.map +1 -1
- package/build-module/default-formats.native.js.map +1 -1
- package/build-module/image/index.js +4 -10
- package/build-module/image/index.js.map +1 -1
- package/build-module/index.js +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/italic/index.js +0 -7
- package/build-module/italic/index.js.map +1 -1
- package/build-module/keyboard/index.js +0 -7
- package/build-module/keyboard/index.js.map +1 -1
- package/build-module/language/index.js +1 -8
- package/build-module/language/index.js.map +1 -1
- package/build-module/link/index.js +5 -17
- package/build-module/link/index.js.map +1 -1
- package/build-module/link/index.native.js +15 -30
- package/build-module/link/index.native.js.map +1 -1
- package/build-module/link/inline.js +45 -72
- package/build-module/link/inline.js.map +1 -1
- package/build-module/link/modal-screens/link-picker-screen.native.js +2 -8
- package/build-module/link/modal-screens/link-picker-screen.native.js.map +1 -1
- package/build-module/link/modal-screens/link-settings-screen.native.js +10 -28
- package/build-module/link/modal-screens/link-settings-screen.native.js.map +1 -1
- package/build-module/link/modal-screens/screens.native.js.map +1 -1
- package/build-module/link/modal.native.js +1 -4
- package/build-module/link/modal.native.js.map +1 -1
- package/build-module/link/use-link-instance-key.js +3 -7
- package/build-module/link/use-link-instance-key.js.map +1 -1
- package/build-module/link/utils.js +24 -43
- package/build-module/link/utils.js.map +1 -1
- package/build-module/strikethrough/index.js +0 -6
- package/build-module/strikethrough/index.js.map +1 -1
- package/build-module/subscript/index.js +0 -7
- package/build-module/subscript/index.js.map +1 -1
- package/build-module/superscript/index.js +0 -7
- package/build-module/superscript/index.js.map +1 -1
- package/build-module/text-color/index.js +7 -20
- package/build-module/text-color/index.js.map +1 -1
- package/build-module/text-color/index.native.js +12 -24
- package/build-module/text-color/index.native.js.map +1 -1
- package/build-module/text-color/inline.js +5 -20
- package/build-module/text-color/inline.js.map +1 -1
- package/build-module/text-color/inline.native.js +9 -21
- package/build-module/text-color/inline.native.js.map +1 -1
- package/build-module/underline/index.js +0 -6
- package/build-module/underline/index.js.map +1 -1
- package/build-module/unknown/index.js +0 -8
- package/build-module/unknown/index.js.map +1 -1
- package/package.json +13 -13
- package/src/link/inline.js +14 -37
- package/src/link/test/__snapshots__/modal.native.js.snap +372 -295
- package/src/text-color/test/index.native.js +4 -0
|
@@ -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","useAnchor","removeFormat","slice","replace","split","concat","__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","boundary","valBefore","valAfter","start","newValAfter","end","activeFormats","popoverAnchor","editableContentElement","current","forceRemountKey","focusOnMount","handleCreate","pageTitle","page","status","rendered","kind","createButtonText","searchTerm","mark","textStart","textEnd"],"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\tuseAnchor,\n\tremoveFormat,\n\tslice,\n\treplace,\n\tsplit,\n\tconcat,\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\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// Get the boundaries of the active link format.\n\t\t\t\tconst boundary = getFormatBoundary( value, {\n\t\t\t\t\ttype: 'core/link',\n\t\t\t\t} );\n\n\t\t\t\t// Split the value at the start of the active link format.\n\t\t\t\t// Passing \"start\" as the 3rd parameter is required to ensure\n\t\t\t\t// the second half of the split value is split at the format's\n\t\t\t\t// start boundary and avoids relying on the value's \"end\" property\n\t\t\t\t// which may not correspond correctly.\n\t\t\t\tconst [ valBefore, valAfter ] = split(\n\t\t\t\t\tvalue,\n\t\t\t\t\tboundary.start,\n\t\t\t\t\tboundary.start\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// As \"replace\" will operate on the first match only, it is\n\t\t\t\t// run only against the second half of the value which was\n\t\t\t\t// split at the active format's boundary. This avoids a bug\n\t\t\t\t// with incorrectly targetted replacements.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/41771.\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\tconst newValAfter = replace( valAfter, richTextText, newValue );\n\n\t\t\t\tnewValue = concat( valBefore, newValAfter );\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 popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings,\n\t} );\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( popoverAnchor );\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\tanchor={ popoverAnchor }\n\t\t\tfocusOnMount={ focusOnMount.current }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tonFocusOutside={ () => stopAddingLink( false ) }\n\t\t\tplacement=\"bottom\"\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
|
+
{"version":3,"names":["useRef","createInterpolateElement","__","sprintf","speak","Popover","prependHTTP","create","insert","isCollapsed","applyFormat","useAnchor","removeFormat","slice","replace","split","concat","__experimentalLinkControl","LinkControl","store","blockEditorStore","useSelect","createLinkFormat","isValidHref","getFormatBoundary","link","settings","useLinkInstanceKey","InlineLinkUI","isActive","activeAttributes","addingLink","value","onChange","stopAddingLink","contentRef","richLinkTextValue","getRichTextValueFromSelection","richTextText","text","createPageEntity","userCanCreatePages","select","getSettings","_settings","__experimentalCreatePageEntity","__experimentalUserCanCreatePages","linkValue","url","type","id","opensInNewTab","target","title","removeLink","newValue","onChangeLink","nextValue","didToggleSetting","undefined","newUrl","linkFormat","String","opensInNewWindow","newText","toInsert","length","boundary","valBefore","valAfter","start","newValAfter","end","activeFormats","popoverAnchor","editableContentElement","current","forceRemountKey","focusOnMount","handleCreate","pageTitle","page","status","rendered","kind","createButtonText","searchTerm","mark","createElement","anchor","onClose","onFocusOutside","placement","shift","key","onRemove","forceIsEditingLink","hasRichPreviews","createSuggestion","withCreateSuggestion","createSuggestionButtonText","hasTextControl","textStart","textEnd"],"sources":["@wordpress/format-library/src/link/inline.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef, createInterpolateElement } from '@wordpress/element';\nimport { __, sprintf } from '@wordpress/i18n';\nimport { speak } from '@wordpress/a11y';\nimport { Popover } from '@wordpress/components';\nimport { prependHTTP } from '@wordpress/url';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tuseAnchor,\n\tremoveFormat,\n\tslice,\n\treplace,\n\tsplit,\n\tconcat,\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\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\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};\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// LinkControl calls `onChange` immediately upon the toggling a setting.\n\t\t// Before merging the next value with the current link value, check if\n\t\t// the setting was toggled.\n\t\tconst didToggleSetting =\n\t\t\tlinkValue.opensInNewTab !== nextValue.opensInNewTab &&\n\t\t\tnextValue.url === undefined;\n\n\t\t// Merge the next value with the current link value.\n\t\tnextValue = {\n\t\t\t...linkValue,\n\t\t\t...nextValue,\n\t\t};\n\n\t\tconst newUrl = prependHTTP( nextValue.url );\n\t\tconst linkFormat = createLinkFormat( {\n\t\t\turl: newUrl,\n\t\t\ttype: nextValue.type,\n\t\t\tid:\n\t\t\t\tnextValue.id !== undefined && nextValue.id !== null\n\t\t\t\t\t? String( nextValue.id )\n\t\t\t\t\t: undefined,\n\t\t\topensInNewWindow: nextValue.opensInNewTab,\n\t\t} );\n\n\t\tconst newText = nextValue.title || newUrl;\n\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// Get the boundaries of the active link format.\n\t\t\t\tconst boundary = getFormatBoundary( value, {\n\t\t\t\t\ttype: 'core/link',\n\t\t\t\t} );\n\n\t\t\t\t// Split the value at the start of the active link format.\n\t\t\t\t// Passing \"start\" as the 3rd parameter is required to ensure\n\t\t\t\t// the second half of the split value is split at the format's\n\t\t\t\t// start boundary and avoids relying on the value's \"end\" property\n\t\t\t\t// which may not correspond correctly.\n\t\t\t\tconst [ valBefore, valAfter ] = split(\n\t\t\t\t\tvalue,\n\t\t\t\t\tboundary.start,\n\t\t\t\t\tboundary.start\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// As \"replace\" will operate on the first match only, it is\n\t\t\t\t// run only against the second half of the value which was\n\t\t\t\t// split at the active format's boundary. This avoids a bug\n\t\t\t\t// with incorrectly targetted replacements.\n\t\t\t\t// See: https://github.com/WordPress/gutenberg/issues/41771.\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\tconst newValAfter = replace( valAfter, richTextText, newValue );\n\n\t\t\t\tnewValue = concat( valBefore, newValAfter );\n\t\t\t}\n\n\t\t\tnewValue.start = newValue.end;\n\n\t\t\t// Hides the Link UI.\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 popoverAnchor = useAnchor( {\n\t\teditableContentElement: contentRef.current,\n\t\tsettings,\n\t} );\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( popoverAnchor );\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\tanchor={ popoverAnchor }\n\t\t\tfocusOnMount={ focusOnMount.current }\n\t\t\tonClose={ stopAddingLink }\n\t\t\tonFocusOutside={ () => stopAddingLink( false ) }\n\t\t\tplacement=\"bottom\"\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 InlineLinkUI;\n"],"mappings":"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"}
|
|
@@ -1,28 +1,25 @@
|
|
|
1
1
|
import { createElement } from "@wordpress/element";
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* External dependencies
|
|
5
4
|
*/
|
|
6
5
|
import { Keyboard } from 'react-native';
|
|
7
6
|
import { useNavigation, useRoute } from '@react-navigation/native';
|
|
7
|
+
|
|
8
8
|
/**
|
|
9
9
|
* WordPress dependencies
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
11
|
import { useEffect, useMemo, useRef } from '@wordpress/element';
|
|
13
12
|
import { LinkPicker } from '@wordpress/components';
|
|
13
|
+
|
|
14
14
|
/**
|
|
15
15
|
* Internal dependencies
|
|
16
16
|
*/
|
|
17
|
-
|
|
18
17
|
import linkSettingsScreens from './screens';
|
|
19
|
-
|
|
20
18
|
const LinkPickerScreen = () => {
|
|
21
19
|
const navigation = useNavigation();
|
|
22
20
|
const route = useRoute();
|
|
23
21
|
const navigateToLinkTimeoutRef = useRef(null);
|
|
24
22
|
const navigateBackTimeoutRef = useRef(null);
|
|
25
|
-
|
|
26
23
|
const onLinkPicked = ({
|
|
27
24
|
url,
|
|
28
25
|
title
|
|
@@ -35,14 +32,12 @@ const LinkPickerScreen = () => {
|
|
|
35
32
|
});
|
|
36
33
|
}, 100);
|
|
37
34
|
};
|
|
38
|
-
|
|
39
35
|
const onCancel = () => {
|
|
40
36
|
Keyboard.dismiss();
|
|
41
37
|
navigateBackTimeoutRef.current = setTimeout(() => {
|
|
42
38
|
navigation.goBack();
|
|
43
39
|
}, 100);
|
|
44
40
|
};
|
|
45
|
-
|
|
46
41
|
useEffect(() => {
|
|
47
42
|
return () => {
|
|
48
43
|
clearTimeout(navigateToLinkTimeoutRef.current);
|
|
@@ -60,6 +55,5 @@ const LinkPickerScreen = () => {
|
|
|
60
55
|
});
|
|
61
56
|
}, [inputValue]);
|
|
62
57
|
};
|
|
63
|
-
|
|
64
58
|
export default LinkPickerScreen;
|
|
65
59
|
//# sourceMappingURL=link-picker-screen.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Keyboard","useNavigation","useRoute","useEffect","useMemo","useRef","LinkPicker","linkSettingsScreens","LinkPickerScreen","navigation","route","navigateToLinkTimeoutRef","navigateBackTimeoutRef","onLinkPicked","url","title","dismiss","current","setTimeout","navigate","settings","inputValue","text","onCancel","goBack","clearTimeout","params","createElement","value"],"sources":["@wordpress/format-library/src/link/modal-screens/link-picker-screen.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Keyboard } from 'react-native';\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useMemo, useRef } from '@wordpress/element';\n\nimport { LinkPicker } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport linkSettingsScreens from './screens';\n\nconst LinkPickerScreen = () => {\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst navigateToLinkTimeoutRef = useRef( null );\n\tconst navigateBackTimeoutRef = useRef( null );\n\n\tconst onLinkPicked = ( { url, title } ) => {\n\t\tKeyboard.dismiss();\n\t\tnavigateToLinkTimeoutRef.current = setTimeout( () => {\n\t\t\tnavigation.navigate( linkSettingsScreens.settings, {\n\t\t\t\tinputValue: url,\n\t\t\t\ttext: title,\n\t\t\t} );\n\t\t}, 100 );\n\t};\n\n\tconst onCancel = () => {\n\t\tKeyboard.dismiss();\n\t\tnavigateBackTimeoutRef.current = setTimeout( () => {\n\t\t\tnavigation.goBack();\n\t\t}, 100 );\n\t};\n\n\tuseEffect( () => {\n\t\treturn () => {\n\t\t\tclearTimeout( navigateToLinkTimeoutRef.current );\n\t\t\tclearTimeout( navigateBackTimeoutRef.current );\n\t\t};\n\t}, [] );\n\n\tconst { inputValue } = route.params;\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<LinkPicker\n\t\t\t\tvalue={ inputValue }\n\t\t\t\tonLinkPicked={ onLinkPicked }\n\t\t\t\tonCancel={ onCancel }\n\t\t\t/>\n\t\t);\n\t}, [ inputValue ] );\n};\n\nexport default LinkPickerScreen;\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,QAAQ,QAAQ,cAAc;AACvC,SAASC,aAAa,EAAEC,QAAQ,QAAQ,0BAA0B;;AAElE;AACA;AACA;AACA,SAASC,SAAS,EAAEC,OAAO,EAAEC,MAAM,QAAQ,oBAAoB;AAE/D,SAASC,UAAU,QAAQ,uBAAuB;;AAElD;AACA;AACA;AACA,OAAOC,mBAAmB,MAAM,WAAW;AAE3C,MAAMC,gBAAgB,GAAGA,CAAA,KAAM;EAC9B,MAAMC,UAAU,GAAGR,aAAa,CAAC,CAAC;EAClC,MAAMS,KAAK,GAAGR,QAAQ,CAAC,CAAC;EACxB,MAAMS,wBAAwB,GAAGN,MAAM,CAAE,IAAK,CAAC;EAC/C,MAAMO,sBAAsB,GAAGP,MAAM,CAAE,IAAK,CAAC;EAE7C,MAAMQ,YAAY,GAAGA,CAAE;IAAEC,GAAG;IAAEC;EAAM,CAAC,KAAM;IAC1Cf,QAAQ,CAACgB,OAAO,CAAC,CAAC;IAClBL,wBAAwB,CAACM,OAAO,GAAGC,UAAU,CAAE,MAAM;MACpDT,UAAU,CAACU,QAAQ,CAAEZ,mBAAmB,CAACa,QAAQ,EAAE;QAClDC,UAAU,EAAEP,GAAG;QACfQ,IAAI,EAAEP;MACP,CAAE,CAAC;IACJ,CAAC,EAAE,GAAI,CAAC;EACT,CAAC;EAED,MAAMQ,QAAQ,GAAGA,CAAA,KAAM;IACtBvB,QAAQ,CAACgB,OAAO,CAAC,CAAC;IAClBJ,sBAAsB,CAACK,OAAO,GAAGC,UAAU,CAAE,MAAM;MAClDT,UAAU,CAACe,MAAM,CAAC,CAAC;IACpB,CAAC,EAAE,GAAI,CAAC;EACT,CAAC;EAEDrB,SAAS,CAAE,MAAM;IAChB,OAAO,MAAM;MACZsB,YAAY,CAAEd,wBAAwB,CAACM,OAAQ,CAAC;MAChDQ,YAAY,CAAEb,sBAAsB,CAACK,OAAQ,CAAC;IAC/C,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EAEP,MAAM;IAAEI;EAAW,CAAC,GAAGX,KAAK,CAACgB,MAAM;EACnC,OAAOtB,OAAO,CAAE,MAAM;IACrB,OACCuB,aAAA,CAACrB,UAAU;MACVsB,KAAK,EAAGP,UAAY;MACpBR,YAAY,EAAGA,YAAc;MAC7BU,QAAQ,EAAGA;IAAU,CACrB,CAAC;EAEJ,CAAC,EAAE,CAAEF,UAAU,CAAG,CAAC;AACpB,CAAC;AAED,eAAeb,gBAAgB"}
|
|
@@ -1,27 +1,25 @@
|
|
|
1
1
|
import { createElement, Fragment } from "@wordpress/element";
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* External dependencies
|
|
5
4
|
*/
|
|
6
5
|
import { useNavigation, useRoute } from '@react-navigation/native';
|
|
6
|
+
|
|
7
7
|
/**
|
|
8
8
|
* WordPress dependencies
|
|
9
9
|
*/
|
|
10
|
-
|
|
11
10
|
import { __ } from '@wordpress/i18n';
|
|
12
11
|
import { useState, useContext, useEffect, useMemo } from '@wordpress/element';
|
|
13
12
|
import { prependHTTP } from '@wordpress/url';
|
|
14
13
|
import { BottomSheet, BottomSheetContext } from '@wordpress/components';
|
|
15
14
|
import { create, insert, isCollapsed, applyFormat, getTextContent, slice } from '@wordpress/rich-text';
|
|
16
15
|
import { external, textColor } from '@wordpress/icons';
|
|
16
|
+
|
|
17
17
|
/**
|
|
18
18
|
* Internal dependencies
|
|
19
19
|
*/
|
|
20
|
-
|
|
21
20
|
import { createLinkFormat, isValidHref } from '../utils';
|
|
22
21
|
import linkSettingsScreens from './screens';
|
|
23
22
|
import styles from '../modal.scss';
|
|
24
|
-
|
|
25
23
|
const LinkSettingsScreen = ({
|
|
26
24
|
onRemove,
|
|
27
25
|
onClose,
|
|
@@ -48,14 +46,12 @@ const LinkSettingsScreen = ({
|
|
|
48
46
|
const {
|
|
49
47
|
inputValue = activeAttributes.url || ''
|
|
50
48
|
} = route.params || {};
|
|
51
|
-
|
|
52
49
|
const onLinkCellPressed = () => {
|
|
53
50
|
shouldEnableBottomSheetMaxHeight(false);
|
|
54
51
|
navigation.navigate(linkSettingsScreens.picker, {
|
|
55
52
|
inputValue
|
|
56
53
|
});
|
|
57
54
|
};
|
|
58
|
-
|
|
59
55
|
useEffect(() => {
|
|
60
56
|
onHandleClosingBottomSheet(() => {
|
|
61
57
|
submit(inputValue, {
|
|
@@ -68,7 +64,6 @@ const LinkSettingsScreen = ({
|
|
|
68
64
|
isActiveLink,
|
|
69
65
|
isRemovingLink
|
|
70
66
|
} = linkValues;
|
|
71
|
-
|
|
72
67
|
if (!!inputValue && !isActiveLink && isVisible) {
|
|
73
68
|
submitLink({
|
|
74
69
|
shouldCloseBottomSheet: false
|
|
@@ -79,14 +74,13 @@ const LinkSettingsScreen = ({
|
|
|
79
74
|
});
|
|
80
75
|
}
|
|
81
76
|
}, [inputValue, isVisible, linkValues.isActiveLink, linkValues.isRemovingLink]);
|
|
82
|
-
|
|
83
77
|
const clearFormat = ({
|
|
84
78
|
skipStateUpdates = false
|
|
85
79
|
} = {}) => {
|
|
86
|
-
onChange({
|
|
80
|
+
onChange({
|
|
81
|
+
...value,
|
|
87
82
|
activeFormats: []
|
|
88
83
|
});
|
|
89
|
-
|
|
90
84
|
if (!skipStateUpdates) {
|
|
91
85
|
setLinkValues({
|
|
92
86
|
isActiveLink: false,
|
|
@@ -94,7 +88,6 @@ const LinkSettingsScreen = ({
|
|
|
94
88
|
});
|
|
95
89
|
}
|
|
96
90
|
};
|
|
97
|
-
|
|
98
91
|
const submitLink = ({
|
|
99
92
|
shouldCloseBottomSheet = true,
|
|
100
93
|
skipStateUpdates = false
|
|
@@ -107,7 +100,6 @@ const LinkSettingsScreen = ({
|
|
|
107
100
|
text: linkText
|
|
108
101
|
});
|
|
109
102
|
let newAttributes;
|
|
110
|
-
|
|
111
103
|
if (isCollapsed(value) && !isActive) {
|
|
112
104
|
// Insert link.
|
|
113
105
|
const toInsert = applyFormat(create({
|
|
@@ -123,30 +115,27 @@ const LinkSettingsScreen = ({
|
|
|
123
115
|
} else {
|
|
124
116
|
// Transform selected text into link.
|
|
125
117
|
newAttributes = applyFormat(value, format);
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
118
|
+
}
|
|
119
|
+
// Move selection to end of link.
|
|
120
|
+
const textLength = newAttributes.text.length;
|
|
121
|
+
// check for zero width spaces
|
|
131
122
|
if (newAttributes.end > textLength) {
|
|
132
123
|
newAttributes.start = textLength;
|
|
133
124
|
newAttributes.end = textLength;
|
|
134
125
|
} else {
|
|
135
126
|
newAttributes.start = newAttributes.end;
|
|
136
127
|
}
|
|
137
|
-
|
|
138
128
|
newAttributes.activeFormats = [];
|
|
139
|
-
onChange({
|
|
129
|
+
onChange({
|
|
130
|
+
...newAttributes,
|
|
140
131
|
needsSelectionUpdate: true
|
|
141
132
|
});
|
|
142
|
-
|
|
143
133
|
if (!skipStateUpdates) {
|
|
144
134
|
setLinkValues({
|
|
145
135
|
isActiveLink: true,
|
|
146
136
|
isRemovingLink: false
|
|
147
137
|
});
|
|
148
138
|
}
|
|
149
|
-
|
|
150
139
|
if (!isValidHref(url)) {
|
|
151
140
|
speak(__('Warning: the link has been inserted but may have errors. Please test it.'), 'assertive');
|
|
152
141
|
} else if (isActive) {
|
|
@@ -154,12 +143,10 @@ const LinkSettingsScreen = ({
|
|
|
154
143
|
} else {
|
|
155
144
|
speak(__('Link inserted'), 'assertive');
|
|
156
145
|
}
|
|
157
|
-
|
|
158
146
|
if (shouldCloseBottomSheet) {
|
|
159
147
|
onClose();
|
|
160
148
|
}
|
|
161
149
|
};
|
|
162
|
-
|
|
163
150
|
const removeLink = ({
|
|
164
151
|
shouldCloseBottomSheet = true,
|
|
165
152
|
skipStateUpdates = false
|
|
@@ -168,12 +155,10 @@ const LinkSettingsScreen = ({
|
|
|
168
155
|
skipStateUpdates
|
|
169
156
|
});
|
|
170
157
|
onRemove();
|
|
171
|
-
|
|
172
158
|
if (shouldCloseBottomSheet) {
|
|
173
159
|
onClose();
|
|
174
160
|
}
|
|
175
161
|
};
|
|
176
|
-
|
|
177
162
|
const submit = (submitValue, {
|
|
178
163
|
skipStateUpdates = false
|
|
179
164
|
} = {}) => {
|
|
@@ -187,13 +172,11 @@ const LinkSettingsScreen = ({
|
|
|
187
172
|
});
|
|
188
173
|
}
|
|
189
174
|
};
|
|
190
|
-
|
|
191
175
|
useEffect(() => {
|
|
192
176
|
const unsubscribe = navigation.addListener('focus', () => {
|
|
193
177
|
const {
|
|
194
178
|
params = {}
|
|
195
179
|
} = route;
|
|
196
|
-
|
|
197
180
|
if (!text && params.text) {
|
|
198
181
|
setText(params.text);
|
|
199
182
|
}
|
|
@@ -227,6 +210,5 @@ const LinkSettingsScreen = ({
|
|
|
227
210
|
})));
|
|
228
211
|
}, [inputValue, text, opensInNewWindow, listProps.safeAreaBottomInset]);
|
|
229
212
|
};
|
|
230
|
-
|
|
231
213
|
export default LinkSettingsScreen;
|
|
232
214
|
//# sourceMappingURL=link-settings-screen.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/format-library/src/link/modal-screens/link-settings-screen.native.js"],"names":["useNavigation","useRoute","__","useState","useContext","useEffect","useMemo","prependHTTP","BottomSheet","BottomSheetContext","create","insert","isCollapsed","applyFormat","getTextContent","slice","external","textColor","createLinkFormat","isValidHref","linkSettingsScreens","styles","LinkSettingsScreen","onRemove","onClose","onChange","speak","value","isActive","activeAttributes","isVisible","text","setText","opensInNewWindow","setOpensInNewWindows","target","linkValues","setLinkValues","isActiveLink","isRemovingLink","shouldEnableBottomSheetMaxHeight","onHandleClosingBottomSheet","listProps","navigation","route","inputValue","url","params","onLinkCellPressed","navigate","picker","submit","skipStateUpdates","submitLink","shouldCloseBottomSheet","removeLink","clearFormat","activeFormats","linkText","format","newAttributes","toInsert","length","start","end","textLength","needsSelectionUpdate","submitValue","unsubscribe","addListener","shouldShowLinkOptions","undefined","clearLinkButton","safeAreaBottomInset"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useContext, useEffect, useMemo } from '@wordpress/element';\nimport { prependHTTP } from '@wordpress/url';\nimport { BottomSheet, BottomSheetContext } from '@wordpress/components';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tgetTextContent,\n\tslice,\n} from '@wordpress/rich-text';\nimport { external, textColor } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref } from '../utils';\nimport linkSettingsScreens from './screens';\n\nimport styles from '../modal.scss';\n\nconst LinkSettingsScreen = ( {\n\tonRemove,\n\tonClose,\n\tonChange,\n\tspeak,\n\tvalue,\n\tisActive,\n\tactiveAttributes,\n\tisVisible,\n} ) => {\n\tconst [ text, setText ] = useState( getTextContent( slice( value ) ) );\n\tconst [ opensInNewWindow, setOpensInNewWindows ] = useState(\n\t\tactiveAttributes.target === '_blank'\n\t);\n\tconst [ linkValues, setLinkValues ] = useState( {\n\t\tisActiveLink: isActive,\n\t\tisRemovingLink: false,\n\t} );\n\n\tconst {\n\t\tshouldEnableBottomSheetMaxHeight,\n\t\tonHandleClosingBottomSheet,\n\t\tlistProps,\n\t} = useContext( BottomSheetContext );\n\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst { inputValue = activeAttributes.url || '' } = route.params || {};\n\tconst onLinkCellPressed = () => {\n\t\tshouldEnableBottomSheetMaxHeight( false );\n\t\tnavigation.navigate( linkSettingsScreens.picker, { inputValue } );\n\t};\n\tuseEffect( () => {\n\t\tonHandleClosingBottomSheet( () => {\n\t\t\tsubmit( inputValue, { skipStateUpdates: true } );\n\t\t} );\n\t}, [ inputValue, opensInNewWindow, text ] );\n\n\tuseEffect( () => {\n\t\tconst { isActiveLink, isRemovingLink } = linkValues;\n\t\tif ( !! inputValue && ! isActiveLink && isVisible ) {\n\t\t\tsubmitLink( { shouldCloseBottomSheet: false } );\n\t\t} else if (\n\t\t\t( ( inputValue === '' && isActiveLink ) || isRemovingLink ) &&\n\t\t\tisVisible\n\t\t) {\n\t\t\tremoveLink( { shouldCloseBottomSheet: false } );\n\t\t}\n\t}, [\n\t\tinputValue,\n\t\tisVisible,\n\t\tlinkValues.isActiveLink,\n\t\tlinkValues.isRemovingLink,\n\t] );\n\n\tconst clearFormat = ( { skipStateUpdates = false } = {} ) => {\n\t\tonChange( { ...value, activeFormats: [] } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: false, isRemovingLink: true } );\n\t\t}\n\t};\n\n\tconst submitLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tconst url = prependHTTP( inputValue );\n\t\tconst linkText = text || inputValue;\n\t\tconst format = createLinkFormat( {\n\t\t\turl,\n\t\t\topensInNewWindow,\n\t\t\ttext: linkText,\n\t\t} );\n\t\tlet newAttributes;\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\t// Insert link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text: linkText } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\tlinkText.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert );\n\t\t} else if ( text !== getTextContent( slice( value ) ) ) {\n\t\t\t// Edit text in selected link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\ttext.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert, value.start, value.end );\n\t\t} else {\n\t\t\t// Transform selected text into link.\n\t\t\tnewAttributes = applyFormat( value, format );\n\t\t}\n\t\t// Move selection to end of link.\n\t\tconst textLength = newAttributes.text.length;\n\t\t// check for zero width spaces\n\t\tif ( newAttributes.end > textLength ) {\n\t\t\tnewAttributes.start = textLength;\n\t\t\tnewAttributes.end = textLength;\n\t\t} else {\n\t\t\tnewAttributes.start = newAttributes.end;\n\t\t}\n\t\tnewAttributes.activeFormats = [];\n\t\tonChange( { ...newAttributes, needsSelectionUpdate: true } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: true, isRemovingLink: false } );\n\t\t}\n\n\t\tif ( ! isValidHref( url ) ) {\n\t\t\tspeak(\n\t\t\t\t__(\n\t\t\t\t\t'Warning: the link has been inserted but may have errors. Please test it.'\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted' ), 'assertive' );\n\t\t}\n\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst removeLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tclearFormat( { skipStateUpdates } );\n\t\tonRemove();\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst submit = ( submitValue, { skipStateUpdates = false } = {} ) => {\n\t\tif ( submitValue === '' ) {\n\t\t\tremoveLink( { skipStateUpdates } );\n\t\t} else {\n\t\t\tsubmitLink( { skipStateUpdates } );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tconst unsubscribe = navigation.addListener( 'focus', () => {\n\t\t\tconst { params = {} } = route;\n\t\t\tif ( ! text && params.text ) {\n\t\t\t\tsetText( params.text );\n\t\t\t}\n\t\t} );\n\t\treturn unsubscribe;\n\t}, [ navigation, route.params?.text, text ] );\n\n\treturn useMemo( () => {\n\t\tconst shouldShowLinkOptions = !! inputValue;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BottomSheet.LinkCell\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonPress={ onLinkCellPressed }\n\t\t\t\t/>\n\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\ticon={ textColor }\n\t\t\t\t\tlabel={ __( 'Link text' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tplaceholder={ __( 'Add link text' ) }\n\t\t\t\t\tonChangeValue={ setText }\n\t\t\t\t\tonSubmit={ submit }\n\t\t\t\t\tseparatorType={ shouldShowLinkOptions ? undefined : 'none' }\n\t\t\t\t/>\n\t\t\t\t{ shouldShowLinkOptions && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BottomSheet.SwitchCell\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tvalue={ opensInNewWindow }\n\t\t\t\t\t\t\tonValueChange={ setOpensInNewWindows }\n\t\t\t\t\t\t\tseparatorType={ 'fullWidth' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\t\tlabelStyle={ styles.clearLinkButton }\n\t\t\t\t\t\t\tseparatorType={ 'none' }\n\t\t\t\t\t\t\tonPress={ removeLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [ inputValue, text, opensInNewWindow, listProps.safeAreaBottomInset ] );\n};\n\nexport default LinkSettingsScreen;\n"]}
|
|
1
|
+
{"version":3,"names":["useNavigation","useRoute","__","useState","useContext","useEffect","useMemo","prependHTTP","BottomSheet","BottomSheetContext","create","insert","isCollapsed","applyFormat","getTextContent","slice","external","textColor","createLinkFormat","isValidHref","linkSettingsScreens","styles","LinkSettingsScreen","onRemove","onClose","onChange","speak","value","isActive","activeAttributes","isVisible","text","setText","opensInNewWindow","setOpensInNewWindows","target","linkValues","setLinkValues","isActiveLink","isRemovingLink","shouldEnableBottomSheetMaxHeight","onHandleClosingBottomSheet","listProps","navigation","route","inputValue","url","params","onLinkCellPressed","navigate","picker","submit","skipStateUpdates","submitLink","shouldCloseBottomSheet","removeLink","clearFormat","activeFormats","linkText","format","newAttributes","toInsert","length","start","end","textLength","needsSelectionUpdate","submitValue","unsubscribe","addListener","shouldShowLinkOptions","createElement","Fragment","LinkCell","onPress","Cell","icon","label","placeholder","onChangeValue","onSubmit","separatorType","undefined","SwitchCell","onValueChange","labelStyle","clearLinkButton","safeAreaBottomInset"],"sources":["@wordpress/format-library/src/link/modal-screens/link-settings-screen.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { useNavigation, useRoute } from '@react-navigation/native';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useState, useContext, useEffect, useMemo } from '@wordpress/element';\nimport { prependHTTP } from '@wordpress/url';\nimport { BottomSheet, BottomSheetContext } from '@wordpress/components';\nimport {\n\tcreate,\n\tinsert,\n\tisCollapsed,\n\tapplyFormat,\n\tgetTextContent,\n\tslice,\n} from '@wordpress/rich-text';\nimport { external, textColor } from '@wordpress/icons';\n\n/**\n * Internal dependencies\n */\nimport { createLinkFormat, isValidHref } from '../utils';\nimport linkSettingsScreens from './screens';\n\nimport styles from '../modal.scss';\n\nconst LinkSettingsScreen = ( {\n\tonRemove,\n\tonClose,\n\tonChange,\n\tspeak,\n\tvalue,\n\tisActive,\n\tactiveAttributes,\n\tisVisible,\n} ) => {\n\tconst [ text, setText ] = useState( getTextContent( slice( value ) ) );\n\tconst [ opensInNewWindow, setOpensInNewWindows ] = useState(\n\t\tactiveAttributes.target === '_blank'\n\t);\n\tconst [ linkValues, setLinkValues ] = useState( {\n\t\tisActiveLink: isActive,\n\t\tisRemovingLink: false,\n\t} );\n\n\tconst {\n\t\tshouldEnableBottomSheetMaxHeight,\n\t\tonHandleClosingBottomSheet,\n\t\tlistProps,\n\t} = useContext( BottomSheetContext );\n\n\tconst navigation = useNavigation();\n\tconst route = useRoute();\n\tconst { inputValue = activeAttributes.url || '' } = route.params || {};\n\tconst onLinkCellPressed = () => {\n\t\tshouldEnableBottomSheetMaxHeight( false );\n\t\tnavigation.navigate( linkSettingsScreens.picker, { inputValue } );\n\t};\n\tuseEffect( () => {\n\t\tonHandleClosingBottomSheet( () => {\n\t\t\tsubmit( inputValue, { skipStateUpdates: true } );\n\t\t} );\n\t}, [ inputValue, opensInNewWindow, text ] );\n\n\tuseEffect( () => {\n\t\tconst { isActiveLink, isRemovingLink } = linkValues;\n\t\tif ( !! inputValue && ! isActiveLink && isVisible ) {\n\t\t\tsubmitLink( { shouldCloseBottomSheet: false } );\n\t\t} else if (\n\t\t\t( ( inputValue === '' && isActiveLink ) || isRemovingLink ) &&\n\t\t\tisVisible\n\t\t) {\n\t\t\tremoveLink( { shouldCloseBottomSheet: false } );\n\t\t}\n\t}, [\n\t\tinputValue,\n\t\tisVisible,\n\t\tlinkValues.isActiveLink,\n\t\tlinkValues.isRemovingLink,\n\t] );\n\n\tconst clearFormat = ( { skipStateUpdates = false } = {} ) => {\n\t\tonChange( { ...value, activeFormats: [] } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: false, isRemovingLink: true } );\n\t\t}\n\t};\n\n\tconst submitLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tconst url = prependHTTP( inputValue );\n\t\tconst linkText = text || inputValue;\n\t\tconst format = createLinkFormat( {\n\t\t\turl,\n\t\t\topensInNewWindow,\n\t\t\ttext: linkText,\n\t\t} );\n\t\tlet newAttributes;\n\t\tif ( isCollapsed( value ) && ! isActive ) {\n\t\t\t// Insert link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text: linkText } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\tlinkText.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert );\n\t\t} else if ( text !== getTextContent( slice( value ) ) ) {\n\t\t\t// Edit text in selected link.\n\t\t\tconst toInsert = applyFormat(\n\t\t\t\tcreate( { text } ),\n\t\t\t\tformat,\n\t\t\t\t0,\n\t\t\t\ttext.length\n\t\t\t);\n\t\t\tnewAttributes = insert( value, toInsert, value.start, value.end );\n\t\t} else {\n\t\t\t// Transform selected text into link.\n\t\t\tnewAttributes = applyFormat( value, format );\n\t\t}\n\t\t// Move selection to end of link.\n\t\tconst textLength = newAttributes.text.length;\n\t\t// check for zero width spaces\n\t\tif ( newAttributes.end > textLength ) {\n\t\t\tnewAttributes.start = textLength;\n\t\t\tnewAttributes.end = textLength;\n\t\t} else {\n\t\t\tnewAttributes.start = newAttributes.end;\n\t\t}\n\t\tnewAttributes.activeFormats = [];\n\t\tonChange( { ...newAttributes, needsSelectionUpdate: true } );\n\t\tif ( ! skipStateUpdates ) {\n\t\t\tsetLinkValues( { isActiveLink: true, isRemovingLink: false } );\n\t\t}\n\n\t\tif ( ! isValidHref( url ) ) {\n\t\t\tspeak(\n\t\t\t\t__(\n\t\t\t\t\t'Warning: the link has been inserted but may have errors. Please test it.'\n\t\t\t\t),\n\t\t\t\t'assertive'\n\t\t\t);\n\t\t} else if ( isActive ) {\n\t\t\tspeak( __( 'Link edited.' ), 'assertive' );\n\t\t} else {\n\t\t\tspeak( __( 'Link inserted' ), 'assertive' );\n\t\t}\n\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst removeLink = ( {\n\t\tshouldCloseBottomSheet = true,\n\t\tskipStateUpdates = false,\n\t} = {} ) => {\n\t\tclearFormat( { skipStateUpdates } );\n\t\tonRemove();\n\t\tif ( shouldCloseBottomSheet ) {\n\t\t\tonClose();\n\t\t}\n\t};\n\n\tconst submit = ( submitValue, { skipStateUpdates = false } = {} ) => {\n\t\tif ( submitValue === '' ) {\n\t\t\tremoveLink( { skipStateUpdates } );\n\t\t} else {\n\t\t\tsubmitLink( { skipStateUpdates } );\n\t\t}\n\t};\n\n\tuseEffect( () => {\n\t\tconst unsubscribe = navigation.addListener( 'focus', () => {\n\t\t\tconst { params = {} } = route;\n\t\t\tif ( ! text && params.text ) {\n\t\t\t\tsetText( params.text );\n\t\t\t}\n\t\t} );\n\t\treturn unsubscribe;\n\t}, [ navigation, route.params?.text, text ] );\n\n\treturn useMemo( () => {\n\t\tconst shouldShowLinkOptions = !! inputValue;\n\n\t\treturn (\n\t\t\t<>\n\t\t\t\t<BottomSheet.LinkCell\n\t\t\t\t\tvalue={ inputValue }\n\t\t\t\t\tonPress={ onLinkCellPressed }\n\t\t\t\t/>\n\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\ticon={ textColor }\n\t\t\t\t\tlabel={ __( 'Link text' ) }\n\t\t\t\t\tvalue={ text }\n\t\t\t\t\tplaceholder={ __( 'Add link text' ) }\n\t\t\t\t\tonChangeValue={ setText }\n\t\t\t\t\tonSubmit={ submit }\n\t\t\t\t\tseparatorType={ shouldShowLinkOptions ? undefined : 'none' }\n\t\t\t\t/>\n\t\t\t\t{ shouldShowLinkOptions && (\n\t\t\t\t\t<>\n\t\t\t\t\t\t<BottomSheet.SwitchCell\n\t\t\t\t\t\t\ticon={ external }\n\t\t\t\t\t\t\tlabel={ __( 'Open in new tab' ) }\n\t\t\t\t\t\t\tvalue={ opensInNewWindow }\n\t\t\t\t\t\t\tonValueChange={ setOpensInNewWindows }\n\t\t\t\t\t\t\tseparatorType={ 'fullWidth' }\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<BottomSheet.Cell\n\t\t\t\t\t\t\tlabel={ __( 'Remove link' ) }\n\t\t\t\t\t\t\tlabelStyle={ styles.clearLinkButton }\n\t\t\t\t\t\t\tseparatorType={ 'none' }\n\t\t\t\t\t\t\tonPress={ removeLink }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</>\n\t\t\t\t) }\n\t\t\t</>\n\t\t);\n\t}, [ inputValue, text, opensInNewWindow, listProps.safeAreaBottomInset ] );\n};\n\nexport default LinkSettingsScreen;\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/format-library/src/link/modal-screens/screens.native.js"],"
|
|
1
|
+
{"version":3,"names":["settings","picker"],"sources":["@wordpress/format-library/src/link/modal-screens/screens.native.js"],"sourcesContent":["export default {\n\tsettings: 'linkSettings',\n\tpicker: 'linkPicker',\n};\n"],"mappings":"AAAA,eAAe;EACdA,QAAQ,EAAE,cAAc;EACxBC,MAAM,EAAE;AACT,CAAC"}
|
|
@@ -1,18 +1,16 @@
|
|
|
1
1
|
import { createElement } from "@wordpress/element";
|
|
2
|
-
|
|
3
2
|
/**
|
|
4
3
|
* WordPress dependencies
|
|
5
4
|
*/
|
|
6
5
|
import { useMemo } from '@wordpress/element';
|
|
7
6
|
import { BottomSheet, withSpokenMessages } from '@wordpress/components';
|
|
7
|
+
|
|
8
8
|
/**
|
|
9
9
|
* Internal dependencies
|
|
10
10
|
*/
|
|
11
|
-
|
|
12
11
|
import screens from './modal-screens/screens';
|
|
13
12
|
import LinkSettingsScreen from './modal-screens/link-settings-screen';
|
|
14
13
|
import LinkPickerScreen from './modal-screens/link-picker-screen';
|
|
15
|
-
|
|
16
14
|
const ModalLinkUI = ({
|
|
17
15
|
isVisible,
|
|
18
16
|
...restProps
|
|
@@ -39,6 +37,5 @@ const ModalLinkUI = ({
|
|
|
39
37
|
}, createElement(LinkPickerScreen, null))));
|
|
40
38
|
}, [isVisible]);
|
|
41
39
|
};
|
|
42
|
-
|
|
43
40
|
export default withSpokenMessages(ModalLinkUI);
|
|
44
41
|
//# sourceMappingURL=modal.native.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["useMemo","BottomSheet","withSpokenMessages","screens","LinkSettingsScreen","LinkPickerScreen","ModalLinkUI","isVisible","restProps","createElement","hideHeader","onClose","hasNavigation","testID","NavigationContainer","animate","main","NavigationScreen","name","settings","picker","isScrollable","fullScreen"],"sources":["@wordpress/format-library/src/link/modal.native.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useMemo } from '@wordpress/element';\nimport { BottomSheet, withSpokenMessages } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport screens from './modal-screens/screens';\nimport LinkSettingsScreen from './modal-screens/link-settings-screen';\nimport LinkPickerScreen from './modal-screens/link-picker-screen';\n\nconst ModalLinkUI = ( { isVisible, ...restProps } ) => {\n\treturn useMemo( () => {\n\t\treturn (\n\t\t\t<BottomSheet\n\t\t\t\tisVisible={ isVisible }\n\t\t\t\thideHeader\n\t\t\t\tonClose={ restProps.onClose }\n\t\t\t\thasNavigation\n\t\t\t\ttestID=\"link-settings-modal\"\n\t\t\t>\n\t\t\t\t<BottomSheet.NavigationContainer animate main>\n\t\t\t\t\t<BottomSheet.NavigationScreen name={ screens.settings }>\n\t\t\t\t\t\t<LinkSettingsScreen\n\t\t\t\t\t\t\tisVisible={ isVisible }\n\t\t\t\t\t\t\t{ ...restProps }\n\t\t\t\t\t\t/>\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t\t<BottomSheet.NavigationScreen\n\t\t\t\t\t\tname={ screens.picker }\n\t\t\t\t\t\tisScrollable\n\t\t\t\t\t\tfullScreen\n\t\t\t\t\t>\n\t\t\t\t\t\t<LinkPickerScreen />\n\t\t\t\t\t</BottomSheet.NavigationScreen>\n\t\t\t\t</BottomSheet.NavigationContainer>\n\t\t\t</BottomSheet>\n\t\t);\n\t}, [ isVisible ] );\n};\n\nexport default withSpokenMessages( ModalLinkUI );\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,OAAO,QAAQ,oBAAoB;AAC5C,SAASC,WAAW,EAAEC,kBAAkB,QAAQ,uBAAuB;;AAEvE;AACA;AACA;AACA,OAAOC,OAAO,MAAM,yBAAyB;AAC7C,OAAOC,kBAAkB,MAAM,sCAAsC;AACrE,OAAOC,gBAAgB,MAAM,oCAAoC;AAEjE,MAAMC,WAAW,GAAGA,CAAE;EAAEC,SAAS;EAAE,GAAGC;AAAU,CAAC,KAAM;EACtD,OAAOR,OAAO,CAAE,MAAM;IACrB,OACCS,aAAA,CAACR,WAAW;MACXM,SAAS,EAAGA,SAAW;MACvBG,UAAU;MACVC,OAAO,EAAGH,SAAS,CAACG,OAAS;MAC7BC,aAAa;MACbC,MAAM,EAAC;IAAqB,GAE5BJ,aAAA,CAACR,WAAW,CAACa,mBAAmB;MAACC,OAAO;MAACC,IAAI;IAAA,GAC5CP,aAAA,CAACR,WAAW,CAACgB,gBAAgB;MAACC,IAAI,EAAGf,OAAO,CAACgB;IAAU,GACtDV,aAAA,CAACL,kBAAkB;MAClBG,SAAS,EAAGA,SAAW;MAAA,GAClBC;IAAS,CACd,CAC4B,CAAC,EAC/BC,aAAA,CAACR,WAAW,CAACgB,gBAAgB;MAC5BC,IAAI,EAAGf,OAAO,CAACiB,MAAQ;MACvBC,YAAY;MACZC,UAAU;IAAA,GAEVb,aAAA,CAACJ,gBAAgB,MAAE,CACU,CACE,CACrB,CAAC;EAEhB,CAAC,EAAE,CAAEE,SAAS,CAAG,CAAC;AACnB,CAAC;AAED,eAAeL,kBAAkB,CAAEI,WAAY,CAAC"}
|
|
@@ -1,33 +1,29 @@
|
|
|
1
1
|
// Weakly referenced map allows unused ids to be garbage collected.
|
|
2
|
-
const weakMap = new WeakMap();
|
|
2
|
+
const weakMap = new WeakMap();
|
|
3
3
|
|
|
4
|
+
// Incrementing zero-based ID value.
|
|
4
5
|
let id = -1;
|
|
5
6
|
const prefix = 'link-control-instance';
|
|
6
|
-
|
|
7
7
|
function getKey(_id) {
|
|
8
8
|
return `${prefix}-${_id}`;
|
|
9
9
|
}
|
|
10
|
+
|
|
10
11
|
/**
|
|
11
12
|
* Builds a unique link control key for the given object reference.
|
|
12
13
|
*
|
|
13
14
|
* @param {Object} instance an unique object reference specific to this link control instance.
|
|
14
15
|
* @return {string | undefined} the unique key to use for this link control.
|
|
15
16
|
*/
|
|
16
|
-
|
|
17
|
-
|
|
18
17
|
function useLinkInstanceKey(instance) {
|
|
19
18
|
if (!instance) {
|
|
20
19
|
return;
|
|
21
20
|
}
|
|
22
|
-
|
|
23
21
|
if (weakMap.has(instance)) {
|
|
24
22
|
return getKey(weakMap.get(instance));
|
|
25
23
|
}
|
|
26
|
-
|
|
27
24
|
id += 1;
|
|
28
25
|
weakMap.set(instance, id);
|
|
29
26
|
return getKey(id);
|
|
30
27
|
}
|
|
31
|
-
|
|
32
28
|
export default useLinkInstanceKey;
|
|
33
29
|
//# sourceMappingURL=use-link-instance-key.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["weakMap","WeakMap","id","prefix","getKey","_id","useLinkInstanceKey","instance","has","get","set"],"sources":["@wordpress/format-library/src/link/use-link-instance-key.js"],"sourcesContent":["// Weakly referenced map allows unused ids to be garbage collected.\nconst weakMap = new WeakMap();\n\n// Incrementing zero-based ID value.\nlet id = -1;\n\nconst prefix = 'link-control-instance';\n\nfunction getKey( _id ) {\n\treturn `${ prefix }-${ _id }`;\n}\n\n/**\n * Builds a unique link control key for the given object reference.\n *\n * @param {Object} instance an unique object reference specific to this link control instance.\n * @return {string | undefined} the unique key to use for this link control.\n */\nfunction useLinkInstanceKey( instance ) {\n\tif ( ! instance ) {\n\t\treturn;\n\t}\n\tif ( weakMap.has( instance ) ) {\n\t\treturn getKey( weakMap.get( instance ) );\n\t}\n\n\tid += 1;\n\n\tweakMap.set( instance, id );\n\n\treturn getKey( id );\n}\n\nexport default useLinkInstanceKey;\n"],"mappings":"AAAA;AACA,MAAMA,OAAO,GAAG,IAAIC,OAAO,CAAC,CAAC;;AAE7B;AACA,IAAIC,EAAE,GAAG,CAAC,CAAC;AAEX,MAAMC,MAAM,GAAG,uBAAuB;AAEtC,SAASC,MAAMA,CAAEC,GAAG,EAAG;EACtB,OAAQ,GAAGF,MAAQ,IAAIE,GAAK,EAAC;AAC9B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,kBAAkBA,CAAEC,QAAQ,EAAG;EACvC,IAAK,CAAEA,QAAQ,EAAG;IACjB;EACD;EACA,IAAKP,OAAO,CAACQ,GAAG,CAAED,QAAS,CAAC,EAAG;IAC9B,OAAOH,MAAM,CAAEJ,OAAO,CAACS,GAAG,CAAEF,QAAS,CAAE,CAAC;EACzC;EAEAL,EAAE,IAAI,CAAC;EAEPF,OAAO,CAACU,GAAG,CAAEH,QAAQ,EAAEL,EAAG,CAAC;EAE3B,OAAOE,MAAM,CAAEF,EAAG,CAAC;AACpB;AAEA,eAAeI,kBAAkB"}
|