@wordpress/format-library 4.16.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.
Files changed (107) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/bold/index.js +1 -10
  3. package/build/bold/index.js.map +1 -1
  4. package/build/code/index.js +3 -17
  5. package/build/code/index.js.map +1 -1
  6. package/build/default-formats.js +0 -14
  7. package/build/default-formats.js.map +1 -1
  8. package/build/default-formats.native.js +0 -6
  9. package/build/default-formats.native.js.map +1 -1
  10. package/build/image/index.js +5 -14
  11. package/build/image/index.js.map +1 -1
  12. package/build/index.js +1 -3
  13. package/build/index.js.map +1 -1
  14. package/build/italic/index.js +1 -10
  15. package/build/italic/index.js.map +1 -1
  16. package/build/keyboard/index.js +1 -10
  17. package/build/keyboard/index.js.map +1 -1
  18. package/build/language/index.js +1 -11
  19. package/build/language/index.js.map +1 -1
  20. package/build/link/index.js +5 -26
  21. package/build/link/index.js.map +1 -1
  22. package/build/link/index.native.js +14 -39
  23. package/build/link/index.native.js.map +1 -1
  24. package/build/link/inline.js +41 -78
  25. package/build/link/inline.js.map +1 -1
  26. package/build/link/modal-screens/link-picker-screen.native.js +1 -13
  27. package/build/link/modal-screens/link-picker-screen.native.js.map +1 -1
  28. package/build/link/modal-screens/link-settings-screen.native.js +9 -36
  29. package/build/link/modal-screens/link-settings-screen.native.js.map +1 -1
  30. package/build/link/modal-screens/screens.native.js.map +1 -1
  31. package/build/link/modal.native.js +1 -9
  32. package/build/link/modal.native.js.map +1 -1
  33. package/build/link/use-link-instance-key.js +3 -7
  34. package/build/link/use-link-instance-key.js.map +1 -1
  35. package/build/link/utils.js +23 -47
  36. package/build/link/utils.js.map +1 -1
  37. package/build/strikethrough/index.js +1 -9
  38. package/build/strikethrough/index.js.map +1 -1
  39. package/build/subscript/index.js +1 -10
  40. package/build/subscript/index.js.map +1 -1
  41. package/build/superscript/index.js +1 -10
  42. package/build/superscript/index.js.map +1 -1
  43. package/build/text-color/index.js +7 -25
  44. package/build/text-color/index.js.map +1 -1
  45. package/build/text-color/index.native.js +11 -34
  46. package/build/text-color/index.native.js.map +1 -1
  47. package/build/text-color/inline.js +5 -26
  48. package/build/text-color/inline.js.map +1 -1
  49. package/build/text-color/inline.native.js +9 -25
  50. package/build/text-color/inline.native.js.map +1 -1
  51. package/build/underline/index.js +1 -8
  52. package/build/underline/index.js.map +1 -1
  53. package/build/unknown/index.js +1 -11
  54. package/build/unknown/index.js.map +1 -1
  55. package/build-module/bold/index.js +0 -7
  56. package/build-module/bold/index.js.map +1 -1
  57. package/build-module/code/index.js +2 -14
  58. package/build-module/code/index.js.map +1 -1
  59. package/build-module/default-formats.js.map +1 -1
  60. package/build-module/default-formats.native.js.map +1 -1
  61. package/build-module/image/index.js +4 -10
  62. package/build-module/image/index.js.map +1 -1
  63. package/build-module/index.js +1 -1
  64. package/build-module/index.js.map +1 -1
  65. package/build-module/italic/index.js +0 -7
  66. package/build-module/italic/index.js.map +1 -1
  67. package/build-module/keyboard/index.js +0 -7
  68. package/build-module/keyboard/index.js.map +1 -1
  69. package/build-module/language/index.js +1 -8
  70. package/build-module/language/index.js.map +1 -1
  71. package/build-module/link/index.js +5 -17
  72. package/build-module/link/index.js.map +1 -1
  73. package/build-module/link/index.native.js +15 -30
  74. package/build-module/link/index.native.js.map +1 -1
  75. package/build-module/link/inline.js +42 -69
  76. package/build-module/link/inline.js.map +1 -1
  77. package/build-module/link/modal-screens/link-picker-screen.native.js +2 -8
  78. package/build-module/link/modal-screens/link-picker-screen.native.js.map +1 -1
  79. package/build-module/link/modal-screens/link-settings-screen.native.js +10 -28
  80. package/build-module/link/modal-screens/link-settings-screen.native.js.map +1 -1
  81. package/build-module/link/modal-screens/screens.native.js.map +1 -1
  82. package/build-module/link/modal.native.js +1 -4
  83. package/build-module/link/modal.native.js.map +1 -1
  84. package/build-module/link/use-link-instance-key.js +3 -7
  85. package/build-module/link/use-link-instance-key.js.map +1 -1
  86. package/build-module/link/utils.js +24 -43
  87. package/build-module/link/utils.js.map +1 -1
  88. package/build-module/strikethrough/index.js +0 -6
  89. package/build-module/strikethrough/index.js.map +1 -1
  90. package/build-module/subscript/index.js +0 -7
  91. package/build-module/subscript/index.js.map +1 -1
  92. package/build-module/superscript/index.js +0 -7
  93. package/build-module/superscript/index.js.map +1 -1
  94. package/build-module/text-color/index.js +7 -20
  95. package/build-module/text-color/index.js.map +1 -1
  96. package/build-module/text-color/index.native.js +12 -24
  97. package/build-module/text-color/index.native.js.map +1 -1
  98. package/build-module/text-color/inline.js +5 -20
  99. package/build-module/text-color/inline.js.map +1 -1
  100. package/build-module/text-color/inline.native.js +9 -21
  101. package/build-module/text-color/inline.native.js.map +1 -1
  102. package/build-module/underline/index.js +0 -6
  103. package/build-module/underline/index.js.map +1 -1
  104. package/build-module/unknown/index.js +0 -8
  105. package/build-module/unknown/index.js.map +1 -1
  106. package/package.json +13 -13
  107. package/src/link/inline.js +11 -34
@@ -1 +1 @@
1
- {"version":3,"sources":["@wordpress/format-library/src/link/inline.js"],"names":["useState","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","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 { 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\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 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,"sources":["@wordpress/format-library/src/link/modal-screens/link-picker-screen.native.js"],"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"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,cAAzB;AACA,SAASC,aAAT,EAAwBC,QAAxB,QAAwC,0BAAxC;AAEA;AACA;AACA;;AACA,SAASC,SAAT,EAAoBC,OAApB,EAA6BC,MAA7B,QAA2C,oBAA3C;AAEA,SAASC,UAAT,QAA2B,uBAA3B;AAEA;AACA;AACA;;AACA,OAAOC,mBAAP,MAAgC,WAAhC;;AAEA,MAAMC,gBAAgB,GAAG,MAAM;AAC9B,QAAMC,UAAU,GAAGR,aAAa,EAAhC;AACA,QAAMS,KAAK,GAAGR,QAAQ,EAAtB;AACA,QAAMS,wBAAwB,GAAGN,MAAM,CAAE,IAAF,CAAvC;AACA,QAAMO,sBAAsB,GAAGP,MAAM,CAAE,IAAF,CAArC;;AAEA,QAAMQ,YAAY,GAAG,CAAE;AAAEC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,GAAF,KAAsB;AAC1Cf,IAAAA,QAAQ,CAACgB,OAAT;AACAL,IAAAA,wBAAwB,CAACM,OAAzB,GAAmCC,UAAU,CAAE,MAAM;AACpDT,MAAAA,UAAU,CAACU,QAAX,CAAqBZ,mBAAmB,CAACa,QAAzC,EAAmD;AAClDC,QAAAA,UAAU,EAAEP,GADsC;AAElDQ,QAAAA,IAAI,EAAEP;AAF4C,OAAnD;AAIA,KAL4C,EAK1C,GAL0C,CAA7C;AAMA,GARD;;AAUA,QAAMQ,QAAQ,GAAG,MAAM;AACtBvB,IAAAA,QAAQ,CAACgB,OAAT;AACAJ,IAAAA,sBAAsB,CAACK,OAAvB,GAAiCC,UAAU,CAAE,MAAM;AAClDT,MAAAA,UAAU,CAACe,MAAX;AACA,KAF0C,EAExC,GAFwC,CAA3C;AAGA,GALD;;AAOArB,EAAAA,SAAS,CAAE,MAAM;AAChB,WAAO,MAAM;AACZsB,MAAAA,YAAY,CAAEd,wBAAwB,CAACM,OAA3B,CAAZ;AACAQ,MAAAA,YAAY,CAAEb,sBAAsB,CAACK,OAAzB,CAAZ;AACA,KAHD;AAIA,GALQ,EAKN,EALM,CAAT;AAOA,QAAM;AAAEI,IAAAA;AAAF,MAAiBX,KAAK,CAACgB,MAA7B;AACA,SAAOtB,OAAO,CAAE,MAAM;AACrB,WACC,cAAC,UAAD;AACC,MAAA,KAAK,EAAGiB,UADT;AAEC,MAAA,YAAY,EAAGR,YAFhB;AAGC,MAAA,QAAQ,EAAGU;AAHZ,MADD;AAOA,GARa,EAQX,CAAEF,UAAF,CARW,CAAd;AASA,CAxCD;;AA0CA,eAAeb,gBAAf","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"]}
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({ ...value,
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
- } // Move selection to end of link.
127
-
128
-
129
- const textLength = newAttributes.text.length; // check for zero width spaces
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({ ...newAttributes,
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"],"names":["settings","picker"],"mappings":"AAAA,eAAe;AACdA,EAAAA,QAAQ,EAAE,cADI;AAEdC,EAAAA,MAAM,EAAE;AAFM,CAAf","sourcesContent":["export default {\n\tsettings: 'linkSettings',\n\tpicker: 'linkPicker',\n};\n"]}
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,"sources":["@wordpress/format-library/src/link/modal.native.js"],"names":["useMemo","BottomSheet","withSpokenMessages","screens","LinkSettingsScreen","LinkPickerScreen","ModalLinkUI","isVisible","restProps","onClose","settings","picker"],"mappings":";;AAAA;AACA;AACA;AACA,SAASA,OAAT,QAAwB,oBAAxB;AACA,SAASC,WAAT,EAAsBC,kBAAtB,QAAgD,uBAAhD;AAEA;AACA;AACA;;AACA,OAAOC,OAAP,MAAoB,yBAApB;AACA,OAAOC,kBAAP,MAA+B,sCAA/B;AACA,OAAOC,gBAAP,MAA6B,oCAA7B;;AAEA,MAAMC,WAAW,GAAG,CAAE;AAAEC,EAAAA,SAAF;AAAa,KAAGC;AAAhB,CAAF,KAAmC;AACtD,SAAOR,OAAO,CAAE,MAAM;AACrB,WACC,cAAC,WAAD;AACC,MAAA,SAAS,EAAGO,SADb;AAEC,MAAA,UAAU,MAFX;AAGC,MAAA,OAAO,EAAGC,SAAS,CAACC,OAHrB;AAIC,MAAA,aAAa,MAJd;AAKC,MAAA,MAAM,EAAC;AALR,OAOC,cAAC,WAAD,CAAa,mBAAb;AAAiC,MAAA,OAAO,MAAxC;AAAyC,MAAA,IAAI;AAA7C,OACC,cAAC,WAAD,CAAa,gBAAb;AAA8B,MAAA,IAAI,EAAGN,OAAO,CAACO;AAA7C,OACC,cAAC,kBAAD;AACC,MAAA,SAAS,EAAGH,SADb;AAAA,SAEMC;AAFN,MADD,CADD,EAOC,cAAC,WAAD,CAAa,gBAAb;AACC,MAAA,IAAI,EAAGL,OAAO,CAACQ,MADhB;AAEC,MAAA,YAAY,MAFb;AAGC,MAAA,UAAU;AAHX,OAKC,cAAC,gBAAD,OALD,CAPD,CAPD,CADD;AAyBA,GA1Ba,EA0BX,CAAEJ,SAAF,CA1BW,CAAd;AA2BA,CA5BD;;AA8BA,eAAeL,kBAAkB,CAAEI,WAAF,CAAjC","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"]}
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(); // Incrementing zero-based ID value.
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,"sources":["@wordpress/format-library/src/link/use-link-instance-key.js"],"names":["weakMap","WeakMap","id","prefix","getKey","_id","useLinkInstanceKey","instance","has","get","set"],"mappings":"AAAA;AACA,MAAMA,OAAO,GAAG,IAAIC,OAAJ,EAAhB,C,CAEA;;AACA,IAAIC,EAAE,GAAG,CAAC,CAAV;AAEA,MAAMC,MAAM,GAAG,uBAAf;;AAEA,SAASC,MAAT,CAAiBC,GAAjB,EAAuB;AACtB,SAAQ,GAAGF,MAAQ,IAAIE,GAAK,EAA5B;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASC,kBAAT,CAA6BC,QAA7B,EAAwC;AACvC,MAAK,CAAEA,QAAP,EAAkB;AACjB;AACA;;AACD,MAAKP,OAAO,CAACQ,GAAR,CAAaD,QAAb,CAAL,EAA+B;AAC9B,WAAOH,MAAM,CAAEJ,OAAO,CAACS,GAAR,CAAaF,QAAb,CAAF,CAAb;AACA;;AAEDL,EAAAA,EAAE,IAAI,CAAN;AAEAF,EAAAA,OAAO,CAACU,GAAR,CAAaH,QAAb,EAAuBL,EAAvB;AAEA,SAAOE,MAAM,CAAEF,EAAF,CAAb;AACA;;AAED,eAAeI,kBAAf","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"]}
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"}