/
index.js
87 lines (81 loc) · 2.16 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/* eslint-disable import/no-extraneous-dependencies */
/**
* External dependencies
*/
import { __ } from '@wordpress/i18n';
import { registerPlugin } from '@wordpress/plugins';
import { select, dispatch, subscribe } from '@wordpress/data';
import { PluginDocumentSettingPanel } from '@wordpress/edit-post';
/**
* Internal dependencies
*/
import { PageTemplatesPlugin } from './page-template-modal';
import SidebarTemplatesPlugin from './page-template-modal/components/sidebar-modal-opener';
import { initializeWithIdentity } from './page-template-modal/utils/tracking';
/* eslint-enable import/no-extraneous-dependencies */
// Load config passed from backend.
const {
templates = [],
vertical,
segment,
tracksUserData,
siteInformation = {},
screenAction,
theme,
isFrontPage,
} = window.starterPageTemplatesConfig;
if ( tracksUserData ) {
initializeWithIdentity( tracksUserData );
}
// Open plugin only if we are creating new page.
if ( screenAction === 'add' ) {
registerPlugin( 'page-templates', {
render: () => {
return (
<PageTemplatesPlugin
isFrontPage={ isFrontPage }
segment={ segment }
shouldPrefetchAssets={ false }
templates={ templates }
theme={ theme }
vertical={ vertical }
/>
);
},
} );
}
// Always register ability to open from document sidebar.
registerPlugin( 'page-templates-sidebar', {
render: () => {
return (
<PluginDocumentSettingPanel
name="Template Modal Opener"
title={ __( 'Page Layout' ) }
className="page-template-modal__sidebar" // eslint-disable-line wpcalypso/jsx-classname-namespace
icon="none"
>
<SidebarTemplatesPlugin
isFrontPage={ isFrontPage }
segment={ segment }
siteInformation={ siteInformation }
templates={ templates }
theme={ theme }
vertical={ vertical }
/>
</PluginDocumentSettingPanel>
);
},
} );
// Make sidebar plugin open by default.
const unsubscribe = subscribe( () => {
if (
! select( 'core/edit-post' ).isEditorPanelOpened(
'page-templates-sidebar/Template Modal Opener'
)
) {
dispatch( 'core/edit-post' ).toggleEditorPanelOpened(
'page-templates-sidebar/Template Modal Opener'
);
}
unsubscribe();
} );