@wordpress/components 25.12.0 → 25.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/build/angle-picker-control/index.js +0 -1
  3. package/build/angle-picker-control/index.js.map +1 -1
  4. package/build/custom-select-control-v2/index.js +87 -0
  5. package/build/custom-select-control-v2/index.js.map +1 -0
  6. package/build/custom-select-control-v2/styles.js +85 -0
  7. package/build/custom-select-control-v2/styles.js.map +1 -0
  8. package/build/custom-select-control-v2/types.js +6 -0
  9. package/build/custom-select-control-v2/types.js.map +1 -0
  10. package/build/dropdown-menu-v2-ariakit/index.js +49 -20
  11. package/build/dropdown-menu-v2-ariakit/index.js.map +1 -1
  12. package/build/dropdown-menu-v2-ariakit/styles.js +82 -59
  13. package/build/dropdown-menu-v2-ariakit/styles.js.map +1 -1
  14. package/build/dropdown-menu-v2-ariakit/types.js.map +1 -1
  15. package/build/form-token-field/index.js +6 -2
  16. package/build/form-token-field/index.js.map +1 -1
  17. package/build/form-token-field/token-input.js.map +1 -1
  18. package/build/form-token-field/types.js.map +1 -1
  19. package/build/heading/hook.js +6 -3
  20. package/build/heading/hook.js.map +1 -1
  21. package/build/heading/types.js.map +1 -1
  22. package/build/mobile/utils/alignments.native.js +1 -1
  23. package/build/mobile/utils/alignments.native.js.map +1 -1
  24. package/build/private-apis.js +3 -2
  25. package/build/private-apis.js.map +1 -1
  26. package/build/slot-fill/types.js.map +1 -1
  27. package/build/tabs/index.js +6 -4
  28. package/build/tabs/index.js.map +1 -1
  29. package/build/tabs/tab.js +2 -2
  30. package/build/tabs/tab.js.map +1 -1
  31. package/build/tabs/tabpanel.js +1 -1
  32. package/build/tabs/tabpanel.js.map +1 -1
  33. package/build/text/types.js.map +1 -1
  34. package/build/tools-panel/tools-panel-item/hook.js +5 -1
  35. package/build/tools-panel/tools-panel-item/hook.js.map +1 -1
  36. package/build-module/angle-picker-control/index.js +0 -1
  37. package/build-module/angle-picker-control/index.js.map +1 -1
  38. package/build-module/custom-select-control-v2/index.js +74 -0
  39. package/build-module/custom-select-control-v2/index.js.map +1 -0
  40. package/build-module/custom-select-control-v2/styles.js +71 -0
  41. package/build-module/custom-select-control-v2/styles.js.map +1 -0
  42. package/build-module/custom-select-control-v2/types.js +2 -0
  43. package/build-module/custom-select-control-v2/types.js.map +1 -0
  44. package/build-module/dropdown-menu-v2-ariakit/index.js +46 -18
  45. package/build-module/dropdown-menu-v2-ariakit/index.js.map +1 -1
  46. package/build-module/dropdown-menu-v2-ariakit/styles.js +69 -40
  47. package/build-module/dropdown-menu-v2-ariakit/styles.js.map +1 -1
  48. package/build-module/dropdown-menu-v2-ariakit/types.js.map +1 -1
  49. package/build-module/form-token-field/index.js +6 -2
  50. package/build-module/form-token-field/index.js.map +1 -1
  51. package/build-module/form-token-field/token-input.js.map +1 -1
  52. package/build-module/form-token-field/types.js.map +1 -1
  53. package/build-module/heading/hook.js +6 -3
  54. package/build-module/heading/hook.js.map +1 -1
  55. package/build-module/heading/types.js.map +1 -1
  56. package/build-module/mobile/utils/alignments.native.js +1 -1
  57. package/build-module/mobile/utils/alignments.native.js.map +1 -1
  58. package/build-module/private-apis.js +4 -3
  59. package/build-module/private-apis.js.map +1 -1
  60. package/build-module/slot-fill/types.js.map +1 -1
  61. package/build-module/tabs/index.js +7 -5
  62. package/build-module/tabs/index.js.map +1 -1
  63. package/build-module/tabs/tab.js +4 -4
  64. package/build-module/tabs/tab.js.map +1 -1
  65. package/build-module/tabs/tabpanel.js +3 -3
  66. package/build-module/tabs/tabpanel.js.map +1 -1
  67. package/build-module/text/types.js.map +1 -1
  68. package/build-module/tools-panel/tools-panel-item/hook.js +6 -2
  69. package/build-module/tools-panel/tools-panel-item/hook.js.map +1 -1
  70. package/build-style/style-rtl.css +31 -5
  71. package/build-style/style.css +31 -5
  72. package/build-types/angle-picker-control/index.d.ts.map +1 -1
  73. package/build-types/box-control/stories/index.story.d.ts +1944 -0
  74. package/build-types/box-control/stories/index.story.d.ts.map +1 -0
  75. package/build-types/color-palette/styles.d.ts +4 -1
  76. package/build-types/color-palette/styles.d.ts.map +1 -1
  77. package/build-types/custom-select-control-v2/index.d.ts +6 -0
  78. package/build-types/custom-select-control-v2/index.d.ts.map +1 -0
  79. package/build-types/custom-select-control-v2/stories/index.story.d.ts +19 -0
  80. package/build-types/custom-select-control-v2/stories/index.story.d.ts.map +1 -0
  81. package/build-types/custom-select-control-v2/styles.d.ts +47 -0
  82. package/build-types/custom-select-control-v2/styles.d.ts.map +1 -0
  83. package/build-types/custom-select-control-v2/types.d.ts +57 -0
  84. package/build-types/custom-select-control-v2/types.d.ts.map +1 -0
  85. package/build-types/date-time/date/styles.d.ts +4 -1
  86. package/build-types/date-time/date/styles.d.ts.map +1 -1
  87. package/build-types/dropdown-menu-v2-ariakit/index.d.ts +11 -2
  88. package/build-types/dropdown-menu-v2-ariakit/index.d.ts.map +1 -1
  89. package/build-types/dropdown-menu-v2-ariakit/stories/index.story.d.ts.map +1 -1
  90. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts +26 -18
  91. package/build-types/dropdown-menu-v2-ariakit/styles.d.ts.map +1 -1
  92. package/build-types/dropdown-menu-v2-ariakit/types.d.ts +0 -6
  93. package/build-types/dropdown-menu-v2-ariakit/types.d.ts.map +1 -1
  94. package/build-types/form-token-field/index.d.ts.map +1 -1
  95. package/build-types/form-token-field/token-input.d.ts.map +1 -1
  96. package/build-types/form-token-field/types.d.ts +1 -1
  97. package/build-types/form-token-field/types.d.ts.map +1 -1
  98. package/build-types/heading/component.d.ts +4 -1
  99. package/build-types/heading/component.d.ts.map +1 -1
  100. package/build-types/heading/hook.d.ts.map +1 -1
  101. package/build-types/heading/types.d.ts +20 -1
  102. package/build-types/heading/types.d.ts.map +1 -1
  103. package/build-types/navigation/styles/navigation-styles.d.ts +4 -1
  104. package/build-types/navigation/styles/navigation-styles.d.ts.map +1 -1
  105. package/build-types/palette-edit/styles.d.ts +4 -1
  106. package/build-types/palette-edit/styles.d.ts.map +1 -1
  107. package/build-types/private-apis.d.ts.map +1 -1
  108. package/build-types/slot-fill/bubbles-virtually/slot.d.ts +1 -1
  109. package/build-types/slot-fill/types.d.ts +16 -6
  110. package/build-types/slot-fill/types.d.ts.map +1 -1
  111. package/build-types/tabs/index.d.ts +1 -0
  112. package/build-types/tabs/index.d.ts.map +1 -1
  113. package/build-types/tabs/stories/index.story.d.ts.map +1 -1
  114. package/build-types/text/types.d.ts +15 -2
  115. package/build-types/text/types.d.ts.map +1 -1
  116. package/build-types/tools-panel/tools-panel-item/hook.d.ts.map +1 -1
  117. package/package.json +19 -19
  118. package/src/angle-picker-control/index.tsx +0 -1
  119. package/src/box-control/stories/index.story.tsx +82 -0
  120. package/src/button/style.scss +10 -2
  121. package/src/combobox-control/README.md +1 -3
  122. package/src/custom-select-control-v2/README.md +73 -0
  123. package/src/custom-select-control-v2/index.tsx +99 -0
  124. package/src/custom-select-control-v2/stories/index.story.tsx +149 -0
  125. package/src/custom-select-control-v2/styles.ts +76 -0
  126. package/src/custom-select-control-v2/types.ts +63 -0
  127. package/src/dropdown-menu-v2-ariakit/README.md +19 -5
  128. package/src/dropdown-menu-v2-ariakit/index.tsx +85 -36
  129. package/src/dropdown-menu-v2-ariakit/stories/index.story.tsx +204 -90
  130. package/src/dropdown-menu-v2-ariakit/styles.ts +153 -117
  131. package/src/dropdown-menu-v2-ariakit/test/index.tsx +5 -10
  132. package/src/dropdown-menu-v2-ariakit/types.ts +0 -7
  133. package/src/form-toggle/style.scss +37 -7
  134. package/src/form-token-field/index.tsx +11 -3
  135. package/src/form-token-field/token-input.tsx +1 -3
  136. package/src/form-token-field/types.ts +1 -0
  137. package/src/heading/README.md +6 -1
  138. package/src/heading/hook.ts +6 -3
  139. package/src/heading/types.ts +23 -1
  140. package/src/mobile/utils/alignments.native.js +1 -0
  141. package/src/navigable-container/README.md +1 -1
  142. package/src/private-apis.ts +4 -2
  143. package/src/slot-fill/README.md +1 -1
  144. package/src/slot-fill/types.ts +18 -6
  145. package/src/tabs/index.tsx +12 -2
  146. package/src/tabs/stories/index.story.tsx +8 -0
  147. package/src/tabs/tab.tsx +4 -4
  148. package/src/tabs/tabpanel.tsx +3 -3
  149. package/src/tabs/test/index.tsx +19 -0
  150. package/src/text/README.md +5 -1
  151. package/src/text/types.ts +15 -2
  152. package/src/toggle-control/README.md +2 -2
  153. package/src/tools-panel/tools-panel-item/hook.ts +11 -2
  154. package/tsconfig.tsbuildinfo +1 -1
  155. package/src/box-control/stories/index.story.js +0 -75
@@ -9,7 +9,7 @@ import * as Ariakit from '@ariakit/react';
9
9
  * WordPress dependencies
10
10
  */
11
11
  import { useInstanceId } from '@wordpress/compose';
12
- import { useLayoutEffect, useRef } from '@wordpress/element';
12
+ import { useLayoutEffect, useMemo, useRef } from '@wordpress/element';
13
13
 
14
14
  /**
15
15
  * Internal dependencies
@@ -128,15 +128,17 @@ function Tabs({
128
128
  setSelectedId(null);
129
129
  }
130
130
  }, [isControlled, selectedId, selectedTab, selectedTabId, setSelectedId]);
131
+ const contextValue = useMemo(() => ({
132
+ store,
133
+ instanceId
134
+ }), [store, instanceId]);
131
135
  return createElement(TabsContext.Provider, {
132
- value: {
133
- store,
134
- instanceId
135
- }
136
+ value: contextValue
136
137
  }, children);
137
138
  }
138
139
  Tabs.TabList = TabList;
139
140
  Tabs.Tab = Tab;
140
141
  Tabs.TabPanel = TabPanel;
142
+ Tabs.Context = TabsContext;
141
143
  export default Tabs;
142
144
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["Ariakit","useInstanceId","useLayoutEffect","useRef","TabsContext","Tab","TabList","TabPanel","Tabs","selectOnMove","initialTabId","orientation","onSelect","children","selectedTabId","instanceId","store","useTabStore","defaultSelectedId","setSelectedId","selectedId","strippedDownId","replace","isControlled","undefined","items","useState","tabsHavePopulated","length","current","selectedTab","find","item","id","firstEnabledTab","dimmed","initialTab","createElement","Provider","value"],"sources":["@wordpress/components/src/tabs/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useLayoutEffect, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabsProps } from './types';\nimport { TabsContext } from './context';\nimport { Tab } from './tab';\nimport { TabList } from './tablist';\nimport { TabPanel } from './tabpanel';\n\nfunction Tabs( {\n\tselectOnMove = true,\n\tinitialTabId,\n\torientation = 'horizontal',\n\tonSelect,\n\tchildren,\n\tselectedTabId,\n}: TabsProps ) {\n\tconst instanceId = useInstanceId( Tabs, 'tabs' );\n\tconst store = Ariakit.useTabStore( {\n\t\tselectOnMove,\n\t\torientation,\n\t\tdefaultSelectedId: initialTabId && `${ instanceId }-${ initialTabId }`,\n\t\tsetSelectedId: ( selectedId ) => {\n\t\t\tconst strippedDownId =\n\t\t\t\ttypeof selectedId === 'string'\n\t\t\t\t\t? selectedId.replace( `${ instanceId }-`, '' )\n\t\t\t\t\t: selectedId;\n\t\t\tonSelect?.( strippedDownId );\n\t\t},\n\t\tselectedId: selectedTabId && `${ instanceId }-${ selectedTabId }`,\n\t} );\n\n\tconst isControlled = selectedTabId !== undefined;\n\n\tconst { items, selectedId } = store.useState();\n\tconst { setSelectedId } = store;\n\n\t// Keep track of whether tabs have been populated. This is used to prevent\n\t// certain effects from firing too early while tab data and relevant\n\t// variables are undefined during the initial render.\n\tconst tabsHavePopulated = useRef( false );\n\tif ( items.length > 0 ) {\n\t\ttabsHavePopulated.current = true;\n\t}\n\n\tconst selectedTab = items.find( ( item ) => item.id === selectedId );\n\tconst firstEnabledTab = items.find( ( item ) => {\n\t\t// Ariakit internally refers to disabled tabs as `dimmed`.\n\t\treturn ! item.dimmed;\n\t} );\n\tconst initialTab = items.find(\n\t\t( item ) => item.id === `${ instanceId }-${ initialTabId }`\n\t);\n\n\t// Handle selecting the initial tab.\n\tuseLayoutEffect( () => {\n\t\tif ( isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for the denoted initial tab to be declared before making a\n\t\t// selection. This ensures that if a tab is declared lazily it can\n\t\t// still receive initial selection, as well as ensuring no tab is\n\t\t// selected if an invalid `initialTabId` is provided.\n\t\tif ( initialTabId && ! initialTab ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the currently selected tab is missing (i.e. removed from the DOM),\n\t\t// fall back to the initial tab or the first enabled tab if there is\n\t\t// one. Otherwise, no tab should be selected.\n\t\tif ( ! items.find( ( item ) => item.id === selectedId ) ) {\n\t\t\tif ( initialTab && ! initialTab.dimmed ) {\n\t\t\t\tsetSelectedId( initialTab?.id );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( firstEnabledTab ) {\n\t\t\t\tsetSelectedId( firstEnabledTab.id );\n\t\t\t} else if ( tabsHavePopulated.current ) {\n\t\t\t\tsetSelectedId( null );\n\t\t\t}\n\t\t}\n\t}, [\n\t\tfirstEnabledTab,\n\t\tinitialTab,\n\t\tinitialTabId,\n\t\tisControlled,\n\t\titems,\n\t\tselectedId,\n\t\tsetSelectedId,\n\t] );\n\n\t// Handle the currently selected tab becoming disabled.\n\tuseLayoutEffect( () => {\n\t\tif ( ! selectedTab?.dimmed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In controlled mode, we trust that disabling tabs is done\n\t\t// intentionally, and don't select a new tab automatically.\n\t\tif ( isControlled ) {\n\t\t\tsetSelectedId( null );\n\t\t\treturn;\n\t\t}\n\n\t\t// If the currently selected tab becomes disabled, fall back to the\n\t\t// `initialTabId` if possible. Otherwise select the first\n\t\t// enabled tab (if there is one).\n\t\tif ( initialTab && ! initialTab.dimmed ) {\n\t\t\tsetSelectedId( initialTab.id );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( firstEnabledTab ) {\n\t\t\tsetSelectedId( firstEnabledTab.id );\n\t\t}\n\t}, [\n\t\tfirstEnabledTab,\n\t\tinitialTab,\n\t\tisControlled,\n\t\tselectedTab?.dimmed,\n\t\tsetSelectedId,\n\t] );\n\n\t// Clear `selectedId` if the active tab is removed from the DOM in controlled mode.\n\tuseLayoutEffect( () => {\n\t\tif ( ! isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once the tabs have populated, if the `selectedTabId` still can't be\n\t\t// found, clear the selection.\n\t\tif ( tabsHavePopulated.current && !! selectedTabId && ! selectedTab ) {\n\t\t\tsetSelectedId( null );\n\t\t}\n\t}, [\n\t\tisControlled,\n\t\tselectedId,\n\t\tselectedTab,\n\t\tselectedTabId,\n\t\tsetSelectedId,\n\t] );\n\n\treturn (\n\t\t<TabsContext.Provider value={ { store, instanceId } }>\n\t\t\t{ children }\n\t\t</TabsContext.Provider>\n\t);\n}\n\nTabs.TabList = TabList;\nTabs.Tab = Tab;\nTabs.TabPanel = TabPanel;\nexport default Tabs;\n"],"mappings":"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"}
1
+ {"version":3,"names":["Ariakit","useInstanceId","useLayoutEffect","useMemo","useRef","TabsContext","Tab","TabList","TabPanel","Tabs","selectOnMove","initialTabId","orientation","onSelect","children","selectedTabId","instanceId","store","useTabStore","defaultSelectedId","setSelectedId","selectedId","strippedDownId","replace","isControlled","undefined","items","useState","tabsHavePopulated","length","current","selectedTab","find","item","id","firstEnabledTab","dimmed","initialTab","contextValue","createElement","Provider","value","Context"],"sources":["@wordpress/components/src/tabs/index.tsx"],"sourcesContent":["/**\n * External dependencies\n */\n// eslint-disable-next-line no-restricted-imports\nimport * as Ariakit from '@ariakit/react';\n\n/**\n * WordPress dependencies\n */\nimport { useInstanceId } from '@wordpress/compose';\nimport { useLayoutEffect, useMemo, useRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabsProps } from './types';\nimport { TabsContext } from './context';\nimport { Tab } from './tab';\nimport { TabList } from './tablist';\nimport { TabPanel } from './tabpanel';\n\nfunction Tabs( {\n\tselectOnMove = true,\n\tinitialTabId,\n\torientation = 'horizontal',\n\tonSelect,\n\tchildren,\n\tselectedTabId,\n}: TabsProps ) {\n\tconst instanceId = useInstanceId( Tabs, 'tabs' );\n\tconst store = Ariakit.useTabStore( {\n\t\tselectOnMove,\n\t\torientation,\n\t\tdefaultSelectedId: initialTabId && `${ instanceId }-${ initialTabId }`,\n\t\tsetSelectedId: ( selectedId ) => {\n\t\t\tconst strippedDownId =\n\t\t\t\ttypeof selectedId === 'string'\n\t\t\t\t\t? selectedId.replace( `${ instanceId }-`, '' )\n\t\t\t\t\t: selectedId;\n\t\t\tonSelect?.( strippedDownId );\n\t\t},\n\t\tselectedId: selectedTabId && `${ instanceId }-${ selectedTabId }`,\n\t} );\n\n\tconst isControlled = selectedTabId !== undefined;\n\n\tconst { items, selectedId } = store.useState();\n\tconst { setSelectedId } = store;\n\n\t// Keep track of whether tabs have been populated. This is used to prevent\n\t// certain effects from firing too early while tab data and relevant\n\t// variables are undefined during the initial render.\n\tconst tabsHavePopulated = useRef( false );\n\tif ( items.length > 0 ) {\n\t\ttabsHavePopulated.current = true;\n\t}\n\n\tconst selectedTab = items.find( ( item ) => item.id === selectedId );\n\tconst firstEnabledTab = items.find( ( item ) => {\n\t\t// Ariakit internally refers to disabled tabs as `dimmed`.\n\t\treturn ! item.dimmed;\n\t} );\n\tconst initialTab = items.find(\n\t\t( item ) => item.id === `${ instanceId }-${ initialTabId }`\n\t);\n\n\t// Handle selecting the initial tab.\n\tuseLayoutEffect( () => {\n\t\tif ( isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Wait for the denoted initial tab to be declared before making a\n\t\t// selection. This ensures that if a tab is declared lazily it can\n\t\t// still receive initial selection, as well as ensuring no tab is\n\t\t// selected if an invalid `initialTabId` is provided.\n\t\tif ( initialTabId && ! initialTab ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If the currently selected tab is missing (i.e. removed from the DOM),\n\t\t// fall back to the initial tab or the first enabled tab if there is\n\t\t// one. Otherwise, no tab should be selected.\n\t\tif ( ! items.find( ( item ) => item.id === selectedId ) ) {\n\t\t\tif ( initialTab && ! initialTab.dimmed ) {\n\t\t\t\tsetSelectedId( initialTab?.id );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( firstEnabledTab ) {\n\t\t\t\tsetSelectedId( firstEnabledTab.id );\n\t\t\t} else if ( tabsHavePopulated.current ) {\n\t\t\t\tsetSelectedId( null );\n\t\t\t}\n\t\t}\n\t}, [\n\t\tfirstEnabledTab,\n\t\tinitialTab,\n\t\tinitialTabId,\n\t\tisControlled,\n\t\titems,\n\t\tselectedId,\n\t\tsetSelectedId,\n\t] );\n\n\t// Handle the currently selected tab becoming disabled.\n\tuseLayoutEffect( () => {\n\t\tif ( ! selectedTab?.dimmed ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// In controlled mode, we trust that disabling tabs is done\n\t\t// intentionally, and don't select a new tab automatically.\n\t\tif ( isControlled ) {\n\t\t\tsetSelectedId( null );\n\t\t\treturn;\n\t\t}\n\n\t\t// If the currently selected tab becomes disabled, fall back to the\n\t\t// `initialTabId` if possible. Otherwise select the first\n\t\t// enabled tab (if there is one).\n\t\tif ( initialTab && ! initialTab.dimmed ) {\n\t\t\tsetSelectedId( initialTab.id );\n\t\t\treturn;\n\t\t}\n\n\t\tif ( firstEnabledTab ) {\n\t\t\tsetSelectedId( firstEnabledTab.id );\n\t\t}\n\t}, [\n\t\tfirstEnabledTab,\n\t\tinitialTab,\n\t\tisControlled,\n\t\tselectedTab?.dimmed,\n\t\tsetSelectedId,\n\t] );\n\n\t// Clear `selectedId` if the active tab is removed from the DOM in controlled mode.\n\tuseLayoutEffect( () => {\n\t\tif ( ! isControlled ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once the tabs have populated, if the `selectedTabId` still can't be\n\t\t// found, clear the selection.\n\t\tif ( tabsHavePopulated.current && !! selectedTabId && ! selectedTab ) {\n\t\t\tsetSelectedId( null );\n\t\t}\n\t}, [\n\t\tisControlled,\n\t\tselectedId,\n\t\tselectedTab,\n\t\tselectedTabId,\n\t\tsetSelectedId,\n\t] );\n\n\tconst contextValue = useMemo(\n\t\t() => ( {\n\t\t\tstore,\n\t\t\tinstanceId,\n\t\t} ),\n\t\t[ store, instanceId ]\n\t);\n\n\treturn (\n\t\t<TabsContext.Provider value={ contextValue }>\n\t\t\t{ children }\n\t\t</TabsContext.Provider>\n\t);\n}\n\nTabs.TabList = TabList;\nTabs.Tab = Tab;\nTabs.TabPanel = TabPanel;\nTabs.Context = TabsContext;\n\nexport default Tabs;\n"],"mappings":"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"}
@@ -3,14 +3,14 @@ import { createElement } from "react";
3
3
  * WordPress dependencies
4
4
  */
5
5
 
6
- import { useContext, forwardRef } from '@wordpress/element';
6
+ import { forwardRef } from '@wordpress/element';
7
7
 
8
8
  /**
9
9
  * Internal dependencies
10
10
  */
11
11
 
12
12
  import warning from '@wordpress/warning';
13
- import { TabsContext } from './context';
13
+ import { useTabsContext } from './context';
14
14
  import { Tab as StyledTab } from './styles';
15
15
  export const Tab = forwardRef(function Tab({
16
16
  children,
@@ -19,9 +19,9 @@ export const Tab = forwardRef(function Tab({
19
19
  render,
20
20
  ...otherProps
21
21
  }, ref) {
22
- const context = useContext(TabsContext);
22
+ const context = useTabsContext();
23
23
  if (!context) {
24
- typeof SCRIPT_DEBUG !== "undefined" && SCRIPT_DEBUG === true ? warning('`Tabs.TabList` must be wrapped in a `Tabs` component.') : void 0;
24
+ typeof SCRIPT_DEBUG !== "undefined" && SCRIPT_DEBUG === true ? warning('`Tabs.Tab` must be wrapped in a `Tabs` component.') : void 0;
25
25
  return null;
26
26
  }
27
27
  const {
@@ -1 +1 @@
1
- {"version":3,"names":["useContext","forwardRef","warning","TabsContext","Tab","StyledTab","children","id","disabled","render","otherProps","ref","context","SCRIPT_DEBUG","store","instanceId","instancedTabId","createElement"],"sources":["@wordpress/components/src/tabs/tab.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { useContext, forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabProps } from './types';\nimport warning from '@wordpress/warning';\nimport { TabsContext } from './context';\nimport { Tab as StyledTab } from './styles';\nimport type { WordPressComponentProps } from '../context';\n\nexport const Tab = forwardRef<\n\tHTMLButtonElement,\n\tWordPressComponentProps< TabProps, 'button', false >\n>( function Tab( { children, id, disabled, render, ...otherProps }, ref ) {\n\tconst context = useContext( TabsContext );\n\tif ( ! context ) {\n\t\twarning( '`Tabs.TabList` must be wrapped in a `Tabs` component.' );\n\t\treturn null;\n\t}\n\tconst { store, instanceId } = context;\n\tconst instancedTabId = `${ instanceId }-${ id }`;\n\treturn (\n\t\t<StyledTab\n\t\t\tref={ ref }\n\t\t\tstore={ store }\n\t\t\tid={ instancedTabId }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ render }\n\t\t\t{ ...otherProps }\n\t\t>\n\t\t\t{ children }\n\t\t</StyledTab>\n\t);\n} );\n"],"mappings":";AAAA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,UAAU,QAAQ,oBAAoB;;AAE3D;AACA;AACA;;AAEA,OAAOC,OAAO,MAAM,oBAAoB;AACxC,SAASC,WAAW,QAAQ,WAAW;AACvC,SAASC,GAAG,IAAIC,SAAS,QAAQ,UAAU;AAG3C,OAAO,MAAMD,GAAG,GAAGH,UAAU,CAG1B,SAASG,GAAGA,CAAE;EAAEE,QAAQ;EAAEC,EAAE;EAAEC,QAAQ;EAAEC,MAAM;EAAE,GAAGC;AAAW,CAAC,EAAEC,GAAG,EAAG;EACzE,MAAMC,OAAO,GAAGZ,UAAU,CAAEG,WAAY,CAAC;EACzC,IAAK,CAAES,OAAO,EAAG;IAChB,OAAAC,YAAA,oBAAAA,YAAA,YAAAX,OAAO,CAAE,uDAAwD,CAAC;IAClE,OAAO,IAAI;EACZ;EACA,MAAM;IAAEY,KAAK;IAAEC;EAAW,CAAC,GAAGH,OAAO;EACrC,MAAMI,cAAc,GAAI,GAAGD,UAAY,IAAIR,EAAI,EAAC;EAChD,OACCU,aAAA,CAACZ,SAAS;IACTM,GAAG,EAAGA,GAAK;IACXG,KAAK,EAAGA,KAAO;IACfP,EAAE,EAAGS,cAAgB;IACrBR,QAAQ,EAAGA,QAAU;IACrBC,MAAM,EAAGA,MAAQ;IAAA,GACZC;EAAU,GAEbJ,QACQ,CAAC;AAEd,CAAE,CAAC"}
1
+ {"version":3,"names":["forwardRef","warning","useTabsContext","Tab","StyledTab","children","id","disabled","render","otherProps","ref","context","SCRIPT_DEBUG","store","instanceId","instancedTabId","createElement"],"sources":["@wordpress/components/src/tabs/tab.tsx"],"sourcesContent":["/**\n * WordPress dependencies\n */\n\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabProps } from './types';\nimport warning from '@wordpress/warning';\nimport { useTabsContext } from './context';\nimport { Tab as StyledTab } from './styles';\nimport type { WordPressComponentProps } from '../context';\n\nexport const Tab = forwardRef<\n\tHTMLButtonElement,\n\tWordPressComponentProps< TabProps, 'button', false >\n>( function Tab( { children, id, disabled, render, ...otherProps }, ref ) {\n\tconst context = useTabsContext();\n\tif ( ! context ) {\n\t\twarning( '`Tabs.Tab` must be wrapped in a `Tabs` component.' );\n\t\treturn null;\n\t}\n\tconst { store, instanceId } = context;\n\tconst instancedTabId = `${ instanceId }-${ id }`;\n\treturn (\n\t\t<StyledTab\n\t\t\tref={ ref }\n\t\t\tstore={ store }\n\t\t\tid={ instancedTabId }\n\t\t\tdisabled={ disabled }\n\t\t\trender={ render }\n\t\t\t{ ...otherProps }\n\t\t>\n\t\t\t{ children }\n\t\t</StyledTab>\n\t);\n} );\n"],"mappings":";AAAA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;;AAEA,OAAOC,OAAO,MAAM,oBAAoB;AACxC,SAASC,cAAc,QAAQ,WAAW;AAC1C,SAASC,GAAG,IAAIC,SAAS,QAAQ,UAAU;AAG3C,OAAO,MAAMD,GAAG,GAAGH,UAAU,CAG1B,SAASG,GAAGA,CAAE;EAAEE,QAAQ;EAAEC,EAAE;EAAEC,QAAQ;EAAEC,MAAM;EAAE,GAAGC;AAAW,CAAC,EAAEC,GAAG,EAAG;EACzE,MAAMC,OAAO,GAAGT,cAAc,CAAC,CAAC;EAChC,IAAK,CAAES,OAAO,EAAG;IAChB,OAAAC,YAAA,oBAAAA,YAAA,YAAAX,OAAO,CAAE,mDAAoD,CAAC;IAC9D,OAAO,IAAI;EACZ;EACA,MAAM;IAAEY,KAAK;IAAEC;EAAW,CAAC,GAAGH,OAAO;EACrC,MAAMI,cAAc,GAAI,GAAGD,UAAY,IAAIR,EAAI,EAAC;EAChD,OACCU,aAAA,CAACZ,SAAS;IACTM,GAAG,EAAGA,GAAK;IACXG,KAAK,EAAGA,KAAO;IACfP,EAAE,EAAGS,cAAgB;IACrBR,QAAQ,EAAGA,QAAU;IACrBC,MAAM,EAAGA,MAAQ;IAAA,GACZC;EAAU,GAEbJ,QACQ,CAAC;AAEd,CAAE,CAAC"}
@@ -7,7 +7,7 @@ import { createElement } from "react";
7
7
  * WordPress dependencies
8
8
  */
9
9
 
10
- import { forwardRef, useContext } from '@wordpress/element';
10
+ import { forwardRef } from '@wordpress/element';
11
11
 
12
12
  /**
13
13
  * Internal dependencies
@@ -15,14 +15,14 @@ import { forwardRef, useContext } from '@wordpress/element';
15
15
 
16
16
  import { TabPanel as StyledTabPanel } from './styles';
17
17
  import warning from '@wordpress/warning';
18
- import { TabsContext } from './context';
18
+ import { useTabsContext } from './context';
19
19
  export const TabPanel = forwardRef(function TabPanel({
20
20
  children,
21
21
  id,
22
22
  focusable = true,
23
23
  ...otherProps
24
24
  }, ref) {
25
- const context = useContext(TabsContext);
25
+ const context = useTabsContext();
26
26
  if (!context) {
27
27
  typeof SCRIPT_DEBUG !== "undefined" && SCRIPT_DEBUG === true ? warning('`Tabs.TabPanel` must be wrapped in a `Tabs` component.') : void 0;
28
28
  return null;
@@ -1 +1 @@
1
- {"version":3,"names":["forwardRef","useContext","TabPanel","StyledTabPanel","warning","TabsContext","children","id","focusable","otherProps","ref","context","SCRIPT_DEBUG","store","instanceId","createElement"],"sources":["@wordpress/components/src/tabs/tabpanel.tsx"],"sourcesContent":["/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nimport { forwardRef, useContext } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabPanelProps } from './types';\nimport { TabPanel as StyledTabPanel } from './styles';\n\nimport warning from '@wordpress/warning';\nimport { TabsContext } from './context';\nimport type { WordPressComponentProps } from '../context';\n\nexport const TabPanel = forwardRef<\n\tHTMLDivElement,\n\tWordPressComponentProps< TabPanelProps, 'div', false >\n>( function TabPanel( { children, id, focusable = true, ...otherProps }, ref ) {\n\tconst context = useContext( TabsContext );\n\tif ( ! context ) {\n\t\twarning( '`Tabs.TabPanel` must be wrapped in a `Tabs` component.' );\n\t\treturn null;\n\t}\n\tconst { store, instanceId } = context;\n\n\treturn (\n\t\t<StyledTabPanel\n\t\t\tref={ ref }\n\t\t\tstore={ store }\n\t\t\tid={ `${ instanceId }-${ id }-view` }\n\t\t\tfocusable={ focusable }\n\t\t\t{ ...otherProps }\n\t\t>\n\t\t\t{ children }\n\t\t</StyledTabPanel>\n\t);\n} );\n"],"mappings":";AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,UAAU,QAAQ,oBAAoB;;AAE3D;AACA;AACA;;AAEA,SAASC,QAAQ,IAAIC,cAAc,QAAQ,UAAU;AAErD,OAAOC,OAAO,MAAM,oBAAoB;AACxC,SAASC,WAAW,QAAQ,WAAW;AAGvC,OAAO,MAAMH,QAAQ,GAAGF,UAAU,CAG/B,SAASE,QAAQA,CAAE;EAAEI,QAAQ;EAAEC,EAAE;EAAEC,SAAS,GAAG,IAAI;EAAE,GAAGC;AAAW,CAAC,EAAEC,GAAG,EAAG;EAC9E,MAAMC,OAAO,GAAGV,UAAU,CAAEI,WAAY,CAAC;EACzC,IAAK,CAAEM,OAAO,EAAG;IAChB,OAAAC,YAAA,oBAAAA,YAAA,YAAAR,OAAO,CAAE,wDAAyD,CAAC;IACnE,OAAO,IAAI;EACZ;EACA,MAAM;IAAES,KAAK;IAAEC;EAAW,CAAC,GAAGH,OAAO;EAErC,OACCI,aAAA,CAACZ,cAAc;IACdO,GAAG,EAAGA,GAAK;IACXG,KAAK,EAAGA,KAAO;IACfN,EAAE,EAAI,GAAGO,UAAY,IAAIP,EAAI,OAAQ;IACrCC,SAAS,EAAGA,SAAW;IAAA,GAClBC;EAAU,GAEbH,QACa,CAAC;AAEnB,CAAE,CAAC"}
1
+ {"version":3,"names":["forwardRef","TabPanel","StyledTabPanel","warning","useTabsContext","children","id","focusable","otherProps","ref","context","SCRIPT_DEBUG","store","instanceId","createElement"],"sources":["@wordpress/components/src/tabs/tabpanel.tsx"],"sourcesContent":["/**\n * External dependencies\n */\n\n/**\n * WordPress dependencies\n */\n\nimport { forwardRef } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport type { TabPanelProps } from './types';\nimport { TabPanel as StyledTabPanel } from './styles';\n\nimport warning from '@wordpress/warning';\nimport { useTabsContext } from './context';\nimport type { WordPressComponentProps } from '../context';\n\nexport const TabPanel = forwardRef<\n\tHTMLDivElement,\n\tWordPressComponentProps< TabPanelProps, 'div', false >\n>( function TabPanel( { children, id, focusable = true, ...otherProps }, ref ) {\n\tconst context = useTabsContext();\n\tif ( ! context ) {\n\t\twarning( '`Tabs.TabPanel` must be wrapped in a `Tabs` component.' );\n\t\treturn null;\n\t}\n\tconst { store, instanceId } = context;\n\n\treturn (\n\t\t<StyledTabPanel\n\t\t\tref={ ref }\n\t\t\tstore={ store }\n\t\t\tid={ `${ instanceId }-${ id }-view` }\n\t\t\tfocusable={ focusable }\n\t\t\t{ ...otherProps }\n\t\t>\n\t\t\t{ children }\n\t\t</StyledTabPanel>\n\t);\n} );\n"],"mappings":";AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAASA,UAAU,QAAQ,oBAAoB;;AAE/C;AACA;AACA;;AAEA,SAASC,QAAQ,IAAIC,cAAc,QAAQ,UAAU;AAErD,OAAOC,OAAO,MAAM,oBAAoB;AACxC,SAASC,cAAc,QAAQ,WAAW;AAG1C,OAAO,MAAMH,QAAQ,GAAGD,UAAU,CAG/B,SAASC,QAAQA,CAAE;EAAEI,QAAQ;EAAEC,EAAE;EAAEC,SAAS,GAAG,IAAI;EAAE,GAAGC;AAAW,CAAC,EAAEC,GAAG,EAAG;EAC9E,MAAMC,OAAO,GAAGN,cAAc,CAAC,CAAC;EAChC,IAAK,CAAEM,OAAO,EAAG;IAChB,OAAAC,YAAA,oBAAAA,YAAA,YAAAR,OAAO,CAAE,wDAAyD,CAAC;IACnE,OAAO,IAAI;EACZ;EACA,MAAM;IAAES,KAAK;IAAEC;EAAW,CAAC,GAAGH,OAAO;EAErC,OACCI,aAAA,CAACZ,cAAc;IACdO,GAAG,EAAGA,GAAK;IACXG,KAAK,EAAGA,KAAO;IACfN,EAAE,EAAI,GAAGO,UAAY,IAAIP,EAAI,OAAQ;IACrCC,SAAS,EAAGA,SAAW;IAAA,GAClBC;EAAU,GAEbH,QACa,CAAC;AAEnB,CAAE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"names":[],"sources":["@wordpress/components/src/text/types.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { TruncateProps } from '../truncate/types';\n\n/**\n * External dependencies\n */\nimport type { CSSProperties } from 'react';\nimport type { FindAllArgs } from 'highlight-words-core';\n\nexport type TextSize =\n\t| 'body'\n\t| 'caption'\n\t| 'footnote'\n\t| 'largeTitle'\n\t| 'subheadline'\n\t| 'title';\n\ntype TextVariant = 'muted';\n\ntype TextWeight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n\nexport interface Props extends TruncateProps {\n\t/**\n\t * Adjusts the text alignment.\n\t */\n\talign?: CSSProperties[ 'textAlign' ];\n\t/**\n\t * Automatically calculate the appropriate line-height value for contents that render text and Control elements (e.g. `TextInput`).\n\t */\n\tadjustLineHeightForInnerControls?: 'large' | 'medium' | 'small' | 'xSmall';\n\t/**\n\t * Adjusts the text color.\n\t */\n\tcolor?: CSSProperties[ 'color' ];\n\t/**\n\t * Adjusts the CSS display.\n\t */\n\tdisplay?: CSSProperties[ 'display' ];\n\t/**\n\t * Renders a destructive color.\n\t *\n\t * @default false\n\t */\n\tisDestructive?: boolean;\n\t/**\n\t * Escape characters in `highlightWords` which are meaningful in regular expressions.\n\t */\n\thighlightEscape?: boolean;\n\t/**\n\t * Determines if `highlightWords` should be case sensitive.\n\t */\n\thighlightCaseSensitive?: boolean;\n\t/**\n\t * Array of search words. String search terms are automatically cast to RegExps unless `highlightEscape` is true.\n\t */\n\thighlightSanitize?: FindAllArgs[ 'sanitize' ];\n\t/**\n\t * Sets `Text` to have `display: block`.\n\t */\n\tisBlock?: boolean;\n\t/**\n\t * Adjusts all text line-height based on the typography system.\n\t */\n\tlineHeight?: CSSProperties[ 'lineHeight' ];\n\t/**\n\t * The `Text` color can be adapted to a background color for optimal readability. `optimizeReadabilityFor` can accept CSS variables, in addition to standard CSS color values (e.g. Hex, RGB, HSL, etc...).\n\t */\n\toptimizeReadabilityFor?: CSSProperties[ 'color' ];\n\t/**\n\t * Adjusts text size based on the typography system. `Text` can render a wide range of font sizes, which are automatically calculated and adapted to the typography system. The `size` value can be a system preset, a `number`, or a custom unit value (`string`) such as `30em`.\n\t */\n\tsize?: CSSProperties[ 'fontSize' ] | TextSize;\n\t/**\n\t * Enables text truncation. When `truncate` is set,we are able to truncate the long text in a variety of ways.\n\t */\n\ttruncate?: boolean;\n\t/**\n\t * Uppercases the text content.\n\t */\n\tupperCase?: boolean;\n\t/**\n\t * Adjusts style variation of the text.\n\t */\n\tvariant?: TextVariant;\n\t/**\n\t * Adjusts font-weight of the text.\n\t */\n\tweight?: CSSProperties[ 'fontWeight' ] | TextWeight;\n\t/**\n\t * Adjusts letter-spacing of the text.\n\t */\n\tletterSpacing?: CSSProperties[ 'letterSpacing' ];\n\t/**\n\t * Letters or words within `Text` can be highlighted using `highlightWords`.\n\t */\n\thighlightWords?: string[];\n}\n"],"mappings":""}
1
+ {"version":3,"names":[],"sources":["@wordpress/components/src/text/types.ts"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport type { TruncateProps } from '../truncate/types';\n\n/**\n * External dependencies\n */\nimport type { CSSProperties } from 'react';\nimport type { FindAllArgs } from 'highlight-words-core';\n\nexport type TextSize =\n\t| 'body'\n\t| 'caption'\n\t| 'footnote'\n\t| 'largeTitle'\n\t| 'subheadline'\n\t| 'title';\n\ntype TextVariant = 'muted';\n\ntype TextWeight = 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900;\n\nexport interface Props extends TruncateProps {\n\t/**\n\t * Adjusts the text alignment.\n\t */\n\talign?: CSSProperties[ 'textAlign' ];\n\t/**\n\t * Automatically calculate the appropriate line-height value for contents that render text and Control elements (e.g. `TextInput`).\n\t */\n\tadjustLineHeightForInnerControls?: 'large' | 'medium' | 'small' | 'xSmall';\n\t/**\n\t * Adjusts the text color.\n\t */\n\tcolor?: CSSProperties[ 'color' ];\n\t/**\n\t * Adjusts the CSS display.\n\t */\n\tdisplay?: CSSProperties[ 'display' ];\n\t/**\n\t * Renders a destructive color.\n\t *\n\t * @default false\n\t */\n\tisDestructive?: boolean;\n\t/**\n\t * Escape characters in `highlightWords` which are meaningful in regular expressions.\n\t *\n\t * @default false\n\t */\n\thighlightEscape?: boolean;\n\t/**\n\t * Determines if `highlightWords` should be case sensitive.\n\t *\n\t * @default false\n\t */\n\thighlightCaseSensitive?: boolean;\n\t/**\n\t * Array of search words. String search terms are automatically cast to RegExps unless `highlightEscape` is true.\n\t */\n\thighlightSanitize?: FindAllArgs[ 'sanitize' ];\n\t/**\n\t * Sets `Text` to have `display: block`. Note: text truncation only works\n\t * when `isBlock` is `false`.\n\t *\n\t * @default false\n\t */\n\tisBlock?: boolean;\n\t/**\n\t * Adjusts all text line-height based on the typography system.\n\t */\n\tlineHeight?: CSSProperties[ 'lineHeight' ];\n\t/**\n\t * The `Text` color can be adapted to a background color for optimal readability. `optimizeReadabilityFor` can accept CSS variables, in addition to standard CSS color values (e.g. Hex, RGB, HSL, etc...).\n\t */\n\toptimizeReadabilityFor?: CSSProperties[ 'color' ];\n\t/**\n\t * Adjusts text size based on the typography system. `Text` can render a wide range of font sizes, which are automatically calculated and adapted to the typography system. The `size` value can be a system preset, a `number`, or a custom unit value (`string`) such as `30em`.\n\t */\n\tsize?: CSSProperties[ 'fontSize' ] | TextSize;\n\t/**\n\t * Enables text truncation. When `truncate` is set, we are able to truncate the long text in a variety of ways. Note: text truncation won't work if the `isBlock` property is set to `true`\n\t *\n\t * @default false\n\t */\n\ttruncate?: boolean;\n\t/**\n\t * Uppercases the text content.\n\t *\n\t * @default false\n\t */\n\tupperCase?: boolean;\n\t/**\n\t * Adjusts style variation of the text.\n\t */\n\tvariant?: TextVariant;\n\t/**\n\t * Adjusts font-weight of the text.\n\t *\n\t * @default 'normal'\n\t */\n\tweight?: CSSProperties[ 'fontWeight' ] | TextWeight;\n\t/**\n\t * Adjusts letter-spacing of the text.\n\t */\n\tletterSpacing?: CSSProperties[ 'letterSpacing' ];\n\t/**\n\t * Letters or words within `Text` can be highlighted using `highlightWords`.\n\t */\n\thighlightWords?: string[];\n}\n"],"mappings":""}
@@ -2,7 +2,7 @@
2
2
  * WordPress dependencies
3
3
  */
4
4
  import { usePrevious } from '@wordpress/compose';
5
- import { useCallback, useEffect, useMemo } from '@wordpress/element';
5
+ import { useCallback, useEffect, useLayoutEffect, useMemo } from '@wordpress/element';
6
6
 
7
7
  /**
8
8
  * Internal dependencies
@@ -46,7 +46,11 @@ export function useToolsPanelItem(props) {
46
46
 
47
47
  // Registering the panel item allows the panel to include it in its
48
48
  // automatically generated menu and determine its initial checked status.
49
- useEffect(() => {
49
+ //
50
+ // This is performed in a layout effect to ensure that the panel item
51
+ // is registered before it is rendered preventing a rendering glitch.
52
+ // See: https://github.com/WordPress/gutenberg/issues/56470
53
+ useLayoutEffect(() => {
50
54
  if (hasMatchingPanel && previousPanelId !== null) {
51
55
  registerPanelItem({
52
56
  hasValue: hasValueCallback,
@@ -1 +1 @@
1
- {"version":3,"names":["usePrevious","useCallback","useEffect","useMemo","styles","useToolsPanelContext","useContextSystem","useCx","noop","useToolsPanelItem","props","className","hasValue","isShownByDefault","label","panelId","resetAllFilter","onDeselect","onSelect","otherProps","currentPanelId","menuItems","registerResetAllFilter","deregisterResetAllFilter","registerPanelItem","deregisterPanelItem","flagItemCustomization","isResetting","shouldRenderPlaceholderItems","shouldRenderPlaceholder","firstDisplayedItem","lastDisplayedItem","__experimentalFirstVisibleItemClass","__experimentalLastVisibleItemClass","hasValueCallback","resetAllFilterCallback","previousPanelId","hasMatchingPanel","menuGroup","isMenuItemChecked","wasMenuItemChecked","isRegistered","undefined","isValueSet","wasValueSet","newValueSet","isShown","cx","classes","shouldApplyPlaceholderStyles","firstItemStyle","lastItemStyle","ToolsPanelItem","ToolsPanelItemPlaceholder"],"sources":["@wordpress/components/src/tools-panel/tools-panel-item/hook.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { usePrevious } from '@wordpress/compose';\nimport { useCallback, useEffect, useMemo } from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport * as styles from '../styles';\nimport { useToolsPanelContext } from '../context';\nimport type { WordPressComponentProps } from '../../context';\nimport { useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport type { ToolsPanelItemProps } from '../types';\n\nconst noop = () => {};\n\nexport function useToolsPanelItem(\n\tprops: WordPressComponentProps< ToolsPanelItemProps, 'div' >\n) {\n\tconst {\n\t\tclassName,\n\t\thasValue,\n\t\tisShownByDefault = false,\n\t\tlabel,\n\t\tpanelId,\n\t\tresetAllFilter = noop,\n\t\tonDeselect,\n\t\tonSelect,\n\t\t...otherProps\n\t} = useContextSystem( props, 'ToolsPanelItem' );\n\n\tconst {\n\t\tpanelId: currentPanelId,\n\t\tmenuItems,\n\t\tregisterResetAllFilter,\n\t\tderegisterResetAllFilter,\n\t\tregisterPanelItem,\n\t\tderegisterPanelItem,\n\t\tflagItemCustomization,\n\t\tisResetting,\n\t\tshouldRenderPlaceholderItems: shouldRenderPlaceholder,\n\t\tfirstDisplayedItem,\n\t\tlastDisplayedItem,\n\t\t__experimentalFirstVisibleItemClass,\n\t\t__experimentalLastVisibleItemClass,\n\t} = useToolsPanelContext();\n\n\tconst hasValueCallback = useCallback( hasValue, [ panelId, hasValue ] );\n\tconst resetAllFilterCallback = useCallback( resetAllFilter, [\n\t\tpanelId,\n\t\tresetAllFilter,\n\t] );\n\tconst previousPanelId = usePrevious( currentPanelId );\n\n\tconst hasMatchingPanel =\n\t\tcurrentPanelId === panelId || currentPanelId === null;\n\n\t// Registering the panel item allows the panel to include it in its\n\t// automatically generated menu and determine its initial checked status.\n\tuseEffect( () => {\n\t\tif ( hasMatchingPanel && previousPanelId !== null ) {\n\t\t\tregisterPanelItem( {\n\t\t\t\thasValue: hasValueCallback,\n\t\t\t\tisShownByDefault,\n\t\t\t\tlabel,\n\t\t\t\tpanelId,\n\t\t\t} );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (\n\t\t\t\t( previousPanelId === null && !! currentPanelId ) ||\n\t\t\t\tcurrentPanelId === panelId\n\t\t\t) {\n\t\t\t\tderegisterPanelItem( label );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tcurrentPanelId,\n\t\thasMatchingPanel,\n\t\tisShownByDefault,\n\t\tlabel,\n\t\thasValueCallback,\n\t\tpanelId,\n\t\tpreviousPanelId,\n\t\tregisterPanelItem,\n\t\tderegisterPanelItem,\n\t] );\n\n\tuseEffect( () => {\n\t\tif ( hasMatchingPanel ) {\n\t\t\tregisterResetAllFilter( resetAllFilterCallback );\n\t\t}\n\t\treturn () => {\n\t\t\tif ( hasMatchingPanel ) {\n\t\t\t\tderegisterResetAllFilter( resetAllFilterCallback );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tregisterResetAllFilter,\n\t\tderegisterResetAllFilter,\n\t\tresetAllFilterCallback,\n\t\thasMatchingPanel,\n\t] );\n\n\t// Note: `label` is used as a key when building menu item state in\n\t// `ToolsPanel`.\n\tconst menuGroup = isShownByDefault ? 'default' : 'optional';\n\tconst isMenuItemChecked = menuItems?.[ menuGroup ]?.[ label ];\n\tconst wasMenuItemChecked = usePrevious( isMenuItemChecked );\n\tconst isRegistered = menuItems?.[ menuGroup ]?.[ label ] !== undefined;\n\n\tconst isValueSet = hasValue();\n\tconst wasValueSet = usePrevious( isValueSet );\n\tconst newValueSet = isValueSet && ! wasValueSet;\n\n\t// Notify the panel when an item's value has been set.\n\t//\n\t// 1. For default controls, this is so \"reset\" appears beside its menu item.\n\t// 2. For optional controls, when the panel ID is `null`, it allows the\n\t// panel to ensure the item is toggled on for display in the menu, given the\n\t// value has been set external to the control.\n\tuseEffect( () => {\n\t\tif ( ! newValueSet ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isShownByDefault || currentPanelId === null ) {\n\t\t\tflagItemCustomization( label, menuGroup );\n\t\t}\n\t}, [\n\t\tcurrentPanelId,\n\t\tnewValueSet,\n\t\tisShownByDefault,\n\t\tmenuGroup,\n\t\tlabel,\n\t\tflagItemCustomization,\n\t] );\n\n\t// Determine if the panel item's corresponding menu is being toggled and\n\t// trigger appropriate callback if it is.\n\tuseEffect( () => {\n\t\t// We check whether this item is currently registered as items rendered\n\t\t// via fills can persist through the parent panel being remounted.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/45673\n\t\tif ( ! isRegistered || isResetting || ! hasMatchingPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isMenuItemChecked && ! isValueSet && ! wasMenuItemChecked ) {\n\t\t\tonSelect?.();\n\t\t}\n\n\t\tif ( ! isMenuItemChecked && wasMenuItemChecked ) {\n\t\t\tonDeselect?.();\n\t\t}\n\t}, [\n\t\thasMatchingPanel,\n\t\tisMenuItemChecked,\n\t\tisRegistered,\n\t\tisResetting,\n\t\tisValueSet,\n\t\twasMenuItemChecked,\n\t\tonSelect,\n\t\tonDeselect,\n\t] );\n\n\t// The item is shown if it is a default control regardless of whether it\n\t// has a value. Optional items are shown when they are checked or have\n\t// a value.\n\tconst isShown = isShownByDefault\n\t\t? menuItems?.[ menuGroup ]?.[ label ] !== undefined\n\t\t: isMenuItemChecked;\n\n\tconst cx = useCx();\n\tconst classes = useMemo( () => {\n\t\tconst shouldApplyPlaceholderStyles =\n\t\t\tshouldRenderPlaceholder && ! isShown;\n\t\tconst firstItemStyle =\n\t\t\tfirstDisplayedItem === label && __experimentalFirstVisibleItemClass;\n\t\tconst lastItemStyle =\n\t\t\tlastDisplayedItem === label && __experimentalLastVisibleItemClass;\n\t\treturn cx(\n\t\t\tstyles.ToolsPanelItem,\n\t\t\tshouldApplyPlaceholderStyles && styles.ToolsPanelItemPlaceholder,\n\t\t\t! shouldApplyPlaceholderStyles && className,\n\t\t\tfirstItemStyle,\n\t\t\tlastItemStyle\n\t\t);\n\t}, [\n\t\tisShown,\n\t\tshouldRenderPlaceholder,\n\t\tclassName,\n\t\tcx,\n\t\tfirstDisplayedItem,\n\t\tlastDisplayedItem,\n\t\t__experimentalFirstVisibleItemClass,\n\t\t__experimentalLastVisibleItemClass,\n\t\tlabel,\n\t] );\n\n\treturn {\n\t\t...otherProps,\n\t\tisShown,\n\t\tshouldRenderPlaceholder,\n\t\tclassName: classes,\n\t};\n}\n"],"mappings":"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"}
1
+ {"version":3,"names":["usePrevious","useCallback","useEffect","useLayoutEffect","useMemo","styles","useToolsPanelContext","useContextSystem","useCx","noop","useToolsPanelItem","props","className","hasValue","isShownByDefault","label","panelId","resetAllFilter","onDeselect","onSelect","otherProps","currentPanelId","menuItems","registerResetAllFilter","deregisterResetAllFilter","registerPanelItem","deregisterPanelItem","flagItemCustomization","isResetting","shouldRenderPlaceholderItems","shouldRenderPlaceholder","firstDisplayedItem","lastDisplayedItem","__experimentalFirstVisibleItemClass","__experimentalLastVisibleItemClass","hasValueCallback","resetAllFilterCallback","previousPanelId","hasMatchingPanel","menuGroup","isMenuItemChecked","wasMenuItemChecked","isRegistered","undefined","isValueSet","wasValueSet","newValueSet","isShown","cx","classes","shouldApplyPlaceholderStyles","firstItemStyle","lastItemStyle","ToolsPanelItem","ToolsPanelItemPlaceholder"],"sources":["@wordpress/components/src/tools-panel/tools-panel-item/hook.ts"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { usePrevious } from '@wordpress/compose';\nimport {\n\tuseCallback,\n\tuseEffect,\n\tuseLayoutEffect,\n\tuseMemo,\n} from '@wordpress/element';\n\n/**\n * Internal dependencies\n */\nimport * as styles from '../styles';\nimport { useToolsPanelContext } from '../context';\nimport type { WordPressComponentProps } from '../../context';\nimport { useContextSystem } from '../../context';\nimport { useCx } from '../../utils/hooks/use-cx';\nimport type { ToolsPanelItemProps } from '../types';\n\nconst noop = () => {};\n\nexport function useToolsPanelItem(\n\tprops: WordPressComponentProps< ToolsPanelItemProps, 'div' >\n) {\n\tconst {\n\t\tclassName,\n\t\thasValue,\n\t\tisShownByDefault = false,\n\t\tlabel,\n\t\tpanelId,\n\t\tresetAllFilter = noop,\n\t\tonDeselect,\n\t\tonSelect,\n\t\t...otherProps\n\t} = useContextSystem( props, 'ToolsPanelItem' );\n\n\tconst {\n\t\tpanelId: currentPanelId,\n\t\tmenuItems,\n\t\tregisterResetAllFilter,\n\t\tderegisterResetAllFilter,\n\t\tregisterPanelItem,\n\t\tderegisterPanelItem,\n\t\tflagItemCustomization,\n\t\tisResetting,\n\t\tshouldRenderPlaceholderItems: shouldRenderPlaceholder,\n\t\tfirstDisplayedItem,\n\t\tlastDisplayedItem,\n\t\t__experimentalFirstVisibleItemClass,\n\t\t__experimentalLastVisibleItemClass,\n\t} = useToolsPanelContext();\n\n\tconst hasValueCallback = useCallback( hasValue, [ panelId, hasValue ] );\n\tconst resetAllFilterCallback = useCallback( resetAllFilter, [\n\t\tpanelId,\n\t\tresetAllFilter,\n\t] );\n\tconst previousPanelId = usePrevious( currentPanelId );\n\n\tconst hasMatchingPanel =\n\t\tcurrentPanelId === panelId || currentPanelId === null;\n\n\t// Registering the panel item allows the panel to include it in its\n\t// automatically generated menu and determine its initial checked status.\n\t//\n\t// This is performed in a layout effect to ensure that the panel item\n\t// is registered before it is rendered preventing a rendering glitch.\n\t// See: https://github.com/WordPress/gutenberg/issues/56470\n\tuseLayoutEffect( () => {\n\t\tif ( hasMatchingPanel && previousPanelId !== null ) {\n\t\t\tregisterPanelItem( {\n\t\t\t\thasValue: hasValueCallback,\n\t\t\t\tisShownByDefault,\n\t\t\t\tlabel,\n\t\t\t\tpanelId,\n\t\t\t} );\n\t\t}\n\n\t\treturn () => {\n\t\t\tif (\n\t\t\t\t( previousPanelId === null && !! currentPanelId ) ||\n\t\t\t\tcurrentPanelId === panelId\n\t\t\t) {\n\t\t\t\tderegisterPanelItem( label );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tcurrentPanelId,\n\t\thasMatchingPanel,\n\t\tisShownByDefault,\n\t\tlabel,\n\t\thasValueCallback,\n\t\tpanelId,\n\t\tpreviousPanelId,\n\t\tregisterPanelItem,\n\t\tderegisterPanelItem,\n\t] );\n\n\tuseEffect( () => {\n\t\tif ( hasMatchingPanel ) {\n\t\t\tregisterResetAllFilter( resetAllFilterCallback );\n\t\t}\n\t\treturn () => {\n\t\t\tif ( hasMatchingPanel ) {\n\t\t\t\tderegisterResetAllFilter( resetAllFilterCallback );\n\t\t\t}\n\t\t};\n\t}, [\n\t\tregisterResetAllFilter,\n\t\tderegisterResetAllFilter,\n\t\tresetAllFilterCallback,\n\t\thasMatchingPanel,\n\t] );\n\n\t// Note: `label` is used as a key when building menu item state in\n\t// `ToolsPanel`.\n\tconst menuGroup = isShownByDefault ? 'default' : 'optional';\n\tconst isMenuItemChecked = menuItems?.[ menuGroup ]?.[ label ];\n\tconst wasMenuItemChecked = usePrevious( isMenuItemChecked );\n\tconst isRegistered = menuItems?.[ menuGroup ]?.[ label ] !== undefined;\n\n\tconst isValueSet = hasValue();\n\tconst wasValueSet = usePrevious( isValueSet );\n\tconst newValueSet = isValueSet && ! wasValueSet;\n\n\t// Notify the panel when an item's value has been set.\n\t//\n\t// 1. For default controls, this is so \"reset\" appears beside its menu item.\n\t// 2. For optional controls, when the panel ID is `null`, it allows the\n\t// panel to ensure the item is toggled on for display in the menu, given the\n\t// value has been set external to the control.\n\tuseEffect( () => {\n\t\tif ( ! newValueSet ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isShownByDefault || currentPanelId === null ) {\n\t\t\tflagItemCustomization( label, menuGroup );\n\t\t}\n\t}, [\n\t\tcurrentPanelId,\n\t\tnewValueSet,\n\t\tisShownByDefault,\n\t\tmenuGroup,\n\t\tlabel,\n\t\tflagItemCustomization,\n\t] );\n\n\t// Determine if the panel item's corresponding menu is being toggled and\n\t// trigger appropriate callback if it is.\n\tuseEffect( () => {\n\t\t// We check whether this item is currently registered as items rendered\n\t\t// via fills can persist through the parent panel being remounted.\n\t\t// See: https://github.com/WordPress/gutenberg/pull/45673\n\t\tif ( ! isRegistered || isResetting || ! hasMatchingPanel ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isMenuItemChecked && ! isValueSet && ! wasMenuItemChecked ) {\n\t\t\tonSelect?.();\n\t\t}\n\n\t\tif ( ! isMenuItemChecked && wasMenuItemChecked ) {\n\t\t\tonDeselect?.();\n\t\t}\n\t}, [\n\t\thasMatchingPanel,\n\t\tisMenuItemChecked,\n\t\tisRegistered,\n\t\tisResetting,\n\t\tisValueSet,\n\t\twasMenuItemChecked,\n\t\tonSelect,\n\t\tonDeselect,\n\t] );\n\n\t// The item is shown if it is a default control regardless of whether it\n\t// has a value. Optional items are shown when they are checked or have\n\t// a value.\n\tconst isShown = isShownByDefault\n\t\t? menuItems?.[ menuGroup ]?.[ label ] !== undefined\n\t\t: isMenuItemChecked;\n\n\tconst cx = useCx();\n\tconst classes = useMemo( () => {\n\t\tconst shouldApplyPlaceholderStyles =\n\t\t\tshouldRenderPlaceholder && ! isShown;\n\t\tconst firstItemStyle =\n\t\t\tfirstDisplayedItem === label && __experimentalFirstVisibleItemClass;\n\t\tconst lastItemStyle =\n\t\t\tlastDisplayedItem === label && __experimentalLastVisibleItemClass;\n\t\treturn cx(\n\t\t\tstyles.ToolsPanelItem,\n\t\t\tshouldApplyPlaceholderStyles && styles.ToolsPanelItemPlaceholder,\n\t\t\t! shouldApplyPlaceholderStyles && className,\n\t\t\tfirstItemStyle,\n\t\t\tlastItemStyle\n\t\t);\n\t}, [\n\t\tisShown,\n\t\tshouldRenderPlaceholder,\n\t\tclassName,\n\t\tcx,\n\t\tfirstDisplayedItem,\n\t\tlastDisplayedItem,\n\t\t__experimentalFirstVisibleItemClass,\n\t\t__experimentalLastVisibleItemClass,\n\t\tlabel,\n\t] );\n\n\treturn {\n\t\t...otherProps,\n\t\tisShown,\n\t\tshouldRenderPlaceholder,\n\t\tclassName: classes,\n\t};\n}\n"],"mappings":"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"}
@@ -317,6 +317,8 @@
317
317
  background: transparent;
318
318
  transform: none;
319
319
  opacity: 1;
320
+ }
321
+ .components-button.is-secondary:disabled:not(:focus), .components-button.is-secondary[aria-disabled=true]:not(:focus), .components-button.is-secondary[aria-disabled=true]:hover:not(:focus), .components-button.is-tertiary:disabled:not(:focus), .components-button.is-tertiary[aria-disabled=true]:not(:focus), .components-button.is-tertiary[aria-disabled=true]:hover:not(:focus) {
320
322
  box-shadow: none;
321
323
  outline: none;
322
324
  }
@@ -401,6 +403,11 @@ p + .components-button.is-tertiary {
401
403
  background-image: linear-gradient(45deg, #fafafa 33%, #e0e0e0 33%, #e0e0e0 70%, #fafafa 70%);
402
404
  /* stylelint-enable */
403
405
  }
406
+ @media (prefers-reduced-motion: reduce) {
407
+ .components-button.is-busy, .components-button.is-secondary.is-busy, .components-button.is-secondary.is-busy:disabled, .components-button.is-secondary.is-busy[aria-disabled=true] {
408
+ animation-duration: 0s;
409
+ }
410
+ }
404
411
  .components-button.is-compact {
405
412
  height: 32px;
406
413
  }
@@ -1304,6 +1311,7 @@ body.is-dragging-components-draggable {
1304
1311
  display: inline-block;
1305
1312
  }
1306
1313
  .components-form-toggle .components-form-toggle__track {
1314
+ position: relative;
1307
1315
  content: "";
1308
1316
  display: inline-block;
1309
1317
  box-sizing: border-box;
@@ -1313,7 +1321,8 @@ body.is-dragging-components-draggable {
1313
1321
  width: 36px;
1314
1322
  height: 18px;
1315
1323
  border-radius: 9px;
1316
- transition: 0.2s background ease;
1324
+ transition: 0.2s background-color ease, 0.2s border-color ease;
1325
+ overflow: hidden;
1317
1326
  }
1318
1327
  @media (prefers-reduced-motion: reduce) {
1319
1328
  .components-form-toggle .components-form-toggle__track {
@@ -1321,6 +1330,21 @@ body.is-dragging-components-draggable {
1321
1330
  transition-delay: 0s;
1322
1331
  }
1323
1332
  }
1333
+ .components-form-toggle .components-form-toggle__track::after {
1334
+ content: "";
1335
+ position: absolute;
1336
+ inset: 0;
1337
+ box-sizing: border-box;
1338
+ border-top: 18px solid transparent;
1339
+ transition: 0.2s opacity ease;
1340
+ opacity: 0;
1341
+ }
1342
+ @media (prefers-reduced-motion: reduce) {
1343
+ .components-form-toggle .components-form-toggle__track::after {
1344
+ transition-duration: 0s;
1345
+ transition-delay: 0s;
1346
+ }
1347
+ }
1324
1348
  .components-form-toggle .components-form-toggle__thumb {
1325
1349
  display: block;
1326
1350
  position: absolute;
@@ -1330,9 +1354,9 @@ body.is-dragging-components-draggable {
1330
1354
  width: 12px;
1331
1355
  height: 12px;
1332
1356
  border-radius: 50%;
1333
- transition: 0.1s transform ease;
1357
+ transition: 0.2s transform ease, 0.2s background-color ease-out;
1334
1358
  background-color: #1e1e1e;
1335
- border: 5px solid #1e1e1e;
1359
+ border: 6px solid transparent;
1336
1360
  }
1337
1361
  @media (prefers-reduced-motion: reduce) {
1338
1362
  .components-form-toggle .components-form-toggle__thumb {
@@ -1342,8 +1366,10 @@ body.is-dragging-components-draggable {
1342
1366
  }
1343
1367
  .components-form-toggle.is-checked .components-form-toggle__track {
1344
1368
  background-color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
1345
- border: 1px solid var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
1346
- border: 9px solid transparent;
1369
+ border-color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
1370
+ }
1371
+ .components-form-toggle.is-checked .components-form-toggle__track::after {
1372
+ opacity: 1;
1347
1373
  }
1348
1374
  .components-form-toggle .components-form-toggle__input:focus + .components-form-toggle__track {
1349
1375
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) #fff, 0 0 0 calc(2 * var(--wp-admin-border-width-focus)) var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
@@ -317,6 +317,8 @@
317
317
  background: transparent;
318
318
  transform: none;
319
319
  opacity: 1;
320
+ }
321
+ .components-button.is-secondary:disabled:not(:focus), .components-button.is-secondary[aria-disabled=true]:not(:focus), .components-button.is-secondary[aria-disabled=true]:hover:not(:focus), .components-button.is-tertiary:disabled:not(:focus), .components-button.is-tertiary[aria-disabled=true]:not(:focus), .components-button.is-tertiary[aria-disabled=true]:hover:not(:focus) {
320
322
  box-shadow: none;
321
323
  outline: none;
322
324
  }
@@ -401,6 +403,11 @@ p + .components-button.is-tertiary {
401
403
  background-image: linear-gradient(-45deg, #fafafa 33%, #e0e0e0 33%, #e0e0e0 70%, #fafafa 70%);
402
404
  /* stylelint-enable */
403
405
  }
406
+ @media (prefers-reduced-motion: reduce) {
407
+ .components-button.is-busy, .components-button.is-secondary.is-busy, .components-button.is-secondary.is-busy:disabled, .components-button.is-secondary.is-busy[aria-disabled=true] {
408
+ animation-duration: 0s;
409
+ }
410
+ }
404
411
  .components-button.is-compact {
405
412
  height: 32px;
406
413
  }
@@ -1309,6 +1316,7 @@ body.is-dragging-components-draggable {
1309
1316
  display: inline-block;
1310
1317
  }
1311
1318
  .components-form-toggle .components-form-toggle__track {
1319
+ position: relative;
1312
1320
  content: "";
1313
1321
  display: inline-block;
1314
1322
  box-sizing: border-box;
@@ -1318,7 +1326,8 @@ body.is-dragging-components-draggable {
1318
1326
  width: 36px;
1319
1327
  height: 18px;
1320
1328
  border-radius: 9px;
1321
- transition: 0.2s background ease;
1329
+ transition: 0.2s background-color ease, 0.2s border-color ease;
1330
+ overflow: hidden;
1322
1331
  }
1323
1332
  @media (prefers-reduced-motion: reduce) {
1324
1333
  .components-form-toggle .components-form-toggle__track {
@@ -1326,6 +1335,21 @@ body.is-dragging-components-draggable {
1326
1335
  transition-delay: 0s;
1327
1336
  }
1328
1337
  }
1338
+ .components-form-toggle .components-form-toggle__track::after {
1339
+ content: "";
1340
+ position: absolute;
1341
+ inset: 0;
1342
+ box-sizing: border-box;
1343
+ border-top: 18px solid transparent;
1344
+ transition: 0.2s opacity ease;
1345
+ opacity: 0;
1346
+ }
1347
+ @media (prefers-reduced-motion: reduce) {
1348
+ .components-form-toggle .components-form-toggle__track::after {
1349
+ transition-duration: 0s;
1350
+ transition-delay: 0s;
1351
+ }
1352
+ }
1329
1353
  .components-form-toggle .components-form-toggle__thumb {
1330
1354
  display: block;
1331
1355
  position: absolute;
@@ -1335,9 +1359,9 @@ body.is-dragging-components-draggable {
1335
1359
  width: 12px;
1336
1360
  height: 12px;
1337
1361
  border-radius: 50%;
1338
- transition: 0.1s transform ease;
1362
+ transition: 0.2s transform ease, 0.2s background-color ease-out;
1339
1363
  background-color: #1e1e1e;
1340
- border: 5px solid #1e1e1e;
1364
+ border: 6px solid transparent;
1341
1365
  }
1342
1366
  @media (prefers-reduced-motion: reduce) {
1343
1367
  .components-form-toggle .components-form-toggle__thumb {
@@ -1347,8 +1371,10 @@ body.is-dragging-components-draggable {
1347
1371
  }
1348
1372
  .components-form-toggle.is-checked .components-form-toggle__track {
1349
1373
  background-color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
1350
- border: 1px solid var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
1351
- border: 9px solid transparent;
1374
+ border-color: var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
1375
+ }
1376
+ .components-form-toggle.is-checked .components-form-toggle__track::after {
1377
+ opacity: 1;
1352
1378
  }
1353
1379
  .components-form-toggle .components-form-toggle__input:focus + .components-form-toggle__track {
1354
1380
  box-shadow: 0 0 0 var(--wp-admin-border-width-focus) #fff, 0 0 0 calc(2 * var(--wp-admin-border-width-focus)) var(--wp-components-color-accent, var(--wp-admin-theme-color, #3858e9));
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/angle-picker-control/index.tsx"],"names":[],"mappings":";AAuBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AA+EvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,kBAAkB;;uCAA8C,CAAC;AAE9E,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/angle-picker-control/index.tsx"],"names":[],"mappings":";AAuBA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AA8EvD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,kBAAkB;;uCAA8C,CAAC;AAE9E,eAAe,kBAAkB,CAAC"}