@wordpress/components 19.0.0 → 19.0.1
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 +6 -0
- package/CONTRIBUTING.md +12 -12
- package/build/angle-picker-control/index.js +3 -1
- package/build/angle-picker-control/index.js.map +1 -1
- package/build/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
- package/build/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build/base-control/index.js +1 -1
- package/build/base-control/index.js.map +1 -1
- package/build/color-edit/index.js +180 -199
- package/build/color-edit/index.js.map +1 -1
- package/build/color-edit/styles.js +112 -0
- package/build/color-edit/styles.js.map +1 -0
- package/build/color-list-picker/index.js +6 -1
- package/build/color-list-picker/index.js.map +1 -1
- package/build/color-palette/index.js +86 -21
- package/build/color-palette/index.js.map +1 -1
- package/build/color-palette/styles.js +31 -0
- package/build/color-palette/styles.js.map +1 -0
- package/build/color-picker/component.js +7 -18
- package/build/color-picker/component.js.map +1 -1
- package/build/color-picker/picker.js +3 -3
- package/build/color-picker/picker.js.map +1 -1
- package/build/duotone-picker/custom-duotone-bar.js +0 -1
- package/build/duotone-picker/custom-duotone-bar.js.map +1 -1
- package/build/duotone-picker/duotone-picker.js +1 -0
- package/build/duotone-picker/duotone-picker.js.map +1 -1
- package/build/gradient-picker/index.js +69 -9
- package/build/gradient-picker/index.js.map +1 -1
- package/build/index.native.js +9 -0
- package/build/index.native.js.map +1 -1
- package/build/mobile/bottom-sheet/cell.native.js +4 -2
- package/build/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build/mobile/bottom-sheet/link-cell.native.js +3 -2
- package/build/mobile/bottom-sheet/link-cell.native.js.map +1 -1
- package/build/mobile/link-settings/image-link-destinations-screen.native.js +140 -0
- package/build/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -0
- package/build/mobile/link-settings/index.native.js +3 -2
- package/build/mobile/link-settings/index.native.js.map +1 -1
- package/build/mobile/link-settings/link-settings-navigation.native.js +1 -0
- package/build/mobile/link-settings/link-settings-navigation.native.js.map +1 -1
- package/build/mobile/link-settings/link-settings-screen.native.js +11 -5
- package/build/mobile/link-settings/link-settings-screen.native.js.map +1 -1
- package/build/mobile/picker/index.android.js +4 -2
- package/build/mobile/picker/index.android.js.map +1 -1
- package/build/modal/index.js +10 -3
- package/build/modal/index.js.map +1 -1
- package/build/navigation/group/index.js +1 -2
- package/build/navigation/group/index.js.map +1 -1
- package/build/navigation/menu/menu-title-search.js +8 -27
- package/build/navigation/menu/menu-title-search.js.map +1 -1
- package/build/navigation/menu/menu-title.js +2 -2
- package/build/navigation/menu/menu-title.js.map +1 -1
- package/build/navigation/styles/navigation-styles.js +34 -29
- package/build/navigation/styles/navigation-styles.js.map +1 -1
- package/build/popover/index.js +4 -2
- package/build/popover/index.js.map +1 -1
- package/build/range-control/styles/range-control-styles.js +33 -29
- package/build/range-control/styles/range-control-styles.js.map +1 -1
- package/build/search-control/index.js +37 -14
- package/build/search-control/index.js.map +1 -1
- package/build/text/styles.js +7 -7
- package/build/text/styles.js.map +1 -1
- package/build/tools-panel/styles.js +18 -23
- package/build/tools-panel/styles.js.map +1 -1
- package/build/tools-panel/tools-panel/component.js +10 -7
- package/build/tools-panel/tools-panel/component.js.map +1 -1
- package/build/tools-panel/tools-panel/hook.js +3 -1
- package/build/tools-panel/tools-panel/hook.js.map +1 -1
- package/build/tools-panel/tools-panel-header/component.js +3 -0
- package/build/tools-panel/tools-panel-header/component.js.map +1 -1
- package/build/utils/hooks/index.js +8 -0
- package/build/utils/hooks/index.js.map +1 -1
- package/build/utils/hooks/use-combined-ref.js +28 -0
- package/build/utils/hooks/use-combined-ref.js.map +1 -0
- package/build-module/angle-picker-control/index.js +3 -1
- package/build-module/angle-picker-control/index.js.map +1 -1
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js +4 -4
- package/build-module/angle-picker-control/styles/angle-picker-control-styles.js.map +1 -1
- package/build-module/base-control/index.js +1 -1
- package/build-module/base-control/index.js.map +1 -1
- package/build-module/color-edit/index.js +175 -201
- package/build-module/color-edit/index.js.map +1 -1
- package/build-module/color-edit/styles.js +90 -0
- package/build-module/color-edit/styles.js.map +1 -0
- package/build-module/color-list-picker/index.js +6 -1
- package/build-module/color-list-picker/index.js.map +1 -1
- package/build-module/color-palette/index.js +85 -22
- package/build-module/color-palette/index.js.map +1 -1
- package/build-module/color-palette/styles.js +27 -0
- package/build-module/color-palette/styles.js.map +1 -0
- package/build-module/color-picker/component.js +7 -16
- package/build-module/color-picker/component.js.map +1 -1
- package/build-module/color-picker/picker.js +4 -4
- package/build-module/color-picker/picker.js.map +1 -1
- package/build-module/duotone-picker/custom-duotone-bar.js +0 -1
- package/build-module/duotone-picker/custom-duotone-bar.js.map +1 -1
- package/build-module/duotone-picker/duotone-picker.js +1 -0
- package/build-module/duotone-picker/duotone-picker.js.map +1 -1
- package/build-module/gradient-picker/index.js +67 -9
- package/build-module/gradient-picker/index.js.map +1 -1
- package/build-module/index.native.js +1 -0
- package/build-module/index.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/cell.native.js +4 -2
- package/build-module/mobile/bottom-sheet/cell.native.js.map +1 -1
- package/build-module/mobile/bottom-sheet/link-cell.native.js +3 -2
- package/build-module/mobile/bottom-sheet/link-cell.native.js.map +1 -1
- package/build-module/mobile/link-settings/image-link-destinations-screen.native.js +121 -0
- package/build-module/mobile/link-settings/image-link-destinations-screen.native.js.map +1 -0
- package/build-module/mobile/link-settings/index.native.js +3 -2
- package/build-module/mobile/link-settings/index.native.js.map +1 -1
- package/build-module/mobile/link-settings/link-settings-navigation.native.js +1 -0
- package/build-module/mobile/link-settings/link-settings-navigation.native.js.map +1 -1
- package/build-module/mobile/link-settings/link-settings-screen.native.js +11 -5
- package/build-module/mobile/link-settings/link-settings-screen.native.js.map +1 -1
- package/build-module/mobile/picker/index.android.js +4 -2
- package/build-module/mobile/picker/index.android.js.map +1 -1
- package/build-module/modal/index.js +10 -4
- package/build-module/modal/index.js.map +1 -1
- package/build-module/navigation/group/index.js +1 -2
- package/build-module/navigation/group/index.js.map +1 -1
- package/build-module/navigation/menu/menu-title-search.js +8 -24
- package/build-module/navigation/menu/menu-title-search.js.map +1 -1
- package/build-module/navigation/menu/menu-title.js +3 -3
- package/build-module/navigation/menu/menu-title.js.map +1 -1
- package/build-module/navigation/styles/navigation-styles.js +31 -27
- package/build-module/navigation/styles/navigation-styles.js.map +1 -1
- package/build-module/popover/index.js +4 -2
- package/build-module/popover/index.js.map +1 -1
- package/build-module/range-control/styles/range-control-styles.js +33 -29
- package/build-module/range-control/styles/range-control-styles.js.map +1 -1
- package/build-module/search-control/index.js +36 -15
- package/build-module/search-control/index.js.map +1 -1
- package/build-module/text/styles.js +7 -7
- package/build-module/text/styles.js.map +1 -1
- package/build-module/tools-panel/styles.js +16 -23
- package/build-module/tools-panel/styles.js.map +1 -1
- package/build-module/tools-panel/tools-panel/component.js +10 -6
- package/build-module/tools-panel/tools-panel/component.js.map +1 -1
- package/build-module/tools-panel/tools-panel/hook.js +2 -1
- package/build-module/tools-panel/tools-panel/hook.js.map +1 -1
- package/build-module/tools-panel/tools-panel-header/component.js +3 -0
- package/build-module/tools-panel/tools-panel-header/component.js.map +1 -1
- package/build-module/utils/hooks/index.js +1 -0
- package/build-module/utils/hooks/index.js.map +1 -1
- package/build-module/utils/hooks/use-combined-ref.js +25 -0
- package/build-module/utils/hooks/use-combined-ref.js.map +1 -0
- package/build-style/style-rtl.css +39 -51
- package/build-style/style.css +39 -51
- package/build-types/range-control/styles/range-control-styles.d.ts.map +1 -1
- package/build-types/tools-panel/styles.d.ts +1 -1
- package/build-types/tools-panel/styles.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/component.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel/hook.d.ts.map +1 -1
- package/build-types/tools-panel/tools-panel-header/component.d.ts.map +1 -1
- package/build-types/utils/hooks/index.d.ts +1 -0
- package/build-types/utils/hooks/use-combined-ref.d.ts +8 -0
- package/build-types/utils/hooks/use-combined-ref.d.ts.map +1 -0
- package/package.json +6 -6
- package/src/angle-picker-control/index.js +3 -1
- package/src/angle-picker-control/styles/angle-picker-control-styles.js +2 -2
- package/src/base-control/index.js +1 -1
- package/src/circular-option-picker/style.scss +3 -5
- package/src/color-edit/index.js +248 -274
- package/src/color-edit/style.scss +4 -45
- package/src/color-edit/styles.js +97 -0
- package/src/color-list-picker/index.js +5 -0
- package/src/color-list-picker/style.scss +4 -0
- package/src/color-palette/index.js +90 -26
- package/src/color-palette/style.scss +18 -0
- package/src/color-palette/styles.js +19 -0
- package/src/color-palette/test/__snapshots__/index.js.snap +448 -414
- package/src/color-picker/component.tsx +6 -17
- package/src/color-picker/picker.tsx +6 -4
- package/src/color-picker/test/index.js +0 -15
- package/src/duotone-picker/custom-duotone-bar.js +0 -1
- package/src/duotone-picker/duotone-picker.js +1 -0
- package/src/gradient-picker/index.js +79 -11
- package/src/heading/test/__snapshots__/index.js.snap +1 -1
- package/src/index.native.js +1 -0
- package/src/mobile/bottom-sheet/cell.native.js +7 -2
- package/src/mobile/bottom-sheet/cellStyles.android.scss +5 -1
- package/src/mobile/bottom-sheet/cellStyles.ios.scss +5 -1
- package/src/mobile/bottom-sheet/link-cell.native.js +10 -3
- package/src/mobile/link-settings/image-link-destinations-screen.native.js +148 -0
- package/src/mobile/link-settings/index.native.js +3 -2
- package/src/mobile/link-settings/link-settings-navigation.native.js +1 -0
- package/src/mobile/link-settings/link-settings-screen.native.js +6 -2
- package/src/mobile/link-settings/style.native.scss +17 -0
- package/src/mobile/picker/index.android.js +2 -1
- package/src/modal/README.md +8 -0
- package/src/modal/index.js +60 -45
- package/src/modal/style.scss +5 -0
- package/src/navigation/group/index.js +1 -2
- package/src/navigation/menu/menu-title-search.js +11 -26
- package/src/navigation/menu/menu-title.js +4 -4
- package/src/navigation/styles/navigation-styles.js +29 -52
- package/src/popover/index.js +2 -2
- package/src/range-control/styles/range-control-styles.js +4 -1
- package/src/resizable-box/style.scss +5 -0
- package/src/search-control/index.js +47 -23
- package/src/style.scss +1 -0
- package/src/text/styles.js +1 -1
- package/src/text/test/__snapshots__/index.js.snap +2 -2
- package/src/tools-panel/stories/index.js +21 -19
- package/src/tools-panel/styles.ts +18 -26
- package/src/tools-panel/tools-panel/component.tsx +7 -4
- package/src/tools-panel/tools-panel/hook.ts +4 -1
- package/src/tools-panel/tools-panel-header/component.tsx +1 -0
- package/src/ui/control-label/test/__snapshots__/index.js.snap +3 -3
- package/src/ui/form-group/test/__snapshots__/index.js.snap +2 -2
- package/src/utils/hooks/index.js +1 -0
- package/src/utils/hooks/use-combined-ref.ts +29 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -14,24 +14,19 @@ import { COLORS, CONFIG } from '../utils';
|
|
|
14
14
|
import { space } from '../ui/utils/space';
|
|
15
15
|
|
|
16
16
|
const toolsPanelGrid = {
|
|
17
|
-
|
|
17
|
+
spacing: css`
|
|
18
18
|
column-gap: ${ space( 4 ) };
|
|
19
|
-
display: grid;
|
|
20
|
-
grid-template-columns: 1fr 1fr;
|
|
21
19
|
row-gap: ${ space( 6 ) };
|
|
22
20
|
`,
|
|
23
21
|
item: {
|
|
24
|
-
halfWidth: css`
|
|
25
|
-
grid-column: span 1;
|
|
26
|
-
`,
|
|
27
22
|
fullWidth: css`
|
|
28
|
-
grid-column:
|
|
23
|
+
grid-column: 1 / -1;
|
|
29
24
|
`,
|
|
30
25
|
},
|
|
31
26
|
};
|
|
32
27
|
|
|
33
28
|
export const ToolsPanel = css`
|
|
34
|
-
${ toolsPanelGrid.
|
|
29
|
+
${ toolsPanelGrid.spacing };
|
|
35
30
|
|
|
36
31
|
border-top: ${ CONFIG.borderWidth } solid ${ COLORS.gray[ 200 ] };
|
|
37
32
|
margin-top: -1px;
|
|
@@ -43,12 +38,17 @@ export const ToolsPanel = css`
|
|
|
43
38
|
* an inner dom element to be injected. The following rule allows for the
|
|
44
39
|
* CSS grid display to be re-established.
|
|
45
40
|
*/
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
41
|
+
|
|
42
|
+
export const ToolsPanelWithInnerWrapper = ( columns: number ) => {
|
|
43
|
+
return css`
|
|
44
|
+
> div:not( :first-of-type ) {
|
|
45
|
+
display: grid;
|
|
46
|
+
grid-template-columns: ${ `repeat( ${ columns }, 1fr )` };
|
|
47
|
+
${ toolsPanelGrid.spacing }
|
|
48
|
+
${ toolsPanelGrid.item.fullWidth }
|
|
49
|
+
}
|
|
50
|
+
`;
|
|
51
|
+
};
|
|
52
52
|
|
|
53
53
|
export const ToolsPanelHiddenInnerWrapper = css`
|
|
54
54
|
> div:not( :first-of-type ) {
|
|
@@ -69,14 +69,10 @@ export const ToolsPanelHeader = css`
|
|
|
69
69
|
*/
|
|
70
70
|
.components-dropdown-menu {
|
|
71
71
|
margin: ${ space( -1 ) } 0;
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
height: ${ space( 6 ) };
|
|
77
|
-
min-width: ${ space( 6 ) };
|
|
78
|
-
width: ${ space( 6 ) };
|
|
79
|
-
}
|
|
72
|
+
}
|
|
73
|
+
&&&& .components-dropdown-menu__toggle {
|
|
74
|
+
padding: 0;
|
|
75
|
+
min-width: ${ space( 6 ) };
|
|
80
76
|
}
|
|
81
77
|
`;
|
|
82
78
|
|
|
@@ -94,10 +90,6 @@ export const ToolsPanelHeading = css`
|
|
|
94
90
|
export const ToolsPanelItem = css`
|
|
95
91
|
${ toolsPanelGrid.item.fullWidth }
|
|
96
92
|
|
|
97
|
-
&.single-column {
|
|
98
|
-
${ toolsPanelGrid.item.halfWidth }
|
|
99
|
-
}
|
|
100
|
-
|
|
101
93
|
/* Clear spacing in and around controls added as panel items. */
|
|
102
94
|
/* Remove when they can be addressed via context system. */
|
|
103
95
|
& > div,
|
|
@@ -10,7 +10,7 @@ import type { Ref } from 'react';
|
|
|
10
10
|
import ToolsPanelHeader from '../tools-panel-header';
|
|
11
11
|
import { ToolsPanelContext } from '../context';
|
|
12
12
|
import { useToolsPanel } from './hook';
|
|
13
|
-
import {
|
|
13
|
+
import { Grid } from '../../grid';
|
|
14
14
|
import { contextConnect, WordPressComponentProps } from '../../ui/context';
|
|
15
15
|
import type { ToolsPanelProps } from '../types';
|
|
16
16
|
|
|
@@ -24,11 +24,14 @@ const ToolsPanel = (
|
|
|
24
24
|
panelContext,
|
|
25
25
|
resetAllItems,
|
|
26
26
|
toggleItem,
|
|
27
|
-
|
|
27
|
+
className,
|
|
28
28
|
} = useToolsPanel( props );
|
|
29
29
|
|
|
30
|
+
// Props are not directly passed through to avoid exposing Grid props
|
|
31
|
+
// until agreement has been reached on how ToolsPanel layout should be
|
|
32
|
+
// handled.
|
|
30
33
|
return (
|
|
31
|
-
<
|
|
34
|
+
<Grid columns={ 2 } className={ className } ref={ forwardedRef }>
|
|
32
35
|
<ToolsPanelContext.Provider value={ panelContext }>
|
|
33
36
|
<ToolsPanelHeader
|
|
34
37
|
label={ label }
|
|
@@ -37,7 +40,7 @@ const ToolsPanel = (
|
|
|
37
40
|
/>
|
|
38
41
|
{ children }
|
|
39
42
|
</ToolsPanelContext.Provider>
|
|
40
|
-
</
|
|
43
|
+
</Grid>
|
|
41
44
|
);
|
|
42
45
|
};
|
|
43
46
|
|
|
@@ -17,6 +17,8 @@ import type {
|
|
|
17
17
|
ToolsPanelProps,
|
|
18
18
|
} from '../types';
|
|
19
19
|
|
|
20
|
+
const DEFAULT_COLUMNS = 2;
|
|
21
|
+
|
|
20
22
|
const generateMenuItems = ( {
|
|
21
23
|
panelItems,
|
|
22
24
|
shouldReset,
|
|
@@ -133,7 +135,8 @@ export function useToolsPanel(
|
|
|
133
135
|
const hasDefaultMenuItems =
|
|
134
136
|
menuItems?.default && !! Object.keys( menuItems?.default ).length;
|
|
135
137
|
const wrapperStyle =
|
|
136
|
-
hasInnerWrapper &&
|
|
138
|
+
hasInnerWrapper &&
|
|
139
|
+
styles.ToolsPanelWithInnerWrapper( DEFAULT_COLUMNS );
|
|
137
140
|
const emptyStyle =
|
|
138
141
|
! hasDefaultMenuItems &&
|
|
139
142
|
areAllOptionalControlsHidden &&
|
|
@@ -14,7 +14,7 @@ exports[`props should render correctly 1`] = `
|
|
|
14
14
|
overflow: hidden;
|
|
15
15
|
text-overflow: ellipsis;
|
|
16
16
|
white-space: nowrap;
|
|
17
|
-
color: #
|
|
17
|
+
color: #1e1e1e;
|
|
18
18
|
line-height: 1.2;
|
|
19
19
|
margin: 0;
|
|
20
20
|
font-size: calc((13 / 13) * 13px);
|
|
@@ -56,7 +56,7 @@ exports[`props should render no truncate 1`] = `
|
|
|
56
56
|
padding-top: calc((36px - calc(13px * 1.2)) / 2);
|
|
57
57
|
padding-bottom: calc((36px - calc(13px * 1.2)) / 2);
|
|
58
58
|
padding-top: calc((36px - calc(13px * 1.2)) / 2);
|
|
59
|
-
color: #
|
|
59
|
+
color: #1e1e1e;
|
|
60
60
|
line-height: 1.2;
|
|
61
61
|
margin: 0;
|
|
62
62
|
font-size: calc((13 / 13) * 13px);
|
|
@@ -102,7 +102,7 @@ exports[`props should render size 1`] = `
|
|
|
102
102
|
overflow: hidden;
|
|
103
103
|
text-overflow: ellipsis;
|
|
104
104
|
white-space: nowrap;
|
|
105
|
-
color: #
|
|
105
|
+
color: #1e1e1e;
|
|
106
106
|
line-height: 1.2;
|
|
107
107
|
margin: 0;
|
|
108
108
|
font-size: calc((13 / 13) * 13px);
|
|
@@ -14,7 +14,7 @@ exports[`props should render alignLabel 1`] = `
|
|
|
14
14
|
padding-top: calc((36px - calc(13px * 1.2)) / 2);
|
|
15
15
|
padding-bottom: calc((36px - calc(13px * 1.2)) / 2);
|
|
16
16
|
padding-top: calc((36px - calc(13px * 1.2)) / 2);
|
|
17
|
-
color: #
|
|
17
|
+
color: #1e1e1e;
|
|
18
18
|
line-height: 1.2;
|
|
19
19
|
margin: 0;
|
|
20
20
|
font-size: calc((13 / 13) * 13px);
|
|
@@ -72,7 +72,7 @@ exports[`props should render vertically 1`] = `
|
|
|
72
72
|
padding-top: calc((36px - calc(13px * 1.2)) / 2);
|
|
73
73
|
padding-bottom: calc((36px - calc(13px * 1.2)) / 2);
|
|
74
74
|
padding-top: calc((36px - calc(13px * 1.2)) / 2);
|
|
75
|
-
color: #
|
|
75
|
+
color: #1e1e1e;
|
|
76
76
|
line-height: 1.2;
|
|
77
77
|
margin: 0;
|
|
78
78
|
font-size: calc((13 / 13) * 13px);
|
package/src/utils/hooks/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { default as useControlledState } from './use-controlled-state';
|
|
2
2
|
export { default as useUpdateEffect } from './use-update-effect';
|
|
3
|
+
export { useCombinedRef } from './use-combined-ref';
|
|
3
4
|
export { useControlledValue } from './use-controlled-value';
|
|
4
5
|
export { useCx } from './use-cx';
|
|
5
6
|
export { useLatestRef } from './use-latest-ref';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WordPress dependencies
|
|
3
|
+
*/
|
|
4
|
+
import { useRef, useEffect } from '@wordpress/element';
|
|
5
|
+
/**
|
|
6
|
+
* External dependencies
|
|
7
|
+
*/
|
|
8
|
+
// eslint-disable-next-line no-restricted-imports
|
|
9
|
+
import type { MutableRefObject, RefCallback } from 'react';
|
|
10
|
+
|
|
11
|
+
type Ref< T > = MutableRefObject< T | null > | RefCallback< T | null >;
|
|
12
|
+
|
|
13
|
+
export function useCombinedRef< T extends HTMLElement >( ...refs: Ref< T >[] ) {
|
|
14
|
+
const targetRef = useRef( null );
|
|
15
|
+
|
|
16
|
+
useEffect( () => {
|
|
17
|
+
refs.forEach( ( ref ) => {
|
|
18
|
+
if ( ! ref ) return;
|
|
19
|
+
|
|
20
|
+
if ( typeof ref === 'function' ) {
|
|
21
|
+
ref( targetRef.current );
|
|
22
|
+
} else {
|
|
23
|
+
ref.current = targetRef.current;
|
|
24
|
+
}
|
|
25
|
+
} );
|
|
26
|
+
}, [ refs ] );
|
|
27
|
+
|
|
28
|
+
return targetRef;
|
|
29
|
+
}
|