Skip to content

Commit

Permalink
creates the distraction free experiment
Browse files Browse the repository at this point in the history
  • Loading branch information
draganescu committed Oct 5, 2022
1 parent 56dbf82 commit 4565b66
Show file tree
Hide file tree
Showing 5 changed files with 72 additions and 33 deletions.
12 changes: 12 additions & 0 deletions lib/experimental/editor-settings.php
Original file line number Diff line number Diff line change
Expand Up @@ -83,3 +83,15 @@ function gutenberg_enable_zoomed_out_view() {
}

add_action( 'admin_init', 'gutenberg_enable_zoomed_out_view' );

/**
* Sets a global JS variable used to trigger the availability of distraction free mode.
*/
function gutenberg_enable_distraction_free_mode() {
$gutenberg_experiments = get_option( 'gutenberg-experiments' );
if ( $gutenberg_experiments && array_key_exists( 'gutenberg-distraction-free-mode', $gutenberg_experiments ) ) {
wp_add_inline_script( 'wp-block-editor', 'window.__experimentalEnableDistractionFreeMode = true', 'before' );
}
}

add_action( 'admin_init', 'gutenberg_enable_distraction_free_mode' );
11 changes: 11 additions & 0 deletions lib/experiments-page.php
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,17 @@ function gutenberg_initialize_experiments_settings() {
'id' => 'gutenberg-zoomed-out-view',
)
);
add_settings_field(
'gutenberg-distraction-free-mode',
__( 'Distraction free mode ', 'gutenberg' ),
'gutenberg_display_experiment_field',
'gutenberg-experiments',
'gutenberg_experiments_section',
array(
'label' => __( 'Test a new distraction free mode in the post editor.', 'gutenberg' ),
'id' => 'gutenberg-distraction-free-mode',
)
);
register_setting(
'gutenberg-experiments',
'gutenberg-experiments'
Expand Down
27 changes: 17 additions & 10 deletions packages/edit-post/src/components/header/writing-menu/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,9 @@ function WritingMenu( { onClose } ) {
return null;
}

const isDistractionFreeModeExperimentEnabled =
window?.__experimentalEnableDistractionFreeMode;

return (
<MenuGroup label={ _x( 'View', 'noun' ) }>
<PreferenceToggleMenuItem
Expand Down Expand Up @@ -81,16 +84,20 @@ function WritingMenu( { onClose } ) {
messageDeactivated={ __( 'Fullscreen mode deactivated' ) }
shortcut={ displayShortcut.secondary( 'f' ) }
/>
<PreferenceToggleMenuItem
scope="core/edit-post"
name="distractionFree"
toggleHandler={ toggleDistractionFree }
label={ __( 'Distraction free' ) }
info={ __( 'Write with calmness' ) }
messageActivated={ __( 'Distraction free mode activated' ) }
messageDeactivated={ __( 'Distraction free mode deactivated' ) }
shortcut={ displayShortcut.primaryShift( '\\' ) }
/>
{ isDistractionFreeModeExperimentEnabled && (
<PreferenceToggleMenuItem
scope="core/edit-post"
name="distractionFree"
toggleHandler={ toggleDistractionFree }
label={ __( 'Distraction free' ) }
info={ __( 'Write with calmness' ) }
messageActivated={ __( 'Distraction free mode activated' ) }
messageDeactivated={ __(
'Distraction free mode deactivated'
) }
shortcut={ displayShortcut.primaryShift( '\\' ) }
/>
) }
</MenuGroup>
);
}
Expand Down
34 changes: 19 additions & 15 deletions packages/edit-post/src/components/keyboard-shortcuts/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -162,21 +162,25 @@ function KeyboardShortcuts() {
} );

useShortcut( 'core/edit-post/toggle-distraction-free', () => {
closeGeneralSidebar();
setIsListViewOpened( false );
toggleDistractionFree();
toggleFeature( 'distractionFree' );
const modeState = isFeatureActive( 'distractionFree' )
? __( 'on' )
: __( 'off' );
createInfoNotice(
// translators: Mode of distraction free can be 'on' or 'off';
sprintf( __( 'Distraction free mode turned %s.' ), modeState ),
{
speak: true,
type: 'snackbar',
}
);
const isDistractionFreeModeExperimentEnabled =
window?.__experimentalEnableDistractionFreeMode;
if ( isDistractionFreeModeExperimentEnabled ) {
closeGeneralSidebar();
setIsListViewOpened( false );
toggleDistractionFree();
toggleFeature( 'distractionFree' );
const modeState = isFeatureActive( 'distractionFree' )
? __( 'on' )
: __( 'off' );
createInfoNotice(
// translators: Mode of distraction free can be 'on' or 'off';
sprintf( __( 'Distraction free mode turned %s.' ), modeState ),
{
speak: true,
type: 'snackbar',
}
);
}
} );

useShortcut( 'core/edit-post/toggle-sidebar', ( event ) => {
Expand Down
21 changes: 13 additions & 8 deletions packages/edit-post/src/components/preferences-modal/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,9 @@ export default function EditPostPreferencesModal() {
closeGeneralSidebar();
};

const isDistractionFreeModeExperimentEnabled =
window?.__experimentalEnableDistractionFreeMode;

const sections = useMemo(
() => [
{
Expand Down Expand Up @@ -111,14 +114,16 @@ export default function EditPostPreferencesModal() {
'Customize options related to the block editor interface and editing flow.'
) }
>
<EnableFeature
featureName="distractionFree"
onToggle={ toggleDistractionFree }
help={ __(
'Reduce visual distractions by hiding the toolbar and other elements to focus on writing.'
) }
label={ __( 'Distraction Free' ) }
/>
{ isDistractionFreeModeExperimentEnabled && (
<EnableFeature
featureName="distractionFree"
onToggle={ toggleDistractionFree }
help={ __(
'Reduce visual distractions by hiding the toolbar and other elements to focus on writing.'
) }
label={ __( 'Distraction Free' ) }
/>
) }
<EnableFeature
featureName="focusMode"
help={ __(
Expand Down

0 comments on commit 4565b66

Please sign in to comment.