@wordpress/edit-site 5.17.1 → 5.18.1-next.5a1d1283.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 (99) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/build/components/app/index.js +1 -1
  3. package/build/components/app/index.js.map +1 -1
  4. package/build/components/block-editor/site-editor-canvas.js +3 -3
  5. package/build/components/block-editor/site-editor-canvas.js.map +1 -1
  6. package/build/components/{canvas-spinner → canvas-loader}/index.js +3 -3
  7. package/build/components/canvas-loader/index.js.map +1 -0
  8. package/build/components/editor/index.js +3 -3
  9. package/build/components/editor/index.js.map +1 -1
  10. package/build/components/global-styles/screen-block.js +5 -0
  11. package/build/components/global-styles/screen-block.js.map +1 -1
  12. package/build/components/header-edit-mode/index.js +9 -5
  13. package/build/components/header-edit-mode/index.js.map +1 -1
  14. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js +19 -21
  15. package/build/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -1
  16. package/build/components/keyboard-shortcuts/edit-mode.js +1 -26
  17. package/build/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  18. package/build/components/page-patterns/grid-item.js +2 -2
  19. package/build/components/page-patterns/grid-item.js.map +1 -1
  20. package/build/components/sidebar-edit-mode/page-panels/page-status.js +21 -7
  21. package/build/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  22. package/build/components/sidebar-navigation-screen-global-styles/index.js +1 -45
  23. package/build/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  24. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js +2 -1
  25. package/build/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  26. package/build/hooks/commands/use-common-commands.js +1 -17
  27. package/build/hooks/commands/use-common-commands.js.map +1 -1
  28. package/build/hooks/commands/use-edit-mode-commands.js +33 -21
  29. package/build/hooks/commands/use-edit-mode-commands.js.map +1 -1
  30. package/build/index.js +1 -1
  31. package/build/index.js.map +1 -1
  32. package/build/store/actions.js +52 -6
  33. package/build/store/actions.js.map +1 -1
  34. package/build/utils/constants.js.map +1 -0
  35. package/build-module/components/app/index.js +2 -2
  36. package/build-module/components/app/index.js.map +1 -1
  37. package/build-module/components/block-editor/site-editor-canvas.js +4 -4
  38. package/build-module/components/block-editor/site-editor-canvas.js.map +1 -1
  39. package/build-module/components/{canvas-spinner → canvas-loader}/index.js +2 -2
  40. package/build-module/components/canvas-loader/index.js.map +1 -0
  41. package/build-module/components/editor/index.js +3 -3
  42. package/build-module/components/editor/index.js.map +1 -1
  43. package/build-module/components/global-styles/screen-block.js +5 -0
  44. package/build-module/components/global-styles/screen-block.js.map +1 -1
  45. package/build-module/components/header-edit-mode/index.js +9 -5
  46. package/build-module/components/header-edit-mode/index.js.map +1 -1
  47. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js +19 -21
  48. package/build-module/components/header-edit-mode/more-menu/copy-content-menu-item.js.map +1 -1
  49. package/build-module/components/keyboard-shortcuts/edit-mode.js +1 -26
  50. package/build-module/components/keyboard-shortcuts/edit-mode.js.map +1 -1
  51. package/build-module/components/page-patterns/grid-item.js +3 -3
  52. package/build-module/components/page-patterns/grid-item.js.map +1 -1
  53. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js +23 -8
  54. package/build-module/components/sidebar-edit-mode/page-panels/page-status.js.map +1 -1
  55. package/build-module/components/sidebar-navigation-screen-global-styles/index.js +1 -45
  56. package/build-module/components/sidebar-navigation-screen-global-styles/index.js.map +1 -1
  57. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js +2 -1
  58. package/build-module/components/sidebar-navigation-screen-navigation-menu/more-menu.js.map +1 -1
  59. package/build-module/hooks/commands/use-common-commands.js +1 -17
  60. package/build-module/hooks/commands/use-common-commands.js.map +1 -1
  61. package/build-module/hooks/commands/use-edit-mode-commands.js +34 -22
  62. package/build-module/hooks/commands/use-edit-mode-commands.js.map +1 -1
  63. package/build-module/index.js +1 -1
  64. package/build-module/index.js.map +1 -1
  65. package/build-module/store/actions.js +48 -4
  66. package/build-module/store/actions.js.map +1 -1
  67. package/build-module/utils/constants.js.map +1 -0
  68. package/build-style/style-rtl.css +13 -6
  69. package/build-style/style.css +13 -6
  70. package/package.json +40 -40
  71. package/src/components/app/index.js +1 -2
  72. package/src/components/block-editor/site-editor-canvas.js +2 -9
  73. package/src/components/{canvas-spinner → canvas-loader}/index.js +2 -2
  74. package/src/components/{canvas-spinner → canvas-loader}/style.scss +3 -3
  75. package/src/components/editor/index.js +3 -3
  76. package/src/components/global-styles/screen-block.js +14 -0
  77. package/src/components/header-edit-mode/index.js +37 -34
  78. package/src/components/header-edit-mode/more-menu/copy-content-menu-item.js +20 -21
  79. package/src/components/keyboard-shortcuts/edit-mode.js +2 -30
  80. package/src/components/page-patterns/grid-item.js +3 -3
  81. package/src/components/page-patterns/style.scss +5 -1
  82. package/src/components/sidebar-edit-mode/page-panels/page-status.js +37 -18
  83. package/src/components/sidebar-edit-mode/page-panels/style.scss +9 -0
  84. package/src/components/sidebar-navigation-screen-global-styles/index.js +1 -40
  85. package/src/components/sidebar-navigation-screen-navigation-menu/more-menu.js +1 -2
  86. package/src/hooks/commands/use-common-commands.js +0 -22
  87. package/src/hooks/commands/use-edit-mode-commands.js +43 -32
  88. package/src/index.js +1 -1
  89. package/src/store/actions.js +70 -7
  90. package/src/store/test/actions.js +87 -0
  91. package/src/store/test/reducer.js +21 -9
  92. package/src/style.scss +1 -1
  93. package/build/components/block-editor/constants.js.map +0 -1
  94. package/build/components/canvas-spinner/index.js.map +0 -1
  95. package/build-module/components/block-editor/constants.js.map +0 -1
  96. package/build-module/components/canvas-spinner/index.js.map +0 -1
  97. /package/build/{components/block-editor → utils}/constants.js +0 -0
  98. /package/build-module/{components/block-editor → utils}/constants.js +0 -0
  99. /package/src/{components/block-editor → utils}/constants.js +0 -0
@@ -373,12 +373,20 @@ export function updateSettings( settings ) {
373
373
  * @param {boolean} isOpen If true, opens the list view. If false, closes it.
374
374
  * It does not toggle the state, but sets it directly.
375
375
  */
376
- export function setIsListViewOpened( isOpen ) {
377
- return {
378
- type: 'SET_IS_LIST_VIEW_OPENED',
379
- isOpen,
376
+ export const setIsListViewOpened =
377
+ ( isOpen ) =>
378
+ ( { dispatch, registry } ) => {
379
+ const isDistractionFree = registry
380
+ .select( preferencesStore )
381
+ .get( 'core/edit-site', 'distractionFree' );
382
+ if ( isDistractionFree && isOpen ) {
383
+ dispatch.toggleDistractionFree();
384
+ }
385
+ dispatch( {
386
+ type: 'SET_IS_LIST_VIEW_OPENED',
387
+ isOpen,
388
+ } );
380
389
  };
381
- }
382
390
 
383
391
  /**
384
392
  * Sets whether the save view panel should be open.
@@ -533,7 +541,13 @@ export const revertTemplate =
533
541
  */
534
542
  export const openGeneralSidebar =
535
543
  ( name ) =>
536
- ( { registry } ) => {
544
+ ( { dispatch, registry } ) => {
545
+ const isDistractionFree = registry
546
+ .select( preferencesStore )
547
+ .get( 'core/edit-site', 'distractionFree' );
548
+ if ( isDistractionFree ) {
549
+ dispatch.toggleDistractionFree();
550
+ }
537
551
  registry
538
552
  .dispatch( interfaceStore )
539
553
  .enableComplementaryArea( editSiteStoreName, name );
@@ -552,7 +566,7 @@ export const closeGeneralSidebar =
552
566
 
553
567
  export const switchEditorMode =
554
568
  ( mode ) =>
555
- ( { registry } ) => {
569
+ ( { dispatch, registry } ) => {
556
570
  registry
557
571
  .dispatch( 'core/preferences' )
558
572
  .set( 'core/edit-site', 'editorMode', mode );
@@ -565,6 +579,12 @@ export const switchEditorMode =
565
579
  if ( mode === 'visual' ) {
566
580
  speak( __( 'Visual editor selected' ), 'assertive' );
567
581
  } else if ( mode === 'text' ) {
582
+ const isDistractionFree = registry
583
+ .select( preferencesStore )
584
+ .get( 'core/edit-site', 'distractionFree' );
585
+ if ( isDistractionFree ) {
586
+ dispatch.toggleDistractionFree();
587
+ }
568
588
  speak( __( 'Code editor selected' ), 'assertive' );
569
589
  }
570
590
  };
@@ -587,3 +607,46 @@ export const setHasPageContentFocus =
587
607
  hasPageContentFocus,
588
608
  } );
589
609
  };
610
+
611
+ /**
612
+ * Action that toggles Distraction free mode.
613
+ * Distraction free mode expects there are no sidebars, as due to the
614
+ * z-index values set, you can't close sidebars.
615
+ */
616
+ export const toggleDistractionFree =
617
+ () =>
618
+ ( { dispatch, registry } ) => {
619
+ const isDistractionFree = registry
620
+ .select( preferencesStore )
621
+ .get( 'core/edit-site', 'distractionFree' );
622
+ if ( ! isDistractionFree ) {
623
+ registry.batch( () => {
624
+ registry
625
+ .dispatch( preferencesStore )
626
+ .set( 'core/edit-site', 'fixedToolbar', false );
627
+ dispatch.setIsInserterOpened( false );
628
+ dispatch.setIsListViewOpened( false );
629
+ dispatch.closeGeneralSidebar();
630
+ } );
631
+ }
632
+ registry.batch( () => {
633
+ registry
634
+ .dispatch( preferencesStore )
635
+ .set(
636
+ 'core/edit-site',
637
+ 'distractionFree',
638
+ ! isDistractionFree
639
+ );
640
+ registry
641
+ .dispatch( noticesStore )
642
+ .createInfoNotice(
643
+ isDistractionFree
644
+ ? __( 'Distraction free off.' )
645
+ : __( 'Distraction free on.' ),
646
+ {
647
+ id: 'core/edit-site/distraction-free-mode/notice',
648
+ type: 'snackbar',
649
+ }
650
+ );
651
+ } );
652
+ };
@@ -215,6 +215,93 @@ describe( 'actions', () => {
215
215
  false
216
216
  );
217
217
  } );
218
+ it( 'should turn off distraction free mode when opening the list view', () => {
219
+ const registry = createRegistryWithStores();
220
+ registry
221
+ .dispatch( preferencesStore )
222
+ .set( 'core/edit-site', 'distractionFree', true );
223
+ registry.dispatch( editSiteStore ).setIsListViewOpened( true );
224
+ expect(
225
+ registry
226
+ .select( preferencesStore )
227
+ .get( 'core/edit-site', 'distractionFree' )
228
+ ).toBe( false );
229
+ } );
230
+ } );
231
+
232
+ describe( 'openGeneralSidebar', () => {
233
+ it( 'should turn off distraction free mode when opening a general sidebar', () => {
234
+ const registry = createRegistryWithStores();
235
+ registry
236
+ .dispatch( preferencesStore )
237
+ .set( 'core/edit-site', 'distractionFree', true );
238
+ registry
239
+ .dispatch( editSiteStore )
240
+ .openGeneralSidebar( 'edit-site/global-styles' );
241
+ expect(
242
+ registry
243
+ .select( preferencesStore )
244
+ .get( 'core/edit-site', 'distractionFree' )
245
+ ).toBe( false );
246
+ } );
247
+ } );
248
+
249
+ describe( 'switchEditorMode', () => {
250
+ it( 'should turn off distraction free mode when switching to code editor', () => {
251
+ const registry = createRegistryWithStores();
252
+ registry
253
+ .dispatch( preferencesStore )
254
+ .set( 'core/edit-site', 'distractionFree', true );
255
+ registry.dispatch( editSiteStore ).switchEditorMode( 'visual' );
256
+ expect(
257
+ registry
258
+ .select( preferencesStore )
259
+ .get( 'core/edit-site', 'distractionFree' )
260
+ ).toBe( true );
261
+ registry.dispatch( editSiteStore ).switchEditorMode( 'text' );
262
+ expect(
263
+ registry
264
+ .select( preferencesStore )
265
+ .get( 'core/edit-site', 'distractionFree' )
266
+ ).toBe( false );
267
+ } );
268
+ } );
269
+
270
+ describe( 'toggleDistractionFree', () => {
271
+ it( 'should properly update settings to prevent layout corruption when enabling distraction free mode', () => {
272
+ const registry = createRegistryWithStores();
273
+ // Enable everything that shouldn't be enabled in distraction free mode.
274
+ registry
275
+ .dispatch( preferencesStore )
276
+ .set( 'core/edit-site', 'fixedToolbar', true );
277
+ registry.dispatch( editSiteStore ).setIsListViewOpened( true );
278
+ registry
279
+ .dispatch( editSiteStore )
280
+ .openGeneralSidebar( 'edit-site/global-styles' );
281
+ // Initial state is falsy.
282
+ registry.dispatch( editSiteStore ).toggleDistractionFree();
283
+ expect(
284
+ registry
285
+ .select( preferencesStore )
286
+ .get( 'core/edit-site', 'fixedToolbar' )
287
+ ).toBe( false );
288
+ expect( registry.select( editSiteStore ).isListViewOpened() ).toBe(
289
+ false
290
+ );
291
+ expect( registry.select( editSiteStore ).isInserterOpened() ).toBe(
292
+ false
293
+ );
294
+ expect(
295
+ registry
296
+ .select( interfaceStore )
297
+ .getActiveComplementaryArea( editSiteStore.name )
298
+ ).toBeNull();
299
+ expect(
300
+ registry
301
+ .select( preferencesStore )
302
+ .get( 'core/edit-site', 'distractionFree' )
303
+ ).toBe( true );
304
+ } );
218
305
  } );
219
306
 
220
307
  describe( 'setHasPageContentFocus', () => {
@@ -14,7 +14,7 @@ import {
14
14
  hasPageContentFocus,
15
15
  } from '../reducer';
16
16
 
17
- import { setIsInserterOpened, setIsListViewOpened } from '../actions';
17
+ import { setIsInserterOpened } from '../actions';
18
18
 
19
19
  describe( 'state', () => {
20
20
  describe( 'settings()', () => {
@@ -95,13 +95,19 @@ describe( 'state', () => {
95
95
 
96
96
  it( 'should close the inserter when opening the list view panel', () => {
97
97
  expect(
98
- blockInserterPanel( true, setIsListViewOpened( true ) )
98
+ blockInserterPanel( true, {
99
+ type: 'SET_IS_LIST_VIEW_OPENED',
100
+ isOpen: true,
101
+ } )
99
102
  ).toBe( false );
100
103
  } );
101
104
 
102
105
  it( 'should not change the state when closing the list view panel', () => {
103
106
  expect(
104
- blockInserterPanel( true, setIsListViewOpened( false ) )
107
+ blockInserterPanel( true, {
108
+ type: 'SET_IS_LIST_VIEW_OPENED',
109
+ isOpen: false,
110
+ } )
105
111
  ).toBe( true );
106
112
  } );
107
113
  } );
@@ -116,12 +122,18 @@ describe( 'state', () => {
116
122
  } );
117
123
 
118
124
  it( 'should set the open state of the list view panel', () => {
119
- expect( listViewPanel( false, setIsListViewOpened( true ) ) ).toBe(
120
- true
121
- );
122
- expect( listViewPanel( true, setIsListViewOpened( false ) ) ).toBe(
123
- false
124
- );
125
+ expect(
126
+ listViewPanel( false, {
127
+ type: 'SET_IS_LIST_VIEW_OPENED',
128
+ isOpen: true,
129
+ } )
130
+ ).toBe( true );
131
+ expect(
132
+ listViewPanel( true, {
133
+ type: 'SET_IS_LIST_VIEW_OPENED',
134
+ isOpen: false,
135
+ } )
136
+ ).toBe( false );
125
137
  } );
126
138
 
127
139
  it( 'should close the list view when opening the inserter panel', () => {
package/src/style.scss CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  @import "./components/add-new-template/style.scss";
4
4
  @import "./components/block-editor/style.scss";
5
- @import "./components/canvas-spinner/style.scss";
5
+ @import "./components/canvas-loader/style.scss";
6
6
  @import "./components/code-editor/style.scss";
7
7
  @import "./components/global-styles/style.scss";
8
8
  @import "./components/global-styles/screen-revisions/style.scss";
@@ -1 +0,0 @@
1
- {"version":3,"names":["FOCUSABLE_ENTITIES","exports"],"sources":["@wordpress/edit-site/src/components/block-editor/constants.js"],"sourcesContent":["export const FOCUSABLE_ENTITIES = [\n\t'wp_template_part',\n\t'wp_navigation',\n\t'wp_block',\n];\n"],"mappings":";;;;;;AAAO,MAAMA,kBAAkB,GAAG,CACjC,kBAAkB,EAClB,eAAe,EACf,UAAU,CACV;AAACC,OAAA,CAAAD,kBAAA,GAAAA,kBAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["_blockEditor","require","_components","_lockUnlock","_hooks","ProgressBar","Theme","unlock","componentsPrivateApis","useGlobalStyle","blockEditorPrivateApis","CanvasSpinner","id","_highlightedColors$0$","fallbackIndicatorColor","backgroundColor","highlightedColors","useStylesPreviewColors","indicatorColor","color","_element","createElement","className","accent","background"],"sources":["@wordpress/edit-site/src/components/canvas-spinner/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { useStylesPreviewColors } from '../global-styles/hooks';\n\nconst { ProgressBar, Theme } = unlock( componentsPrivateApis );\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nexport default function CanvasSpinner( { id } ) {\n\tconst [ fallbackIndicatorColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst { highlightedColors } = useStylesPreviewColors();\n\tconst indicatorColor =\n\t\thighlightedColors[ 0 ]?.color ?? fallbackIndicatorColor;\n\n\treturn (\n\t\t<div className=\"edit-site-canvas-spinner\">\n\t\t\t<Theme accent={ indicatorColor } background={ backgroundColor }>\n\t\t\t\t<ProgressBar id={ id } />\n\t\t\t</Theme>\n\t\t</div>\n\t);\n}\n"],"mappings":";;;;;;;AAGA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AAKA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,MAAA,GAAAH,OAAA;AAVA;AACA;AACA;;AAIA;AACA;AACA;;AAIA,MAAM;EAAEI,WAAW;EAAEC;AAAM,CAAC,GAAG,IAAAC,kBAAM,EAAEC,uBAAsB,CAAC;AAC9D,MAAM;EAAEC;AAAe,CAAC,GAAG,IAAAF,kBAAM,EAAEG,wBAAuB,CAAC;AAE5C,SAASC,aAAaA,CAAE;EAAEC;AAAG,CAAC,EAAG;EAAA,IAAAC,qBAAA;EAC/C,MAAM,CAAEC,sBAAsB,CAAE,GAAGL,cAAc,CAAE,YAAa,CAAC;EACjE,MAAM,CAAEM,eAAe,CAAE,GAAGN,cAAc,CAAE,kBAAmB,CAAC;EAChE,MAAM;IAAEO;EAAkB,CAAC,GAAG,IAAAC,6BAAsB,EAAC,CAAC;EACtD,MAAMC,cAAc,IAAAL,qBAAA,GACnBG,iBAAiB,CAAE,CAAC,CAAE,EAAEG,KAAK,cAAAN,qBAAA,cAAAA,qBAAA,GAAIC,sBAAsB;EAExD,OACC,IAAAM,QAAA,CAAAC,aAAA;IAAKC,SAAS,EAAC;EAA0B,GACxC,IAAAF,QAAA,CAAAC,aAAA,EAACf,KAAK;IAACiB,MAAM,EAAGL,cAAgB;IAACM,UAAU,EAAGT;EAAiB,GAC9D,IAAAK,QAAA,CAAAC,aAAA,EAAChB,WAAW;IAACO,EAAE,EAAGA;EAAI,CAAE,CAClB,CACH,CAAC;AAER"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["FOCUSABLE_ENTITIES"],"sources":["@wordpress/edit-site/src/components/block-editor/constants.js"],"sourcesContent":["export const FOCUSABLE_ENTITIES = [\n\t'wp_template_part',\n\t'wp_navigation',\n\t'wp_block',\n];\n"],"mappings":"AAAA,OAAO,MAAMA,kBAAkB,GAAG,CACjC,kBAAkB,EAClB,eAAe,EACf,UAAU,CACV"}
@@ -1 +0,0 @@
1
- {"version":3,"names":["privateApis","blockEditorPrivateApis","componentsPrivateApis","unlock","useStylesPreviewColors","ProgressBar","Theme","useGlobalStyle","CanvasSpinner","id","_highlightedColors$0$","fallbackIndicatorColor","backgroundColor","highlightedColors","indicatorColor","color","createElement","className","accent","background"],"sources":["@wordpress/edit-site/src/components/canvas-spinner/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { privateApis as blockEditorPrivateApis } from '@wordpress/block-editor';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\n\n/**\n * Internal dependencies\n */\nimport { unlock } from '../../lock-unlock';\nimport { useStylesPreviewColors } from '../global-styles/hooks';\n\nconst { ProgressBar, Theme } = unlock( componentsPrivateApis );\nconst { useGlobalStyle } = unlock( blockEditorPrivateApis );\n\nexport default function CanvasSpinner( { id } ) {\n\tconst [ fallbackIndicatorColor ] = useGlobalStyle( 'color.text' );\n\tconst [ backgroundColor ] = useGlobalStyle( 'color.background' );\n\tconst { highlightedColors } = useStylesPreviewColors();\n\tconst indicatorColor =\n\t\thighlightedColors[ 0 ]?.color ?? fallbackIndicatorColor;\n\n\treturn (\n\t\t<div className=\"edit-site-canvas-spinner\">\n\t\t\t<Theme accent={ indicatorColor } background={ backgroundColor }>\n\t\t\t\t<ProgressBar id={ id } />\n\t\t\t</Theme>\n\t\t</div>\n\t);\n}\n"],"mappings":";AAAA;AACA;AACA;AACA,SAASA,WAAW,IAAIC,sBAAsB,QAAQ,yBAAyB;AAC/E,SAASD,WAAW,IAAIE,qBAAqB,QAAQ,uBAAuB;;AAE5E;AACA;AACA;AACA,SAASC,MAAM,QAAQ,mBAAmB;AAC1C,SAASC,sBAAsB,QAAQ,wBAAwB;AAE/D,MAAM;EAAEC,WAAW;EAAEC;AAAM,CAAC,GAAGH,MAAM,CAAED,qBAAsB,CAAC;AAC9D,MAAM;EAAEK;AAAe,CAAC,GAAGJ,MAAM,CAAEF,sBAAuB,CAAC;AAE3D,eAAe,SAASO,aAAaA,CAAE;EAAEC;AAAG,CAAC,EAAG;EAAA,IAAAC,qBAAA;EAC/C,MAAM,CAAEC,sBAAsB,CAAE,GAAGJ,cAAc,CAAE,YAAa,CAAC;EACjE,MAAM,CAAEK,eAAe,CAAE,GAAGL,cAAc,CAAE,kBAAmB,CAAC;EAChE,MAAM;IAAEM;EAAkB,CAAC,GAAGT,sBAAsB,CAAC,CAAC;EACtD,MAAMU,cAAc,IAAAJ,qBAAA,GACnBG,iBAAiB,CAAE,CAAC,CAAE,EAAEE,KAAK,cAAAL,qBAAA,cAAAA,qBAAA,GAAIC,sBAAsB;EAExD,OACCK,aAAA;IAAKC,SAAS,EAAC;EAA0B,GACxCD,aAAA,CAACV,KAAK;IAACY,MAAM,EAAGJ,cAAgB;IAACK,UAAU,EAAGP;EAAiB,GAC9DI,aAAA,CAACX,WAAW;IAACI,EAAE,EAAGA;EAAI,CAAE,CAClB,CACH,CAAC;AAER"}