@wordpress/components 23.7.0 → 23.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +52 -6
- package/build/checkbox-control/index.js +2 -2
- package/build/checkbox-control/index.js.map +1 -1
- package/build/color-palette/index.native.js +12 -0
- package/build/color-palette/index.native.js.map +1 -1
- package/build/custom-gradient-picker/index.native.js +3 -1
- package/build/custom-gradient-picker/index.native.js.map +1 -1
- package/build/custom-gradient-picker/serializer.js +0 -4
- package/build/custom-gradient-picker/serializer.js.map +1 -1
- package/build/draggable/index.js +6 -1
- package/build/draggable/index.js.map +1 -1
- package/build/drop-zone/index.js +8 -8
- package/build/drop-zone/index.js.map +1 -1
- package/build/index.js.map +1 -1
- package/build/mobile/bottom-sheet/cell.native.js +6 -6
- package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build/mobile/color-settings/palette.screen.native.js +0 -8
- package/build/mobile/color-settings/palette.screen.native.js.map +1 -1
- package/build/mobile/global-styles-context/utils.native.js +21 -4
- package/build/mobile/global-styles-context/utils.native.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.android.js +0 -4
- package/build/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/index.ios.js +100 -55
- package/build/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +82 -0
- package/build/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
- package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +85 -0
- package/build/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +44 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +53 -0
- package/build/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
- package/build/mobile/segmented-control/index.native.js +4 -2
- package/build/mobile/segmented-control/index.native.js.map +1 -1
- package/build/navigator/navigator-provider/component.js +4 -2
- package/build/navigator/navigator-provider/component.js.map +1 -1
- package/build/navigator/navigator-screen/component.js +4 -3
- package/build/navigator/navigator-screen/component.js.map +1 -1
- package/build/popover/index.js +1 -8
- package/build/popover/index.js.map +1 -1
- package/build/private-apis.js +4 -1
- package/build/private-apis.js.map +1 -1
- package/build/query-controls/author-select.js +2 -1
- package/build/query-controls/author-select.js.map +1 -1
- package/build/query-controls/category-select.js +3 -1
- package/build/query-controls/category-select.js.map +1 -1
- package/build/query-controls/index.js +7 -1
- package/build/query-controls/index.js.map +1 -1
- package/build/sandbox/index.native.js +55 -29
- package/build/sandbox/index.native.js.map +1 -1
- package/build/slot-fill/index.js +20 -7
- package/build/slot-fill/index.js.map +1 -1
- package/build/spinner/styles.js +4 -4
- package/build/spinner/styles.js.map +1 -1
- package/build/tree-grid/index.js +3 -3
- package/build/tree-grid/index.js.map +1 -1
- package/build/view/component.js +1 -2
- package/build/view/component.js.map +1 -1
- package/build-module/checkbox-control/index.js +2 -2
- package/build-module/checkbox-control/index.js.map +1 -1
- package/build-module/color-palette/index.native.js +13 -1
- package/build-module/color-palette/index.native.js.map +1 -1
- package/build-module/custom-gradient-picker/index.native.js +3 -1
- package/build-module/custom-gradient-picker/index.native.js.map +1 -1
- package/build-module/custom-gradient-picker/serializer.js +0 -4
- package/build-module/custom-gradient-picker/serializer.js.map +1 -1
- package/build-module/draggable/index.js +6 -1
- package/build-module/draggable/index.js.map +1 -1
- package/build-module/drop-zone/index.js +8 -8
- package/build-module/drop-zone/index.js.map +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/mobile/bottom-sheet/cell.native.js +6 -5
- package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build-module/mobile/color-settings/palette.screen.native.js +0 -8
- package/build-module/mobile/color-settings/palette.screen.native.js.map +1 -1
- package/build-module/mobile/global-styles-context/utils.native.js +21 -3
- package/build-module/mobile/global-styles-context/utils.native.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.android.js +0 -4
- package/build-module/mobile/keyboard-aware-flat-list/index.android.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js +97 -54
- package/build-module/mobile/keyboard-aware-flat-list/index.ios.js.map +1 -1
- package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +73 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js.map +1 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +76 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js.map +1 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +33 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map +1 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +40 -0
- package/build-module/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js.map +1 -0
- package/build-module/mobile/segmented-control/index.native.js +4 -2
- package/build-module/mobile/segmented-control/index.native.js.map +1 -1
- package/build-module/navigator/navigator-provider/component.js +4 -2
- package/build-module/navigator/navigator-provider/component.js.map +1 -1
- package/build-module/navigator/navigator-screen/component.js +4 -3
- package/build-module/navigator/navigator-screen/component.js.map +1 -1
- package/build-module/popover/index.js +1 -8
- package/build-module/popover/index.js.map +1 -1
- package/build-module/private-apis.js +3 -1
- package/build-module/private-apis.js.map +1 -1
- package/build-module/query-controls/author-select.js +2 -1
- package/build-module/query-controls/author-select.js.map +1 -1
- package/build-module/query-controls/category-select.js +3 -1
- package/build-module/query-controls/category-select.js.map +1 -1
- package/build-module/query-controls/index.js +7 -2
- package/build-module/query-controls/index.js.map +1 -1
- package/build-module/sandbox/index.native.js +56 -31
- package/build-module/sandbox/index.native.js.map +1 -1
- package/build-module/slot-fill/index.js +16 -6
- package/build-module/slot-fill/index.js.map +1 -1
- package/build-module/spinner/styles.js +4 -4
- package/build-module/spinner/styles.js.map +1 -1
- package/build-module/tree-grid/index.js +3 -3
- package/build-module/tree-grid/index.js.map +1 -1
- package/build-module/view/component.js +1 -2
- package/build-module/view/component.js.map +1 -1
- package/build-style/style-rtl.css +26 -16
- package/build-style/style.css +26 -16
- package/build-types/angle-picker-control/styles/angle-picker-control-styles.d.ts +1 -1
- package/build-types/border-box-control/border-box-control/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-linked-button/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-split-controls/hook.d.ts +2 -2
- package/build-types/border-box-control/border-box-control-visualizer/hook.d.ts +2 -2
- package/build-types/border-control/border-control/hook.d.ts +2 -2
- package/build-types/border-control/border-control-dropdown/hook.d.ts +2 -2
- package/build-types/border-control/border-control-style-picker/hook.d.ts +2 -2
- package/build-types/box-control/styles/box-control-styles.d.ts +5 -5
- package/build-types/button/deprecated.d.ts +8 -8
- package/build-types/card/card/hook.d.ts +2 -2
- package/build-types/card/card-body/hook.d.ts +2 -2
- package/build-types/card/card-divider/hook.d.ts +2 -2
- package/build-types/card/card-footer/hook.d.ts +2 -2
- package/build-types/card/card-header/hook.d.ts +2 -2
- package/build-types/card/card-media/hook.d.ts +2 -2
- package/build-types/checkbox-control/index.d.ts.map +1 -1
- package/build-types/color-palette/styles.d.ts +1 -1
- package/build-types/color-picker/styles.d.ts +7 -7
- package/build-types/combobox-control/styles.d.ts +1 -1
- package/build-types/custom-gradient-picker/serializer.d.ts +1 -5
- package/build-types/custom-gradient-picker/serializer.d.ts.map +1 -1
- package/build-types/custom-gradient-picker/types.d.ts +0 -2
- package/build-types/custom-gradient-picker/types.d.ts.map +1 -1
- package/build-types/date-time/date/styles.d.ts +2 -2
- package/build-types/date-time/date-time/styles.d.ts +1 -1
- package/build-types/date-time/time/styles.d.ts +8 -8
- package/build-types/draggable/index.d.ts +1 -1
- package/build-types/draggable/index.d.ts.map +1 -1
- package/build-types/draggable/stories/index.d.ts +8 -0
- package/build-types/draggable/stories/index.d.ts.map +1 -1
- package/build-types/draggable/types.d.ts +7 -0
- package/build-types/draggable/types.d.ts.map +1 -1
- package/build-types/drop-zone/index.d.ts.map +1 -1
- package/build-types/elevation/hook.d.ts +2 -2
- package/build-types/external-link/styles/external-link-styles.d.ts +1 -1
- package/build-types/flex/flex/hook.d.ts +2 -2
- package/build-types/flex/flex-block/hook.d.ts +2 -2
- package/build-types/flex/flex-item/hook.d.ts +2 -2
- package/build-types/focal-point-picker/styles/focal-point-picker-style.d.ts +2 -2
- package/build-types/form-token-field/styles.d.ts +1 -1
- package/build-types/grid/hook.d.ts +2 -2
- package/build-types/h-stack/hook.d.ts +2 -2
- package/build-types/heading/hook.d.ts +2 -2
- package/build-types/index.d.ts +129 -0
- package/build-types/index.d.ts.map +1 -0
- package/build-types/input-control/styles/input-control-styles.d.ts +2 -2
- package/build-types/item-group/item/hook.d.ts +2 -2
- package/build-types/item-group/item-group/hook.d.ts +2 -2
- package/build-types/navigation/styles/navigation-styles.d.ts +2 -2
- package/build-types/navigator/navigator-back-button/component.d.ts +1 -1
- package/build-types/navigator/navigator-back-button/hook.d.ts +3 -3
- package/build-types/navigator/navigator-button/component.d.ts +1 -1
- package/build-types/navigator/navigator-button/hook.d.ts +3 -3
- package/build-types/navigator/navigator-provider/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts +1 -1
- package/build-types/navigator/navigator-screen/component.d.ts.map +1 -1
- package/build-types/navigator/navigator-to-parent-button/component.d.ts +1 -1
- package/build-types/navigator/stories/index.d.ts +1 -0
- package/build-types/navigator/stories/index.d.ts.map +1 -1
- package/build-types/navigator/types.d.ts +2 -2
- package/build-types/navigator/types.d.ts.map +1 -1
- package/build-types/number-control/index.d.ts +2 -2
- package/build-types/number-control/stories/index.d.ts +2 -2
- package/build-types/palette-edit/styles.d.ts +18 -12
- package/build-types/palette-edit/styles.d.ts.map +1 -1
- package/build-types/popover/index.d.ts +1 -1
- package/build-types/popover/index.d.ts.map +1 -1
- package/build-types/popover/stories/e2e/index.d.ts +1 -1
- package/build-types/private-apis.d.ts +2 -3
- package/build-types/private-apis.d.ts.map +1 -1
- package/build-types/query-controls/author-select.d.ts.map +1 -1
- package/build-types/query-controls/category-select.d.ts.map +1 -1
- package/build-types/query-controls/index.d.ts.map +1 -1
- package/build-types/range-control/index.d.ts +1 -1
- package/build-types/range-control/styles/range-control-styles.d.ts +2 -2
- package/build-types/resizable-box/index.d.ts +1 -1
- package/build-types/resizable-box/resize-tooltip/index.d.ts +1 -1
- package/build-types/resizable-box/stories/index.d.ts +2 -2
- package/build-types/scrollable/hook.d.ts +2 -2
- package/build-types/search-control/index.d.ts +1 -1
- package/build-types/search-control/stories/index.d.ts +2 -2
- package/build-types/slot-fill/index.d.ts +13 -1
- package/build-types/slot-fill/index.d.ts.map +1 -1
- package/build-types/spacer/hook.d.ts +2 -2
- package/build-types/spinner/index.d.ts +1 -1
- package/build-types/spinner/styles.d.ts.map +1 -1
- package/build-types/surface/hook.d.ts +2 -2
- package/build-types/text/hook.d.ts +2 -2
- package/build-types/text-control/index.d.ts +1 -1
- package/build-types/toolbar/toolbar-button/index.d.ts +8 -8
- package/build-types/tools-panel/tools-panel/hook.d.ts +2 -2
- package/build-types/tools-panel/tools-panel-header/hook.d.ts +2 -2
- package/build-types/tools-panel/tools-panel-item/hook.d.ts +2 -2
- package/build-types/tree-grid/index.d.ts.map +1 -1
- package/build-types/truncate/hook.d.ts +2 -2
- package/build-types/ui/context/wordpress-component.d.ts +1 -1
- package/build-types/ui/context/wordpress-component.d.ts.map +1 -1
- package/build-types/ui/control-group/hook.d.ts +2 -2
- package/build-types/ui/control-label/hook.d.ts +2 -2
- package/build-types/ui/form-group/form-group.d.ts +2 -2
- package/build-types/ui/form-group/use-form-group.d.ts +2 -2
- package/build-types/unit-control/index.d.ts +1 -1
- package/build-types/unit-control/styles/unit-control-styles.d.ts +2 -2
- package/build-types/v-stack/hook.d.ts +2 -2
- package/build-types/view/component.d.ts +1 -1
- package/build-types/view/component.d.ts.map +1 -1
- package/package.json +22 -22
- package/src/autocomplete/README.md +4 -2
- package/src/checkbox-control/index.tsx +6 -2
- package/src/color-palette/index.native.js +20 -1
- package/src/color-picker/test/index.tsx +99 -99
- package/src/custom-gradient-picker/index.native.js +1 -1
- package/src/custom-gradient-picker/serializer.ts +2 -6
- package/src/custom-gradient-picker/types.ts +0 -18
- package/src/dimension-control/README.md +1 -1
- package/src/draggable/README.md +8 -1
- package/src/draggable/index.tsx +6 -1
- package/src/draggable/stories/index.tsx +69 -33
- package/src/draggable/types.ts +7 -0
- package/src/drop-zone/index.tsx +12 -8
- package/src/drop-zone/style.scss +1 -1
- package/src/{index.js → index.ts} +1 -0
- package/src/mobile/bottom-sheet/cell.native.js +4 -5
- package/src/mobile/color-settings/palette.screen.native.js +0 -7
- package/src/mobile/global-styles-context/utils.native.js +18 -3
- package/src/mobile/keyboard-aware-flat-list/index.android.js +0 -4
- package/src/mobile/keyboard-aware-flat-list/index.ios.js +118 -67
- package/src/mobile/keyboard-aware-flat-list/test/use-keyboard-offset.native.js +203 -0
- package/src/mobile/keyboard-aware-flat-list/test/use-scroll-to-text-input.native.js +140 -0
- package/src/mobile/keyboard-aware-flat-list/test/use-text-input-caret-position.native.js +82 -0
- package/src/mobile/keyboard-aware-flat-list/test/use-text-input-offset.native.js +147 -0
- package/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js +87 -0
- package/src/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js +105 -0
- package/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js +36 -0
- package/src/mobile/keyboard-aware-flat-list/use-text-input-offset.native.js +54 -0
- package/src/mobile/segmented-control/index.native.js +2 -2
- package/src/modal/style.scss +20 -12
- package/src/navigator/navigator-provider/component.tsx +2 -0
- package/src/navigator/navigator-screen/component.tsx +5 -2
- package/src/navigator/stories/index.tsx +68 -0
- package/src/navigator/test/index.tsx +52 -0
- package/src/navigator/types.ts +2 -1
- package/src/popover/index.tsx +2 -15
- package/src/{private-apis.js → private-apis.ts} +2 -0
- package/src/query-controls/author-select.tsx +1 -0
- package/src/query-controls/category-select.tsx +1 -0
- package/src/query-controls/index.tsx +4 -2
- package/src/sandbox/index.native.js +78 -37
- package/src/slot-fill/index.js +14 -6
- package/src/snackbar/style.scss +2 -1
- package/src/spinner/styles.ts +2 -0
- package/src/tree-grid/index.tsx +7 -2
- package/src/ui/context/wordpress-component.ts +1 -1
- package/src/view/component.tsx +2 -2
- package/tsconfig.json +3 -4
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/components/src/mobile/global-styles-context/utils.native.js"],"names":["camelCase","get","Dimensions","getPxFromCssUnit","useSetting","useMultipleOriginColorsAndGradients","BLOCK_STYLE_ATTRIBUTES","BLOCK_STYLE_ATTRIBUTES_MAPPING","textColor","text","background","link","placeholder","PADDING","UNKNOWN_VALUE","DEFAULT_FONT_SIZE","getBlockPaddings","mergedStyle","wrapperPropsStyle","blockStyleAttributes","blockColors","blockPaddings","padding","backgroundColor","undefined","getBlockColors","defaultColors","blockName","baseGlobalStyles","blockStyles","customBlockStyles","style","color","blockGlobalStyles","blocks","Object","entries","forEach","key","value","styleKey","styles","elements","linkColor","isCustomColor","startsWith","mappedColor","values","find","slug","getBlockTypography","fontSizes","typographyStyles","typography","parsedFontSizes","fontSize","lineHeight","parseInt","mappedFontSize","size","parseStylesVariables","mappedValues","customValues","stylesBase","variables","variable","regex","RegExp","varRegex","fontSizeRegex","replace","_$1","$2","path","split","mappedPresetValue","matchedValue","customValuesData","JSON","parse","reduce","prev","curr","slice","length","width","height","parsedFontSize","getMappedValues","features","palette","colors","theme","custom","default","normalizeFontSizes","normalizedFontSizes","dimensions","map","fontSizeObject","sizePx","useMobileGlobalStylesColors","type","colorGradientSettings","availableThemeColors","origin","concat","colorPalette","editorDefaultPalette","getColorsAndGradients","defaultEditorColors","defaultEditorGradients","rawFeatures","__experimentalGlobalStylesBaseStyles","__experimentalFeatures","gradients","defaultPalette","defaultGradients","getGlobalStyles","rawStyles","stringify","globalStyles","customLineHeight","spacing"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\nimport { get } from 'lodash';\nimport { Dimensions } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetPxFromCssUnit,\n\tuseSetting,\n\tuseMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\n\nexport const BLOCK_STYLE_ATTRIBUTES = [\n\t'textColor',\n\t'backgroundColor',\n\t'style',\n\t'color',\n\t'fontSize',\n];\n\n// Mapping style properties name to native.\nconst BLOCK_STYLE_ATTRIBUTES_MAPPING = {\n\ttextColor: 'color',\n\ttext: 'color',\n\tbackground: 'backgroundColor',\n\tlink: 'linkColor',\n\tplaceholder: 'placeholderColor',\n};\n\nconst PADDING = 12; // $solid-border-space\nconst UNKNOWN_VALUE = 'undefined';\nconst DEFAULT_FONT_SIZE = 16;\n\nexport function getBlockPaddings(\n\tmergedStyle,\n\twrapperPropsStyle,\n\tblockStyleAttributes,\n\tblockColors\n) {\n\tconst blockPaddings = {};\n\n\tif (\n\t\t! mergedStyle.padding &&\n\t\t( wrapperPropsStyle?.backgroundColor ||\n\t\t\tblockStyleAttributes?.backgroundColor ||\n\t\t\tblockColors?.backgroundColor )\n\t) {\n\t\tblockPaddings.padding = PADDING;\n\t\treturn blockPaddings;\n\t}\n\n\t// Prevent adding extra paddings to inner blocks without background colors.\n\tif (\n\t\tmergedStyle?.padding &&\n\t\t! wrapperPropsStyle?.backgroundColor &&\n\t\t! blockStyleAttributes?.backgroundColor &&\n\t\t! blockColors?.backgroundColor\n\t) {\n\t\tblockPaddings.padding = undefined;\n\t}\n\n\treturn blockPaddings;\n}\n\nexport function getBlockColors(\n\tblockStyleAttributes,\n\tdefaultColors,\n\tblockName,\n\tbaseGlobalStyles\n) {\n\tconst blockStyles = {};\n\tconst customBlockStyles = blockStyleAttributes?.style?.color || {};\n\tconst blockGlobalStyles = baseGlobalStyles?.blocks?.[ blockName ];\n\n\t// Global styles colors.\n\tif ( blockGlobalStyles?.color ) {\n\t\tObject.entries( blockGlobalStyles.color ).forEach(\n\t\t\t( [ key, value ] ) => {\n\t\t\t\tconst styleKey = BLOCK_STYLE_ATTRIBUTES_MAPPING[ key ];\n\n\t\t\t\tif ( styleKey && value !== UNKNOWN_VALUE ) {\n\t\t\t\t\tconst color = customBlockStyles[ key ] ?? value;\n\t\t\t\t\tblockStyles[ styleKey ] = color;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t} else if ( baseGlobalStyles?.styles?.color?.text ) {\n\t\tblockStyles[ BLOCK_STYLE_ATTRIBUTES_MAPPING.text ] =\n\t\t\tbaseGlobalStyles?.styles?.color?.text;\n\t}\n\n\t// Global styles elements.\n\tif ( blockGlobalStyles?.elements ) {\n\t\tconst linkColor = blockGlobalStyles.elements?.link?.color?.text;\n\t\tconst styleKey = BLOCK_STYLE_ATTRIBUTES_MAPPING.link;\n\n\t\tif ( styleKey && linkColor && linkColor !== UNKNOWN_VALUE ) {\n\t\t\tblockStyles[ styleKey ] = linkColor;\n\t\t}\n\t}\n\n\t// Custom colors.\n\tObject.entries( blockStyleAttributes ).forEach( ( [ key, value ] ) => {\n\t\tconst isCustomColor = value?.startsWith?.( '#' );\n\t\tlet styleKey = key;\n\n\t\tif ( BLOCK_STYLE_ATTRIBUTES_MAPPING[ styleKey ] ) {\n\t\t\tstyleKey = BLOCK_STYLE_ATTRIBUTES_MAPPING[ styleKey ];\n\t\t}\n\n\t\tif ( ! isCustomColor ) {\n\t\t\tconst mappedColor = Object.values( defaultColors ?? {} ).find(\n\t\t\t\t( { slug } ) => slug === value\n\t\t\t);\n\n\t\t\tif ( mappedColor ) {\n\t\t\t\tblockStyles[ styleKey ] = mappedColor.color;\n\t\t\t}\n\t\t} else {\n\t\t\tblockStyles[ styleKey ] = value;\n\t\t}\n\t} );\n\n\t// Color placeholder.\n\tif ( blockStyles?.color ) {\n\t\tblockStyles[ BLOCK_STYLE_ATTRIBUTES_MAPPING.placeholder ] =\n\t\t\tblockStyles.color;\n\t}\n\n\treturn blockStyles;\n}\n\nexport function getBlockTypography(\n\tblockStyleAttributes,\n\tfontSizes,\n\tblockName,\n\tbaseGlobalStyles\n) {\n\tconst typographyStyles = {};\n\tconst customBlockStyles = blockStyleAttributes?.style?.typography || {};\n\tconst blockGlobalStyles = baseGlobalStyles?.blocks?.[ blockName ];\n\tconst parsedFontSizes = Object.values( fontSizes ?? {} );\n\n\t// Global styles.\n\tif ( blockGlobalStyles?.typography ) {\n\t\tconst fontSize = blockGlobalStyles?.typography?.fontSize;\n\t\tconst lineHeight = blockGlobalStyles?.typography?.lineHeight;\n\n\t\tif ( fontSize ) {\n\t\t\tif ( parseInt( fontSize, 10 ) ) {\n\t\t\t\ttypographyStyles.fontSize = fontSize;\n\t\t\t} else {\n\t\t\t\tconst mappedFontSize = parsedFontSizes.find(\n\t\t\t\t\t( { slug } ) => slug === fontSize\n\t\t\t\t);\n\n\t\t\t\tif ( mappedFontSize ) {\n\t\t\t\t\ttypographyStyles.fontSize = mappedFontSize?.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( lineHeight ) {\n\t\t\ttypographyStyles.lineHeight = lineHeight;\n\t\t}\n\t}\n\n\tif ( blockStyleAttributes?.fontSize && baseGlobalStyles ) {\n\t\tconst mappedFontSize = parsedFontSizes.find(\n\t\t\t( { slug } ) => slug === blockStyleAttributes?.fontSize\n\t\t);\n\n\t\tif ( mappedFontSize ) {\n\t\t\ttypographyStyles.fontSize = mappedFontSize?.size;\n\t\t}\n\t}\n\n\t// Custom styles.\n\tif ( customBlockStyles?.fontSize ) {\n\t\ttypographyStyles.fontSize = customBlockStyles?.fontSize;\n\t}\n\n\tif ( customBlockStyles?.lineHeight ) {\n\t\ttypographyStyles.lineHeight = customBlockStyles?.lineHeight;\n\t}\n\n\treturn typographyStyles;\n}\n\nexport function parseStylesVariables( styles, mappedValues, customValues ) {\n\tlet stylesBase = styles;\n\tconst variables = [ 'preset', 'custom', 'var', 'fontSize' ];\n\n\tif ( ! stylesBase ) {\n\t\treturn styles;\n\t}\n\n\tvariables.forEach( ( variable ) => {\n\t\t// Examples\n\t\t// var(--wp--preset--color--gray)\n\t\t// var(--wp--custom--body--typography--font-family)\n\t\t// var:preset|color|custom-color-2\n\t\tconst regex = new RegExp( `var\\\\(--wp--${ variable }--(.*?)\\\\)`, 'g' );\n\t\tconst varRegex = /\\\"var:preset\\|color\\|(.*?)\\\"/gm;\n\t\tconst fontSizeRegex = /\"fontSize\":\"(.*?)\"/gm;\n\n\t\tif ( variable === 'preset' ) {\n\t\t\tstylesBase = stylesBase.replace( regex, ( _$1, $2 ) => {\n\t\t\t\tconst path = $2.split( '--' );\n\t\t\t\tconst mappedPresetValue = mappedValues[ path[ 0 ] ];\n\t\t\t\tif ( mappedPresetValue && mappedPresetValue.slug ) {\n\t\t\t\t\tconst matchedValue = Object.values(\n\t\t\t\t\t\tmappedPresetValue.values ?? {}\n\t\t\t\t\t).find( ( { slug } ) => slug === path[ 1 ] );\n\t\t\t\t\treturn matchedValue?.[ mappedPresetValue.slug ];\n\t\t\t\t}\n\t\t\t\treturn UNKNOWN_VALUE;\n\t\t\t} );\n\t\t}\n\t\tif ( variable === 'custom' ) {\n\t\t\tconst customValuesData = customValues ?? JSON.parse( stylesBase );\n\t\t\tstylesBase = stylesBase.replace( regex, ( _$1, $2 ) => {\n\t\t\t\tconst path = $2.split( '--' );\n\t\t\t\tif (\n\t\t\t\t\tpath.reduce(\n\t\t\t\t\t\t( prev, curr ) => prev && prev[ curr ],\n\t\t\t\t\t\tcustomValuesData\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn get( customValuesData, path );\n\t\t\t\t}\n\n\t\t\t\t// Check for camelcase properties.\n\t\t\t\treturn get( customValuesData, [\n\t\t\t\t\t...path.slice( 0, path.length - 1 ),\n\t\t\t\t\tcamelCase( path[ path.length - 1 ] ),\n\t\t\t\t] );\n\t\t\t} );\n\t\t}\n\n\t\tif ( variable === 'var' ) {\n\t\t\tstylesBase = stylesBase.replace( varRegex, ( _$1, $2 ) => {\n\t\t\t\tif ( mappedValues?.color ) {\n\t\t\t\t\tconst matchedValue = mappedValues.color?.values?.find(\n\t\t\t\t\t\t( { slug } ) => slug === $2\n\t\t\t\t\t);\n\t\t\t\t\treturn `\"${ matchedValue?.color }\"`;\n\t\t\t\t}\n\t\t\t\treturn UNKNOWN_VALUE;\n\t\t\t} );\n\t\t}\n\n\t\tif ( variable === 'fontSize' ) {\n\t\t\tconst { width, height } = Dimensions.get( 'window' );\n\n\t\t\tstylesBase = stylesBase.replace( fontSizeRegex, ( _$1, $2 ) => {\n\t\t\t\tconst parsedFontSize =\n\t\t\t\t\tgetPxFromCssUnit( $2, {\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tfontSize: DEFAULT_FONT_SIZE,\n\t\t\t\t\t} ) || `${ DEFAULT_FONT_SIZE }px`;\n\n\t\t\t\treturn `\"fontSize\":\"${ parsedFontSize }\"`;\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn JSON.parse( stylesBase );\n}\n\nexport function getMappedValues( features, palette ) {\n\tconst typography = features?.typography;\n\tconst colors = [\n\t\t...( palette?.theme || [] ),\n\t\t...( palette?.custom || [] ),\n\t\t...( palette?.default || [] ),\n\t];\n\n\tconst fontSizes = {\n\t\t...typography?.fontSizes?.theme,\n\t\t...typography?.fontSizes?.custom,\n\t};\n\tconst mappedValues = {\n\t\tcolor: {\n\t\t\tvalues: colors,\n\t\t\tslug: 'color',\n\t\t},\n\t\t'font-size': {\n\t\t\tvalues: fontSizes,\n\t\t\tslug: 'size',\n\t\t},\n\t};\n\treturn mappedValues;\n}\n\n/**\n * Returns the normalized fontSizes to include the sizePx value for each of the different sizes.\n *\n * @param {Object} fontSizes found in global styles.\n * @return {Object} normalized sizes.\n */\nfunction normalizeFontSizes( fontSizes ) {\n\t// Adds normalized PX values for each of the different keys.\n\tif ( ! fontSizes ) {\n\t\treturn fontSizes;\n\t}\n\tconst normalizedFontSizes = {};\n\tconst dimensions = Dimensions.get( 'window' );\n\n\t[ 'default', 'theme', 'custom' ].forEach( ( key ) => {\n\t\tif ( fontSizes[ key ] ) {\n\t\t\tnormalizedFontSizes[ key ] = fontSizes[ key ]?.map(\n\t\t\t\t( fontSizeObject ) => {\n\t\t\t\t\tfontSizeObject.sizePx = getPxFromCssUnit(\n\t\t\t\t\t\tfontSizeObject.size,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidth: dimensions.width,\n\t\t\t\t\t\t\theight: dimensions.height,\n\t\t\t\t\t\t\tfontSize: DEFAULT_FONT_SIZE,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\treturn fontSizeObject;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn normalizedFontSizes;\n}\n\nexport function useMobileGlobalStylesColors( type = 'colors' ) {\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\tconst availableThemeColors = colorGradientSettings?.[ type ]?.reduce(\n\t\t( colors, origin ) => colors.concat( origin?.[ type ] ),\n\t\t[]\n\t);\n\t// Default editor colors/gradients if it's not a block-based theme.\n\tconst colorPalette =\n\t\ttype === 'colors' ? 'color.palette' : 'color.gradients';\n\tconst editorDefaultPalette = useSetting( colorPalette );\n\n\treturn availableThemeColors.length >= 1\n\t\t? availableThemeColors\n\t\t: editorDefaultPalette;\n}\n\nexport function getColorsAndGradients(\n\tdefaultEditorColors = [],\n\tdefaultEditorGradients = [],\n\trawFeatures\n) {\n\tconst features = rawFeatures ? JSON.parse( rawFeatures ) : {};\n\n\treturn {\n\t\t__experimentalGlobalStylesBaseStyles: null,\n\t\t__experimentalFeatures: {\n\t\t\tcolor: {\n\t\t\t\t...( ! features?.color\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttext: true,\n\t\t\t\t\t\t\tbackground: true,\n\t\t\t\t\t\t\tpalette: {\n\t\t\t\t\t\t\t\tdefault: defaultEditorColors,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgradients: {\n\t\t\t\t\t\t\t\tdefault: defaultEditorGradients,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t }\n\t\t\t\t\t: features?.color ),\n\t\t\t\tdefaultPalette: defaultEditorColors?.length > 0,\n\t\t\t\tdefaultGradients: defaultEditorGradients?.length > 0,\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport function getGlobalStyles( rawStyles, rawFeatures ) {\n\tconst features = rawFeatures ? JSON.parse( rawFeatures ) : {};\n\tconst mappedValues = getMappedValues( features, features?.color?.palette );\n\tconst colors = parseStylesVariables(\n\t\tJSON.stringify( features?.color ),\n\t\tmappedValues\n\t);\n\tconst gradients = parseStylesVariables(\n\t\tJSON.stringify( features?.color?.gradients ),\n\t\tmappedValues\n\t);\n\tconst customValues = parseStylesVariables(\n\t\tJSON.stringify( features?.custom ),\n\t\tmappedValues\n\t);\n\tconst globalStyles = parseStylesVariables(\n\t\trawStyles,\n\t\tmappedValues,\n\t\tcustomValues\n\t);\n\n\tconst fontSizes = normalizeFontSizes( features?.typography?.fontSizes );\n\n\treturn {\n\t\t__experimentalFeatures: {\n\t\t\tcolor: {\n\t\t\t\tpalette: colors?.palette,\n\t\t\t\tgradients,\n\t\t\t\ttext: features?.color?.text ?? true,\n\t\t\t\tbackground: features?.color?.background ?? true,\n\t\t\t\tdefaultPalette: features?.color?.defaultPalette ?? true,\n\t\t\t\tdefaultGradients: features?.color?.defaultGradients ?? true,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontSizes,\n\t\t\t\tcustomLineHeight: features?.custom?.[ 'line-height' ],\n\t\t\t},\n\t\t\tspacing: features?.spacing,\n\t\t},\n\t\t__experimentalGlobalStylesBaseStyles: globalStyles,\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["@wordpress/components/src/mobile/global-styles-context/utils.native.js"],"names":["camelCase","Dimensions","getPxFromCssUnit","useSetting","useMultipleOriginColorsAndGradients","BLOCK_STYLE_ATTRIBUTES","BLOCK_STYLE_ATTRIBUTES_MAPPING","textColor","text","background","link","placeholder","PADDING","UNKNOWN_VALUE","DEFAULT_FONT_SIZE","getBlockPaddings","mergedStyle","wrapperPropsStyle","blockStyleAttributes","blockColors","blockPaddings","padding","backgroundColor","undefined","getBlockColors","defaultColors","blockName","baseGlobalStyles","blockStyles","customBlockStyles","style","color","blockGlobalStyles","blocks","Object","entries","forEach","key","value","styleKey","styles","elements","linkColor","isCustomColor","startsWith","mappedColor","values","find","slug","getBlockTypography","fontSizes","typographyStyles","typography","parsedFontSizes","fontSize","lineHeight","parseInt","mappedFontSize","size","getValueFromObjectPath","object","path","fieldName","parseStylesVariables","mappedValues","customValues","stylesBase","variables","variable","regex","RegExp","varRegex","fontSizeRegex","replace","_$1","$2","split","mappedPresetValue","matchedValue","customValuesData","JSON","parse","reduce","prev","curr","slice","length","width","height","get","parsedFontSize","getMappedValues","features","palette","colors","theme","custom","default","normalizeFontSizes","normalizedFontSizes","dimensions","map","fontSizeObject","sizePx","useMobileGlobalStylesColors","type","colorGradientSettings","availableThemeColors","origin","concat","colorPalette","editorDefaultPalette","getColorsAndGradients","defaultEditorColors","defaultEditorGradients","rawFeatures","__experimentalGlobalStylesBaseStyles","__experimentalFeatures","gradients","defaultPalette","defaultGradients","getGlobalStyles","rawStyles","stringify","globalStyles","customLineHeight","spacing"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\nimport { camelCase } from 'change-case';\nimport { Dimensions } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tgetPxFromCssUnit,\n\tuseSetting,\n\tuseMultipleOriginColorsAndGradients,\n} from '@wordpress/block-editor';\n\nexport const BLOCK_STYLE_ATTRIBUTES = [\n\t'textColor',\n\t'backgroundColor',\n\t'style',\n\t'color',\n\t'fontSize',\n];\n\n// Mapping style properties name to native.\nconst BLOCK_STYLE_ATTRIBUTES_MAPPING = {\n\ttextColor: 'color',\n\ttext: 'color',\n\tbackground: 'backgroundColor',\n\tlink: 'linkColor',\n\tplaceholder: 'placeholderColor',\n};\n\nconst PADDING = 12; // $solid-border-space\nconst UNKNOWN_VALUE = 'undefined';\nconst DEFAULT_FONT_SIZE = 16;\n\nexport function getBlockPaddings(\n\tmergedStyle,\n\twrapperPropsStyle,\n\tblockStyleAttributes,\n\tblockColors\n) {\n\tconst blockPaddings = {};\n\n\tif (\n\t\t! mergedStyle.padding &&\n\t\t( wrapperPropsStyle?.backgroundColor ||\n\t\t\tblockStyleAttributes?.backgroundColor ||\n\t\t\tblockColors?.backgroundColor )\n\t) {\n\t\tblockPaddings.padding = PADDING;\n\t\treturn blockPaddings;\n\t}\n\n\t// Prevent adding extra paddings to inner blocks without background colors.\n\tif (\n\t\tmergedStyle?.padding &&\n\t\t! wrapperPropsStyle?.backgroundColor &&\n\t\t! blockStyleAttributes?.backgroundColor &&\n\t\t! blockColors?.backgroundColor\n\t) {\n\t\tblockPaddings.padding = undefined;\n\t}\n\n\treturn blockPaddings;\n}\n\nexport function getBlockColors(\n\tblockStyleAttributes,\n\tdefaultColors,\n\tblockName,\n\tbaseGlobalStyles\n) {\n\tconst blockStyles = {};\n\tconst customBlockStyles = blockStyleAttributes?.style?.color || {};\n\tconst blockGlobalStyles = baseGlobalStyles?.blocks?.[ blockName ];\n\n\t// Global styles colors.\n\tif ( blockGlobalStyles?.color ) {\n\t\tObject.entries( blockGlobalStyles.color ).forEach(\n\t\t\t( [ key, value ] ) => {\n\t\t\t\tconst styleKey = BLOCK_STYLE_ATTRIBUTES_MAPPING[ key ];\n\n\t\t\t\tif ( styleKey && value !== UNKNOWN_VALUE ) {\n\t\t\t\t\tconst color = customBlockStyles[ key ] ?? value;\n\t\t\t\t\tblockStyles[ styleKey ] = color;\n\t\t\t\t}\n\t\t\t}\n\t\t);\n\t} else if ( baseGlobalStyles?.styles?.color?.text ) {\n\t\tblockStyles[ BLOCK_STYLE_ATTRIBUTES_MAPPING.text ] =\n\t\t\tbaseGlobalStyles?.styles?.color?.text;\n\t}\n\n\t// Global styles elements.\n\tif ( blockGlobalStyles?.elements ) {\n\t\tconst linkColor = blockGlobalStyles.elements?.link?.color?.text;\n\t\tconst styleKey = BLOCK_STYLE_ATTRIBUTES_MAPPING.link;\n\n\t\tif ( styleKey && linkColor && linkColor !== UNKNOWN_VALUE ) {\n\t\t\tblockStyles[ styleKey ] = linkColor;\n\t\t}\n\t}\n\n\t// Custom colors.\n\tObject.entries( blockStyleAttributes ).forEach( ( [ key, value ] ) => {\n\t\tconst isCustomColor = value?.startsWith?.( '#' );\n\t\tlet styleKey = key;\n\n\t\tif ( BLOCK_STYLE_ATTRIBUTES_MAPPING[ styleKey ] ) {\n\t\t\tstyleKey = BLOCK_STYLE_ATTRIBUTES_MAPPING[ styleKey ];\n\t\t}\n\n\t\tif ( ! isCustomColor ) {\n\t\t\tconst mappedColor = Object.values( defaultColors ?? {} ).find(\n\t\t\t\t( { slug } ) => slug === value\n\t\t\t);\n\n\t\t\tif ( mappedColor ) {\n\t\t\t\tblockStyles[ styleKey ] = mappedColor.color;\n\t\t\t}\n\t\t} else {\n\t\t\tblockStyles[ styleKey ] = value;\n\t\t}\n\t} );\n\n\t// Color placeholder.\n\tif ( blockStyles?.color ) {\n\t\tblockStyles[ BLOCK_STYLE_ATTRIBUTES_MAPPING.placeholder ] =\n\t\t\tblockStyles.color;\n\t}\n\n\treturn blockStyles;\n}\n\nexport function getBlockTypography(\n\tblockStyleAttributes,\n\tfontSizes,\n\tblockName,\n\tbaseGlobalStyles\n) {\n\tconst typographyStyles = {};\n\tconst customBlockStyles = blockStyleAttributes?.style?.typography || {};\n\tconst blockGlobalStyles = baseGlobalStyles?.blocks?.[ blockName ];\n\tconst parsedFontSizes = Object.values( fontSizes ?? {} );\n\n\t// Global styles.\n\tif ( blockGlobalStyles?.typography ) {\n\t\tconst fontSize = blockGlobalStyles?.typography?.fontSize;\n\t\tconst lineHeight = blockGlobalStyles?.typography?.lineHeight;\n\n\t\tif ( fontSize ) {\n\t\t\tif ( parseInt( fontSize, 10 ) ) {\n\t\t\t\ttypographyStyles.fontSize = fontSize;\n\t\t\t} else {\n\t\t\t\tconst mappedFontSize = parsedFontSizes.find(\n\t\t\t\t\t( { slug } ) => slug === fontSize\n\t\t\t\t);\n\n\t\t\t\tif ( mappedFontSize ) {\n\t\t\t\t\ttypographyStyles.fontSize = mappedFontSize?.size;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( lineHeight ) {\n\t\t\ttypographyStyles.lineHeight = lineHeight;\n\t\t}\n\t}\n\n\tif ( blockStyleAttributes?.fontSize && baseGlobalStyles ) {\n\t\tconst mappedFontSize = parsedFontSizes.find(\n\t\t\t( { slug } ) => slug === blockStyleAttributes?.fontSize\n\t\t);\n\n\t\tif ( mappedFontSize ) {\n\t\t\ttypographyStyles.fontSize = mappedFontSize?.size;\n\t\t}\n\t}\n\n\t// Custom styles.\n\tif ( customBlockStyles?.fontSize ) {\n\t\ttypographyStyles.fontSize = customBlockStyles?.fontSize;\n\t}\n\n\tif ( customBlockStyles?.lineHeight ) {\n\t\ttypographyStyles.lineHeight = customBlockStyles?.lineHeight;\n\t}\n\n\treturn typographyStyles;\n}\n\n/**\n * Return a value from a certain path of the object.\n * Path is specified as an array of properties, like: [ 'parent', 'child' ].\n *\n * @param {Object} object Input object.\n * @param {Array} path Path to the object property.\n * @return {*} Value of the object property at the specified path.\n */\nconst getValueFromObjectPath = ( object, path ) => {\n\tlet value = object;\n\tpath.forEach( ( fieldName ) => {\n\t\tvalue = value?.[ fieldName ];\n\t} );\n\treturn value;\n};\n\nexport function parseStylesVariables( styles, mappedValues, customValues ) {\n\tlet stylesBase = styles;\n\tconst variables = [ 'preset', 'custom', 'var', 'fontSize' ];\n\n\tif ( ! stylesBase ) {\n\t\treturn styles;\n\t}\n\n\tvariables.forEach( ( variable ) => {\n\t\t// Examples\n\t\t// var(--wp--preset--color--gray)\n\t\t// var(--wp--custom--body--typography--font-family)\n\t\t// var:preset|color|custom-color-2\n\t\tconst regex = new RegExp( `var\\\\(--wp--${ variable }--(.*?)\\\\)`, 'g' );\n\t\tconst varRegex = /\\\"var:preset\\|color\\|(.*?)\\\"/gm;\n\t\tconst fontSizeRegex = /\"fontSize\":\"(.*?)\"/gm;\n\n\t\tif ( variable === 'preset' ) {\n\t\t\tstylesBase = stylesBase.replace( regex, ( _$1, $2 ) => {\n\t\t\t\tconst path = $2.split( '--' );\n\t\t\t\tconst mappedPresetValue = mappedValues[ path[ 0 ] ];\n\t\t\t\tif ( mappedPresetValue && mappedPresetValue.slug ) {\n\t\t\t\t\tconst matchedValue = Object.values(\n\t\t\t\t\t\tmappedPresetValue.values ?? {}\n\t\t\t\t\t).find( ( { slug } ) => slug === path[ 1 ] );\n\t\t\t\t\treturn matchedValue?.[ mappedPresetValue.slug ];\n\t\t\t\t}\n\t\t\t\treturn UNKNOWN_VALUE;\n\t\t\t} );\n\t\t}\n\t\tif ( variable === 'custom' ) {\n\t\t\tconst customValuesData = customValues ?? JSON.parse( stylesBase );\n\t\t\tstylesBase = stylesBase.replace( regex, ( _$1, $2 ) => {\n\t\t\t\tconst path = $2.split( '--' );\n\t\t\t\tif (\n\t\t\t\t\tpath.reduce(\n\t\t\t\t\t\t( prev, curr ) => prev && prev[ curr ],\n\t\t\t\t\t\tcustomValuesData\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn getValueFromObjectPath( customValuesData, path );\n\t\t\t\t}\n\n\t\t\t\t// Check for camelcase properties.\n\t\t\t\treturn getValueFromObjectPath( customValuesData, [\n\t\t\t\t\t...path.slice( 0, path.length - 1 ),\n\t\t\t\t\tcamelCase( path[ path.length - 1 ] ),\n\t\t\t\t] );\n\t\t\t} );\n\t\t}\n\n\t\tif ( variable === 'var' ) {\n\t\t\tstylesBase = stylesBase.replace( varRegex, ( _$1, $2 ) => {\n\t\t\t\tif ( mappedValues?.color ) {\n\t\t\t\t\tconst matchedValue = mappedValues.color?.values?.find(\n\t\t\t\t\t\t( { slug } ) => slug === $2\n\t\t\t\t\t);\n\t\t\t\t\treturn `\"${ matchedValue?.color }\"`;\n\t\t\t\t}\n\t\t\t\treturn UNKNOWN_VALUE;\n\t\t\t} );\n\t\t}\n\n\t\tif ( variable === 'fontSize' ) {\n\t\t\tconst { width, height } = Dimensions.get( 'window' );\n\n\t\t\tstylesBase = stylesBase.replace( fontSizeRegex, ( _$1, $2 ) => {\n\t\t\t\tconst parsedFontSize =\n\t\t\t\t\tgetPxFromCssUnit( $2, {\n\t\t\t\t\t\twidth,\n\t\t\t\t\t\theight,\n\t\t\t\t\t\tfontSize: DEFAULT_FONT_SIZE,\n\t\t\t\t\t} ) || `${ DEFAULT_FONT_SIZE }px`;\n\n\t\t\t\treturn `\"fontSize\":\"${ parsedFontSize }\"`;\n\t\t\t} );\n\t\t}\n\t} );\n\n\treturn JSON.parse( stylesBase );\n}\n\nexport function getMappedValues( features, palette ) {\n\tconst typography = features?.typography;\n\tconst colors = [\n\t\t...( palette?.theme || [] ),\n\t\t...( palette?.custom || [] ),\n\t\t...( palette?.default || [] ),\n\t];\n\n\tconst fontSizes = {\n\t\t...typography?.fontSizes?.theme,\n\t\t...typography?.fontSizes?.custom,\n\t};\n\tconst mappedValues = {\n\t\tcolor: {\n\t\t\tvalues: colors,\n\t\t\tslug: 'color',\n\t\t},\n\t\t'font-size': {\n\t\t\tvalues: fontSizes,\n\t\t\tslug: 'size',\n\t\t},\n\t};\n\treturn mappedValues;\n}\n\n/**\n * Returns the normalized fontSizes to include the sizePx value for each of the different sizes.\n *\n * @param {Object} fontSizes found in global styles.\n * @return {Object} normalized sizes.\n */\nfunction normalizeFontSizes( fontSizes ) {\n\t// Adds normalized PX values for each of the different keys.\n\tif ( ! fontSizes ) {\n\t\treturn fontSizes;\n\t}\n\tconst normalizedFontSizes = {};\n\tconst dimensions = Dimensions.get( 'window' );\n\n\t[ 'default', 'theme', 'custom' ].forEach( ( key ) => {\n\t\tif ( fontSizes[ key ] ) {\n\t\t\tnormalizedFontSizes[ key ] = fontSizes[ key ]?.map(\n\t\t\t\t( fontSizeObject ) => {\n\t\t\t\t\tfontSizeObject.sizePx = getPxFromCssUnit(\n\t\t\t\t\t\tfontSizeObject.size,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\twidth: dimensions.width,\n\t\t\t\t\t\t\theight: dimensions.height,\n\t\t\t\t\t\t\tfontSize: DEFAULT_FONT_SIZE,\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t\treturn fontSizeObject;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t} );\n\n\treturn normalizedFontSizes;\n}\n\nexport function useMobileGlobalStylesColors( type = 'colors' ) {\n\tconst colorGradientSettings = useMultipleOriginColorsAndGradients();\n\tconst availableThemeColors = colorGradientSettings?.[ type ]?.reduce(\n\t\t( colors, origin ) => colors.concat( origin?.[ type ] ),\n\t\t[]\n\t);\n\t// Default editor colors/gradients if it's not a block-based theme.\n\tconst colorPalette =\n\t\ttype === 'colors' ? 'color.palette' : 'color.gradients';\n\tconst editorDefaultPalette = useSetting( colorPalette );\n\n\treturn availableThemeColors.length >= 1\n\t\t? availableThemeColors\n\t\t: editorDefaultPalette;\n}\n\nexport function getColorsAndGradients(\n\tdefaultEditorColors = [],\n\tdefaultEditorGradients = [],\n\trawFeatures\n) {\n\tconst features = rawFeatures ? JSON.parse( rawFeatures ) : {};\n\n\treturn {\n\t\t__experimentalGlobalStylesBaseStyles: null,\n\t\t__experimentalFeatures: {\n\t\t\tcolor: {\n\t\t\t\t...( ! features?.color\n\t\t\t\t\t? {\n\t\t\t\t\t\t\ttext: true,\n\t\t\t\t\t\t\tbackground: true,\n\t\t\t\t\t\t\tpalette: {\n\t\t\t\t\t\t\t\tdefault: defaultEditorColors,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tgradients: {\n\t\t\t\t\t\t\t\tdefault: defaultEditorGradients,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t }\n\t\t\t\t\t: features?.color ),\n\t\t\t\tdefaultPalette: defaultEditorColors?.length > 0,\n\t\t\t\tdefaultGradients: defaultEditorGradients?.length > 0,\n\t\t\t},\n\t\t},\n\t};\n}\n\nexport function getGlobalStyles( rawStyles, rawFeatures ) {\n\tconst features = rawFeatures ? JSON.parse( rawFeatures ) : {};\n\tconst mappedValues = getMappedValues( features, features?.color?.palette );\n\tconst colors = parseStylesVariables(\n\t\tJSON.stringify( features?.color ),\n\t\tmappedValues\n\t);\n\tconst gradients = parseStylesVariables(\n\t\tJSON.stringify( features?.color?.gradients ),\n\t\tmappedValues\n\t);\n\tconst customValues = parseStylesVariables(\n\t\tJSON.stringify( features?.custom ),\n\t\tmappedValues\n\t);\n\tconst globalStyles = parseStylesVariables(\n\t\trawStyles,\n\t\tmappedValues,\n\t\tcustomValues\n\t);\n\n\tconst fontSizes = normalizeFontSizes( features?.typography?.fontSizes );\n\n\treturn {\n\t\t__experimentalFeatures: {\n\t\t\tcolor: {\n\t\t\t\tpalette: colors?.palette,\n\t\t\t\tgradients,\n\t\t\t\ttext: features?.color?.text ?? true,\n\t\t\t\tbackground: features?.color?.background ?? true,\n\t\t\t\tdefaultPalette: features?.color?.defaultPalette ?? true,\n\t\t\t\tdefaultGradients: features?.color?.defaultGradients ?? true,\n\t\t\t},\n\t\t\ttypography: {\n\t\t\t\tfontSizes,\n\t\t\t\tcustomLineHeight: features?.custom?.[ 'line-height' ],\n\t\t\t},\n\t\t\tspacing: features?.spacing,\n\t\t},\n\t\t__experimentalGlobalStylesBaseStyles: globalStyles,\n\t};\n}\n"]}
|
|
@@ -30,9 +30,5 @@ export const KeyboardAwareFlatList = _ref => {
|
|
|
30
30
|
onScroll: scrollHandler
|
|
31
31
|
}, props)));
|
|
32
32
|
};
|
|
33
|
-
|
|
34
|
-
KeyboardAwareFlatList.handleCaretVerticalPositionChange = () => {// no need to handle on Android, it is system managed
|
|
35
|
-
};
|
|
36
|
-
|
|
37
33
|
export default KeyboardAwareFlatList;
|
|
38
34
|
//# sourceMappingURL=index.android.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/index.android.js"],"names":["FlatList","Animated","useAnimatedScrollHandler","KeyboardAvoidingView","AnimatedFlatList","createAnimatedComponent","KeyboardAwareFlatList","innerRef","onScroll","props","scrollHandler","flex"
|
|
1
|
+
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/index.android.js"],"names":["FlatList","Animated","useAnimatedScrollHandler","KeyboardAvoidingView","AnimatedFlatList","createAnimatedComponent","KeyboardAwareFlatList","innerRef","onScroll","props","scrollHandler","flex"],"mappings":";;;AAAA;AACA;AACA;AACA,SAASA,QAAT,QAAyB,cAAzB;AACA,OAAOC,QAAP,IAAmBC,wBAAnB,QAAmD,yBAAnD;AAEA;AACA;AACA;;AACA,OAAOC,oBAAP,MAAiC,2BAAjC;AAEA,MAAMC,gBAAgB,GAAGH,QAAQ,CAACI,uBAAT,CAAkCL,QAAlC,CAAzB;AAEA,OAAO,MAAMM,qBAAqB,GAAG,QAAwC;AAAA,MAAtC;AAAEC,IAAAA,QAAF;AAAYC,IAAAA,QAAZ;AAAsB,OAAGC;AAAzB,GAAsC;AAC5E,QAAMC,aAAa,GAAGR,wBAAwB,CAAE;AAAEM,IAAAA;AAAF,GAAF,CAA9C;AACA,SACC,cAAC,oBAAD;AAAsB,IAAA,KAAK,EAAG;AAAEG,MAAAA,IAAI,EAAE;AAAR;AAA9B,KACC,cAAC,gBAAD;AACC,IAAA,GAAG,EAAGJ,QADP;AAEC,IAAA,QAAQ,EAAGG;AAFZ,KAGMD,KAHN,EADD,CADD;AASA,CAXM;AAaP,eAAeH,qBAAf","sourcesContent":["/**\n * External dependencies\n */\nimport { FlatList } from 'react-native';\nimport Animated, { useAnimatedScrollHandler } from 'react-native-reanimated';\n\n/**\n * Internal dependencies\n */\nimport KeyboardAvoidingView from '../keyboard-avoiding-view';\n\nconst AnimatedFlatList = Animated.createAnimatedComponent( FlatList );\n\nexport const KeyboardAwareFlatList = ( { innerRef, onScroll, ...props } ) => {\n\tconst scrollHandler = useAnimatedScrollHandler( { onScroll } );\n\treturn (\n\t\t<KeyboardAvoidingView style={ { flex: 1 } }>\n\t\t\t<AnimatedFlatList\n\t\t\t\tref={ innerRef }\n\t\t\t\tonScroll={ scrollHandler }\n\t\t\t\t{ ...props }\n\t\t\t/>\n\t\t</KeyboardAvoidingView>\n\t);\n};\n\nexport default KeyboardAwareFlatList;\n"]}
|
|
@@ -3,86 +3,129 @@ import { createElement } from "@wordpress/element";
|
|
|
3
3
|
/**
|
|
4
4
|
* External dependencies
|
|
5
5
|
*/
|
|
6
|
-
import {
|
|
7
|
-
import { FlatList } from 'react-native';
|
|
8
|
-
import fastDeepEqual from 'fast-deep-equal/es6';
|
|
6
|
+
import { ScrollView, FlatList, useWindowDimensions } from 'react-native';
|
|
9
7
|
import Animated, { useAnimatedScrollHandler, useSharedValue } from 'react-native-reanimated';
|
|
10
8
|
/**
|
|
11
9
|
* WordPress dependencies
|
|
12
10
|
*/
|
|
13
11
|
|
|
14
|
-
import {
|
|
15
|
-
|
|
16
|
-
|
|
12
|
+
import { useCallback, useEffect, useRef } from '@wordpress/element';
|
|
13
|
+
import { useThrottle } from '@wordpress/compose';
|
|
14
|
+
/**
|
|
15
|
+
* Internal dependencies
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
import useTextInputOffset from './use-text-input-offset';
|
|
19
|
+
import useKeyboardOffset from './use-keyboard-offset';
|
|
20
|
+
import useScrollToTextInput from './use-scroll-to-text-input';
|
|
21
|
+
import useTextInputCaretPosition from './use-text-input-caret-position';
|
|
22
|
+
const AnimatedScrollView = Animated.createAnimatedComponent(ScrollView);
|
|
23
|
+
/**
|
|
24
|
+
* React component that provides a FlatList that is aware of the keyboard state and can scroll
|
|
25
|
+
* to the currently focused TextInput.
|
|
26
|
+
*
|
|
27
|
+
* @param {Object} props Component props.
|
|
28
|
+
* @param {number} props.extraScrollHeight Extra scroll height for the content.
|
|
29
|
+
* @param {Function} props.innerRef Function to pass the ScrollView ref to the parent component.
|
|
30
|
+
* @param {Function} props.onScroll Function to be called when the list is scrolled.
|
|
31
|
+
* @param {boolean} props.scrollEnabled Whether the list can be scrolled.
|
|
32
|
+
* @param {Object} props.scrollViewStyle Additional style for the ScrollView component.
|
|
33
|
+
* @param {boolean} props.shouldPreventAutomaticScroll Whether to prevent scrolling when there's a Keyboard offset set.
|
|
34
|
+
* @param {Object} props... Other props to pass to the FlatList component.
|
|
35
|
+
* @return {WPComponent} KeyboardAwareFlatList component.
|
|
36
|
+
*/
|
|
37
|
+
|
|
17
38
|
export const KeyboardAwareFlatList = _ref => {
|
|
18
39
|
let {
|
|
19
40
|
extraScrollHeight,
|
|
20
|
-
shouldPreventAutomaticScroll,
|
|
21
41
|
innerRef,
|
|
22
|
-
autoScroll,
|
|
23
|
-
scrollViewStyle,
|
|
24
|
-
inputAccessoryViewHeight,
|
|
25
42
|
onScroll,
|
|
26
|
-
|
|
43
|
+
scrollEnabled,
|
|
44
|
+
scrollViewStyle,
|
|
45
|
+
shouldPreventAutomaticScroll,
|
|
46
|
+
...props
|
|
27
47
|
} = _ref;
|
|
28
48
|
const scrollViewRef = useRef();
|
|
29
|
-
const
|
|
30
|
-
const
|
|
49
|
+
const scrollViewMeasurements = useRef();
|
|
50
|
+
const scrollViewYOffset = useSharedValue(-1);
|
|
51
|
+
const {
|
|
52
|
+
height: windowHeight,
|
|
53
|
+
width: windowWidth
|
|
54
|
+
} = useWindowDimensions();
|
|
55
|
+
const isLandscape = windowWidth >= windowHeight;
|
|
56
|
+
const [keyboardOffset] = useKeyboardOffset(scrollEnabled, shouldPreventAutomaticScroll);
|
|
57
|
+
const [currentCaretData] = useTextInputCaretPosition(scrollEnabled);
|
|
58
|
+
const [getTextInputOffset] = useTextInputOffset(scrollEnabled, scrollViewRef);
|
|
59
|
+
const [scrollToTextInputOffset] = useScrollToTextInput(extraScrollHeight, keyboardOffset, scrollEnabled, scrollViewMeasurements, scrollViewRef, scrollViewYOffset);
|
|
60
|
+
const onScrollToTextInput = useThrottle(useCallback(async caret => {
|
|
61
|
+
const textInputOffset = await getTextInputOffset(caret);
|
|
62
|
+
const hasTextInputOffset = textInputOffset !== null;
|
|
63
|
+
|
|
64
|
+
if (hasTextInputOffset) {
|
|
65
|
+
scrollToTextInputOffset(caret, textInputOffset);
|
|
66
|
+
}
|
|
67
|
+
}, [getTextInputOffset, scrollToTextInputOffset]), 200, {
|
|
68
|
+
leading: false
|
|
69
|
+
});
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
onScrollToTextInput(currentCaretData);
|
|
72
|
+
}, [currentCaretData, onScrollToTextInput]); // When the orientation changes, the ScrollView measurements
|
|
73
|
+
// need to be re-calculated.
|
|
74
|
+
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
scrollViewMeasurements.current = null;
|
|
77
|
+
}, [isLandscape]);
|
|
31
78
|
const scrollHandler = useAnimatedScrollHandler({
|
|
32
79
|
onScroll: event => {
|
|
33
80
|
const {
|
|
34
81
|
contentOffset
|
|
35
82
|
} = event;
|
|
36
|
-
|
|
83
|
+
scrollViewYOffset.value = contentOffset.y;
|
|
37
84
|
onScroll(event);
|
|
38
85
|
}
|
|
39
86
|
});
|
|
87
|
+
const measureScrollView = useCallback(() => {
|
|
88
|
+
if (scrollViewRef.current) {
|
|
89
|
+
const scrollRef = scrollViewRef.current.getNativeScrollRef();
|
|
90
|
+
scrollRef.measureInWindow((_x, y, width, height) => {
|
|
91
|
+
scrollViewMeasurements.current = {
|
|
92
|
+
y,
|
|
93
|
+
width,
|
|
94
|
+
height
|
|
95
|
+
};
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}, []);
|
|
99
|
+
const onContentSizeChange = useCallback(() => {
|
|
100
|
+
onScrollToTextInput(currentCaretData); // Sets the first values when the content size changes.
|
|
101
|
+
|
|
102
|
+
if (!scrollViewMeasurements.current) {
|
|
103
|
+
measureScrollView();
|
|
104
|
+
}
|
|
105
|
+
}, [measureScrollView, onScrollToTextInput, currentCaretData]);
|
|
40
106
|
const getRef = useCallback(ref => {
|
|
41
107
|
scrollViewRef.current = ref;
|
|
42
108
|
innerRef(ref);
|
|
43
|
-
}, [innerRef]);
|
|
44
|
-
|
|
45
|
-
keyboardWillShowIndicator.current = false;
|
|
46
|
-
}, []);
|
|
47
|
-
const onKeyboardDidHide = useCallback(() => {
|
|
48
|
-
setTimeout(() => {
|
|
49
|
-
if (!keyboardWillShowIndicator.current && latestContentOffsetY.value !== -1 && !shouldPreventAutomaticScroll()) {
|
|
50
|
-
var _scrollViewRef$curren;
|
|
109
|
+
}, [innerRef]); // Adds content insets when the keyboard is opened to have
|
|
110
|
+
// extra padding at the bottom.
|
|
51
111
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
style: [{
|
|
62
|
-
flex: 1
|
|
63
|
-
}, scrollViewStyle],
|
|
64
|
-
keyboardDismissMode: "none",
|
|
65
|
-
enableResetScrollToCoords: false,
|
|
112
|
+
const contentInset = {
|
|
113
|
+
bottom: keyboardOffset
|
|
114
|
+
};
|
|
115
|
+
const style = [{
|
|
116
|
+
flex: 1
|
|
117
|
+
}, scrollViewStyle];
|
|
118
|
+
return createElement(AnimatedScrollView, {
|
|
119
|
+
automaticallyAdjustContentInsets: false,
|
|
120
|
+
contentInset: contentInset,
|
|
66
121
|
keyboardShouldPersistTaps: "handled",
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
inputAccessoryViewHeight: inputAccessoryViewHeight,
|
|
70
|
-
enableAutomaticScroll: autoScroll === undefined ? false : autoScroll,
|
|
122
|
+
onContentSizeChange: onContentSizeChange,
|
|
123
|
+
onScroll: scrollHandler,
|
|
71
124
|
ref: getRef,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
onScroll: scrollHandler
|
|
77
|
-
}, createElement(List, listProps));
|
|
125
|
+
scrollEnabled: scrollEnabled,
|
|
126
|
+
scrollEventThrottle: 16,
|
|
127
|
+
style: style
|
|
128
|
+
}, createElement(FlatList, props));
|
|
78
129
|
};
|
|
79
|
-
|
|
80
|
-
KeyboardAwareFlatList.handleCaretVerticalPositionChange = (scrollView, targetId, caretY, previousCaretY) => {
|
|
81
|
-
if (previousCaretY) {
|
|
82
|
-
// If this is not the first tap.
|
|
83
|
-
scrollView.refreshScrollForField(targetId);
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
|
|
87
130
|
export default KeyboardAwareFlatList;
|
|
88
131
|
//# sourceMappingURL=index.ios.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/index.ios.js"],"names":["
|
|
1
|
+
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/index.ios.js"],"names":["ScrollView","FlatList","useWindowDimensions","Animated","useAnimatedScrollHandler","useSharedValue","useCallback","useEffect","useRef","useThrottle","useTextInputOffset","useKeyboardOffset","useScrollToTextInput","useTextInputCaretPosition","AnimatedScrollView","createAnimatedComponent","KeyboardAwareFlatList","extraScrollHeight","innerRef","onScroll","scrollEnabled","scrollViewStyle","shouldPreventAutomaticScroll","props","scrollViewRef","scrollViewMeasurements","scrollViewYOffset","height","windowHeight","width","windowWidth","isLandscape","keyboardOffset","currentCaretData","getTextInputOffset","scrollToTextInputOffset","onScrollToTextInput","caret","textInputOffset","hasTextInputOffset","leading","current","scrollHandler","event","contentOffset","value","y","measureScrollView","scrollRef","getNativeScrollRef","measureInWindow","_x","onContentSizeChange","getRef","ref","contentInset","bottom","style","flex"],"mappings":"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","sourcesContent":["/**\n * External dependencies\n */\n\nimport { ScrollView, FlatList, useWindowDimensions } from 'react-native';\nimport Animated, {\n\tuseAnimatedScrollHandler,\n\tuseSharedValue,\n} from 'react-native-reanimated';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback, useEffect, useRef } from '@wordpress/element';\nimport { useThrottle } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport useTextInputOffset from './use-text-input-offset';\nimport useKeyboardOffset from './use-keyboard-offset';\nimport useScrollToTextInput from './use-scroll-to-text-input';\nimport useTextInputCaretPosition from './use-text-input-caret-position';\n\nconst AnimatedScrollView = Animated.createAnimatedComponent( ScrollView );\n\n/**\n * React component that provides a FlatList that is aware of the keyboard state and can scroll\n * to the currently focused TextInput.\n *\n * @param {Object} props Component props.\n * @param {number} props.extraScrollHeight Extra scroll height for the content.\n * @param {Function} props.innerRef Function to pass the ScrollView ref to the parent component.\n * @param {Function} props.onScroll Function to be called when the list is scrolled.\n * @param {boolean} props.scrollEnabled Whether the list can be scrolled.\n * @param {Object} props.scrollViewStyle Additional style for the ScrollView component.\n * @param {boolean} props.shouldPreventAutomaticScroll Whether to prevent scrolling when there's a Keyboard offset set.\n * @param {Object} props... Other props to pass to the FlatList component.\n * @return {WPComponent} KeyboardAwareFlatList component.\n */\nexport const KeyboardAwareFlatList = ( {\n\textraScrollHeight,\n\tinnerRef,\n\tonScroll,\n\tscrollEnabled,\n\tscrollViewStyle,\n\tshouldPreventAutomaticScroll,\n\t...props\n} ) => {\n\tconst scrollViewRef = useRef();\n\tconst scrollViewMeasurements = useRef();\n\tconst scrollViewYOffset = useSharedValue( -1 );\n\n\tconst { height: windowHeight, width: windowWidth } = useWindowDimensions();\n\tconst isLandscape = windowWidth >= windowHeight;\n\n\tconst [ keyboardOffset ] = useKeyboardOffset(\n\t\tscrollEnabled,\n\t\tshouldPreventAutomaticScroll\n\t);\n\n\tconst [ currentCaretData ] = useTextInputCaretPosition( scrollEnabled );\n\n\tconst [ getTextInputOffset ] = useTextInputOffset(\n\t\tscrollEnabled,\n\t\tscrollViewRef\n\t);\n\n\tconst [ scrollToTextInputOffset ] = useScrollToTextInput(\n\t\textraScrollHeight,\n\t\tkeyboardOffset,\n\t\tscrollEnabled,\n\t\tscrollViewMeasurements,\n\t\tscrollViewRef,\n\t\tscrollViewYOffset\n\t);\n\n\tconst onScrollToTextInput = useThrottle(\n\t\tuseCallback(\n\t\t\tasync ( caret ) => {\n\t\t\t\tconst textInputOffset = await getTextInputOffset( caret );\n\t\t\t\tconst hasTextInputOffset = textInputOffset !== null;\n\n\t\t\t\tif ( hasTextInputOffset ) {\n\t\t\t\t\tscrollToTextInputOffset( caret, textInputOffset );\n\t\t\t\t}\n\t\t\t},\n\t\t\t[ getTextInputOffset, scrollToTextInputOffset ]\n\t\t),\n\t\t200,\n\t\t{ leading: false }\n\t);\n\n\tuseEffect( () => {\n\t\tonScrollToTextInput( currentCaretData );\n\t}, [ currentCaretData, onScrollToTextInput ] );\n\n\t// When the orientation changes, the ScrollView measurements\n\t// need to be re-calculated.\n\tuseEffect( () => {\n\t\tscrollViewMeasurements.current = null;\n\t}, [ isLandscape ] );\n\n\tconst scrollHandler = useAnimatedScrollHandler( {\n\t\tonScroll: ( event ) => {\n\t\t\tconst { contentOffset } = event;\n\t\t\tscrollViewYOffset.value = contentOffset.y;\n\t\t\tonScroll( event );\n\t\t},\n\t} );\n\n\tconst measureScrollView = useCallback( () => {\n\t\tif ( scrollViewRef.current ) {\n\t\t\tconst scrollRef = scrollViewRef.current.getNativeScrollRef();\n\n\t\t\tscrollRef.measureInWindow( ( _x, y, width, height ) => {\n\t\t\t\tscrollViewMeasurements.current = { y, width, height };\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\tconst onContentSizeChange = useCallback( () => {\n\t\tonScrollToTextInput( currentCaretData );\n\n\t\t// Sets the first values when the content size changes.\n\t\tif ( ! scrollViewMeasurements.current ) {\n\t\t\tmeasureScrollView();\n\t\t}\n\t}, [ measureScrollView, onScrollToTextInput, currentCaretData ] );\n\n\tconst getRef = useCallback(\n\t\t( ref ) => {\n\t\t\tscrollViewRef.current = ref;\n\t\t\tinnerRef( ref );\n\t\t},\n\t\t[ innerRef ]\n\t);\n\n\t// Adds content insets when the keyboard is opened to have\n\t// extra padding at the bottom.\n\tconst contentInset = { bottom: keyboardOffset };\n\n\tconst style = [ { flex: 1 }, scrollViewStyle ];\n\n\treturn (\n\t\t<AnimatedScrollView\n\t\t\tautomaticallyAdjustContentInsets={ false }\n\t\t\tcontentInset={ contentInset }\n\t\t\tkeyboardShouldPersistTaps=\"handled\"\n\t\t\tonContentSizeChange={ onContentSizeChange }\n\t\t\tonScroll={ scrollHandler }\n\t\t\tref={ getRef }\n\t\t\tscrollEnabled={ scrollEnabled }\n\t\t\tscrollEventThrottle={ 16 }\n\t\t\tstyle={ style }\n\t\t>\n\t\t\t<FlatList { ...props } />\n\t\t</AnimatedScrollView>\n\t);\n};\n\nexport default KeyboardAwareFlatList;\n"]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { Keyboard } from 'react-native';
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useEffect, useCallback, useState, useRef } from '@wordpress/element';
|
|
10
|
+
/**
|
|
11
|
+
* Hook that adds Keyboard listeners to get the offset space
|
|
12
|
+
* when the keyboard is opened, taking into account focused AztecViews.
|
|
13
|
+
*
|
|
14
|
+
* @param {boolean} scrollEnabled Whether the scroll is enabled or not.
|
|
15
|
+
* @param {Function} shouldPreventAutomaticScroll Whether to prevent scrolling when there's a Keyboard offset set.
|
|
16
|
+
* @return {[number]} Keyboard offset.
|
|
17
|
+
*/
|
|
18
|
+
|
|
19
|
+
export default function useKeyboardOffset(scrollEnabled, shouldPreventAutomaticScroll) {
|
|
20
|
+
const [keyboardOffset, setKeyboardOffset] = useState(0);
|
|
21
|
+
const timeoutRef = useRef();
|
|
22
|
+
const onKeyboardDidHide = useCallback(() => {
|
|
23
|
+
if (shouldPreventAutomaticScroll()) {
|
|
24
|
+
clearTimeout(timeoutRef.current);
|
|
25
|
+
return;
|
|
26
|
+
} // A timeout is being used to delay resetting the offset in cases
|
|
27
|
+
// where the focus is changed to a different TextInput.
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
clearTimeout(timeoutRef.current);
|
|
31
|
+
timeoutRef.current = setTimeout(() => {
|
|
32
|
+
setKeyboardOffset(0);
|
|
33
|
+
}, 200);
|
|
34
|
+
}, [shouldPreventAutomaticScroll]);
|
|
35
|
+
const onKeyboardDidShow = useCallback(_ref => {
|
|
36
|
+
let {
|
|
37
|
+
endCoordinates
|
|
38
|
+
} = _ref;
|
|
39
|
+
clearTimeout(timeoutRef.current);
|
|
40
|
+
setKeyboardOffset(endCoordinates.height);
|
|
41
|
+
}, []);
|
|
42
|
+
const onKeyboardWillShow = useCallback(() => {
|
|
43
|
+
clearTimeout(timeoutRef.current);
|
|
44
|
+
}, []);
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
let willShowSubscription;
|
|
47
|
+
let showSubscription;
|
|
48
|
+
let hideSubscription;
|
|
49
|
+
|
|
50
|
+
if (scrollEnabled) {
|
|
51
|
+
willShowSubscription = Keyboard.addListener('keyboardWillShow', onKeyboardWillShow);
|
|
52
|
+
showSubscription = Keyboard.addListener('keyboardDidShow', onKeyboardDidShow);
|
|
53
|
+
hideSubscription = Keyboard.addListener('keyboardDidHide', onKeyboardDidHide);
|
|
54
|
+
} else {
|
|
55
|
+
var _willShowSubscription, _showSubscription, _hideSubscription;
|
|
56
|
+
|
|
57
|
+
(_willShowSubscription = willShowSubscription) === null || _willShowSubscription === void 0 ? void 0 : _willShowSubscription.remove();
|
|
58
|
+
(_showSubscription = showSubscription) === null || _showSubscription === void 0 ? void 0 : _showSubscription.remove();
|
|
59
|
+
(_hideSubscription = hideSubscription) === null || _hideSubscription === void 0 ? void 0 : _hideSubscription.remove();
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
return () => {
|
|
63
|
+
var _willShowSubscription2, _showSubscription2, _hideSubscription2;
|
|
64
|
+
|
|
65
|
+
clearTimeout(timeoutRef.current);
|
|
66
|
+
(_willShowSubscription2 = willShowSubscription) === null || _willShowSubscription2 === void 0 ? void 0 : _willShowSubscription2.remove();
|
|
67
|
+
(_showSubscription2 = showSubscription) === null || _showSubscription2 === void 0 ? void 0 : _showSubscription2.remove();
|
|
68
|
+
(_hideSubscription2 = hideSubscription) === null || _hideSubscription2 === void 0 ? void 0 : _hideSubscription2.remove();
|
|
69
|
+
};
|
|
70
|
+
}, [onKeyboardDidHide, onKeyboardDidShow, onKeyboardWillShow, scrollEnabled]);
|
|
71
|
+
return [keyboardOffset];
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=use-keyboard-offset.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/use-keyboard-offset.native.js"],"names":["Keyboard","useEffect","useCallback","useState","useRef","useKeyboardOffset","scrollEnabled","shouldPreventAutomaticScroll","keyboardOffset","setKeyboardOffset","timeoutRef","onKeyboardDidHide","clearTimeout","current","setTimeout","onKeyboardDidShow","endCoordinates","height","onKeyboardWillShow","willShowSubscription","showSubscription","hideSubscription","addListener","remove"],"mappings":"AAAA;AACA;AACA;AAEA,SAASA,QAAT,QAAyB,cAAzB;AAEA;AACA;AACA;;AACA,SAASC,SAAT,EAAoBC,WAApB,EAAiCC,QAAjC,EAA2CC,MAA3C,QAAyD,oBAAzD;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,iBAAT,CACdC,aADc,EAEdC,4BAFc,EAGb;AACD,QAAM,CAAEC,cAAF,EAAkBC,iBAAlB,IAAwCN,QAAQ,CAAE,CAAF,CAAtD;AACA,QAAMO,UAAU,GAAGN,MAAM,EAAzB;AAEA,QAAMO,iBAAiB,GAAGT,WAAW,CAAE,MAAM;AAC5C,QAAKK,4BAA4B,EAAjC,EAAsC;AACrCK,MAAAA,YAAY,CAAEF,UAAU,CAACG,OAAb,CAAZ;AACA;AACA,KAJ2C,CAM5C;AACA;;;AACAD,IAAAA,YAAY,CAAEF,UAAU,CAACG,OAAb,CAAZ;AACAH,IAAAA,UAAU,CAACG,OAAX,GAAqBC,UAAU,CAAE,MAAM;AACtCL,MAAAA,iBAAiB,CAAE,CAAF,CAAjB;AACA,KAF8B,EAE5B,GAF4B,CAA/B;AAGA,GAZoC,EAYlC,CAAEF,4BAAF,CAZkC,CAArC;AAcA,QAAMQ,iBAAiB,GAAGb,WAAW,CAAE,QAA0B;AAAA,QAAxB;AAAEc,MAAAA;AAAF,KAAwB;AAChEJ,IAAAA,YAAY,CAAEF,UAAU,CAACG,OAAb,CAAZ;AACAJ,IAAAA,iBAAiB,CAAEO,cAAc,CAACC,MAAjB,CAAjB;AACA,GAHoC,EAGlC,EAHkC,CAArC;AAKA,QAAMC,kBAAkB,GAAGhB,WAAW,CAAE,MAAM;AAC7CU,IAAAA,YAAY,CAAEF,UAAU,CAACG,OAAb,CAAZ;AACA,GAFqC,EAEnC,EAFmC,CAAtC;AAIAZ,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAIkB,oBAAJ;AACA,QAAIC,gBAAJ;AACA,QAAIC,gBAAJ;;AAEA,QAAKf,aAAL,EAAqB;AACpBa,MAAAA,oBAAoB,GAAGnB,QAAQ,CAACsB,WAAT,CACtB,kBADsB,EAEtBJ,kBAFsB,CAAvB;AAIAE,MAAAA,gBAAgB,GAAGpB,QAAQ,CAACsB,WAAT,CAClB,iBADkB,EAElBP,iBAFkB,CAAnB;AAIAM,MAAAA,gBAAgB,GAAGrB,QAAQ,CAACsB,WAAT,CAClB,iBADkB,EAElBX,iBAFkB,CAAnB;AAIA,KAbD,MAaO;AAAA;;AACN,+BAAAQ,oBAAoB,UAApB,sEAAsBI,MAAtB;AACA,2BAAAH,gBAAgB,UAAhB,8DAAkBG,MAAlB;AACA,2BAAAF,gBAAgB,UAAhB,8DAAkBE,MAAlB;AACA;;AAED,WAAO,MAAM;AAAA;;AACZX,MAAAA,YAAY,CAAEF,UAAU,CAACG,OAAb,CAAZ;AACA,gCAAAM,oBAAoB,UAApB,wEAAsBI,MAAtB;AACA,4BAAAH,gBAAgB,UAAhB,gEAAkBG,MAAlB;AACA,4BAAAF,gBAAgB,UAAhB,gEAAkBE,MAAlB;AACA,KALD;AAMA,GA9BQ,EA8BN,CACFZ,iBADE,EAEFI,iBAFE,EAGFG,kBAHE,EAIFZ,aAJE,CA9BM,CAAT;AAoCA,SAAO,CAAEE,cAAF,CAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\n\nimport { Keyboard } from 'react-native';\n\n/**\n * WordPress dependencies\n */\nimport { useEffect, useCallback, useState, useRef } from '@wordpress/element';\n\n/**\n * Hook that adds Keyboard listeners to get the offset space\n * when the keyboard is opened, taking into account focused AztecViews.\n *\n * @param {boolean} scrollEnabled Whether the scroll is enabled or not.\n * @param {Function} shouldPreventAutomaticScroll Whether to prevent scrolling when there's a Keyboard offset set.\n * @return {[number]} Keyboard offset.\n */\nexport default function useKeyboardOffset(\n\tscrollEnabled,\n\tshouldPreventAutomaticScroll\n) {\n\tconst [ keyboardOffset, setKeyboardOffset ] = useState( 0 );\n\tconst timeoutRef = useRef();\n\n\tconst onKeyboardDidHide = useCallback( () => {\n\t\tif ( shouldPreventAutomaticScroll() ) {\n\t\t\tclearTimeout( timeoutRef.current );\n\t\t\treturn;\n\t\t}\n\n\t\t// A timeout is being used to delay resetting the offset in cases\n\t\t// where the focus is changed to a different TextInput.\n\t\tclearTimeout( timeoutRef.current );\n\t\ttimeoutRef.current = setTimeout( () => {\n\t\t\tsetKeyboardOffset( 0 );\n\t\t}, 200 );\n\t}, [ shouldPreventAutomaticScroll ] );\n\n\tconst onKeyboardDidShow = useCallback( ( { endCoordinates } ) => {\n\t\tclearTimeout( timeoutRef.current );\n\t\tsetKeyboardOffset( endCoordinates.height );\n\t}, [] );\n\n\tconst onKeyboardWillShow = useCallback( () => {\n\t\tclearTimeout( timeoutRef.current );\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tlet willShowSubscription;\n\t\tlet showSubscription;\n\t\tlet hideSubscription;\n\n\t\tif ( scrollEnabled ) {\n\t\t\twillShowSubscription = Keyboard.addListener(\n\t\t\t\t'keyboardWillShow',\n\t\t\t\tonKeyboardWillShow\n\t\t\t);\n\t\t\tshowSubscription = Keyboard.addListener(\n\t\t\t\t'keyboardDidShow',\n\t\t\t\tonKeyboardDidShow\n\t\t\t);\n\t\t\thideSubscription = Keyboard.addListener(\n\t\t\t\t'keyboardDidHide',\n\t\t\t\tonKeyboardDidHide\n\t\t\t);\n\t\t} else {\n\t\t\twillShowSubscription?.remove();\n\t\t\tshowSubscription?.remove();\n\t\t\thideSubscription?.remove();\n\t\t}\n\n\t\treturn () => {\n\t\t\tclearTimeout( timeoutRef.current );\n\t\t\twillShowSubscription?.remove();\n\t\t\tshowSubscription?.remove();\n\t\t\thideSubscription?.remove();\n\t\t};\n\t}, [\n\t\tonKeyboardDidHide,\n\t\tonKeyboardDidShow,\n\t\tonKeyboardWillShow,\n\t\tscrollEnabled,\n\t] );\n\treturn [ keyboardOffset ];\n}\n"]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* External dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
5
|
+
/**
|
|
6
|
+
* WordPress dependencies
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { useCallback } from '@wordpress/element';
|
|
10
|
+
const DEFAULT_FONT_SIZE = 16;
|
|
11
|
+
/** @typedef {import('@wordpress/element').RefObject} RefObject */
|
|
12
|
+
|
|
13
|
+
/** @typedef {import('react-native-reanimated').SharedValue} SharedValue */
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Hook to scroll to the currently focused TextInput
|
|
17
|
+
* depending on where the caret is placed taking into
|
|
18
|
+
* account the Keyboard and the Header.
|
|
19
|
+
*
|
|
20
|
+
* @param {number} extraScrollHeight Extra space to not overlap the content.
|
|
21
|
+
* @param {number} keyboardOffset Keyboard space offset.
|
|
22
|
+
* @param {boolean} scrollEnabled Whether the scroll is enabled or not.
|
|
23
|
+
* @param {RefObject} scrollViewMeasurements ScrollView Layout measurements.
|
|
24
|
+
* @param {RefObject} scrollViewRef ScrollView reference.
|
|
25
|
+
* @param {SharedValue} scrollViewYOffset Current offset position of the ScrollView.
|
|
26
|
+
* @return {Function[]} Function to scroll to the current TextInput's offset.
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
export default function useScrollToTextInput(extraScrollHeight, keyboardOffset, scrollEnabled, scrollViewMeasurements, scrollViewRef, scrollViewYOffset) {
|
|
30
|
+
const {
|
|
31
|
+
top,
|
|
32
|
+
bottom
|
|
33
|
+
} = useSafeAreaInsets();
|
|
34
|
+
const insets = top + bottom;
|
|
35
|
+
/**
|
|
36
|
+
* Function to scroll to the current TextInput's offset.
|
|
37
|
+
*
|
|
38
|
+
* @param {Object} caret The caret position data of the currently focused TextInput.
|
|
39
|
+
* @param {number} caret.caretHeight The height of the caret.
|
|
40
|
+
* @param {number} textInputOffset The offset calculated with the caret's Y coordinate + the
|
|
41
|
+
* TextInput's Y coord or height value.
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
const scrollToTextInputOffset = useCallback((caret, textInputOffset) => {
|
|
45
|
+
const {
|
|
46
|
+
caretHeight = DEFAULT_FONT_SIZE
|
|
47
|
+
} = caret !== null && caret !== void 0 ? caret : {};
|
|
48
|
+
|
|
49
|
+
if (!scrollViewRef.current || !scrollEnabled || !scrollViewMeasurements.current) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
const currentScrollViewYOffset = Math.max(0, scrollViewYOffset.value); // Scroll up.
|
|
54
|
+
|
|
55
|
+
if (textInputOffset < currentScrollViewYOffset) {
|
|
56
|
+
scrollViewRef.current.scrollTo({
|
|
57
|
+
y: textInputOffset,
|
|
58
|
+
animated: true
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
const availableScreenSpace = Math.abs(Math.floor(scrollViewMeasurements.current.height - (keyboardOffset + extraScrollHeight + caretHeight)));
|
|
64
|
+
const maxOffset = Math.floor(currentScrollViewYOffset + availableScreenSpace);
|
|
65
|
+
const isAtTheTop = textInputOffset < scrollViewMeasurements.current.y + insets; // Scroll down.
|
|
66
|
+
|
|
67
|
+
if (textInputOffset > maxOffset && !isAtTheTop) {
|
|
68
|
+
scrollViewRef.current.scrollTo({
|
|
69
|
+
y: textInputOffset - availableScreenSpace,
|
|
70
|
+
animated: true
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}, [extraScrollHeight, insets, keyboardOffset, scrollEnabled, scrollViewMeasurements, scrollViewRef, scrollViewYOffset]);
|
|
74
|
+
return [scrollToTextInputOffset];
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=use-scroll-to-text-input.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/use-scroll-to-text-input.native.js"],"names":["useSafeAreaInsets","useCallback","DEFAULT_FONT_SIZE","useScrollToTextInput","extraScrollHeight","keyboardOffset","scrollEnabled","scrollViewMeasurements","scrollViewRef","scrollViewYOffset","top","bottom","insets","scrollToTextInputOffset","caret","textInputOffset","caretHeight","current","currentScrollViewYOffset","Math","max","value","scrollTo","y","animated","availableScreenSpace","abs","floor","height","maxOffset","isAtTheTop"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,iBAAT,QAAkC,gCAAlC;AAEA;AACA;AACA;;AACA,SAASC,WAAT,QAA4B,oBAA5B;AAEA,MAAMC,iBAAiB,GAAG,EAA1B;AAEA;;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,oBAAT,CACdC,iBADc,EAEdC,cAFc,EAGdC,aAHc,EAIdC,sBAJc,EAKdC,aALc,EAMdC,iBANc,EAOb;AACD,QAAM;AAAEC,IAAAA,GAAF;AAAOC,IAAAA;AAAP,MAAkBX,iBAAiB,EAAzC;AACA,QAAMY,MAAM,GAAGF,GAAG,GAAGC,MAArB;AAEA;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AACC,QAAME,uBAAuB,GAAGZ,WAAW,CAC1C,CAAEa,KAAF,EAASC,eAAT,KAA8B;AAC7B,UAAM;AAAEC,MAAAA,WAAW,GAAGd;AAAhB,QAAsCY,KAAtC,aAAsCA,KAAtC,cAAsCA,KAAtC,GAA+C,EAArD;;AAEA,QACC,CAAEN,aAAa,CAACS,OAAhB,IACA,CAAEX,aADF,IAEA,CAAEC,sBAAsB,CAACU,OAH1B,EAIE;AACD;AACA;;AACD,UAAMC,wBAAwB,GAAGC,IAAI,CAACC,GAAL,CAChC,CADgC,EAEhCX,iBAAiB,CAACY,KAFc,CAAjC,CAV6B,CAe7B;;AACA,QAAKN,eAAe,GAAGG,wBAAvB,EAAkD;AACjDV,MAAAA,aAAa,CAACS,OAAd,CAAsBK,QAAtB,CAAgC;AAC/BC,QAAAA,CAAC,EAAER,eAD4B;AAE/BS,QAAAA,QAAQ,EAAE;AAFqB,OAAhC;AAIA;AACA;;AAED,UAAMC,oBAAoB,GAAGN,IAAI,CAACO,GAAL,CAC5BP,IAAI,CAACQ,KAAL,CACCpB,sBAAsB,CAACU,OAAvB,CAA+BW,MAA/B,IACGvB,cAAc,GAAGD,iBAAjB,GAAqCY,WADxC,CADD,CAD4B,CAA7B;AAMA,UAAMa,SAAS,GAAGV,IAAI,CAACQ,KAAL,CACjBT,wBAAwB,GAAGO,oBADV,CAAlB;AAIA,UAAMK,UAAU,GACff,eAAe,GAAGR,sBAAsB,CAACU,OAAvB,CAA+BM,CAA/B,GAAmCX,MADtD,CAlC6B,CAqC7B;;AACA,QAAKG,eAAe,GAAGc,SAAlB,IAA+B,CAAEC,UAAtC,EAAmD;AAClDtB,MAAAA,aAAa,CAACS,OAAd,CAAsBK,QAAtB,CAAgC;AAC/BC,QAAAA,CAAC,EAAER,eAAe,GAAGU,oBADU;AAE/BD,QAAAA,QAAQ,EAAE;AAFqB,OAAhC;AAIA;AACD,GA7CyC,EA8C1C,CACCpB,iBADD,EAECQ,MAFD,EAGCP,cAHD,EAICC,aAJD,EAKCC,sBALD,EAMCC,aAND,EAOCC,iBAPD,CA9C0C,CAA3C;AAyDA,SAAO,CAAEI,uBAAF,CAAP;AACA","sourcesContent":["/**\n * External dependencies\n */\nimport { useSafeAreaInsets } from 'react-native-safe-area-context';\n\n/**\n * WordPress dependencies\n */\nimport { useCallback } from '@wordpress/element';\n\nconst DEFAULT_FONT_SIZE = 16;\n\n/** @typedef {import('@wordpress/element').RefObject} RefObject */\n/** @typedef {import('react-native-reanimated').SharedValue} SharedValue */\n/**\n * Hook to scroll to the currently focused TextInput\n * depending on where the caret is placed taking into\n * account the Keyboard and the Header.\n *\n * @param {number} extraScrollHeight Extra space to not overlap the content.\n * @param {number} keyboardOffset Keyboard space offset.\n * @param {boolean} scrollEnabled Whether the scroll is enabled or not.\n * @param {RefObject} scrollViewMeasurements ScrollView Layout measurements.\n * @param {RefObject} scrollViewRef ScrollView reference.\n * @param {SharedValue} scrollViewYOffset Current offset position of the ScrollView.\n * @return {Function[]} Function to scroll to the current TextInput's offset.\n */\nexport default function useScrollToTextInput(\n\textraScrollHeight,\n\tkeyboardOffset,\n\tscrollEnabled,\n\tscrollViewMeasurements,\n\tscrollViewRef,\n\tscrollViewYOffset\n) {\n\tconst { top, bottom } = useSafeAreaInsets();\n\tconst insets = top + bottom;\n\n\t/**\n\t * Function to scroll to the current TextInput's offset.\n\t *\n\t * @param {Object} caret The caret position data of the currently focused TextInput.\n\t * @param {number} caret.caretHeight The height of the caret.\n\t * @param {number} textInputOffset The offset calculated with the caret's Y coordinate + the\n\t * TextInput's Y coord or height value.\n\t */\n\tconst scrollToTextInputOffset = useCallback(\n\t\t( caret, textInputOffset ) => {\n\t\t\tconst { caretHeight = DEFAULT_FONT_SIZE } = caret ?? {};\n\n\t\t\tif (\n\t\t\t\t! scrollViewRef.current ||\n\t\t\t\t! scrollEnabled ||\n\t\t\t\t! scrollViewMeasurements.current\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst currentScrollViewYOffset = Math.max(\n\t\t\t\t0,\n\t\t\t\tscrollViewYOffset.value\n\t\t\t);\n\n\t\t\t// Scroll up.\n\t\t\tif ( textInputOffset < currentScrollViewYOffset ) {\n\t\t\t\tscrollViewRef.current.scrollTo( {\n\t\t\t\t\ty: textInputOffset,\n\t\t\t\t\tanimated: true,\n\t\t\t\t} );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst availableScreenSpace = Math.abs(\n\t\t\t\tMath.floor(\n\t\t\t\t\tscrollViewMeasurements.current.height -\n\t\t\t\t\t\t( keyboardOffset + extraScrollHeight + caretHeight )\n\t\t\t\t)\n\t\t\t);\n\t\t\tconst maxOffset = Math.floor(\n\t\t\t\tcurrentScrollViewYOffset + availableScreenSpace\n\t\t\t);\n\n\t\t\tconst isAtTheTop =\n\t\t\t\ttextInputOffset < scrollViewMeasurements.current.y + insets;\n\n\t\t\t// Scroll down.\n\t\t\tif ( textInputOffset > maxOffset && ! isAtTheTop ) {\n\t\t\t\tscrollViewRef.current.scrollTo( {\n\t\t\t\t\ty: textInputOffset - availableScreenSpace,\n\t\t\t\t\tanimated: true,\n\t\t\t\t} );\n\t\t\t}\n\t\t},\n\t\t[\n\t\t\textraScrollHeight,\n\t\t\tinsets,\n\t\t\tkeyboardOffset,\n\t\t\tscrollEnabled,\n\t\t\tscrollViewMeasurements,\n\t\t\tscrollViewRef,\n\t\t\tscrollViewYOffset,\n\t\t]\n\t);\n\n\treturn [ scrollToTextInputOffset ];\n}\n"]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import RCTAztecView from '@wordpress/react-native-aztec';
|
|
5
|
+
import { useCallback, useEffect, useState } from '@wordpress/element';
|
|
6
|
+
/**
|
|
7
|
+
* Hook that listens to caret changes from AztecView TextInputs.
|
|
8
|
+
*
|
|
9
|
+
* @param {boolean} scrollEnabled Whether the scroll is enabled or not.
|
|
10
|
+
* @return {[number]} Current caret's data.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export default function useTextInputCaretPosition(scrollEnabled) {
|
|
14
|
+
const [currentCaretData, setCurrentCaretData] = useState();
|
|
15
|
+
const onCaretChange = useCallback(caret => {
|
|
16
|
+
setCurrentCaretData(caret);
|
|
17
|
+
}, []);
|
|
18
|
+
useEffect(() => {
|
|
19
|
+
if (scrollEnabled) {
|
|
20
|
+
RCTAztecView.InputState.addCaretChangeListener(onCaretChange);
|
|
21
|
+
} else {
|
|
22
|
+
RCTAztecView.InputState.removeCaretChangeListener(onCaretChange);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return () => {
|
|
26
|
+
if (scrollEnabled) {
|
|
27
|
+
RCTAztecView.InputState.removeCaretChangeListener(onCaretChange);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}, [scrollEnabled, onCaretChange]);
|
|
31
|
+
return [currentCaretData];
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=use-text-input-caret-position.native.js.map
|
package/build-module/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["@wordpress/components/src/mobile/keyboard-aware-flat-list/use-text-input-caret-position.native.js"],"names":["RCTAztecView","useCallback","useEffect","useState","useTextInputCaretPosition","scrollEnabled","currentCaretData","setCurrentCaretData","onCaretChange","caret","InputState","addCaretChangeListener","removeCaretChangeListener"],"mappings":"AAAA;AACA;AACA;AACA,OAAOA,YAAP,MAAyB,+BAAzB;AACA,SAASC,WAAT,EAAsBC,SAAtB,EAAiCC,QAAjC,QAAiD,oBAAjD;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,eAAe,SAASC,yBAAT,CAAoCC,aAApC,EAAoD;AAClE,QAAM,CAAEC,gBAAF,EAAoBC,mBAApB,IAA4CJ,QAAQ,EAA1D;AAEA,QAAMK,aAAa,GAAGP,WAAW,CAAIQ,KAAF,IAAa;AAC/CF,IAAAA,mBAAmB,CAAEE,KAAF,CAAnB;AACA,GAFgC,EAE9B,EAF8B,CAAjC;AAIAP,EAAAA,SAAS,CAAE,MAAM;AAChB,QAAKG,aAAL,EAAqB;AACpBL,MAAAA,YAAY,CAACU,UAAb,CAAwBC,sBAAxB,CAAgDH,aAAhD;AACA,KAFD,MAEO;AACNR,MAAAA,YAAY,CAACU,UAAb,CAAwBE,yBAAxB,CAAmDJ,aAAnD;AACA;;AAED,WAAO,MAAM;AACZ,UAAKH,aAAL,EAAqB;AACpBL,QAAAA,YAAY,CAACU,UAAb,CAAwBE,yBAAxB,CACCJ,aADD;AAGA;AACD,KAND;AAOA,GAdQ,EAcN,CAAEH,aAAF,EAAiBG,aAAjB,CAdM,CAAT;AAeA,SAAO,CAAEF,gBAAF,CAAP;AACA","sourcesContent":["/**\n * WordPress dependencies\n */\nimport RCTAztecView from '@wordpress/react-native-aztec';\nimport { useCallback, useEffect, useState } from '@wordpress/element';\n\n/**\n * Hook that listens to caret changes from AztecView TextInputs.\n *\n * @param {boolean} scrollEnabled Whether the scroll is enabled or not.\n * @return {[number]} Current caret's data.\n */\nexport default function useTextInputCaretPosition( scrollEnabled ) {\n\tconst [ currentCaretData, setCurrentCaretData ] = useState();\n\n\tconst onCaretChange = useCallback( ( caret ) => {\n\t\tsetCurrentCaretData( caret );\n\t}, [] );\n\n\tuseEffect( () => {\n\t\tif ( scrollEnabled ) {\n\t\t\tRCTAztecView.InputState.addCaretChangeListener( onCaretChange );\n\t\t} else {\n\t\t\tRCTAztecView.InputState.removeCaretChangeListener( onCaretChange );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif ( scrollEnabled ) {\n\t\t\t\tRCTAztecView.InputState.removeCaretChangeListener(\n\t\t\t\t\tonCaretChange\n\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}, [ scrollEnabled, onCaretChange ] );\n\treturn [ currentCaretData ];\n}\n"]}
|