@wordpress/components 29.10.0 → 29.12.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 (76) hide show
  1. package/CHANGELOG.md +29 -0
  2. package/build/drop-zone/index.js +2 -1
  3. package/build/drop-zone/index.js.map +1 -1
  4. package/build/drop-zone/types.js.map +1 -1
  5. package/build/focal-point-picker/styles/focal-point-picker-style.js +11 -11
  6. package/build/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  7. package/build/form-file-upload/index.js +4 -6
  8. package/build/form-file-upload/index.js.map +1 -1
  9. package/build/form-token-field/index.js +2 -2
  10. package/build/form-token-field/index.js.map +1 -1
  11. package/build/form-token-field/suggestions-list.js +2 -8
  12. package/build/form-token-field/suggestions-list.js.map +1 -1
  13. package/build/input-control/input-field.js +0 -14
  14. package/build/input-control/input-field.js.map +1 -1
  15. package/build/mobile/image/index.native.js +1 -1
  16. package/build/mobile/image/index.native.js.map +1 -1
  17. package/build/mobile/utils/get-px-from-css-unit.native.js +1 -1
  18. package/build/mobile/utils/get-px-from-css-unit.native.js.map +1 -1
  19. package/build/private-apis.js +4 -1
  20. package/build/private-apis.js.map +1 -1
  21. package/build/utils/strings.js +1 -1
  22. package/build/utils/strings.js.map +1 -1
  23. package/build-module/drop-zone/index.js +2 -1
  24. package/build-module/drop-zone/index.js.map +1 -1
  25. package/build-module/drop-zone/types.js.map +1 -1
  26. package/build-module/focal-point-picker/styles/focal-point-picker-style.js +11 -11
  27. package/build-module/focal-point-picker/styles/focal-point-picker-style.js.map +1 -1
  28. package/build-module/form-file-upload/index.js +4 -6
  29. package/build-module/form-file-upload/index.js.map +1 -1
  30. package/build-module/form-token-field/index.js +2 -2
  31. package/build-module/form-token-field/index.js.map +1 -1
  32. package/build-module/form-token-field/suggestions-list.js +2 -8
  33. package/build-module/form-token-field/suggestions-list.js.map +1 -1
  34. package/build-module/input-control/input-field.js +0 -14
  35. package/build-module/input-control/input-field.js.map +1 -1
  36. package/build-module/mobile/image/index.native.js +1 -1
  37. package/build-module/mobile/image/index.native.js.map +1 -1
  38. package/build-module/mobile/utils/get-px-from-css-unit.native.js +1 -1
  39. package/build-module/mobile/utils/get-px-from-css-unit.native.js.map +1 -1
  40. package/build-module/private-apis.js +5 -2
  41. package/build-module/private-apis.js.map +1 -1
  42. package/build-module/utils/strings.js +1 -1
  43. package/build-module/utils/strings.js.map +1 -1
  44. package/build-style/style-rtl.css +6 -6
  45. package/build-style/style.css +6 -6
  46. package/build-types/drop-zone/index.d.ts +1 -1
  47. package/build-types/drop-zone/index.d.ts.map +1 -1
  48. package/build-types/drop-zone/stories/index.story.d.ts.map +1 -1
  49. package/build-types/drop-zone/types.d.ts +6 -0
  50. package/build-types/drop-zone/types.d.ts.map +1 -1
  51. package/build-types/form-file-upload/index.d.ts.map +1 -1
  52. package/build-types/form-token-field/index.d.ts.map +1 -1
  53. package/build-types/form-token-field/suggestions-list.d.ts.map +1 -1
  54. package/build-types/input-control/input-field.d.ts.map +1 -1
  55. package/build-types/private-apis.d.ts.map +1 -1
  56. package/build-types/utils/strings.d.ts.map +1 -1
  57. package/package.json +19 -19
  58. package/src/circular-option-picker/stories/index.story.tsx +2 -2
  59. package/src/drop-zone/index.tsx +2 -1
  60. package/src/drop-zone/stories/index.story.tsx +15 -0
  61. package/src/drop-zone/types.ts +6 -0
  62. package/src/focal-point-picker/styles/focal-point-picker-style.ts +1 -1
  63. package/src/form-file-upload/index.tsx +6 -12
  64. package/src/form-token-field/index.tsx +5 -2
  65. package/src/form-token-field/suggestions-list.tsx +4 -8
  66. package/src/form-token-field/test/index.tsx +39 -0
  67. package/src/input-control/input-field.tsx +0 -18
  68. package/src/input-control/test/index.js +0 -17
  69. package/src/mobile/image/index.native.js +1 -1
  70. package/src/mobile/utils/get-px-from-css-unit.native.js +1 -1
  71. package/src/private-apis.ts +4 -1
  72. package/src/toolbar/toolbar/style.scss +3 -6
  73. package/src/toolbar/toolbar-group/style.scss +4 -4
  74. package/src/utils/strings.ts +1 -0
  75. package/src/utils/test/strings.js +11 -0
  76. package/tsconfig.tsbuildinfo +1 -1
@@ -55,12 +55,10 @@ export function FormFileUpload({
55
55
  ...props,
56
56
  children: children
57
57
  });
58
- // @todo: Temporary fix a bug that prevents Chromium browsers from selecting ".heic" files
59
- // from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.
60
- // This can be removed once the Chromium fix is in the stable channel.
61
- // Prevent Safari from adding "image/heic" and "image/heif" to the accept attribute.
62
- const isSafari = globalThis.window?.navigator.userAgent.includes('Safari') && !globalThis.window?.navigator.userAgent.includes('Chrome') && !globalThis.window?.navigator.userAgent.includes('Chromium');
63
- const compatAccept = !isSafari && !!accept?.includes('image/*') ? `${accept}, image/heic, image/heif` : accept;
58
+
59
+ // iOS browsers may not reliably handle 'audio/*' in the accept attribute.
60
+ // Adding explicit audio MIME types improves compatibility across all devices.
61
+ const compatAccept = accept?.includes('audio/*') ? `${accept}, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm` : accept;
64
62
  return /*#__PURE__*/_jsxs("div", {
65
63
  className: "components-form-file-upload",
66
64
  children: [ui, /*#__PURE__*/_jsx("input", {
@@ -1 +1 @@
1
- {"version":3,"names":["useRef","Button","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","componentName","__next40pxDefaultSize","size","ui","isSafari","globalThis","window","navigator","userAgent","includes","compatAccept","className","type","style","display"],"sources":["@wordpress/components/src/form-file-upload/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\n/**\n * FormFileUpload allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * __next40pxDefaultSize\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\t// @todo: Temporary fix a bug that prevents Chromium browsers from selecting \".heic\" files\n\t// from the file upload. See https://core.trac.wordpress.org/ticket/62268#comment:4.\n\t// This can be removed once the Chromium fix is in the stable channel.\n\t// Prevent Safari from adding \"image/heic\" and \"image/heif\" to the accept attribute.\n\tconst isSafari =\n\t\tglobalThis.window?.navigator.userAgent.includes( 'Safari' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chrome' ) &&\n\t\t! globalThis.window?.navigator.userAgent.includes( 'Chromium' );\n\tconst compatAccept =\n\t\t! isSafari && !! accept?.includes( 'image/*' )\n\t\t\t? `${ accept }, image/heic, image/heif`\n\t\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAG9B,SAASC,2BAA2B,QAAQ,+BAA+B;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA,OAAO,SAASC,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAGf,MAAM,CAAsB,IAAK,CAAC;EAC9C,MAAMgB,cAAc,GAAGA,CAAA,KAAM;IAC5BD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEL,MAAM,EAAG;IACfX,2BAA2B,CAAE;MAC5BiB,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAEN,KAAK,CAACM,qBAAqB;MAClD;MACAC,IAAI,EAAEP,KAAK,CAACO;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGT,MAAM,GAChBA,MAAM,CAAE;IAAEG;EAAe,CAAE,CAAC,gBAE5BZ,IAAA,CAACH,MAAM;IAACW,OAAO,EAAGI,cAAgB;IAAA,GAAMF,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;EACD;EACA;EACA;EACA;EACA,MAAMc,QAAQ,GACbC,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC3D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,QAAS,CAAC,IAC7D,CAAEJ,UAAU,CAACC,MAAM,EAAEC,SAAS,CAACC,SAAS,CAACC,QAAQ,CAAE,UAAW,CAAC;EAChE,MAAMC,YAAY,GACjB,CAAEN,QAAQ,IAAI,CAAC,CAAEf,MAAM,EAAEoB,QAAQ,CAAE,SAAU,CAAC,GAC3C,GAAIpB,MAAM,0BAA2B,GACrCA,MAAM;EAEV,oBACCF,KAAA;IAAKwB,SAAS,EAAC,6BAA6B;IAAArB,QAAA,GACzCa,EAAE,eACJlB,IAAA;MACC2B,IAAI,EAAC,MAAM;MACXhB,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBsB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BzB,MAAM,EAAGqB,YAAc;MACvBlB,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,eAAeL,cAAc","ignoreList":[]}
1
+ {"version":3,"names":["useRef","Button","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","FormFileUpload","accept","children","multiple","onChange","onClick","render","props","ref","openFileDialog","current","click","componentName","__next40pxDefaultSize","size","ui","compatAccept","includes","className","type","style","display"],"sources":["@wordpress/components/src/form-file-upload/index.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport Button from '../button';\nimport type { WordPressComponentProps } from '../context';\nimport type { FormFileUploadProps } from './types';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\n/**\n * FormFileUpload allows users to select files from their local device.\n *\n * ```jsx\n * import { FormFileUpload } from '@wordpress/components';\n *\n * const MyFormFileUpload = () => (\n * <FormFileUpload\n * __next40pxDefaultSize\n * accept=\"image/*\"\n * onChange={ ( event ) => console.log( event.currentTarget.files ) }\n * >\n * Upload\n * </FormFileUpload>\n * );\n * ```\n */\nexport function FormFileUpload( {\n\taccept,\n\tchildren,\n\tmultiple = false,\n\tonChange,\n\tonClick,\n\trender,\n\t...props\n}: WordPressComponentProps< FormFileUploadProps, 'button', false > ) {\n\tconst ref = useRef< HTMLInputElement >( null );\n\tconst openFileDialog = () => {\n\t\tref.current?.click();\n\t};\n\n\tif ( ! render ) {\n\t\tmaybeWarnDeprecated36pxSize( {\n\t\t\tcomponentName: 'FormFileUpload',\n\t\t\t__next40pxDefaultSize: props.__next40pxDefaultSize,\n\t\t\t// @ts-expect-error - We don't \"officially\" support all Button props but this likely happens.\n\t\t\tsize: props.size,\n\t\t} );\n\t}\n\n\tconst ui = render ? (\n\t\trender( { openFileDialog } )\n\t) : (\n\t\t<Button onClick={ openFileDialog } { ...props }>\n\t\t\t{ children }\n\t\t</Button>\n\t);\n\n\t// iOS browsers may not reliably handle 'audio/*' in the accept attribute.\n\t// Adding explicit audio MIME types improves compatibility across all devices.\n\tconst compatAccept = accept?.includes( 'audio/*' )\n\t\t? `${ accept }, audio/mp3, audio/x-m4a, audio/x-m4b, audio/x-m4p, audio/x-wav, audio/webm`\n\t\t: accept;\n\n\treturn (\n\t\t<div className=\"components-form-file-upload\">\n\t\t\t{ ui }\n\t\t\t<input\n\t\t\t\ttype=\"file\"\n\t\t\t\tref={ ref }\n\t\t\t\tmultiple={ multiple }\n\t\t\t\tstyle={ { display: 'none' } }\n\t\t\t\taccept={ compatAccept }\n\t\t\t\tonChange={ onChange }\n\t\t\t\tonClick={ onClick }\n\t\t\t\tdata-testid=\"form-file-upload-input\"\n\t\t\t/>\n\t\t</div>\n\t);\n}\n\nexport default FormFileUpload;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,MAAM,QAAQ,oBAAoB;;AAE3C;AACA;AACA;AACA,OAAOC,MAAM,MAAM,WAAW;AAG9B,SAASC,2BAA2B,QAAQ,+BAA+B;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAhBA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA,OAAO,SAASC,cAAcA,CAAE;EAC/BC,MAAM;EACNC,QAAQ;EACRC,QAAQ,GAAG,KAAK;EAChBC,QAAQ;EACRC,OAAO;EACPC,MAAM;EACN,GAAGC;AAC6D,CAAC,EAAG;EACpE,MAAMC,GAAG,GAAGf,MAAM,CAAsB,IAAK,CAAC;EAC9C,MAAMgB,cAAc,GAAGA,CAAA,KAAM;IAC5BD,GAAG,CAACE,OAAO,EAAEC,KAAK,CAAC,CAAC;EACrB,CAAC;EAED,IAAK,CAAEL,MAAM,EAAG;IACfX,2BAA2B,CAAE;MAC5BiB,aAAa,EAAE,gBAAgB;MAC/BC,qBAAqB,EAAEN,KAAK,CAACM,qBAAqB;MAClD;MACAC,IAAI,EAAEP,KAAK,CAACO;IACb,CAAE,CAAC;EACJ;EAEA,MAAMC,EAAE,GAAGT,MAAM,GAChBA,MAAM,CAAE;IAAEG;EAAe,CAAE,CAAC,gBAE5BZ,IAAA,CAACH,MAAM;IAACW,OAAO,EAAGI,cAAgB;IAAA,GAAMF,KAAK;IAAAL,QAAA,EAC1CA;EAAQ,CACH,CACR;;EAED;EACA;EACA,MAAMc,YAAY,GAAGf,MAAM,EAAEgB,QAAQ,CAAE,SAAU,CAAC,GAC/C,GAAIhB,MAAM,6EAA8E,GACxFA,MAAM;EAET,oBACCF,KAAA;IAAKmB,SAAS,EAAC,6BAA6B;IAAAhB,QAAA,GACzCa,EAAE,eACJlB,IAAA;MACCsB,IAAI,EAAC,MAAM;MACXX,GAAG,EAAGA,GAAK;MACXL,QAAQ,EAAGA,QAAU;MACrBiB,KAAK,EAAG;QAAEC,OAAO,EAAE;MAAO,CAAG;MAC7BpB,MAAM,EAAGe,YAAc;MACvBZ,QAAQ,EAAGA,QAAU;MACrBC,OAAO,EAAGA,OAAS;MACnB,eAAY;IAAwB,CACpC,CAAC;EAAA,CACE,CAAC;AAER;AAEA,eAAeL,cAAc","ignoreList":[]}
@@ -398,9 +398,9 @@ export function FormTokenField(props) {
398
398
  if (match.length === 0) {
399
399
  _suggestions = _suggestions.filter(suggestion => !normalizedValue.includes(suggestion));
400
400
  } else {
401
- match = match.toLocaleLowerCase();
401
+ match = match.normalize('NFKC').toLocaleLowerCase();
402
402
  _suggestions.forEach(suggestion => {
403
- const index = suggestion.toLocaleLowerCase().indexOf(match);
403
+ const index = suggestion.normalize('NFKC').toLocaleLowerCase().indexOf(match);
404
404
  if (normalizedValue.indexOf(suggestion) === -1) {
405
405
  if (index === 0) {
406
406
  startsWithMatch.push(suggestion);
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","isShallowEqual","deprecated","Token","TokenInput","TokensAndInputWrapperFlex","SuggestionsList","FlexItem","StyledHelp","StyledLabel","Spacer","useDeprecated36pxDefaultSizeProp","withIgnoreIMEEvents","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","identity","value","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalRenderItem","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","__next40pxDefaultSize","__experimentalAutoSelectFirstMatch","__nextHasNoMarginBottom","tokenizeOnBlur","since","version","hint","componentName","size","instanceId","incompleteTokenValue","setIncompleteTokenValue","inputOffsetFromEnd","setInputOffsetFromEnd","isActive","setIsActive","isExpanded","setIsExpanded","selectedSuggestionIndex","setSelectedSuggestionIndex","selectedSuggestionScroll","setSelectedSuggestionScroll","prevSuggestions","prevValue","input","tokensAndInput","debouncedSpeak","hasFocus","focus","suggestionsDidUpdate","updateSuggestions","current","ownerDocument","activeElement","onFocusHandler","event","target","onBlur","inputHasValidValue","addNewToken","hasFocusWithin","relatedTarget","onKeyDown","preventDefault","defaultPrevented","key","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","Set","map","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","toLocaleLowerCase","forEach","push","concat","some","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","children","title","onClickRemove","onMouseEnter","onMouseLeave","inputProps","ref","classes","tokenFieldProps","tabIndex","Object","assign","htmlFor","onMouseDown","onTouchStart","justify","align","gap","wrap","hasTokens","selectedIndex","scrollIntoView","onHover","onSelect","marginBottom","id"],"sources":["@wordpress/components/src/form-token-field/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { KeyboardEvent, MouseEvent, TouchEvent, FocusEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport {\n\tStyledHelp,\n\tStyledLabel,\n} from '../base-control/styles/base-control-styles';\nimport { Spacer } from '../spacer';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\nconst identity = ( value: string ) => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](https://react.dev/reference/react-dom/components#form-components) in the React Documentation for more information.\n */\nexport function FormTokenField( props: FormTokenFieldProps ) {\n\tconst {\n\t\tautoCapitalize,\n\t\tautoComplete,\n\t\tmaxLength,\n\t\tplaceholder,\n\t\tlabel = __( 'Add item' ),\n\t\tclassName,\n\t\tsuggestions = [],\n\t\tmaxSuggestions = 100,\n\t\tvalue = [],\n\t\tdisplayTransform = identity,\n\t\tsaveTransform = ( token ) => token.trim(),\n\t\tonChange = () => {},\n\t\tonInputChange = () => {},\n\t\tonFocus = undefined,\n\t\tisBorderless = false,\n\t\tdisabled = false,\n\t\ttokenizeOnSpace = false,\n\t\tmessages = {\n\t\t\tadded: __( 'Item added.' ),\n\t\t\tremoved: __( 'Item removed.' ),\n\t\t\tremove: __( 'Remove item' ),\n\t\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t\t},\n\t\t__experimentalRenderItem,\n\t\t__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\n\t\t__next40pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t\t__nextHasNoMarginBottom = false,\n\t\ttokenizeOnBlur = false,\n\t} = useDeprecated36pxDefaultSizeProp< FormTokenFieldProps >( props );\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated( 'Bottom margin styles for wp.components.FormTokenField', {\n\t\t\tsince: '6.7',\n\t\t\tversion: '7.0',\n\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version.',\n\t\t} );\n\t}\n\n\tmaybeWarnDeprecated36pxSize( {\n\t\tcomponentName: 'FormTokenField',\n\t\tsize: undefined,\n\t\t__next40pxDefaultSize,\n\t} );\n\n\tconst instanceId = useInstanceId( FormTokenField );\n\n\t// We reset to these initial values again in the onBlur\n\tconst [ incompleteTokenValue, setIncompleteTokenValue ] = useState( '' );\n\tconst [ inputOffsetFromEnd, setInputOffsetFromEnd ] = useState( 0 );\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst [ isExpanded, setIsExpanded ] = useState( false );\n\tconst [ selectedSuggestionIndex, setSelectedSuggestionIndex ] =\n\t\tuseState( -1 );\n\tconst [ selectedSuggestionScroll, setSelectedSuggestionScroll ] =\n\t\tuseState( false );\n\n\tconst prevSuggestions = usePrevious< string[] >( suggestions );\n\tconst prevValue = usePrevious< ( string | TokenItem )[] >( value );\n\n\tconst input = useRef< HTMLInputElement >( null );\n\tconst tokensAndInput = useRef< HTMLInputElement >( null );\n\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tuseEffect( () => {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( isActive && ! hasFocus() ) {\n\t\t\tfocus();\n\t\t}\n\t}, [ isActive ] );\n\n\tuseEffect( () => {\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevSuggestions || []\n\t\t);\n\n\t\tif ( suggestionsDidUpdate || value !== prevValue ) {\n\t\t\tupdateSuggestions( suggestionsDidUpdate );\n\t\t}\n\n\t\t// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ __experimentalAutoSelectFirstMatch ] );\n\n\tif ( disabled && isActive ) {\n\t\tsetIsActive( false );\n\t\tsetIncompleteTokenValue( '' );\n\t}\n\n\tfunction focus() {\n\t\tinput.current?.focus();\n\t}\n\n\tfunction hasFocus() {\n\t\treturn input.current === input.current?.ownerDocument.activeElement;\n\t}\n\n\tfunction onFocusHandler( event: FocusEvent ) {\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( hasFocus() || event.target === tokensAndInput.current ) {\n\t\t\tsetIsActive( true );\n\t\t\tsetIsExpanded( __experimentalExpandOnFocus || isExpanded );\n\t\t} else {\n\t\t\t/*\n\t\t\t * Otherwise, focus is on one of the token \"remove\" buttons and we\n\t\t\t * set the isActive state to false to prevent the input to be\n\t\t\t * re-focused, see componentDidUpdate().\n\t\t\t */\n\t\t\tsetIsActive( false );\n\t\t}\n\n\t\tif ( 'function' === typeof onFocus ) {\n\t\t\tonFocus( event );\n\t\t}\n\t}\n\n\tfunction onBlur( event: FocusEvent ) {\n\t\tif (\n\t\t\tinputHasValidValue() &&\n\t\t\t__experimentalValidateInput( incompleteTokenValue )\n\t\t) {\n\t\t\tsetIsActive( false );\n\t\t\tif ( tokenizeOnBlur && inputHasValidValue() ) {\n\t\t\t\taddNewToken( incompleteTokenValue );\n\t\t\t}\n\t\t} else {\n\t\t\t// Reset to initial state\n\t\t\tsetIncompleteTokenValue( '' );\n\t\t\tsetInputOffsetFromEnd( 0 );\n\t\t\tsetIsActive( false );\n\n\t\t\tif ( __experimentalExpandOnFocus ) {\n\t\t\t\t// If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n\t\t\t\t// the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n\t\t\t\tconst hasFocusWithin =\n\t\t\t\t\tevent.relatedTarget === tokensAndInput.current;\n\t\t\t\tsetIsExpanded( hasFocusWithin );\n\t\t\t} else {\n\t\t\t\t// Else collapse the suggestion list. This will result in the suggestion list closing\n\t\t\t\t// after a suggestion has been submitted since that causes a blur.\n\t\t\t\tsetIsExpanded( false );\n\t\t\t}\n\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onKeyDown( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.key ) {\n\t\t\tcase 'Backspace':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenBeforeInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpreventDefault = handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenAfterInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Space':\n\t\t\t\tif ( tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tpreventDefault = handleEscapeKey( event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onKeyPress( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tswitch ( event.key ) {\n\t\t\tcase ',':\n\t\t\t\tpreventDefault = handleCommaKey();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onContainerTouched( event: MouseEvent | TouchEvent ) {\n\t\t// Prevent clicking/touching the tokensAndInput container from blurring\n\t\t// the input and adding the current token.\n\t\tif ( event.target === tokensAndInput.current && isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onTokenClickRemove( event: { value: string } ) {\n\t\tdeleteToken( event.value );\n\t\tfocus();\n\t}\n\n\tfunction onSuggestionHovered( suggestion: string ) {\n\t\tconst index = getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tsetSelectedSuggestionIndex( index );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onSuggestionSelected( suggestion: string ) {\n\t\taddNewToken( suggestion );\n\t}\n\n\tfunction onInputChangeHandler( event: { value: string } ) {\n\t\tconst text = event.value;\n\t\tconst separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n\t\tconst items = text.split( separator );\n\t\tconst tokenValue = items[ items.length - 1 ] || '';\n\n\t\tif ( items.length > 1 ) {\n\t\t\taddNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\t\tsetIncompleteTokenValue( tokenValue );\n\t\tonInputChange( tokenValue );\n\t}\n\n\tfunction handleDeleteKey( _deleteToken: () => void ) {\n\t\tlet preventDefault = false;\n\t\tif ( hasFocus() && isInputEmpty() ) {\n\t\t\t_deleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleUpArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index === 0\n\t\t\t\t\t? getMatchingSuggestions(\n\t\t\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\t\t\tsuggestions,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\t\t\tsaveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: index ) - 1\n\t\t\t);\n\t\t} );\n\t\tsetSelectedSuggestionScroll( true );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleDownArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index + 1 ) %\n\t\t\t\tgetMatchingSuggestions(\n\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tvalue,\n\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\tsaveTransform\n\t\t\t\t).length\n\t\t\t);\n\t\t} );\n\n\t\tsetSelectedSuggestionScroll( true );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleEscapeKey( event: KeyboardEvent ) {\n\t\tif ( event.target instanceof HTMLInputElement ) {\n\t\t\tsetIncompleteTokenValue( event.target.value );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleCommaKey() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction moveInputToIndex( index: number ) {\n\t\tsetInputOffsetFromEnd( value.length - Math.max( index, -1 ) - 1 );\n\t}\n\n\tfunction moveInputBeforePreviousToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.min( prevInputOffsetFromEnd + 1, value.length );\n\t\t} );\n\t}\n\n\tfunction moveInputAfterNextToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.max( prevInputOffsetFromEnd - 1, 0 );\n\t\t} );\n\t}\n\n\tfunction deleteTokenBeforeInput() {\n\t\tconst index = getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t}\n\t}\n\n\tfunction deleteTokenAfterInput() {\n\t\tconst index = getIndexOfInput();\n\n\t\tif ( index < value.length ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tmoveInputToIndex( index );\n\t\t}\n\t}\n\n\tfunction addCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\taddNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction addNewTokens( tokens: string[] ) {\n\t\tconst tokensToAdd = [\n\t\t\t...new Set(\n\t\t\t\ttokens\n\t\t\t\t\t.map( saveTransform )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t\t),\n\t\t];\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = [ ...value ];\n\t\t\tnewValue.splice( getIndexOfInput(), 0, ...tokensToAdd );\n\t\t\tonChange( newValue );\n\t\t}\n\t}\n\n\tfunction addNewToken( token: string ) {\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tspeak( messages.__experimentalInvalid, 'assertive' );\n\t\t\treturn;\n\t\t}\n\t\taddNewTokens( [ token ] );\n\t\tspeak( messages.added, 'assertive' );\n\n\t\tsetIncompleteTokenValue( '' );\n\t\tsetSelectedSuggestionIndex( -1 );\n\t\tsetSelectedSuggestionScroll( false );\n\t\tsetIsExpanded( ! __experimentalExpandOnFocus );\n\n\t\tif ( isActive && ! tokenizeOnBlur ) {\n\t\t\tfocus();\n\t\t}\n\t}\n\n\tfunction deleteToken( token: string | TokenItem ) {\n\t\tconst newTokens = value.filter( ( item ) => {\n\t\t\treturn getTokenValue( item ) !== getTokenValue( token );\n\t\t} );\n\t\tonChange( newTokens );\n\t\tspeak( messages.removed, 'assertive' );\n\t}\n\n\tfunction getTokenValue( token: { value: string } | string ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tfunction getMatchingSuggestions(\n\t\tsearchValue = incompleteTokenValue,\n\t\t_suggestions = suggestions,\n\t\t_value = value,\n\t\t_maxSuggestions = maxSuggestions,\n\t\t_saveTransform = saveTransform\n\t) {\n\t\tlet match = _saveTransform( searchValue );\n\t\tconst startsWithMatch: string[] = [];\n\t\tconst containsMatch: string[] = [];\n\t\tconst normalizedValue = _value.map( ( item ) => {\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\treturn item.value;\n\t\t} );\n\n\t\tif ( match.length === 0 ) {\n\t\t\t_suggestions = _suggestions.filter(\n\t\t\t\t( suggestion ) => ! normalizedValue.includes( suggestion )\n\t\t\t);\n\t\t} else {\n\t\t\tmatch = match.toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion.toLocaleLowerCase().indexOf( match );\n\t\t\t\tif ( normalizedValue.indexOf( suggestion ) === -1 ) {\n\t\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t\tstartsWithMatch.push( suggestion );\n\t\t\t\t\t} else if ( index > 0 ) {\n\t\t\t\t\t\tcontainsMatch.push( suggestion );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t_suggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn _suggestions.slice( 0, _maxSuggestions );\n\t}\n\n\tfunction getSelectedSuggestion() {\n\t\tif ( selectedSuggestionIndex !== -1 ) {\n\t\t\treturn getMatchingSuggestions()[ selectedSuggestionIndex ];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction valueContainsToken( token: string ) {\n\t\treturn value.some( ( item ) => {\n\t\t\treturn getTokenValue( token ) === getTokenValue( item );\n\t\t} );\n\t}\n\n\tfunction getIndexOfInput() {\n\t\treturn value.length - inputOffsetFromEnd;\n\t}\n\n\tfunction isInputEmpty() {\n\t\treturn incompleteTokenValue.length === 0;\n\t}\n\n\tfunction inputHasValidValue() {\n\t\treturn saveTransform( incompleteTokenValue ).length > 0;\n\t}\n\n\tfunction updateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions =\n\t\t\tgetMatchingSuggestions( incompleteTokenValue );\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n\t\tsetIsExpanded(\n\t\t\tshouldExpandIfFocuses ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tif (\n\t\t\t\t__experimentalAutoSelectFirstMatch &&\n\t\t\t\tinputHasMinimumChars &&\n\t\t\t\thasMatchingSuggestions\n\t\t\t) {\n\t\t\t\tsetSelectedSuggestionIndex( 0 );\n\t\t\t\tsetSelectedSuggestionScroll( true );\n\t\t\t} else {\n\t\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\t\tsetSelectedSuggestionScroll( false );\n\t\t\t}\n\t\t}\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst message = hasMatchingSuggestions\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t )\n\t\t\t\t: __( 'No results.' );\n\n\t\t\tdebouncedSpeak( message, 'assertive' );\n\t\t}\n\t}\n\n\tfunction renderTokensAndInput() {\n\t\tconst components = value.map( renderToken );\n\t\tcomponents.splice( getIndexOfInput(), 0, renderInput() );\n\n\t\treturn components;\n\t}\n\n\tfunction renderToken(\n\t\ttoken: string | TokenItem,\n\t\tindex: number,\n\t\ttokens: ( string | TokenItem )[]\n\t) {\n\t\tconst _value = getTokenValue( token );\n\t\tconst status = typeof token !== 'string' ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<FlexItem key={ 'token-' + _value }>\n\t\t\t\t<Token\n\t\t\t\t\tvalue={ _value }\n\t\t\t\t\tstatus={ status }\n\t\t\t\t\ttitle={\n\t\t\t\t\t\ttypeof token !== 'string' ? token.title : undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\t\tisBorderless={\n\t\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\t\tisBorderless\n\t\t\t\t\t}\n\t\t\t\t\tonMouseEnter={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseEnter\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonMouseLeave={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseLeave\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\t\tmessages={ messages }\n\t\t\t\t\ttermsCount={ termsCount }\n\t\t\t\t\ttermPosition={ termPosition }\n\t\t\t\t/>\n\t\t\t</FlexItem>\n\t\t);\n\t}\n\n\tfunction renderInput() {\n\t\tconst inputProps = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tdisabled,\n\t\t\tvalue: incompleteTokenValue,\n\t\t\tonBlur,\n\t\t\tisExpanded,\n\t\t\tselectedSuggestionIndex,\n\t\t};\n\n\t\treturn (\n\t\t\t<TokenInput\n\t\t\t\tkey=\"input\"\n\t\t\t\t{ ...inputProps }\n\t\t\t\tonChange={\n\t\t\t\t\t! ( maxLength && value.length >= maxLength )\n\t\t\t\t\t\t? onInputChangeHandler\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tref={ input }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst classes = clsx(\n\t\tclassName,\n\t\t'components-form-token-field__input-container',\n\t\t{\n\t\t\t'is-active': isActive,\n\t\t\t'is-disabled': disabled,\n\t\t}\n\t);\n\n\tlet tokenFieldProps = {\n\t\tclassName: 'components-form-token-field',\n\t\ttabIndex: -1,\n\t};\n\tconst matchingSuggestions = getMatchingSuggestions();\n\n\tif ( ! disabled ) {\n\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\tonKeyDown: withIgnoreIMEEvents( onKeyDown ),\n\t\t\tonKeyPress,\n\t\t\tonFocus: onFocusHandler,\n\t\t} );\n\t}\n\n\t// Disable reason: There is no appropriate role which describes the\n\t// input container intended accessible usability.\n\t// TODO: Refactor click detection to use blur to stop propagation.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<div { ...tokenFieldProps }>\n\t\t\t{ label && (\n\t\t\t\t<StyledLabel\n\t\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</StyledLabel>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tref={ tokensAndInput }\n\t\t\t\tclassName={ classes }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonMouseDown={ onContainerTouched }\n\t\t\t\tonTouchStart={ onContainerTouched }\n\t\t\t>\n\t\t\t\t<TokensAndInputWrapperFlex\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\twrap\n\t\t\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\t\t\thasTokens={ !! value.length }\n\t\t\t\t>\n\t\t\t\t\t{ renderTokensAndInput() }\n\t\t\t\t</TokensAndInputWrapperFlex>\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\tmatch={ saveTransform( incompleteTokenValue ) }\n\t\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\tselectedIndex={ selectedSuggestionIndex }\n\t\t\t\t\t\tscrollIntoView={ selectedSuggestionScroll }\n\t\t\t\t\t\tonHover={ onSuggestionHovered }\n\t\t\t\t\t\tonSelect={ onSuggestionSelected }\n\t\t\t\t\t\t__experimentalRenderItem={ __experimentalRenderItem }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! __nextHasNoMarginBottom && <Spacer marginBottom={ 2 } /> }\n\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t<StyledHelp\n\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t>\n\t\t\t\t\t{ tokenizeOnSpace\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t</StyledHelp>\n\t\t\t) }\n\t\t</div>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n\nexport default FormTokenField;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useEffect","useRef","useState","__","_n","sprintf","useDebounce","useInstanceId","usePrevious","speak","isShallowEqual","deprecated","Token","TokenInput","TokensAndInputWrapperFlex","SuggestionsList","FlexItem","StyledHelp","StyledLabel","Spacer","useDeprecated36pxDefaultSizeProp","withIgnoreIMEEvents","maybeWarnDeprecated36pxSize","jsx","_jsx","jsxs","_jsxs","identity","value","FormTokenField","props","autoCapitalize","autoComplete","maxLength","placeholder","label","className","suggestions","maxSuggestions","displayTransform","saveTransform","token","trim","onChange","onInputChange","onFocus","undefined","isBorderless","disabled","tokenizeOnSpace","messages","added","removed","remove","__experimentalInvalid","__experimentalRenderItem","__experimentalExpandOnFocus","__experimentalValidateInput","__experimentalShowHowTo","__next40pxDefaultSize","__experimentalAutoSelectFirstMatch","__nextHasNoMarginBottom","tokenizeOnBlur","since","version","hint","componentName","size","instanceId","incompleteTokenValue","setIncompleteTokenValue","inputOffsetFromEnd","setInputOffsetFromEnd","isActive","setIsActive","isExpanded","setIsExpanded","selectedSuggestionIndex","setSelectedSuggestionIndex","selectedSuggestionScroll","setSelectedSuggestionScroll","prevSuggestions","prevValue","input","tokensAndInput","debouncedSpeak","hasFocus","focus","suggestionsDidUpdate","updateSuggestions","current","ownerDocument","activeElement","onFocusHandler","event","target","onBlur","inputHasValidValue","addNewToken","hasFocusWithin","relatedTarget","onKeyDown","preventDefault","defaultPrevented","key","handleDeleteKey","deleteTokenBeforeInput","addCurrentToken","handleLeftArrowKey","handleUpArrowKey","handleRightArrowKey","handleDownArrowKey","deleteTokenAfterInput","handleEscapeKey","onKeyPress","handleCommaKey","onContainerTouched","onTokenClickRemove","deleteToken","onSuggestionHovered","suggestion","index","getMatchingSuggestions","indexOf","onSuggestionSelected","onInputChangeHandler","text","separator","items","split","tokenValue","length","addNewTokens","slice","_deleteToken","isInputEmpty","moveInputBeforePreviousToken","moveInputAfterNextToken","HTMLInputElement","moveInputToIndex","Math","max","prevInputOffsetFromEnd","min","getIndexOfInput","selectedSuggestion","getSelectedSuggestion","tokens","tokensToAdd","Set","map","filter","Boolean","valueContainsToken","newValue","splice","newTokens","item","getTokenValue","searchValue","_suggestions","_value","_maxSuggestions","_saveTransform","match","startsWithMatch","containsMatch","normalizedValue","includes","normalize","toLocaleLowerCase","forEach","push","concat","some","resetSelectedSuggestion","inputHasMinimumChars","matchingSuggestions","hasMatchingSuggestions","shouldExpandIfFocuses","message","renderTokensAndInput","components","renderToken","renderInput","status","termPosition","termsCount","children","title","onClickRemove","onMouseEnter","onMouseLeave","inputProps","ref","classes","tokenFieldProps","tabIndex","Object","assign","htmlFor","onMouseDown","onTouchStart","justify","align","gap","wrap","hasTokens","selectedIndex","scrollIntoView","onHover","onSelect","marginBottom","id"],"sources":["@wordpress/components/src/form-token-field/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { KeyboardEvent, MouseEvent, TouchEvent, FocusEvent } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __, _n, sprintf } from '@wordpress/i18n';\nimport { useDebounce, useInstanceId, usePrevious } from '@wordpress/compose';\nimport { speak } from '@wordpress/a11y';\nimport isShallowEqual from '@wordpress/is-shallow-equal';\nimport deprecated from '@wordpress/deprecated';\n\n/**\n * Internal dependencies\n */\nimport Token from './token';\nimport TokenInput from './token-input';\nimport { TokensAndInputWrapperFlex } from './styles';\nimport SuggestionsList from './suggestions-list';\nimport type { FormTokenFieldProps, TokenItem } from './types';\nimport { FlexItem } from '../flex';\nimport {\n\tStyledHelp,\n\tStyledLabel,\n} from '../base-control/styles/base-control-styles';\nimport { Spacer } from '../spacer';\nimport { useDeprecated36pxDefaultSizeProp } from '../utils/use-deprecated-props';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\nimport { maybeWarnDeprecated36pxSize } from '../utils/deprecated-36px-size';\n\nconst identity = ( value: string ) => value;\n\n/**\n * A `FormTokenField` is a field similar to the tags and categories fields in the interim editor chrome,\n * or the \"to\" field in Mail on OS X. Tokens can be entered by typing them or selecting them from a list of suggested tokens.\n *\n * Up to one hundred suggestions that match what the user has typed so far will be shown from which the user can pick from (auto-complete).\n * Tokens are separated by the \",\" character. Suggestions can be selected with the up or down arrows and added with the tab or enter key.\n *\n * The `value` property is handled in a manner similar to controlled form components.\n * See [Forms](https://react.dev/reference/react-dom/components#form-components) in the React Documentation for more information.\n */\nexport function FormTokenField( props: FormTokenFieldProps ) {\n\tconst {\n\t\tautoCapitalize,\n\t\tautoComplete,\n\t\tmaxLength,\n\t\tplaceholder,\n\t\tlabel = __( 'Add item' ),\n\t\tclassName,\n\t\tsuggestions = [],\n\t\tmaxSuggestions = 100,\n\t\tvalue = [],\n\t\tdisplayTransform = identity,\n\t\tsaveTransform = ( token ) => token.trim(),\n\t\tonChange = () => {},\n\t\tonInputChange = () => {},\n\t\tonFocus = undefined,\n\t\tisBorderless = false,\n\t\tdisabled = false,\n\t\ttokenizeOnSpace = false,\n\t\tmessages = {\n\t\t\tadded: __( 'Item added.' ),\n\t\t\tremoved: __( 'Item removed.' ),\n\t\t\tremove: __( 'Remove item' ),\n\t\t\t__experimentalInvalid: __( 'Invalid item' ),\n\t\t},\n\t\t__experimentalRenderItem,\n\t\t__experimentalExpandOnFocus = false,\n\t\t__experimentalValidateInput = () => true,\n\t\t__experimentalShowHowTo = true,\n\t\t__next40pxDefaultSize = false,\n\t\t__experimentalAutoSelectFirstMatch = false,\n\t\t__nextHasNoMarginBottom = false,\n\t\ttokenizeOnBlur = false,\n\t} = useDeprecated36pxDefaultSizeProp< FormTokenFieldProps >( props );\n\n\tif ( ! __nextHasNoMarginBottom ) {\n\t\tdeprecated( 'Bottom margin styles for wp.components.FormTokenField', {\n\t\t\tsince: '6.7',\n\t\t\tversion: '7.0',\n\t\t\thint: 'Set the `__nextHasNoMarginBottom` prop to true to start opting into the new styles, which will become the default in a future version.',\n\t\t} );\n\t}\n\n\tmaybeWarnDeprecated36pxSize( {\n\t\tcomponentName: 'FormTokenField',\n\t\tsize: undefined,\n\t\t__next40pxDefaultSize,\n\t} );\n\n\tconst instanceId = useInstanceId( FormTokenField );\n\n\t// We reset to these initial values again in the onBlur\n\tconst [ incompleteTokenValue, setIncompleteTokenValue ] = useState( '' );\n\tconst [ inputOffsetFromEnd, setInputOffsetFromEnd ] = useState( 0 );\n\tconst [ isActive, setIsActive ] = useState( false );\n\tconst [ isExpanded, setIsExpanded ] = useState( false );\n\tconst [ selectedSuggestionIndex, setSelectedSuggestionIndex ] =\n\t\tuseState( -1 );\n\tconst [ selectedSuggestionScroll, setSelectedSuggestionScroll ] =\n\t\tuseState( false );\n\n\tconst prevSuggestions = usePrevious< string[] >( suggestions );\n\tconst prevValue = usePrevious< ( string | TokenItem )[] >( value );\n\n\tconst input = useRef< HTMLInputElement >( null );\n\tconst tokensAndInput = useRef< HTMLInputElement >( null );\n\n\tconst debouncedSpeak = useDebounce( speak, 500 );\n\n\tuseEffect( () => {\n\t\t// Make sure to focus the input when the isActive state is true.\n\t\tif ( isActive && ! hasFocus() ) {\n\t\t\tfocus();\n\t\t}\n\t}, [ isActive ] );\n\n\tuseEffect( () => {\n\t\tconst suggestionsDidUpdate = ! isShallowEqual(\n\t\t\tsuggestions,\n\t\t\tprevSuggestions || []\n\t\t);\n\n\t\tif ( suggestionsDidUpdate || value !== prevValue ) {\n\t\t\tupdateSuggestions( suggestionsDidUpdate );\n\t\t}\n\n\t\t// TODO: updateSuggestions() should first be refactored so its actual deps are clearer.\n\t}, [ suggestions, prevSuggestions, value, prevValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ incompleteTokenValue ] );\n\n\tuseEffect( () => {\n\t\tupdateSuggestions();\n\t}, [ __experimentalAutoSelectFirstMatch ] );\n\n\tif ( disabled && isActive ) {\n\t\tsetIsActive( false );\n\t\tsetIncompleteTokenValue( '' );\n\t}\n\n\tfunction focus() {\n\t\tinput.current?.focus();\n\t}\n\n\tfunction hasFocus() {\n\t\treturn input.current === input.current?.ownerDocument.activeElement;\n\t}\n\n\tfunction onFocusHandler( event: FocusEvent ) {\n\t\t// If focus is on the input or on the container, set the isActive state to true.\n\t\tif ( hasFocus() || event.target === tokensAndInput.current ) {\n\t\t\tsetIsActive( true );\n\t\t\tsetIsExpanded( __experimentalExpandOnFocus || isExpanded );\n\t\t} else {\n\t\t\t/*\n\t\t\t * Otherwise, focus is on one of the token \"remove\" buttons and we\n\t\t\t * set the isActive state to false to prevent the input to be\n\t\t\t * re-focused, see componentDidUpdate().\n\t\t\t */\n\t\t\tsetIsActive( false );\n\t\t}\n\n\t\tif ( 'function' === typeof onFocus ) {\n\t\t\tonFocus( event );\n\t\t}\n\t}\n\n\tfunction onBlur( event: FocusEvent ) {\n\t\tif (\n\t\t\tinputHasValidValue() &&\n\t\t\t__experimentalValidateInput( incompleteTokenValue )\n\t\t) {\n\t\t\tsetIsActive( false );\n\t\t\tif ( tokenizeOnBlur && inputHasValidValue() ) {\n\t\t\t\taddNewToken( incompleteTokenValue );\n\t\t\t}\n\t\t} else {\n\t\t\t// Reset to initial state\n\t\t\tsetIncompleteTokenValue( '' );\n\t\t\tsetInputOffsetFromEnd( 0 );\n\t\t\tsetIsActive( false );\n\n\t\t\tif ( __experimentalExpandOnFocus ) {\n\t\t\t\t// If `__experimentalExpandOnFocus` is true, don't close the suggestions list when\n\t\t\t\t// the user clicks on it (`tokensAndInput` will be the element that caused the blur).\n\t\t\t\tconst hasFocusWithin =\n\t\t\t\t\tevent.relatedTarget === tokensAndInput.current;\n\t\t\t\tsetIsExpanded( hasFocusWithin );\n\t\t\t} else {\n\t\t\t\t// Else collapse the suggestion list. This will result in the suggestion list closing\n\t\t\t\t// after a suggestion has been submitted since that causes a blur.\n\t\t\t\tsetIsExpanded( false );\n\t\t\t}\n\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onKeyDown( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tif ( event.defaultPrevented ) {\n\t\t\treturn;\n\t\t}\n\t\tswitch ( event.key ) {\n\t\t\tcase 'Backspace':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenBeforeInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Enter':\n\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowLeft':\n\t\t\t\tpreventDefault = handleLeftArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpreventDefault = handleUpArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowRight':\n\t\t\t\tpreventDefault = handleRightArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpreventDefault = handleDownArrowKey();\n\t\t\t\tbreak;\n\t\t\tcase 'Delete':\n\t\t\t\tpreventDefault = handleDeleteKey( deleteTokenAfterInput );\n\t\t\t\tbreak;\n\t\t\tcase 'Space':\n\t\t\t\tif ( tokenizeOnSpace ) {\n\t\t\t\t\tpreventDefault = addCurrentToken();\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase 'Escape':\n\t\t\t\tpreventDefault = handleEscapeKey( event );\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onKeyPress( event: KeyboardEvent ) {\n\t\tlet preventDefault = false;\n\n\t\tswitch ( event.key ) {\n\t\t\tcase ',':\n\t\t\t\tpreventDefault = handleCommaKey();\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif ( preventDefault ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onContainerTouched( event: MouseEvent | TouchEvent ) {\n\t\t// Prevent clicking/touching the tokensAndInput container from blurring\n\t\t// the input and adding the current token.\n\t\tif ( event.target === tokensAndInput.current && isActive ) {\n\t\t\tevent.preventDefault();\n\t\t}\n\t}\n\n\tfunction onTokenClickRemove( event: { value: string } ) {\n\t\tdeleteToken( event.value );\n\t\tfocus();\n\t}\n\n\tfunction onSuggestionHovered( suggestion: string ) {\n\t\tconst index = getMatchingSuggestions().indexOf( suggestion );\n\n\t\tif ( index >= 0 ) {\n\t\t\tsetSelectedSuggestionIndex( index );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\t}\n\n\tfunction onSuggestionSelected( suggestion: string ) {\n\t\taddNewToken( suggestion );\n\t}\n\n\tfunction onInputChangeHandler( event: { value: string } ) {\n\t\tconst text = event.value;\n\t\tconst separator = tokenizeOnSpace ? /[ ,\\t]+/ : /[,\\t]+/;\n\t\tconst items = text.split( separator );\n\t\tconst tokenValue = items[ items.length - 1 ] || '';\n\n\t\tif ( items.length > 1 ) {\n\t\t\taddNewTokens( items.slice( 0, -1 ) );\n\t\t}\n\t\tsetIncompleteTokenValue( tokenValue );\n\t\tonInputChange( tokenValue );\n\t}\n\n\tfunction handleDeleteKey( _deleteToken: () => void ) {\n\t\tlet preventDefault = false;\n\t\tif ( hasFocus() && isInputEmpty() ) {\n\t\t\t_deleteToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleLeftArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputBeforePreviousToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleRightArrowKey() {\n\t\tlet preventDefault = false;\n\t\tif ( isInputEmpty() ) {\n\t\t\tmoveInputAfterNextToken();\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction handleUpArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index === 0\n\t\t\t\t\t? getMatchingSuggestions(\n\t\t\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\t\t\tsuggestions,\n\t\t\t\t\t\t\tvalue,\n\t\t\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\t\t\tsaveTransform\n\t\t\t\t\t ).length\n\t\t\t\t\t: index ) - 1\n\t\t\t);\n\t\t} );\n\t\tsetSelectedSuggestionScroll( true );\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleDownArrowKey() {\n\t\tsetSelectedSuggestionIndex( ( index ) => {\n\t\t\treturn (\n\t\t\t\t( index + 1 ) %\n\t\t\t\tgetMatchingSuggestions(\n\t\t\t\t\tincompleteTokenValue,\n\t\t\t\t\tsuggestions,\n\t\t\t\t\tvalue,\n\t\t\t\t\tmaxSuggestions,\n\t\t\t\t\tsaveTransform\n\t\t\t\t).length\n\t\t\t);\n\t\t} );\n\n\t\tsetSelectedSuggestionScroll( true );\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleEscapeKey( event: KeyboardEvent ) {\n\t\tif ( event.target instanceof HTMLInputElement ) {\n\t\t\tsetIncompleteTokenValue( event.target.value );\n\t\t\tsetIsExpanded( false );\n\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\tsetSelectedSuggestionScroll( false );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction handleCommaKey() {\n\t\tif ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t}\n\n\t\treturn true; // PreventDefault.\n\t}\n\n\tfunction moveInputToIndex( index: number ) {\n\t\tsetInputOffsetFromEnd( value.length - Math.max( index, -1 ) - 1 );\n\t}\n\n\tfunction moveInputBeforePreviousToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.min( prevInputOffsetFromEnd + 1, value.length );\n\t\t} );\n\t}\n\n\tfunction moveInputAfterNextToken() {\n\t\tsetInputOffsetFromEnd( ( prevInputOffsetFromEnd ) => {\n\t\t\treturn Math.max( prevInputOffsetFromEnd - 1, 0 );\n\t\t} );\n\t}\n\n\tfunction deleteTokenBeforeInput() {\n\t\tconst index = getIndexOfInput() - 1;\n\n\t\tif ( index > -1 ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t}\n\t}\n\n\tfunction deleteTokenAfterInput() {\n\t\tconst index = getIndexOfInput();\n\n\t\tif ( index < value.length ) {\n\t\t\tdeleteToken( value[ index ] );\n\t\t\t// Update input offset since it's the offset from the last token.\n\t\t\tmoveInputToIndex( index );\n\t\t}\n\t}\n\n\tfunction addCurrentToken() {\n\t\tlet preventDefault = false;\n\t\tconst selectedSuggestion = getSelectedSuggestion();\n\n\t\tif ( selectedSuggestion ) {\n\t\t\taddNewToken( selectedSuggestion );\n\t\t\tpreventDefault = true;\n\t\t} else if ( inputHasValidValue() ) {\n\t\t\taddNewToken( incompleteTokenValue );\n\t\t\tpreventDefault = true;\n\t\t}\n\n\t\treturn preventDefault;\n\t}\n\n\tfunction addNewTokens( tokens: string[] ) {\n\t\tconst tokensToAdd = [\n\t\t\t...new Set(\n\t\t\t\ttokens\n\t\t\t\t\t.map( saveTransform )\n\t\t\t\t\t.filter( Boolean )\n\t\t\t\t\t.filter( ( token ) => ! valueContainsToken( token ) )\n\t\t\t),\n\t\t];\n\n\t\tif ( tokensToAdd.length > 0 ) {\n\t\t\tconst newValue = [ ...value ];\n\t\t\tnewValue.splice( getIndexOfInput(), 0, ...tokensToAdd );\n\t\t\tonChange( newValue );\n\t\t}\n\t}\n\n\tfunction addNewToken( token: string ) {\n\t\tif ( ! __experimentalValidateInput( token ) ) {\n\t\t\tspeak( messages.__experimentalInvalid, 'assertive' );\n\t\t\treturn;\n\t\t}\n\t\taddNewTokens( [ token ] );\n\t\tspeak( messages.added, 'assertive' );\n\n\t\tsetIncompleteTokenValue( '' );\n\t\tsetSelectedSuggestionIndex( -1 );\n\t\tsetSelectedSuggestionScroll( false );\n\t\tsetIsExpanded( ! __experimentalExpandOnFocus );\n\n\t\tif ( isActive && ! tokenizeOnBlur ) {\n\t\t\tfocus();\n\t\t}\n\t}\n\n\tfunction deleteToken( token: string | TokenItem ) {\n\t\tconst newTokens = value.filter( ( item ) => {\n\t\t\treturn getTokenValue( item ) !== getTokenValue( token );\n\t\t} );\n\t\tonChange( newTokens );\n\t\tspeak( messages.removed, 'assertive' );\n\t}\n\n\tfunction getTokenValue( token: { value: string } | string ) {\n\t\tif ( 'object' === typeof token ) {\n\t\t\treturn token.value;\n\t\t}\n\n\t\treturn token;\n\t}\n\n\tfunction getMatchingSuggestions(\n\t\tsearchValue = incompleteTokenValue,\n\t\t_suggestions = suggestions,\n\t\t_value = value,\n\t\t_maxSuggestions = maxSuggestions,\n\t\t_saveTransform = saveTransform\n\t) {\n\t\tlet match = _saveTransform( searchValue );\n\t\tconst startsWithMatch: string[] = [];\n\t\tconst containsMatch: string[] = [];\n\t\tconst normalizedValue = _value.map( ( item ) => {\n\t\t\tif ( typeof item === 'string' ) {\n\t\t\t\treturn item;\n\t\t\t}\n\t\t\treturn item.value;\n\t\t} );\n\n\t\tif ( match.length === 0 ) {\n\t\t\t_suggestions = _suggestions.filter(\n\t\t\t\t( suggestion ) => ! normalizedValue.includes( suggestion )\n\t\t\t);\n\t\t} else {\n\t\t\tmatch = match.normalize( 'NFKC' ).toLocaleLowerCase();\n\n\t\t\t_suggestions.forEach( ( suggestion ) => {\n\t\t\t\tconst index = suggestion\n\t\t\t\t\t.normalize( 'NFKC' )\n\t\t\t\t\t.toLocaleLowerCase()\n\t\t\t\t\t.indexOf( match );\n\t\t\t\tif ( normalizedValue.indexOf( suggestion ) === -1 ) {\n\t\t\t\t\tif ( index === 0 ) {\n\t\t\t\t\t\tstartsWithMatch.push( suggestion );\n\t\t\t\t\t} else if ( index > 0 ) {\n\t\t\t\t\t\tcontainsMatch.push( suggestion );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\t_suggestions = startsWithMatch.concat( containsMatch );\n\t\t}\n\n\t\treturn _suggestions.slice( 0, _maxSuggestions );\n\t}\n\n\tfunction getSelectedSuggestion() {\n\t\tif ( selectedSuggestionIndex !== -1 ) {\n\t\t\treturn getMatchingSuggestions()[ selectedSuggestionIndex ];\n\t\t}\n\n\t\treturn undefined;\n\t}\n\n\tfunction valueContainsToken( token: string ) {\n\t\treturn value.some( ( item ) => {\n\t\t\treturn getTokenValue( token ) === getTokenValue( item );\n\t\t} );\n\t}\n\n\tfunction getIndexOfInput() {\n\t\treturn value.length - inputOffsetFromEnd;\n\t}\n\n\tfunction isInputEmpty() {\n\t\treturn incompleteTokenValue.length === 0;\n\t}\n\n\tfunction inputHasValidValue() {\n\t\treturn saveTransform( incompleteTokenValue ).length > 0;\n\t}\n\n\tfunction updateSuggestions( resetSelectedSuggestion = true ) {\n\t\tconst inputHasMinimumChars = incompleteTokenValue.trim().length > 1;\n\t\tconst matchingSuggestions =\n\t\t\tgetMatchingSuggestions( incompleteTokenValue );\n\t\tconst hasMatchingSuggestions = matchingSuggestions.length > 0;\n\n\t\tconst shouldExpandIfFocuses = hasFocus() && __experimentalExpandOnFocus;\n\t\tsetIsExpanded(\n\t\t\tshouldExpandIfFocuses ||\n\t\t\t\t( inputHasMinimumChars && hasMatchingSuggestions )\n\t\t);\n\n\t\tif ( resetSelectedSuggestion ) {\n\t\t\tif (\n\t\t\t\t__experimentalAutoSelectFirstMatch &&\n\t\t\t\tinputHasMinimumChars &&\n\t\t\t\thasMatchingSuggestions\n\t\t\t) {\n\t\t\t\tsetSelectedSuggestionIndex( 0 );\n\t\t\t\tsetSelectedSuggestionScroll( true );\n\t\t\t} else {\n\t\t\t\tsetSelectedSuggestionIndex( -1 );\n\t\t\t\tsetSelectedSuggestionScroll( false );\n\t\t\t}\n\t\t}\n\n\t\tif ( inputHasMinimumChars ) {\n\t\t\tconst message = hasMatchingSuggestions\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: %d: number of results. */\n\t\t\t\t\t\t_n(\n\t\t\t\t\t\t\t'%d result found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\t'%d results found, use up and down arrow keys to navigate.',\n\t\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t\t\t),\n\t\t\t\t\t\tmatchingSuggestions.length\n\t\t\t\t )\n\t\t\t\t: __( 'No results.' );\n\n\t\t\tdebouncedSpeak( message, 'assertive' );\n\t\t}\n\t}\n\n\tfunction renderTokensAndInput() {\n\t\tconst components = value.map( renderToken );\n\t\tcomponents.splice( getIndexOfInput(), 0, renderInput() );\n\n\t\treturn components;\n\t}\n\n\tfunction renderToken(\n\t\ttoken: string | TokenItem,\n\t\tindex: number,\n\t\ttokens: ( string | TokenItem )[]\n\t) {\n\t\tconst _value = getTokenValue( token );\n\t\tconst status = typeof token !== 'string' ? token.status : undefined;\n\t\tconst termPosition = index + 1;\n\t\tconst termsCount = tokens.length;\n\n\t\treturn (\n\t\t\t<FlexItem key={ 'token-' + _value }>\n\t\t\t\t<Token\n\t\t\t\t\tvalue={ _value }\n\t\t\t\t\tstatus={ status }\n\t\t\t\t\ttitle={\n\t\t\t\t\t\ttypeof token !== 'string' ? token.title : undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\tonClickRemove={ onTokenClickRemove }\n\t\t\t\t\tisBorderless={\n\t\t\t\t\t\t( typeof token !== 'string' && token.isBorderless ) ||\n\t\t\t\t\t\tisBorderless\n\t\t\t\t\t}\n\t\t\t\t\tonMouseEnter={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseEnter\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tonMouseLeave={\n\t\t\t\t\t\ttypeof token !== 'string'\n\t\t\t\t\t\t\t? token.onMouseLeave\n\t\t\t\t\t\t\t: undefined\n\t\t\t\t\t}\n\t\t\t\t\tdisabled={ 'error' !== status && disabled }\n\t\t\t\t\tmessages={ messages }\n\t\t\t\t\ttermsCount={ termsCount }\n\t\t\t\t\ttermPosition={ termPosition }\n\t\t\t\t/>\n\t\t\t</FlexItem>\n\t\t);\n\t}\n\n\tfunction renderInput() {\n\t\tconst inputProps = {\n\t\t\tinstanceId,\n\t\t\tautoCapitalize,\n\t\t\tautoComplete,\n\t\t\tplaceholder: value.length === 0 ? placeholder : '',\n\t\t\tdisabled,\n\t\t\tvalue: incompleteTokenValue,\n\t\t\tonBlur,\n\t\t\tisExpanded,\n\t\t\tselectedSuggestionIndex,\n\t\t};\n\n\t\treturn (\n\t\t\t<TokenInput\n\t\t\t\tkey=\"input\"\n\t\t\t\t{ ...inputProps }\n\t\t\t\tonChange={\n\t\t\t\t\t! ( maxLength && value.length >= maxLength )\n\t\t\t\t\t\t? onInputChangeHandler\n\t\t\t\t\t\t: undefined\n\t\t\t\t}\n\t\t\t\tref={ input }\n\t\t\t/>\n\t\t);\n\t}\n\n\tconst classes = clsx(\n\t\tclassName,\n\t\t'components-form-token-field__input-container',\n\t\t{\n\t\t\t'is-active': isActive,\n\t\t\t'is-disabled': disabled,\n\t\t}\n\t);\n\n\tlet tokenFieldProps = {\n\t\tclassName: 'components-form-token-field',\n\t\ttabIndex: -1,\n\t};\n\tconst matchingSuggestions = getMatchingSuggestions();\n\n\tif ( ! disabled ) {\n\t\ttokenFieldProps = Object.assign( {}, tokenFieldProps, {\n\t\t\tonKeyDown: withIgnoreIMEEvents( onKeyDown ),\n\t\t\tonKeyPress,\n\t\t\tonFocus: onFocusHandler,\n\t\t} );\n\t}\n\n\t// Disable reason: There is no appropriate role which describes the\n\t// input container intended accessible usability.\n\t// TODO: Refactor click detection to use blur to stop propagation.\n\t/* eslint-disable jsx-a11y/no-static-element-interactions */\n\treturn (\n\t\t<div { ...tokenFieldProps }>\n\t\t\t{ label && (\n\t\t\t\t<StyledLabel\n\t\t\t\t\thtmlFor={ `components-form-token-input-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__label\"\n\t\t\t\t>\n\t\t\t\t\t{ label }\n\t\t\t\t</StyledLabel>\n\t\t\t) }\n\t\t\t<div\n\t\t\t\tref={ tokensAndInput }\n\t\t\t\tclassName={ classes }\n\t\t\t\ttabIndex={ -1 }\n\t\t\t\tonMouseDown={ onContainerTouched }\n\t\t\t\tonTouchStart={ onContainerTouched }\n\t\t\t>\n\t\t\t\t<TokensAndInputWrapperFlex\n\t\t\t\t\tjustify=\"flex-start\"\n\t\t\t\t\talign=\"center\"\n\t\t\t\t\tgap={ 1 }\n\t\t\t\t\twrap\n\t\t\t\t\t__next40pxDefaultSize={ __next40pxDefaultSize }\n\t\t\t\t\thasTokens={ !! value.length }\n\t\t\t\t>\n\t\t\t\t\t{ renderTokensAndInput() }\n\t\t\t\t</TokensAndInputWrapperFlex>\n\t\t\t\t{ isExpanded && (\n\t\t\t\t\t<SuggestionsList\n\t\t\t\t\t\tinstanceId={ instanceId }\n\t\t\t\t\t\tmatch={ saveTransform( incompleteTokenValue ) }\n\t\t\t\t\t\tdisplayTransform={ displayTransform }\n\t\t\t\t\t\tsuggestions={ matchingSuggestions }\n\t\t\t\t\t\tselectedIndex={ selectedSuggestionIndex }\n\t\t\t\t\t\tscrollIntoView={ selectedSuggestionScroll }\n\t\t\t\t\t\tonHover={ onSuggestionHovered }\n\t\t\t\t\t\tonSelect={ onSuggestionSelected }\n\t\t\t\t\t\t__experimentalRenderItem={ __experimentalRenderItem }\n\t\t\t\t\t/>\n\t\t\t\t) }\n\t\t\t</div>\n\t\t\t{ ! __nextHasNoMarginBottom && <Spacer marginBottom={ 2 } /> }\n\t\t\t{ __experimentalShowHowTo && (\n\t\t\t\t<StyledHelp\n\t\t\t\t\tid={ `components-form-token-suggestions-howto-${ instanceId }` }\n\t\t\t\t\tclassName=\"components-form-token-field__help\"\n\t\t\t\t\t__nextHasNoMarginBottom={ __nextHasNoMarginBottom }\n\t\t\t\t>\n\t\t\t\t\t{ tokenizeOnSpace\n\t\t\t\t\t\t? __(\n\t\t\t\t\t\t\t\t'Separate with commas, spaces, or the Enter key.'\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: __( 'Separate with commas or the Enter key.' ) }\n\t\t\t\t</StyledHelp>\n\t\t\t) }\n\t\t</div>\n\t);\n\t/* eslint-enable jsx-a11y/no-static-element-interactions */\n}\n\nexport default FormTokenField;\n"],"mappings":"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","ignoreList":[]}
@@ -30,7 +30,6 @@ export function SuggestionsList({
30
30
  const listRef = useRefEffect(listNode => {
31
31
  // only have to worry about scrolling selected suggestion into view
32
32
  // when already expanded.
33
- let rafId;
34
33
  if (selectedIndex > -1 && scrollIntoView && listNode.children[selectedIndex]) {
35
34
  listNode.children[selectedIndex].scrollIntoView({
36
35
  behavior: 'instant',
@@ -38,11 +37,6 @@ export function SuggestionsList({
38
37
  inline: 'nearest'
39
38
  });
40
39
  }
41
- return () => {
42
- if (rafId !== undefined) {
43
- cancelAnimationFrame(rafId);
44
- }
45
- };
46
40
  }, [selectedIndex, scrollIntoView]);
47
41
  const handleHover = suggestion => {
48
42
  return () => {
@@ -55,12 +49,12 @@ export function SuggestionsList({
55
49
  };
56
50
  };
57
51
  const computeSuggestionMatch = suggestion => {
58
- const matchText = displayTransform(match).toLocaleLowerCase();
52
+ const matchText = displayTransform(match).normalize('NFKC').toLocaleLowerCase();
59
53
  if (matchText.length === 0) {
60
54
  return null;
61
55
  }
62
56
  const transformedSuggestion = displayTransform(suggestion);
63
- const indexOfMatch = transformedSuggestion.toLocaleLowerCase().indexOf(matchText);
57
+ const indexOfMatch = transformedSuggestion.normalize('NFKC').toLocaleLowerCase().indexOf(matchText);
64
58
  return {
65
59
  suggestionBeforeMatch: transformedSuggestion.substring(0, indexOfMatch),
66
60
  suggestionMatch: transformedSuggestion.substring(indexOfMatch, indexOfMatch + matchText.length),
@@ -1 +1 @@
1
- {"version":3,"names":["clsx","useRefEffect","__","jsx","_jsx","jsxs","_jsxs","handleMouseDown","e","preventDefault","SuggestionsList","selectedIndex","scrollIntoView","match","onHover","onSelect","suggestions","displayTransform","instanceId","__experimentalRenderItem","listRef","listNode","rafId","children","behavior","block","inline","undefined","cancelAnimationFrame","handleHover","suggestion","handleClick","computeSuggestionMatch","matchText","toLocaleLowerCase","length","transformedSuggestion","indexOfMatch","indexOf","suggestionBeforeMatch","substring","suggestionMatch","suggestionAfterMatch","ref","className","id","role","map","index","isSelected","isDisabled","disabled","key","value","output","item","onMouseDown","onClick","onMouseEnter"],"sources":["@wordpress/components/src/form-token-field/suggestions-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { MouseEventHandler, ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { SuggestionsListProps } from './types';\n\nconst handleMouseDown: MouseEventHandler = ( e ) => {\n\t// By preventing default here, we will not lose focus of <input> when clicking a suggestion.\n\te.preventDefault();\n};\n\nexport function SuggestionsList<\n\tT extends string | { value: string; disabled?: boolean },\n>( {\n\tselectedIndex,\n\tscrollIntoView,\n\tmatch,\n\tonHover,\n\tonSelect,\n\tsuggestions = [],\n\tdisplayTransform,\n\tinstanceId,\n\t__experimentalRenderItem,\n}: SuggestionsListProps< T > ) {\n\tconst listRef = useRefEffect< HTMLUListElement >(\n\t\t( listNode ) => {\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded.\n\t\t\tlet rafId: number | undefined;\n\t\t\tif (\n\t\t\t\tselectedIndex > -1 &&\n\t\t\t\tscrollIntoView &&\n\t\t\t\tlistNode.children[ selectedIndex ]\n\t\t\t) {\n\t\t\t\tlistNode.children[ selectedIndex ].scrollIntoView( {\n\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\tblock: 'nearest',\n\t\t\t\t\tinline: 'nearest',\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn () => {\n\t\t\t\tif ( rafId !== undefined ) {\n\t\t\t\t\tcancelAnimationFrame( rafId );\n\t\t\t\t}\n\t\t\t};\n\t\t},\n\t\t[ selectedIndex, scrollIntoView ]\n\t);\n\n\tconst handleHover = ( suggestion: T ) => {\n\t\treturn () => {\n\t\t\tonHover?.( suggestion );\n\t\t};\n\t};\n\n\tconst handleClick = ( suggestion: T ) => {\n\t\treturn () => {\n\t\t\tonSelect?.( suggestion );\n\t\t};\n\t};\n\n\tconst computeSuggestionMatch = ( suggestion: T ) => {\n\t\tconst matchText = displayTransform( match ).toLocaleLowerCase();\n\t\tif ( matchText.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst transformedSuggestion = displayTransform( suggestion );\n\t\tconst indexOfMatch = transformedSuggestion\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf( matchText );\n\n\t\treturn {\n\t\t\tsuggestionBeforeMatch: transformedSuggestion.substring(\n\t\t\t\t0,\n\t\t\t\tindexOfMatch\n\t\t\t),\n\t\t\tsuggestionMatch: transformedSuggestion.substring(\n\t\t\t\tindexOfMatch,\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t\tsuggestionAfterMatch: transformedSuggestion.substring(\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t};\n\t};\n\n\treturn (\n\t\t<ul\n\t\t\tref={ listRef }\n\t\t\tclassName=\"components-form-token-field__suggestions-list\"\n\t\t\tid={ `components-form-token-suggestions-${ instanceId }` }\n\t\t\trole=\"listbox\"\n\t\t>\n\t\t\t{ suggestions.map( ( suggestion, index ) => {\n\t\t\t\tconst matchText = computeSuggestionMatch( suggestion );\n\t\t\t\tconst isSelected = index === selectedIndex;\n\t\t\t\tconst isDisabled =\n\t\t\t\t\ttypeof suggestion === 'object' && suggestion?.disabled;\n\t\t\t\tconst key =\n\t\t\t\t\ttypeof suggestion === 'object' && 'value' in suggestion\n\t\t\t\t\t\t? suggestion?.value\n\t\t\t\t\t\t: displayTransform( suggestion );\n\n\t\t\t\tconst className = clsx(\n\t\t\t\t\t'components-form-token-field__suggestion',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tlet output: ReactNode;\n\n\t\t\t\tif ( typeof __experimentalRenderItem === 'function' ) {\n\t\t\t\t\toutput = __experimentalRenderItem( { item: suggestion } );\n\t\t\t\t} else if ( matchText ) {\n\t\t\t\t\toutput = (\n\t\t\t\t\t\t<span aria-label={ displayTransform( suggestion ) }>\n\t\t\t\t\t\t\t{ matchText.suggestionBeforeMatch }\n\t\t\t\t\t\t\t<strong className=\"components-form-token-field__suggestion-match\">\n\t\t\t\t\t\t\t\t{ matchText.suggestionMatch }\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t{ matchText.suggestionAfterMatch }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\toutput = displayTransform( suggestion );\n\t\t\t\t}\n\n\t\t\t\t/* eslint-disable jsx-a11y/click-events-have-key-events */\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tid={ `components-form-token-suggestions-${ instanceId }-${ index }` }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\tonMouseDown={ handleMouseDown }\n\t\t\t\t\t\tonClick={ handleClick( suggestion ) }\n\t\t\t\t\t\tonMouseEnter={ handleHover( suggestion ) }\n\t\t\t\t\t\taria-selected={ index === selectedIndex }\n\t\t\t\t\t\taria-disabled={ isDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ output }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t\t/* eslint-enable jsx-a11y/click-events-have-key-events */\n\t\t\t} ) }\n\t\t\t{ suggestions.length === 0 && (\n\t\t\t\t<li className=\"components-form-token-field__suggestion is-empty\">\n\t\t\t\t\t{ __( 'No items found' ) }\n\t\t\t\t</li>\n\t\t\t) }\n\t\t</ul>\n\t);\n}\n\nexport default SuggestionsList;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["clsx","useRefEffect","__","jsx","_jsx","jsxs","_jsxs","handleMouseDown","e","preventDefault","SuggestionsList","selectedIndex","scrollIntoView","match","onHover","onSelect","suggestions","displayTransform","instanceId","__experimentalRenderItem","listRef","listNode","children","behavior","block","inline","handleHover","suggestion","handleClick","computeSuggestionMatch","matchText","normalize","toLocaleLowerCase","length","transformedSuggestion","indexOfMatch","indexOf","suggestionBeforeMatch","substring","suggestionMatch","suggestionAfterMatch","ref","className","id","role","map","index","isSelected","isDisabled","disabled","key","value","output","item","onMouseDown","onClick","onMouseEnter"],"sources":["@wordpress/components/src/form-token-field/suggestions-list.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport clsx from 'clsx';\nimport type { MouseEventHandler, ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { useRefEffect } from '@wordpress/compose';\nimport { __ } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport type { SuggestionsListProps } from './types';\n\nconst handleMouseDown: MouseEventHandler = ( e ) => {\n\t// By preventing default here, we will not lose focus of <input> when clicking a suggestion.\n\te.preventDefault();\n};\n\nexport function SuggestionsList<\n\tT extends string | { value: string; disabled?: boolean },\n>( {\n\tselectedIndex,\n\tscrollIntoView,\n\tmatch,\n\tonHover,\n\tonSelect,\n\tsuggestions = [],\n\tdisplayTransform,\n\tinstanceId,\n\t__experimentalRenderItem,\n}: SuggestionsListProps< T > ) {\n\tconst listRef = useRefEffect< HTMLUListElement >(\n\t\t( listNode ) => {\n\t\t\t// only have to worry about scrolling selected suggestion into view\n\t\t\t// when already expanded.\n\t\t\tif (\n\t\t\t\tselectedIndex > -1 &&\n\t\t\t\tscrollIntoView &&\n\t\t\t\tlistNode.children[ selectedIndex ]\n\t\t\t) {\n\t\t\t\tlistNode.children[ selectedIndex ].scrollIntoView( {\n\t\t\t\t\tbehavior: 'instant',\n\t\t\t\t\tblock: 'nearest',\n\t\t\t\t\tinline: 'nearest',\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[ selectedIndex, scrollIntoView ]\n\t);\n\n\tconst handleHover = ( suggestion: T ) => {\n\t\treturn () => {\n\t\t\tonHover?.( suggestion );\n\t\t};\n\t};\n\n\tconst handleClick = ( suggestion: T ) => {\n\t\treturn () => {\n\t\t\tonSelect?.( suggestion );\n\t\t};\n\t};\n\n\tconst computeSuggestionMatch = ( suggestion: T ) => {\n\t\tconst matchText = displayTransform( match )\n\t\t\t.normalize( 'NFKC' )\n\t\t\t.toLocaleLowerCase();\n\t\tif ( matchText.length === 0 ) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst transformedSuggestion = displayTransform( suggestion );\n\t\tconst indexOfMatch = transformedSuggestion\n\t\t\t.normalize( 'NFKC' )\n\t\t\t.toLocaleLowerCase()\n\t\t\t.indexOf( matchText );\n\n\t\treturn {\n\t\t\tsuggestionBeforeMatch: transformedSuggestion.substring(\n\t\t\t\t0,\n\t\t\t\tindexOfMatch\n\t\t\t),\n\t\t\tsuggestionMatch: transformedSuggestion.substring(\n\t\t\t\tindexOfMatch,\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t\tsuggestionAfterMatch: transformedSuggestion.substring(\n\t\t\t\tindexOfMatch + matchText.length\n\t\t\t),\n\t\t};\n\t};\n\n\treturn (\n\t\t<ul\n\t\t\tref={ listRef }\n\t\t\tclassName=\"components-form-token-field__suggestions-list\"\n\t\t\tid={ `components-form-token-suggestions-${ instanceId }` }\n\t\t\trole=\"listbox\"\n\t\t>\n\t\t\t{ suggestions.map( ( suggestion, index ) => {\n\t\t\t\tconst matchText = computeSuggestionMatch( suggestion );\n\t\t\t\tconst isSelected = index === selectedIndex;\n\t\t\t\tconst isDisabled =\n\t\t\t\t\ttypeof suggestion === 'object' && suggestion?.disabled;\n\t\t\t\tconst key =\n\t\t\t\t\ttypeof suggestion === 'object' && 'value' in suggestion\n\t\t\t\t\t\t? suggestion?.value\n\t\t\t\t\t\t: displayTransform( suggestion );\n\n\t\t\t\tconst className = clsx(\n\t\t\t\t\t'components-form-token-field__suggestion',\n\t\t\t\t\t{\n\t\t\t\t\t\t'is-selected': isSelected,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tlet output: ReactNode;\n\n\t\t\t\tif ( typeof __experimentalRenderItem === 'function' ) {\n\t\t\t\t\toutput = __experimentalRenderItem( { item: suggestion } );\n\t\t\t\t} else if ( matchText ) {\n\t\t\t\t\toutput = (\n\t\t\t\t\t\t<span aria-label={ displayTransform( suggestion ) }>\n\t\t\t\t\t\t\t{ matchText.suggestionBeforeMatch }\n\t\t\t\t\t\t\t<strong className=\"components-form-token-field__suggestion-match\">\n\t\t\t\t\t\t\t\t{ matchText.suggestionMatch }\n\t\t\t\t\t\t\t</strong>\n\t\t\t\t\t\t\t{ matchText.suggestionAfterMatch }\n\t\t\t\t\t\t</span>\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\toutput = displayTransform( suggestion );\n\t\t\t\t}\n\n\t\t\t\t/* eslint-disable jsx-a11y/click-events-have-key-events */\n\t\t\t\treturn (\n\t\t\t\t\t<li\n\t\t\t\t\t\tid={ `components-form-token-suggestions-${ instanceId }-${ index }` }\n\t\t\t\t\t\trole=\"option\"\n\t\t\t\t\t\tclassName={ className }\n\t\t\t\t\t\tkey={ key }\n\t\t\t\t\t\tonMouseDown={ handleMouseDown }\n\t\t\t\t\t\tonClick={ handleClick( suggestion ) }\n\t\t\t\t\t\tonMouseEnter={ handleHover( suggestion ) }\n\t\t\t\t\t\taria-selected={ index === selectedIndex }\n\t\t\t\t\t\taria-disabled={ isDisabled }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ output }\n\t\t\t\t\t</li>\n\t\t\t\t);\n\t\t\t\t/* eslint-enable jsx-a11y/click-events-have-key-events */\n\t\t\t} ) }\n\t\t\t{ suggestions.length === 0 && (\n\t\t\t\t<li className=\"components-form-token-field__suggestion is-empty\">\n\t\t\t\t\t{ __( 'No items found' ) }\n\t\t\t\t</li>\n\t\t\t) }\n\t\t</ul>\n\t);\n}\n\nexport default SuggestionsList;\n"],"mappings":"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","ignoreList":[]}
@@ -161,19 +161,6 @@ function InputField({
161
161
  }
162
162
  });
163
163
  const dragProps = isDragEnabled ? dragGestureProps() : {};
164
- /*
165
- * Works around the odd UA (e.g. Firefox) that does not focus inputs of
166
- * type=number when their spinner arrows are pressed.
167
- */
168
- let handleOnMouseDown;
169
- if (type === 'number') {
170
- handleOnMouseDown = event => {
171
- props.onMouseDown?.(event);
172
- if (event.currentTarget !== event.currentTarget.ownerDocument.activeElement) {
173
- event.currentTarget.focus();
174
- }
175
- };
176
- }
177
164
  return /*#__PURE__*/_jsx(Input, {
178
165
  ...props,
179
166
  ...dragProps,
@@ -185,7 +172,6 @@ function InputField({
185
172
  onBlur: handleOnBlur,
186
173
  onChange: handleOnChange,
187
174
  onKeyDown: withIgnoreIMEEvents(handleOnKeyDown),
188
- onMouseDown: handleOnMouseDown,
189
175
  ref: ref,
190
176
  inputSize: size
191
177
  // Fallback to `''` to avoid "uncontrolled to controlled" warning.
@@ -1 +1 @@
1
- {"version":3,"names":["useDrag","forwardRef","useRef","useDragCursor","Input","useInputControlStateReducer","withIgnoreIMEEvents","jsx","_jsx","noop","InputField","disabled","dragDirection","dragThreshold","id","isDragEnabled","isPressEnterToChange","onBlur","onChange","onDrag","onDragEnd","onDragStart","onKeyDown","onValidate","size","stateReducer","state","value","valueProp","type","props","ref","change","commit","drag","dragEnd","dragStart","invalidate","pressDown","pressEnter","pressUp","reset","isDragging","isDirty","wasDirtyOnBlur","dragCursor","handleOnBlur","event","target","validity","valid","current","handleOnCommit","handleOnChange","nextValue","currentTarget","err","handleOnKeyDown","key","preventDefault","dragGestureProps","dragProps","distance","dragging","stopPropagation","axis","threshold","enabled","pointer","capture","handleOnMouseDown","onMouseDown","ownerDocument","activeElement","focus","className","inputSize","ForwardedComponent"],"sources":["@wordpress/components/src/input-control/input-field.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport { useDrag } from '@use-gesture/react';\nimport type {\n\tSyntheticEvent,\n\tChangeEvent,\n\tKeyboardEvent,\n\tPointerEvent,\n\tFocusEvent,\n\tForwardedRef,\n\tMouseEvent,\n} from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useRef } from '@wordpress/element';\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../context';\nimport { useDragCursor } from './utils';\nimport { Input } from './styles/input-control-styles';\nimport { useInputControlStateReducer } from './reducer/reducer';\nimport type { InputFieldProps } from './types';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\n\nconst noop = () => {};\n\nfunction InputField(\n\t{\n\t\tdisabled = false,\n\t\tdragDirection = 'n',\n\t\tdragThreshold = 10,\n\t\tid,\n\t\tisDragEnabled = false,\n\t\tisPressEnterToChange = false,\n\t\tonBlur = noop,\n\t\tonChange = noop,\n\t\tonDrag = noop,\n\t\tonDragEnd = noop,\n\t\tonDragStart = noop,\n\t\tonKeyDown = noop,\n\t\tonValidate = noop,\n\t\tsize = 'default',\n\t\tstateReducer = ( state: any ) => state,\n\t\tvalue: valueProp,\n\t\ttype,\n\t\t...props\n\t}: WordPressComponentProps< InputFieldProps, 'input', false >,\n\tref: ForwardedRef< HTMLInputElement >\n) {\n\tconst {\n\t\t// State.\n\t\tstate,\n\t\t// Actions.\n\t\tchange,\n\t\tcommit,\n\t\tdrag,\n\t\tdragEnd,\n\t\tdragStart,\n\t\tinvalidate,\n\t\tpressDown,\n\t\tpressEnter,\n\t\tpressUp,\n\t\treset,\n\t} = useInputControlStateReducer(\n\t\tstateReducer,\n\t\t{\n\t\t\tisDragEnabled,\n\t\t\tvalue: valueProp,\n\t\t\tisPressEnterToChange,\n\t\t},\n\t\tonChange\n\t);\n\n\tconst { value, isDragging, isDirty } = state;\n\tconst wasDirtyOnBlur = useRef( false );\n\n\tconst dragCursor = useDragCursor( isDragging, dragDirection );\n\n\tconst handleOnBlur = ( event: FocusEvent< HTMLInputElement > ) => {\n\t\tonBlur( event );\n\n\t\t/**\n\t\t * If isPressEnterToChange is set, this commits the value to\n\t\t * the onChange callback.\n\t\t */\n\t\tif ( isDirty || ! event.target.validity.valid ) {\n\t\t\twasDirtyOnBlur.current = true;\n\t\t\thandleOnCommit( event );\n\t\t}\n\t};\n\n\tconst handleOnChange = ( event: ChangeEvent< HTMLInputElement > ) => {\n\t\tconst nextValue = event.target.value;\n\t\tchange( nextValue, event );\n\t};\n\n\tconst handleOnCommit = ( event: SyntheticEvent< HTMLInputElement > ) => {\n\t\tconst nextValue = event.currentTarget.value;\n\n\t\ttry {\n\t\t\tonValidate( nextValue );\n\t\t\tcommit( nextValue, event );\n\t\t} catch ( err ) {\n\t\t\tinvalidate( err, event );\n\t\t}\n\t};\n\n\tconst handleOnKeyDown = ( event: KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\t\tonKeyDown( event );\n\n\t\tswitch ( key ) {\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpressUp( event );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpressDown( event );\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\tpressEnter( event );\n\n\t\t\t\tif ( isPressEnterToChange ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\thandleOnCommit( event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'Escape':\n\t\t\t\tif ( isPressEnterToChange && isDirty ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treset( valueProp, event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tconst dragGestureProps = useDrag< PointerEvent< HTMLInputElement > >(\n\t\t( dragProps ) => {\n\t\t\tconst { distance, dragging, event, target } = dragProps;\n\n\t\t\t// The `target` prop always references the `input` element while, by\n\t\t\t// default, the `dragProps.event.target` property would reference the real\n\t\t\t// event target (i.e. any DOM element that the pointer is hovering while\n\t\t\t// dragging). Ensuring that the `target` is always the `input` element\n\t\t\t// allows consumers of `InputControl` (or any higher-level control) to\n\t\t\t// check the input's validity by accessing `event.target.validity.valid`.\n\t\t\tdragProps.event = {\n\t\t\t\t...dragProps.event,\n\t\t\t\ttarget,\n\t\t\t};\n\n\t\t\tif ( ! distance ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.stopPropagation();\n\n\t\t\t/**\n\t\t\t * Quick return if no longer dragging.\n\t\t\t * This prevents unnecessary value calculations.\n\t\t\t */\n\t\t\tif ( ! dragging ) {\n\t\t\t\tonDragEnd( dragProps );\n\t\t\t\tdragEnd( dragProps );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonDrag( dragProps );\n\t\t\tdrag( dragProps );\n\n\t\t\tif ( ! isDragging ) {\n\t\t\t\tonDragStart( dragProps );\n\t\t\t\tdragStart( dragProps );\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\taxis: dragDirection === 'e' || dragDirection === 'w' ? 'x' : 'y',\n\t\t\tthreshold: dragThreshold,\n\t\t\tenabled: isDragEnabled,\n\t\t\tpointer: { capture: false },\n\t\t}\n\t);\n\n\tconst dragProps = isDragEnabled ? dragGestureProps() : {};\n\t/*\n\t * Works around the odd UA (e.g. Firefox) that does not focus inputs of\n\t * type=number when their spinner arrows are pressed.\n\t */\n\tlet handleOnMouseDown;\n\tif ( type === 'number' ) {\n\t\thandleOnMouseDown = ( event: MouseEvent< HTMLInputElement > ) => {\n\t\t\tprops.onMouseDown?.( event );\n\t\t\tif (\n\t\t\t\tevent.currentTarget !==\n\t\t\t\tevent.currentTarget.ownerDocument.activeElement\n\t\t\t) {\n\t\t\t\tevent.currentTarget.focus();\n\t\t\t}\n\t\t};\n\t}\n\n\treturn (\n\t\t<Input\n\t\t\t{ ...props }\n\t\t\t{ ...dragProps }\n\t\t\tclassName=\"components-input-control__input\"\n\t\t\tdisabled={ disabled }\n\t\t\tdragCursor={ dragCursor }\n\t\t\tisDragging={ isDragging }\n\t\t\tid={ id }\n\t\t\tonBlur={ handleOnBlur }\n\t\t\tonChange={ handleOnChange }\n\t\t\tonKeyDown={ withIgnoreIMEEvents( handleOnKeyDown ) }\n\t\t\tonMouseDown={ handleOnMouseDown }\n\t\t\tref={ ref }\n\t\t\tinputSize={ size }\n\t\t\t// Fallback to `''` to avoid \"uncontrolled to controlled\" warning.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/47250 for details.\n\t\t\tvalue={ value ?? '' }\n\t\t\ttype={ type }\n\t\t/>\n\t);\n}\n\nconst ForwardedComponent = forwardRef( InputField );\n\nexport default ForwardedComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useDrag","forwardRef","useRef","useDragCursor","Input","useInputControlStateReducer","withIgnoreIMEEvents","jsx","_jsx","noop","InputField","disabled","dragDirection","dragThreshold","id","isDragEnabled","isPressEnterToChange","onBlur","onChange","onDrag","onDragEnd","onDragStart","onKeyDown","onValidate","size","stateReducer","state","value","valueProp","type","props","ref","change","commit","drag","dragEnd","dragStart","invalidate","pressDown","pressEnter","pressUp","reset","isDragging","isDirty","wasDirtyOnBlur","dragCursor","handleOnBlur","event","target","validity","valid","current","handleOnCommit","handleOnChange","nextValue","currentTarget","err","handleOnKeyDown","key","preventDefault","dragGestureProps","dragProps","distance","dragging","stopPropagation","axis","threshold","enabled","pointer","capture","className","inputSize","ForwardedComponent"],"sources":["@wordpress/components/src/input-control/input-field.tsx"],"sourcesContent":["/**\n * External dependencies\n */\nimport { useDrag } from '@use-gesture/react';\nimport type {\n\tSyntheticEvent,\n\tChangeEvent,\n\tKeyboardEvent,\n\tPointerEvent,\n\tFocusEvent,\n\tForwardedRef,\n} from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { forwardRef, useRef } from '@wordpress/element';\n/**\n * Internal dependencies\n */\nimport type { WordPressComponentProps } from '../context';\nimport { useDragCursor } from './utils';\nimport { Input } from './styles/input-control-styles';\nimport { useInputControlStateReducer } from './reducer/reducer';\nimport type { InputFieldProps } from './types';\nimport { withIgnoreIMEEvents } from '../utils/with-ignore-ime-events';\n\nconst noop = () => {};\n\nfunction InputField(\n\t{\n\t\tdisabled = false,\n\t\tdragDirection = 'n',\n\t\tdragThreshold = 10,\n\t\tid,\n\t\tisDragEnabled = false,\n\t\tisPressEnterToChange = false,\n\t\tonBlur = noop,\n\t\tonChange = noop,\n\t\tonDrag = noop,\n\t\tonDragEnd = noop,\n\t\tonDragStart = noop,\n\t\tonKeyDown = noop,\n\t\tonValidate = noop,\n\t\tsize = 'default',\n\t\tstateReducer = ( state: any ) => state,\n\t\tvalue: valueProp,\n\t\ttype,\n\t\t...props\n\t}: WordPressComponentProps< InputFieldProps, 'input', false >,\n\tref: ForwardedRef< HTMLInputElement >\n) {\n\tconst {\n\t\t// State.\n\t\tstate,\n\t\t// Actions.\n\t\tchange,\n\t\tcommit,\n\t\tdrag,\n\t\tdragEnd,\n\t\tdragStart,\n\t\tinvalidate,\n\t\tpressDown,\n\t\tpressEnter,\n\t\tpressUp,\n\t\treset,\n\t} = useInputControlStateReducer(\n\t\tstateReducer,\n\t\t{\n\t\t\tisDragEnabled,\n\t\t\tvalue: valueProp,\n\t\t\tisPressEnterToChange,\n\t\t},\n\t\tonChange\n\t);\n\n\tconst { value, isDragging, isDirty } = state;\n\tconst wasDirtyOnBlur = useRef( false );\n\n\tconst dragCursor = useDragCursor( isDragging, dragDirection );\n\n\tconst handleOnBlur = ( event: FocusEvent< HTMLInputElement > ) => {\n\t\tonBlur( event );\n\n\t\t/**\n\t\t * If isPressEnterToChange is set, this commits the value to\n\t\t * the onChange callback.\n\t\t */\n\t\tif ( isDirty || ! event.target.validity.valid ) {\n\t\t\twasDirtyOnBlur.current = true;\n\t\t\thandleOnCommit( event );\n\t\t}\n\t};\n\n\tconst handleOnChange = ( event: ChangeEvent< HTMLInputElement > ) => {\n\t\tconst nextValue = event.target.value;\n\t\tchange( nextValue, event );\n\t};\n\n\tconst handleOnCommit = ( event: SyntheticEvent< HTMLInputElement > ) => {\n\t\tconst nextValue = event.currentTarget.value;\n\n\t\ttry {\n\t\t\tonValidate( nextValue );\n\t\t\tcommit( nextValue, event );\n\t\t} catch ( err ) {\n\t\t\tinvalidate( err, event );\n\t\t}\n\t};\n\n\tconst handleOnKeyDown = ( event: KeyboardEvent< HTMLInputElement > ) => {\n\t\tconst { key } = event;\n\t\tonKeyDown( event );\n\n\t\tswitch ( key ) {\n\t\t\tcase 'ArrowUp':\n\t\t\t\tpressUp( event );\n\t\t\t\tbreak;\n\n\t\t\tcase 'ArrowDown':\n\t\t\t\tpressDown( event );\n\t\t\t\tbreak;\n\n\t\t\tcase 'Enter':\n\t\t\t\tpressEnter( event );\n\n\t\t\t\tif ( isPressEnterToChange ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\thandleOnCommit( event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase 'Escape':\n\t\t\t\tif ( isPressEnterToChange && isDirty ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\treset( valueProp, event );\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t};\n\n\tconst dragGestureProps = useDrag< PointerEvent< HTMLInputElement > >(\n\t\t( dragProps ) => {\n\t\t\tconst { distance, dragging, event, target } = dragProps;\n\n\t\t\t// The `target` prop always references the `input` element while, by\n\t\t\t// default, the `dragProps.event.target` property would reference the real\n\t\t\t// event target (i.e. any DOM element that the pointer is hovering while\n\t\t\t// dragging). Ensuring that the `target` is always the `input` element\n\t\t\t// allows consumers of `InputControl` (or any higher-level control) to\n\t\t\t// check the input's validity by accessing `event.target.validity.valid`.\n\t\t\tdragProps.event = {\n\t\t\t\t...dragProps.event,\n\t\t\t\ttarget,\n\t\t\t};\n\n\t\t\tif ( ! distance ) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tevent.stopPropagation();\n\n\t\t\t/**\n\t\t\t * Quick return if no longer dragging.\n\t\t\t * This prevents unnecessary value calculations.\n\t\t\t */\n\t\t\tif ( ! dragging ) {\n\t\t\t\tonDragEnd( dragProps );\n\t\t\t\tdragEnd( dragProps );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tonDrag( dragProps );\n\t\t\tdrag( dragProps );\n\n\t\t\tif ( ! isDragging ) {\n\t\t\t\tonDragStart( dragProps );\n\t\t\t\tdragStart( dragProps );\n\t\t\t}\n\t\t},\n\t\t{\n\t\t\taxis: dragDirection === 'e' || dragDirection === 'w' ? 'x' : 'y',\n\t\t\tthreshold: dragThreshold,\n\t\t\tenabled: isDragEnabled,\n\t\t\tpointer: { capture: false },\n\t\t}\n\t);\n\n\tconst dragProps = isDragEnabled ? dragGestureProps() : {};\n\n\treturn (\n\t\t<Input\n\t\t\t{ ...props }\n\t\t\t{ ...dragProps }\n\t\t\tclassName=\"components-input-control__input\"\n\t\t\tdisabled={ disabled }\n\t\t\tdragCursor={ dragCursor }\n\t\t\tisDragging={ isDragging }\n\t\t\tid={ id }\n\t\t\tonBlur={ handleOnBlur }\n\t\t\tonChange={ handleOnChange }\n\t\t\tonKeyDown={ withIgnoreIMEEvents( handleOnKeyDown ) }\n\t\t\tref={ ref }\n\t\t\tinputSize={ size }\n\t\t\t// Fallback to `''` to avoid \"uncontrolled to controlled\" warning.\n\t\t\t// See https://github.com/WordPress/gutenberg/pull/47250 for details.\n\t\t\tvalue={ value ?? '' }\n\t\t\ttype={ type }\n\t\t/>\n\t);\n}\n\nconst ForwardedComponent = forwardRef( InputField );\n\nexport default ForwardedComponent;\n"],"mappings":"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","ignoreList":[]}
@@ -194,7 +194,7 @@ const ImageComponent = ({
194
194
  accessible: true,
195
195
  disabled: !isSelected,
196
196
  accessibilityLabel: alt,
197
- accessibilityHint: __('Double tap and hold to edit'),
197
+ accessibilityHint: __('Double tap to view larger.'),
198
198
  accessibilityRole: "imagebutton",
199
199
  style: imageContainerStyles,
200
200
  children: [isSelected && highlightSelected && /*#__PURE__*/_jsx(View, {
@@ -1 +1 @@
1
- {"version":3,"names":["Image","RNImage","Text","View","FastImage","__","image","offline","usePreferredColorSchemeStyle","useEffect","useState","Platform","getImageWithFocalPointStyles","styles","SvgIconRetry","ImageEditingButton","Icon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ICON_TYPE","OFFLINE","PLACEHOLDER","RETRY","UPLOAD","ImageComponent","align","alt","editButton","focalPoint","height","imageHeight","highlightSelected","isSelected","shouldUseFastImage","isUploadFailed","isUploadPaused","isUploadInProgress","mediaPickerOptions","onImageDataLoad","onSelectMediaUploadOption","openMediaOptions","resizeMode","retryMessage","retryIcon","url","shapeStyle","style","width","imageWidth","imageData","setImageData","containerSize","setContainerSize","localURL","setLocalURL","networkURL","setNetworkURL","networkImageLoaded","setNetworkImageLoaded","isAndroid","imageResizeMode","isCurrent","getSize","imgWidth","imgHeight","metaData","aspectRatio","startsWith","isIOS","prefetch","then","onContainerLayout","event","nativeEvent","layout","getIcon","iconType","icon","iconStyle","iconRetryStyles","iconOfflineStyles","iconPlaceholderStyles","iconUploadStyles","iconPlaceholder","iconPlaceholderDark","iconUpload","iconUploadDark","iconOffline","iconOfflineDark","retryIconStyles","retryIconDark","iconRetry","iconRetryDark","retryContainerStyles","retryContainer","retryContainerDark","uploadFailedTextStyles","uploadFailedText","uploadFailedTextDark","placeholderStyles","imageContainerUpload","imageContainerUploadDark","imageContainerUploadWithFocalpoint","customWidth","wide","imageContainerStyles","imageContent","focalPointContainer","imageStyles","undefined","calculatedSelectedHeight","isNaN","imageSelectedStyles","imageBorder","imageBorderDark","container","alignItems","onLayout","children","accessible","disabled","accessibilityLabel","accessibilityHint","accessibilityRole","imageUploadingIconContainer","focalPointContent","fadeDuration","source","uri","resizeMethod","testID","nonVisibleImage","onLoad","imageContainer","customRetryIcon","pickerOptions"],"sources":["@wordpress/components/src/mobile/image/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Image as RNImage, Text, View } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image, offline } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { useEffect, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getImageWithFocalPointStyles } from './utils';\nimport styles from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport ImageEditingButton from './image-editing-button';\nimport Icon from '../../icon';\n\nconst ICON_TYPE = {\n\tOFFLINE: 'offline',\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nconst ImageComponent = ( {\n\talign,\n\talt,\n\teditButton = true,\n\tfocalPoint,\n\theight: imageHeight,\n\thighlightSelected = true,\n\tisSelected,\n\tshouldUseFastImage,\n\tisUploadFailed,\n\tisUploadPaused,\n\tisUploadInProgress,\n\tmediaPickerOptions,\n\tonImageDataLoad,\n\tonSelectMediaUploadOption,\n\topenMediaOptions,\n\tresizeMode,\n\tretryMessage,\n\tretryIcon,\n\turl,\n\tshapeStyle,\n\tstyle,\n\twidth: imageWidth,\n} ) => {\n\tconst [ imageData, setImageData ] = useState( null );\n\tconst [ containerSize, setContainerSize ] = useState( null );\n\tconst [ localURL, setLocalURL ] = useState( null );\n\tconst [ networkURL, setNetworkURL ] = useState( null );\n\tconst [ networkImageLoaded, setNetworkImageLoaded ] = useState( false );\n\n\t// Disabled for Android due to https://github.com/WordPress/gutenberg/issues/43149\n\tconst Image =\n\t\t! shouldUseFastImage || Platform.isAndroid ? RNImage : FastImage;\n\tconst imageResizeMode =\n\t\t! shouldUseFastImage || Platform.isAndroid\n\t\t\t? resizeMode\n\t\t\t: FastImage.resizeMode[ resizeMode ];\n\n\tuseEffect( () => {\n\t\tlet isCurrent = true;\n\t\tif ( url ) {\n\t\t\tRNImage.getSize( url, ( imgWidth, imgHeight ) => {\n\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst metaData = {\n\t\t\t\t\taspectRatio: imgWidth / imgHeight,\n\t\t\t\t\twidth: imgWidth,\n\t\t\t\t\theight: imgHeight,\n\t\t\t\t};\n\t\t\t\tsetImageData( metaData );\n\t\t\t\tif ( onImageDataLoad ) {\n\t\t\t\t\tonImageDataLoad( metaData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( url.startsWith( 'file:///' ) ) {\n\t\t\t\tsetLocalURL( url );\n\t\t\t\tsetNetworkURL( null );\n\t\t\t\tsetNetworkImageLoaded( false );\n\t\t\t} else if ( url.startsWith( 'https://' ) ) {\n\t\t\t\tif ( Platform.isIOS ) {\n\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t} else if ( Platform.isAndroid ) {\n\t\t\t\t\tRNImage.prefetch( url ).then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// This callback is called when the image fails to load,\n\t\t\t\t\t\t\t// but these events are handled by `isUploadFailed`\n\t\t\t\t\t\t\t// and `isUploadPaused` events instead.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// Ignoring the error event will persist the local image URI.\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\treturn () => ( isCurrent = false );\n\t\t// See https://github.com/WordPress/gutenberg/pull/41166\n\t}, [ url ] );\n\n\tconst onContainerLayout = ( event ) => {\n\t\tconst { height, width } = event.nativeEvent.layout;\n\n\t\tif (\n\t\t\twidth !== 0 &&\n\t\t\theight !== 0 &&\n\t\t\t( containerSize?.width !== width ||\n\t\t\t\tcontainerSize?.height !== height )\n\t\t) {\n\t\t\tsetContainerSize( { width, height } );\n\t\t}\n\t};\n\n\tconst getIcon = ( iconType ) => {\n\t\tlet icon;\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\ticon = retryIcon || SvgIconRetry;\n\t\t\t\ticonStyle = iconRetryStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.OFFLINE:\n\t\t\t\ticon = offline;\n\t\t\t\ticonStyle = iconOfflineStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconPlaceholderStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconUploadStyles;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn <Icon icon={ icon } { ...iconStyle } />;\n\t};\n\n\tconst iconPlaceholderStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconPlaceholder,\n\t\tstyles.iconPlaceholderDark\n\t);\n\n\tconst iconUploadStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconUpload,\n\t\tstyles.iconUploadDark\n\t);\n\n\tconst iconOfflineStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconOffline,\n\t\tstyles.iconOfflineDark\n\t);\n\n\tconst retryIconStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryIcon,\n\t\tstyles.retryIconDark\n\t);\n\n\tconst iconRetryStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconRetry,\n\t\tstyles.iconRetryDark\n\t);\n\n\tconst retryContainerStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryContainer,\n\t\tstyles.retryContainerDark\n\t);\n\n\tconst uploadFailedTextStyles = usePreferredColorSchemeStyle(\n\t\tstyles.uploadFailedText,\n\t\tstyles.uploadFailedTextDark\n\t);\n\n\tconst placeholderStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageContainerUpload,\n\t\t\tstyles.imageContainerUploadDark\n\t\t),\n\t\tfocalPoint && styles.imageContainerUploadWithFocalpoint,\n\t\timageHeight && { height: imageHeight },\n\t];\n\n\tconst customWidth =\n\t\timageData?.width < containerSize?.width\n\t\t\t? imageData?.width\n\t\t\t: styles.wide?.width;\n\n\tconst imageContainerStyles = [\n\t\tstyles.imageContent,\n\t\t{\n\t\t\twidth:\n\t\t\t\timageWidth === styles.wide?.width ||\n\t\t\t\t( imageData &&\n\t\t\t\t\timageWidth > 0 &&\n\t\t\t\t\timageWidth < containerSize?.width )\n\t\t\t\t\t? imageWidth\n\t\t\t\t\t: customWidth,\n\t\t},\n\t\tresizeMode && { width: styles.wide?.width },\n\t\tfocalPoint && styles.focalPointContainer,\n\t];\n\n\tconst imageStyles = [\n\t\t{\n\t\t\theight: containerSize?.height,\n\t\t},\n\t\t! resizeMode && {\n\t\t\taspectRatio: imageData?.aspectRatio,\n\t\t},\n\t\tfocalPoint && styles.focalPoint,\n\t\tfocalPoint &&\n\t\t\tgetImageWithFocalPointStyles(\n\t\t\t\tfocalPoint,\n\t\t\t\tcontainerSize,\n\t\t\t\timageData\n\t\t\t),\n\t\t! focalPoint &&\n\t\t\timageData &&\n\t\t\tcontainerSize && {\n\t\t\t\theight:\n\t\t\t\t\timageData?.width > containerSize?.width && ! imageWidth\n\t\t\t\t\t\t? containerSize?.width / imageData?.aspectRatio\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\timageHeight && { height: imageHeight },\n\t\tshapeStyle,\n\t];\n\n\t// On iOS, add 1 to height to account for the 1px non-visible image\n\t// that is used to determine when the network image has loaded\n\t// We also must verify that it is not NaN, as it can be NaN when the image is loading.\n\t// This is not necessary on Android as the non-visible image is not used.\n\tlet calculatedSelectedHeight;\n\tif ( Platform.isIOS ) {\n\t\tcalculatedSelectedHeight =\n\t\t\tcontainerSize && ! isNaN( containerSize.height )\n\t\t\t\t? containerSize.height + 1\n\t\t\t\t: 0;\n\t} else {\n\t\tcalculatedSelectedHeight = containerSize?.height;\n\t}\n\n\tconst imageSelectedStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageBorder,\n\t\t\tstyles.imageBorderDark\n\t\t),\n\t\t{\n\t\t\theight: calculatedSelectedHeight,\n\t\t},\n\t];\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [\n\t\t\t\tstyles.container,\n\t\t\t\t// Only set alignItems if an image exists because alignItems causes the placeholder\n\t\t\t\t// to disappear when an aligned image can't be downloaded\n\t\t\t\t// https://github.com/wordpress-mobile/gutenberg-mobile/issues/1592\n\t\t\t\timageData && align && { alignItems: align },\n\t\t\t\tstyle,\n\t\t\t] }\n\t\t\tonLayout={ onContainerLayout }\n\t\t>\n\t\t\t<View\n\t\t\t\taccessible\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ alt }\n\t\t\t\taccessibilityHint={ __( 'Double tap and hold to edit' ) }\n\t\t\t\taccessibilityRole=\"imagebutton\"\n\t\t\t\tkey={ url }\n\t\t\t\tstyle={ imageContainerStyles }\n\t\t\t>\n\t\t\t\t{ isSelected && highlightSelected && (\n\t\t\t\t\t<View style={ imageSelectedStyles } />\n\t\t\t\t) }\n\n\t\t\t\t{ ! imageData ? (\n\t\t\t\t\t<View style={ placeholderStyles }>\n\t\t\t\t\t\t<View style={ styles.imageUploadingIconContainer }>\n\t\t\t\t\t\t\t{ getIcon( ICON_TYPE.UPLOAD ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t) : (\n\t\t\t\t\t<View style={ focalPoint && styles.focalPointContent }>\n\t\t\t\t\t\t{ Platform.isAndroid && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ networkImageLoaded && networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t\ttestID={ `network-image-${ url }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! networkImageLoaded && ! networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: localURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Platform.isIOS && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\tsource={ {\n\t\t\t\t\t\t\t\t\t\turi:\n\t\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t\t: localURL || url,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\ttestID={ `network-image-${\n\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t: localURL || url\n\t\t\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\tstyle={ styles.nonVisibleImage }\n\t\t\t\t\t\t\t\t\tonLoad={ () => {\n\t\t\t\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadFailed || isUploadPaused ) && retryMessage && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\tstyles.imageContainer,\n\t\t\t\t\t\t\tretryContainerStyles,\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\tretryIconStyles,\n\t\t\t\t\t\t\t\tretryIcon && styles.customRetryIcon,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isUploadPaused\n\t\t\t\t\t\t\t\t? getIcon( ICON_TYPE.OFFLINE )\n\t\t\t\t\t\t\t\t: getIcon( ICON_TYPE.RETRY ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text style={ uploadFailedTextStyles }>\n\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\n\t\t\t{ editButton && isSelected && ! isUploadInProgress && (\n\t\t\t\t<ImageEditingButton\n\t\t\t\t\tonSelectMediaUploadOption={ onSelectMediaUploadOption }\n\t\t\t\t\topenMediaOptions={ openMediaOptions }\n\t\t\t\t\turl={\n\t\t\t\t\t\t! ( isUploadFailed || isUploadPaused ) &&\n\t\t\t\t\t\timageData &&\n\t\t\t\t\t\turl\n\t\t\t\t\t}\n\t\t\t\t\tpickerOptions={ mediaPickerOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</View>\n\t);\n};\n\nexport default ImageComponent;\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["Image","RNImage","Text","View","FastImage","__","image","offline","usePreferredColorSchemeStyle","useEffect","useState","Platform","getImageWithFocalPointStyles","styles","SvgIconRetry","ImageEditingButton","Icon","jsx","_jsx","Fragment","_Fragment","jsxs","_jsxs","ICON_TYPE","OFFLINE","PLACEHOLDER","RETRY","UPLOAD","ImageComponent","align","alt","editButton","focalPoint","height","imageHeight","highlightSelected","isSelected","shouldUseFastImage","isUploadFailed","isUploadPaused","isUploadInProgress","mediaPickerOptions","onImageDataLoad","onSelectMediaUploadOption","openMediaOptions","resizeMode","retryMessage","retryIcon","url","shapeStyle","style","width","imageWidth","imageData","setImageData","containerSize","setContainerSize","localURL","setLocalURL","networkURL","setNetworkURL","networkImageLoaded","setNetworkImageLoaded","isAndroid","imageResizeMode","isCurrent","getSize","imgWidth","imgHeight","metaData","aspectRatio","startsWith","isIOS","prefetch","then","onContainerLayout","event","nativeEvent","layout","getIcon","iconType","icon","iconStyle","iconRetryStyles","iconOfflineStyles","iconPlaceholderStyles","iconUploadStyles","iconPlaceholder","iconPlaceholderDark","iconUpload","iconUploadDark","iconOffline","iconOfflineDark","retryIconStyles","retryIconDark","iconRetry","iconRetryDark","retryContainerStyles","retryContainer","retryContainerDark","uploadFailedTextStyles","uploadFailedText","uploadFailedTextDark","placeholderStyles","imageContainerUpload","imageContainerUploadDark","imageContainerUploadWithFocalpoint","customWidth","wide","imageContainerStyles","imageContent","focalPointContainer","imageStyles","undefined","calculatedSelectedHeight","isNaN","imageSelectedStyles","imageBorder","imageBorderDark","container","alignItems","onLayout","children","accessible","disabled","accessibilityLabel","accessibilityHint","accessibilityRole","imageUploadingIconContainer","focalPointContent","fadeDuration","source","uri","resizeMethod","testID","nonVisibleImage","onLoad","imageContainer","customRetryIcon","pickerOptions"],"sources":["@wordpress/components/src/mobile/image/index.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Image as RNImage, Text, View } from 'react-native';\nimport FastImage from 'react-native-fast-image';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { image, offline } from '@wordpress/icons';\nimport { usePreferredColorSchemeStyle } from '@wordpress/compose';\nimport { useEffect, useState, Platform } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport { getImageWithFocalPointStyles } from './utils';\nimport styles from './style.scss';\nimport SvgIconRetry from './icon-retry';\nimport ImageEditingButton from './image-editing-button';\nimport Icon from '../../icon';\n\nconst ICON_TYPE = {\n\tOFFLINE: 'offline',\n\tPLACEHOLDER: 'placeholder',\n\tRETRY: 'retry',\n\tUPLOAD: 'upload',\n};\n\nconst ImageComponent = ( {\n\talign,\n\talt,\n\teditButton = true,\n\tfocalPoint,\n\theight: imageHeight,\n\thighlightSelected = true,\n\tisSelected,\n\tshouldUseFastImage,\n\tisUploadFailed,\n\tisUploadPaused,\n\tisUploadInProgress,\n\tmediaPickerOptions,\n\tonImageDataLoad,\n\tonSelectMediaUploadOption,\n\topenMediaOptions,\n\tresizeMode,\n\tretryMessage,\n\tretryIcon,\n\turl,\n\tshapeStyle,\n\tstyle,\n\twidth: imageWidth,\n} ) => {\n\tconst [ imageData, setImageData ] = useState( null );\n\tconst [ containerSize, setContainerSize ] = useState( null );\n\tconst [ localURL, setLocalURL ] = useState( null );\n\tconst [ networkURL, setNetworkURL ] = useState( null );\n\tconst [ networkImageLoaded, setNetworkImageLoaded ] = useState( false );\n\n\t// Disabled for Android due to https://github.com/WordPress/gutenberg/issues/43149\n\tconst Image =\n\t\t! shouldUseFastImage || Platform.isAndroid ? RNImage : FastImage;\n\tconst imageResizeMode =\n\t\t! shouldUseFastImage || Platform.isAndroid\n\t\t\t? resizeMode\n\t\t\t: FastImage.resizeMode[ resizeMode ];\n\n\tuseEffect( () => {\n\t\tlet isCurrent = true;\n\t\tif ( url ) {\n\t\t\tRNImage.getSize( url, ( imgWidth, imgHeight ) => {\n\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tconst metaData = {\n\t\t\t\t\taspectRatio: imgWidth / imgHeight,\n\t\t\t\t\twidth: imgWidth,\n\t\t\t\t\theight: imgHeight,\n\t\t\t\t};\n\t\t\t\tsetImageData( metaData );\n\t\t\t\tif ( onImageDataLoad ) {\n\t\t\t\t\tonImageDataLoad( metaData );\n\t\t\t\t}\n\t\t\t} );\n\n\t\t\tif ( url.startsWith( 'file:///' ) ) {\n\t\t\t\tsetLocalURL( url );\n\t\t\t\tsetNetworkURL( null );\n\t\t\t\tsetNetworkImageLoaded( false );\n\t\t\t} else if ( url.startsWith( 'https://' ) ) {\n\t\t\t\tif ( Platform.isIOS ) {\n\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t} else if ( Platform.isAndroid ) {\n\t\t\t\t\tRNImage.prefetch( url ).then(\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\tif ( ! isCurrent ) {\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tsetNetworkURL( url );\n\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t},\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\t// This callback is called when the image fails to load,\n\t\t\t\t\t\t\t// but these events are handled by `isUploadFailed`\n\t\t\t\t\t\t\t// and `isUploadPaused` events instead.\n\t\t\t\t\t\t\t//\n\t\t\t\t\t\t\t// Ignoring the error event will persist the local image URI.\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\treturn () => ( isCurrent = false );\n\t\t// See https://github.com/WordPress/gutenberg/pull/41166\n\t}, [ url ] );\n\n\tconst onContainerLayout = ( event ) => {\n\t\tconst { height, width } = event.nativeEvent.layout;\n\n\t\tif (\n\t\t\twidth !== 0 &&\n\t\t\theight !== 0 &&\n\t\t\t( containerSize?.width !== width ||\n\t\t\t\tcontainerSize?.height !== height )\n\t\t) {\n\t\t\tsetContainerSize( { width, height } );\n\t\t}\n\t};\n\n\tconst getIcon = ( iconType ) => {\n\t\tlet icon;\n\t\tlet iconStyle;\n\t\tswitch ( iconType ) {\n\t\t\tcase ICON_TYPE.RETRY:\n\t\t\t\ticon = retryIcon || SvgIconRetry;\n\t\t\t\ticonStyle = iconRetryStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.OFFLINE:\n\t\t\t\ticon = offline;\n\t\t\t\ticonStyle = iconOfflineStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.PLACEHOLDER:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconPlaceholderStyles;\n\t\t\t\tbreak;\n\t\t\tcase ICON_TYPE.UPLOAD:\n\t\t\t\ticon = image;\n\t\t\t\ticonStyle = iconUploadStyles;\n\t\t\t\tbreak;\n\t\t}\n\t\treturn <Icon icon={ icon } { ...iconStyle } />;\n\t};\n\n\tconst iconPlaceholderStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconPlaceholder,\n\t\tstyles.iconPlaceholderDark\n\t);\n\n\tconst iconUploadStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconUpload,\n\t\tstyles.iconUploadDark\n\t);\n\n\tconst iconOfflineStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconOffline,\n\t\tstyles.iconOfflineDark\n\t);\n\n\tconst retryIconStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryIcon,\n\t\tstyles.retryIconDark\n\t);\n\n\tconst iconRetryStyles = usePreferredColorSchemeStyle(\n\t\tstyles.iconRetry,\n\t\tstyles.iconRetryDark\n\t);\n\n\tconst retryContainerStyles = usePreferredColorSchemeStyle(\n\t\tstyles.retryContainer,\n\t\tstyles.retryContainerDark\n\t);\n\n\tconst uploadFailedTextStyles = usePreferredColorSchemeStyle(\n\t\tstyles.uploadFailedText,\n\t\tstyles.uploadFailedTextDark\n\t);\n\n\tconst placeholderStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageContainerUpload,\n\t\t\tstyles.imageContainerUploadDark\n\t\t),\n\t\tfocalPoint && styles.imageContainerUploadWithFocalpoint,\n\t\timageHeight && { height: imageHeight },\n\t];\n\n\tconst customWidth =\n\t\timageData?.width < containerSize?.width\n\t\t\t? imageData?.width\n\t\t\t: styles.wide?.width;\n\n\tconst imageContainerStyles = [\n\t\tstyles.imageContent,\n\t\t{\n\t\t\twidth:\n\t\t\t\timageWidth === styles.wide?.width ||\n\t\t\t\t( imageData &&\n\t\t\t\t\timageWidth > 0 &&\n\t\t\t\t\timageWidth < containerSize?.width )\n\t\t\t\t\t? imageWidth\n\t\t\t\t\t: customWidth,\n\t\t},\n\t\tresizeMode && { width: styles.wide?.width },\n\t\tfocalPoint && styles.focalPointContainer,\n\t];\n\n\tconst imageStyles = [\n\t\t{\n\t\t\theight: containerSize?.height,\n\t\t},\n\t\t! resizeMode && {\n\t\t\taspectRatio: imageData?.aspectRatio,\n\t\t},\n\t\tfocalPoint && styles.focalPoint,\n\t\tfocalPoint &&\n\t\t\tgetImageWithFocalPointStyles(\n\t\t\t\tfocalPoint,\n\t\t\t\tcontainerSize,\n\t\t\t\timageData\n\t\t\t),\n\t\t! focalPoint &&\n\t\t\timageData &&\n\t\t\tcontainerSize && {\n\t\t\t\theight:\n\t\t\t\t\timageData?.width > containerSize?.width && ! imageWidth\n\t\t\t\t\t\t? containerSize?.width / imageData?.aspectRatio\n\t\t\t\t\t\t: undefined,\n\t\t\t},\n\t\timageHeight && { height: imageHeight },\n\t\tshapeStyle,\n\t];\n\n\t// On iOS, add 1 to height to account for the 1px non-visible image\n\t// that is used to determine when the network image has loaded\n\t// We also must verify that it is not NaN, as it can be NaN when the image is loading.\n\t// This is not necessary on Android as the non-visible image is not used.\n\tlet calculatedSelectedHeight;\n\tif ( Platform.isIOS ) {\n\t\tcalculatedSelectedHeight =\n\t\t\tcontainerSize && ! isNaN( containerSize.height )\n\t\t\t\t? containerSize.height + 1\n\t\t\t\t: 0;\n\t} else {\n\t\tcalculatedSelectedHeight = containerSize?.height;\n\t}\n\n\tconst imageSelectedStyles = [\n\t\tusePreferredColorSchemeStyle(\n\t\t\tstyles.imageBorder,\n\t\t\tstyles.imageBorderDark\n\t\t),\n\t\t{\n\t\t\theight: calculatedSelectedHeight,\n\t\t},\n\t];\n\n\treturn (\n\t\t<View\n\t\t\tstyle={ [\n\t\t\t\tstyles.container,\n\t\t\t\t// Only set alignItems if an image exists because alignItems causes the placeholder\n\t\t\t\t// to disappear when an aligned image can't be downloaded\n\t\t\t\t// https://github.com/wordpress-mobile/gutenberg-mobile/issues/1592\n\t\t\t\timageData && align && { alignItems: align },\n\t\t\t\tstyle,\n\t\t\t] }\n\t\t\tonLayout={ onContainerLayout }\n\t\t>\n\t\t\t<View\n\t\t\t\taccessible\n\t\t\t\tdisabled={ ! isSelected }\n\t\t\t\taccessibilityLabel={ alt }\n\t\t\t\taccessibilityHint={ __( 'Double tap to view larger.' ) }\n\t\t\t\taccessibilityRole=\"imagebutton\"\n\t\t\t\tkey={ url }\n\t\t\t\tstyle={ imageContainerStyles }\n\t\t\t>\n\t\t\t\t{ isSelected && highlightSelected && (\n\t\t\t\t\t<View style={ imageSelectedStyles } />\n\t\t\t\t) }\n\n\t\t\t\t{ ! imageData ? (\n\t\t\t\t\t<View style={ placeholderStyles }>\n\t\t\t\t\t\t<View style={ styles.imageUploadingIconContainer }>\n\t\t\t\t\t\t\t{ getIcon( ICON_TYPE.UPLOAD ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t</View>\n\t\t\t\t) : (\n\t\t\t\t\t<View style={ focalPoint && styles.focalPointContent }>\n\t\t\t\t\t\t{ Platform.isAndroid && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t{ networkImageLoaded && networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t\ttestID={ `network-image-${ url }` }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t\t{ ! networkImageLoaded && ! networkURL && (\n\t\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\t\tfadeDuration={ 0 }\n\t\t\t\t\t\t\t\t\t\tsource={ { uri: localURL } }\n\t\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t\t{ Platform.isIOS && (\n\t\t\t\t\t\t\t<>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tstyle={ imageStyles }\n\t\t\t\t\t\t\t\t\tsource={ {\n\t\t\t\t\t\t\t\t\t\turi:\n\t\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t\t: localURL || url,\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t\t{ ...( ! focalPoint && {\n\t\t\t\t\t\t\t\t\t\tresizeMethod: 'scale',\n\t\t\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\t\t\tresizeMode={ imageResizeMode }\n\t\t\t\t\t\t\t\t\ttestID={ `network-image-${\n\t\t\t\t\t\t\t\t\t\tnetworkURL && networkImageLoaded\n\t\t\t\t\t\t\t\t\t\t\t? networkURL\n\t\t\t\t\t\t\t\t\t\t\t: localURL || url\n\t\t\t\t\t\t\t\t\t}` }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Image\n\t\t\t\t\t\t\t\t\tsource={ { uri: networkURL } }\n\t\t\t\t\t\t\t\t\tstyle={ styles.nonVisibleImage }\n\t\t\t\t\t\t\t\t\tonLoad={ () => {\n\t\t\t\t\t\t\t\t\t\tsetNetworkImageLoaded( true );\n\t\t\t\t\t\t\t\t\t} }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</>\n\t\t\t\t\t\t) }\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\n\t\t\t\t{ ( isUploadFailed || isUploadPaused ) && retryMessage && (\n\t\t\t\t\t<View\n\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\tstyles.imageContainer,\n\t\t\t\t\t\t\tretryContainerStyles,\n\t\t\t\t\t\t] }\n\t\t\t\t\t>\n\t\t\t\t\t\t<View\n\t\t\t\t\t\t\tstyle={ [\n\t\t\t\t\t\t\t\tretryIconStyles,\n\t\t\t\t\t\t\t\tretryIcon && styles.customRetryIcon,\n\t\t\t\t\t\t\t] }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ isUploadPaused\n\t\t\t\t\t\t\t\t? getIcon( ICON_TYPE.OFFLINE )\n\t\t\t\t\t\t\t\t: getIcon( ICON_TYPE.RETRY ) }\n\t\t\t\t\t\t</View>\n\t\t\t\t\t\t<Text style={ uploadFailedTextStyles }>\n\t\t\t\t\t\t\t{ retryMessage }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</View>\n\t\t\t\t) }\n\t\t\t</View>\n\n\t\t\t{ editButton && isSelected && ! isUploadInProgress && (\n\t\t\t\t<ImageEditingButton\n\t\t\t\t\tonSelectMediaUploadOption={ onSelectMediaUploadOption }\n\t\t\t\t\topenMediaOptions={ openMediaOptions }\n\t\t\t\t\turl={\n\t\t\t\t\t\t! ( isUploadFailed || isUploadPaused ) &&\n\t\t\t\t\t\timageData &&\n\t\t\t\t\t\turl\n\t\t\t\t\t}\n\t\t\t\t\tpickerOptions={ mediaPickerOptions }\n\t\t\t\t/>\n\t\t\t) }\n\t\t</View>\n\t);\n};\n\nexport default ImageComponent;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,KAAK,IAAIC,OAAO,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AAC3D,OAAOC,SAAS,MAAM,yBAAyB;;AAE/C;AACA;AACA;AACA,SAASC,EAAE,QAAQ,iBAAiB;AACpC,SAASC,KAAK,EAAEC,OAAO,QAAQ,kBAAkB;AACjD,SAASC,4BAA4B,QAAQ,oBAAoB;AACjE,SAASC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,QAAQ,oBAAoB;;AAElE;AACA;AACA;AACA,SAASC,4BAA4B,QAAQ,SAAS;AACtD,OAAOC,MAAM,MAAM,cAAc;AACjC,OAAOC,YAAY,MAAM,cAAc;AACvC,OAAOC,kBAAkB,MAAM,wBAAwB;AACvD,OAAOC,IAAI,MAAM,YAAY;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,QAAA,IAAAC,SAAA,EAAAC,IAAA,IAAAC,KAAA;AAE9B,MAAMC,SAAS,GAAG;EACjBC,OAAO,EAAE,SAAS;EAClBC,WAAW,EAAE,aAAa;EAC1BC,KAAK,EAAE,OAAO;EACdC,MAAM,EAAE;AACT,CAAC;AAED,MAAMC,cAAc,GAAGA,CAAE;EACxBC,KAAK;EACLC,GAAG;EACHC,UAAU,GAAG,IAAI;EACjBC,UAAU;EACVC,MAAM,EAAEC,WAAW;EACnBC,iBAAiB,GAAG,IAAI;EACxBC,UAAU;EACVC,kBAAkB;EAClBC,cAAc;EACdC,cAAc;EACdC,kBAAkB;EAClBC,kBAAkB;EAClBC,eAAe;EACfC,yBAAyB;EACzBC,gBAAgB;EAChBC,UAAU;EACVC,YAAY;EACZC,SAAS;EACTC,GAAG;EACHC,UAAU;EACVC,KAAK;EACLC,KAAK,EAAEC;AACR,CAAC,KAAM;EACN,MAAM,CAAEC,SAAS,EAAEC,YAAY,CAAE,GAAG5C,QAAQ,CAAE,IAAK,CAAC;EACpD,MAAM,CAAE6C,aAAa,EAAEC,gBAAgB,CAAE,GAAG9C,QAAQ,CAAE,IAAK,CAAC;EAC5D,MAAM,CAAE+C,QAAQ,EAAEC,WAAW,CAAE,GAAGhD,QAAQ,CAAE,IAAK,CAAC;EAClD,MAAM,CAAEiD,UAAU,EAAEC,aAAa,CAAE,GAAGlD,QAAQ,CAAE,IAAK,CAAC;EACtD,MAAM,CAAEmD,kBAAkB,EAAEC,qBAAqB,CAAE,GAAGpD,QAAQ,CAAE,KAAM,CAAC;;EAEvE;EACA,MAAMV,KAAK,GACV,CAAEqC,kBAAkB,IAAI1B,QAAQ,CAACoD,SAAS,GAAG9D,OAAO,GAAGG,SAAS;EACjE,MAAM4D,eAAe,GACpB,CAAE3B,kBAAkB,IAAI1B,QAAQ,CAACoD,SAAS,GACvClB,UAAU,GACVzC,SAAS,CAACyC,UAAU,CAAEA,UAAU,CAAE;EAEtCpC,SAAS,CAAE,MAAM;IAChB,IAAIwD,SAAS,GAAG,IAAI;IACpB,IAAKjB,GAAG,EAAG;MACV/C,OAAO,CAACiE,OAAO,CAAElB,GAAG,EAAE,CAAEmB,QAAQ,EAAEC,SAAS,KAAM;QAChD,IAAK,CAAEH,SAAS,EAAG;UAClB;QACD;QACA,MAAMI,QAAQ,GAAG;UAChBC,WAAW,EAAEH,QAAQ,GAAGC,SAAS;UACjCjB,KAAK,EAAEgB,QAAQ;UACflC,MAAM,EAAEmC;QACT,CAAC;QACDd,YAAY,CAAEe,QAAS,CAAC;QACxB,IAAK3B,eAAe,EAAG;UACtBA,eAAe,CAAE2B,QAAS,CAAC;QAC5B;MACD,CAAE,CAAC;MAEH,IAAKrB,GAAG,CAACuB,UAAU,CAAE,UAAW,CAAC,EAAG;QACnCb,WAAW,CAAEV,GAAI,CAAC;QAClBY,aAAa,CAAE,IAAK,CAAC;QACrBE,qBAAqB,CAAE,KAAM,CAAC;MAC/B,CAAC,MAAM,IAAKd,GAAG,CAACuB,UAAU,CAAE,UAAW,CAAC,EAAG;QAC1C,IAAK5D,QAAQ,CAAC6D,KAAK,EAAG;UACrBZ,aAAa,CAAEZ,GAAI,CAAC;QACrB,CAAC,MAAM,IAAKrC,QAAQ,CAACoD,SAAS,EAAG;UAChC9D,OAAO,CAACwE,QAAQ,CAAEzB,GAAI,CAAC,CAAC0B,IAAI,CAC3B,MAAM;YACL,IAAK,CAAET,SAAS,EAAG;cAClB;YACD;YACAL,aAAa,CAAEZ,GAAI,CAAC;YACpBc,qBAAqB,CAAE,IAAK,CAAC;UAC9B,CAAC,EACD,MAAM;YACL;YACA;YACA;YACA;YACA;UAAA,CAEF,CAAC;QACF;MACD;IACD;IACA,OAAO,MAAQG,SAAS,GAAG,KAAO;IAClC;EACD,CAAC,EAAE,CAAEjB,GAAG,CAAG,CAAC;EAEZ,MAAM2B,iBAAiB,GAAKC,KAAK,IAAM;IACtC,MAAM;MAAE3C,MAAM;MAAEkB;IAAM,CAAC,GAAGyB,KAAK,CAACC,WAAW,CAACC,MAAM;IAElD,IACC3B,KAAK,KAAK,CAAC,IACXlB,MAAM,KAAK,CAAC,KACVsB,aAAa,EAAEJ,KAAK,KAAKA,KAAK,IAC/BI,aAAa,EAAEtB,MAAM,KAAKA,MAAM,CAAE,EAClC;MACDuB,gBAAgB,CAAE;QAAEL,KAAK;QAAElB;MAAO,CAAE,CAAC;IACtC;EACD,CAAC;EAED,MAAM8C,OAAO,GAAKC,QAAQ,IAAM;IAC/B,IAAIC,IAAI;IACR,IAAIC,SAAS;IACb,QAASF,QAAQ;MAChB,KAAKzD,SAAS,CAACG,KAAK;QACnBuD,IAAI,GAAGlC,SAAS,IAAIjC,YAAY;QAChCoE,SAAS,GAAGC,eAAe;QAC3B;MACD,KAAK5D,SAAS,CAACC,OAAO;QACrByD,IAAI,GAAG1E,OAAO;QACd2E,SAAS,GAAGE,iBAAiB;QAC7B;MACD,KAAK7D,SAAS,CAACE,WAAW;QACzBwD,IAAI,GAAG3E,KAAK;QACZ4E,SAAS,GAAGG,qBAAqB;QACjC;MACD,KAAK9D,SAAS,CAACI,MAAM;QACpBsD,IAAI,GAAG3E,KAAK;QACZ4E,SAAS,GAAGI,gBAAgB;QAC5B;IACF;IACA,oBAAOpE,IAAA,CAACF,IAAI;MAACiE,IAAI,EAAGA,IAAM;MAAA,GAAMC;IAAS,CAAI,CAAC;EAC/C,CAAC;EAED,MAAMG,qBAAqB,GAAG7E,4BAA4B,CACzDK,MAAM,CAAC0E,eAAe,EACtB1E,MAAM,CAAC2E,mBACR,CAAC;EAED,MAAMF,gBAAgB,GAAG9E,4BAA4B,CACpDK,MAAM,CAAC4E,UAAU,EACjB5E,MAAM,CAAC6E,cACR,CAAC;EAED,MAAMN,iBAAiB,GAAG5E,4BAA4B,CACrDK,MAAM,CAAC8E,WAAW,EAClB9E,MAAM,CAAC+E,eACR,CAAC;EAED,MAAMC,eAAe,GAAGrF,4BAA4B,CACnDK,MAAM,CAACkC,SAAS,EAChBlC,MAAM,CAACiF,aACR,CAAC;EAED,MAAMX,eAAe,GAAG3E,4BAA4B,CACnDK,MAAM,CAACkF,SAAS,EAChBlF,MAAM,CAACmF,aACR,CAAC;EAED,MAAMC,oBAAoB,GAAGzF,4BAA4B,CACxDK,MAAM,CAACqF,cAAc,EACrBrF,MAAM,CAACsF,kBACR,CAAC;EAED,MAAMC,sBAAsB,GAAG5F,4BAA4B,CAC1DK,MAAM,CAACwF,gBAAgB,EACvBxF,MAAM,CAACyF,oBACR,CAAC;EAED,MAAMC,iBAAiB,GAAG,CACzB/F,4BAA4B,CAC3BK,MAAM,CAAC2F,oBAAoB,EAC3B3F,MAAM,CAAC4F,wBACR,CAAC,EACDzE,UAAU,IAAInB,MAAM,CAAC6F,kCAAkC,EACvDxE,WAAW,IAAI;IAAED,MAAM,EAAEC;EAAY,CAAC,CACtC;EAED,MAAMyE,WAAW,GAChBtD,SAAS,EAAEF,KAAK,GAAGI,aAAa,EAAEJ,KAAK,GACpCE,SAAS,EAAEF,KAAK,GAChBtC,MAAM,CAAC+F,IAAI,EAAEzD,KAAK;EAEtB,MAAM0D,oBAAoB,GAAG,CAC5BhG,MAAM,CAACiG,YAAY,EACnB;IACC3D,KAAK,EACJC,UAAU,KAAKvC,MAAM,CAAC+F,IAAI,EAAEzD,KAAK,IAC/BE,SAAS,IACVD,UAAU,GAAG,CAAC,IACdA,UAAU,GAAGG,aAAa,EAAEJ,KAAO,GACjCC,UAAU,GACVuD;EACL,CAAC,EACD9D,UAAU,IAAI;IAAEM,KAAK,EAAEtC,MAAM,CAAC+F,IAAI,EAAEzD;EAAM,CAAC,EAC3CnB,UAAU,IAAInB,MAAM,CAACkG,mBAAmB,CACxC;EAED,MAAMC,WAAW,GAAG,CACnB;IACC/E,MAAM,EAAEsB,aAAa,EAAEtB;EACxB,CAAC,EACD,CAAEY,UAAU,IAAI;IACfyB,WAAW,EAAEjB,SAAS,EAAEiB;EACzB,CAAC,EACDtC,UAAU,IAAInB,MAAM,CAACmB,UAAU,EAC/BA,UAAU,IACTpB,4BAA4B,CAC3BoB,UAAU,EACVuB,aAAa,EACbF,SACD,CAAC,EACF,CAAErB,UAAU,IACXqB,SAAS,IACTE,aAAa,IAAI;IAChBtB,MAAM,EACLoB,SAAS,EAAEF,KAAK,GAAGI,aAAa,EAAEJ,KAAK,IAAI,CAAEC,UAAU,GACpDG,aAAa,EAAEJ,KAAK,GAAGE,SAAS,EAAEiB,WAAW,GAC7C2C;EACL,CAAC,EACF/E,WAAW,IAAI;IAAED,MAAM,EAAEC;EAAY,CAAC,EACtCe,UAAU,CACV;;EAED;EACA;EACA;EACA;EACA,IAAIiE,wBAAwB;EAC5B,IAAKvG,QAAQ,CAAC6D,KAAK,EAAG;IACrB0C,wBAAwB,GACvB3D,aAAa,IAAI,CAAE4D,KAAK,CAAE5D,aAAa,CAACtB,MAAO,CAAC,GAC7CsB,aAAa,CAACtB,MAAM,GAAG,CAAC,GACxB,CAAC;EACN,CAAC,MAAM;IACNiF,wBAAwB,GAAG3D,aAAa,EAAEtB,MAAM;EACjD;EAEA,MAAMmF,mBAAmB,GAAG,CAC3B5G,4BAA4B,CAC3BK,MAAM,CAACwG,WAAW,EAClBxG,MAAM,CAACyG,eACR,CAAC,EACD;IACCrF,MAAM,EAAEiF;EACT,CAAC,CACD;EAED,oBACC5F,KAAA,CAACnB,IAAI;IACJ+C,KAAK,EAAG,CACPrC,MAAM,CAAC0G,SAAS;IAChB;IACA;IACA;IACAlE,SAAS,IAAIxB,KAAK,IAAI;MAAE2F,UAAU,EAAE3F;IAAM,CAAC,EAC3CqB,KAAK,CACH;IACHuE,QAAQ,EAAG9C,iBAAmB;IAAA+C,QAAA,gBAE9BpG,KAAA,CAACnB,IAAI;MACJwH,UAAU;MACVC,QAAQ,EAAG,CAAExF,UAAY;MACzByF,kBAAkB,EAAG/F,GAAK;MAC1BgG,iBAAiB,EAAGzH,EAAE,CAAE,4BAA6B,CAAG;MACxD0H,iBAAiB,EAAC,aAAa;MAE/B7E,KAAK,EAAG2D,oBAAsB;MAAAa,QAAA,GAE5BtF,UAAU,IAAID,iBAAiB,iBAChCjB,IAAA,CAACf,IAAI;QAAC+C,KAAK,EAAGkE;MAAqB,CAAE,CACrC,EAEC,CAAE/D,SAAS,gBACZnC,IAAA,CAACf,IAAI;QAAC+C,KAAK,EAAGqD,iBAAmB;QAAAmB,QAAA,eAChCxG,IAAA,CAACf,IAAI;UAAC+C,KAAK,EAAGrC,MAAM,CAACmH,2BAA6B;UAAAN,QAAA,EAC/C3C,OAAO,CAAExD,SAAS,CAACI,MAAO;QAAC,CACxB;MAAC,CACF,CAAC,gBAEPL,KAAA,CAACnB,IAAI;QAAC+C,KAAK,EAAGlB,UAAU,IAAInB,MAAM,CAACoH,iBAAmB;QAAAP,QAAA,GACnD/G,QAAQ,CAACoD,SAAS,iBACnBzC,KAAA,CAAAF,SAAA;UAAAsG,QAAA,GACG7D,kBAAkB,IAAIF,UAAU,iBACjCzC,IAAA,CAAClB,KAAK;YACLkD,KAAK,EAAG8D,WAAa;YACrBkB,YAAY,EAAG,CAAG;YAClBC,MAAM,EAAG;cAAEC,GAAG,EAAEzE;YAAW,CAAG;YAAA,IACvB,CAAE3B,UAAU,IAAI;cACtBqG,YAAY,EAAE;YACf,CAAC;YACDxF,UAAU,EAAGmB,eAAiB;YAC9BsE,MAAM,EAAG,iBAAkBtF,GAAG;UAAK,CACnC,CACD,EACC,CAAEa,kBAAkB,IAAI,CAAEF,UAAU,iBACrCzC,IAAA,CAAClB,KAAK;YACLkD,KAAK,EAAG8D,WAAa;YACrBkB,YAAY,EAAG,CAAG;YAClBC,MAAM,EAAG;cAAEC,GAAG,EAAE3E;YAAS,CAAG;YAAA,IACrB,CAAEzB,UAAU,IAAI;cACtBqG,YAAY,EAAE;YACf,CAAC;YACDxF,UAAU,EAAGmB;UAAiB,CAC9B,CACD;QAAA,CACA,CACF,EACCrD,QAAQ,CAAC6D,KAAK,iBACflD,KAAA,CAAAF,SAAA;UAAAsG,QAAA,gBACCxG,IAAA,CAAClB,KAAK;YACLkD,KAAK,EAAG8D,WAAa;YACrBmB,MAAM,EAAG;cACRC,GAAG,EACFzE,UAAU,IAAIE,kBAAkB,GAC7BF,UAAU,GACVF,QAAQ,IAAIT;YACjB,CAAG;YAAA,IACI,CAAEhB,UAAU,IAAI;cACtBqG,YAAY,EAAE;YACf,CAAC;YACDxF,UAAU,EAAGmB,eAAiB;YAC9BsE,MAAM,EAAG,iBACR3E,UAAU,IAAIE,kBAAkB,GAC7BF,UAAU,GACVF,QAAQ,IAAIT,GAAG;UACf,CACJ,CAAC,eACF9B,IAAA,CAAClB,KAAK;YACLmI,MAAM,EAAG;cAAEC,GAAG,EAAEzE;YAAW,CAAG;YAC9BT,KAAK,EAAGrC,MAAM,CAAC0H,eAAiB;YAChCC,MAAM,EAAGA,CAAA,KAAM;cACd1E,qBAAqB,CAAE,IAAK,CAAC;YAC9B;UAAG,CACH,CAAC;QAAA,CACD,CACF;MAAA,CACI,CACN,EAEC,CAAExB,cAAc,IAAIC,cAAc,KAAMO,YAAY,iBACrDxB,KAAA,CAACnB,IAAI;QACJ+C,KAAK,EAAG,CACPrC,MAAM,CAAC4H,cAAc,EACrBxC,oBAAoB,CAClB;QAAAyB,QAAA,gBAEHxG,IAAA,CAACf,IAAI;UACJ+C,KAAK,EAAG,CACP2C,eAAe,EACf9C,SAAS,IAAIlC,MAAM,CAAC6H,eAAe,CACjC;UAAAhB,QAAA,EAEDnF,cAAc,GACbwC,OAAO,CAAExD,SAAS,CAACC,OAAQ,CAAC,GAC5BuD,OAAO,CAAExD,SAAS,CAACG,KAAM;QAAC,CACxB,CAAC,eACPR,IAAA,CAAChB,IAAI;UAACgD,KAAK,EAAGkD,sBAAwB;UAAAsB,QAAA,EACnC5E;QAAY,CACT,CAAC;MAAA,CACF,CACN;IAAA,GA/FKE,GAgGD,CAAC,EAELjB,UAAU,IAAIK,UAAU,IAAI,CAAEI,kBAAkB,iBACjDtB,IAAA,CAACH,kBAAkB;MAClB4B,yBAAyB,EAAGA,yBAA2B;MACvDC,gBAAgB,EAAGA,gBAAkB;MACrCI,GAAG,EACF,EAAIV,cAAc,IAAIC,cAAc,CAAE,IACtCc,SAAS,IACTL,GACA;MACD2F,aAAa,EAAGlG;IAAoB,CACpC,CACD;EAAA,CACI,CAAC;AAET,CAAC;AAED,eAAeb,cAAc","ignoreList":[]}
@@ -113,7 +113,7 @@ function isMathExpression(cssUnit) {
113
113
  * Evaluates the math expression and return a px value.
114
114
  *
115
115
  * @param {string} cssUnit the cssUnit value being evaluated.
116
- * @return {string} return a converfted value to px.
116
+ * @return {string} return a converted value to px.
117
117
  */
118
118
  function evalMathExpression(cssUnit) {
119
119
  let errorFound = false;