balloon
1 week ago
block-manager
2 months ago
block-style-manager
2 months ago
custom-block-style
2 months ago
custom-format
2 months ago
import-export
2 months ago
utils
2 months ago
block-category-position.js
2 months ago
breadcrumb.js
2 months ago
custom-css.js
2 months ago
index.js
2 months ago
license.js
2 months ago
load-separate.js
2 months ago
margin.js
2 months ago
new-faq.js
2 months ago
save-button.js
2 months ago
toc.js
2 months ago
index.js
105 lines
| 1 | /** |
| 2 | * WordPress dependencies |
| 3 | */ |
| 4 | import { |
| 5 | render, |
| 6 | createRoot, |
| 7 | useState, |
| 8 | createContext, |
| 9 | useEffect, |
| 10 | } from '@wordpress/element'; |
| 11 | import { useSelect } from '@wordpress/data'; |
| 12 | import 'regenerator-runtime/runtime'; |
| 13 | /** |
| 14 | * Internal dependencies |
| 15 | */ |
| 16 | import '@vkblocks/utils/store'; |
| 17 | import '@vkblocks/utils/store/termColor'; |
| 18 | |
| 19 | import { STORE_NAME } from '@vkblocks/utils/store/constants'; |
| 20 | import AdminLicense from '@vkblocks/admin/license'; |
| 21 | import AdminBlockCategoryPosition from '@vkblocks/admin/block-category-position'; |
| 22 | import AdminBalloon from '@vkblocks/admin/balloon'; |
| 23 | import AdminMargin from '@vkblocks/admin/margin'; |
| 24 | import AdminLoadSeparate from '@vkblocks/admin/load-separate'; |
| 25 | import AdminNewFaq from '@vkblocks/admin/new-faq'; |
| 26 | import AdminBreadcrumb from '@vkblocks/admin/breadcrumb'; |
| 27 | import BlockManager from '@vkblocks/admin/block-manager'; |
| 28 | import AdminCustomFormat from '@vkblocks/admin/custom-format'; |
| 29 | import AdminCustomBlockStyle from '@vkblocks/admin/custom-block-style'; |
| 30 | import AdminCustomCss from '@vkblocks/admin/custom-css'; |
| 31 | import BlockStyleManager from '@vkblocks/admin/block-style-manager'; |
| 32 | import AdminImportExport from '@vkblocks/admin/import-export'; |
| 33 | import { SaveButton } from '@vkblocks/admin/save-button'; |
| 34 | import AdminToc from '@vkblocks/admin/toc'; |
| 35 | /*globals vkBlocksObject */ |
| 36 | |
| 37 | export const AdminContext = createContext(); |
| 38 | |
| 39 | export default function VKBlocksAdmin() { |
| 40 | const [vkBlocksOption, setVkBlocksOption] = useState(); |
| 41 | const [reloadFlag, setReloadFlag] = useState(false); |
| 42 | const [isChanged, setIsChanged] = useState(false); |
| 43 | |
| 44 | const storeOptions = useSelect((select) => { |
| 45 | const { getOptions } = select(STORE_NAME); |
| 46 | return getOptions().vkBlocksOption; |
| 47 | }, []); |
| 48 | |
| 49 | useEffect(() => { |
| 50 | setVkBlocksOption(storeOptions); |
| 51 | }, [storeOptions]); |
| 52 | |
| 53 | const optionChanged = (value) => { |
| 54 | setVkBlocksOption(value); |
| 55 | setIsChanged(true); |
| 56 | }; |
| 57 | |
| 58 | return ( |
| 59 | <> |
| 60 | {/* AdminContext.Providerで各コンポーネントにvalueを渡す */} |
| 61 | <AdminContext.Provider |
| 62 | value={{ |
| 63 | vkBlocksOption: vkBlocksOption ?? vkBlocksObject.options, |
| 64 | setVkBlocksOption: optionChanged, |
| 65 | reloadFlag, |
| 66 | setReloadFlag, |
| 67 | }} |
| 68 | > |
| 69 | {vkBlocksObject.isLicenseSetting && <AdminLicense />} |
| 70 | <AdminBlockCategoryPosition /> |
| 71 | <AdminBalloon /> |
| 72 | {vkBlocksObject.isPro && <AdminCustomFormat />} |
| 73 | {vkBlocksObject.isPro && <AdminCustomBlockStyle />} |
| 74 | <AdminMargin /> |
| 75 | <AdminLoadSeparate /> |
| 76 | {vkBlocksObject.isPro && <AdminNewFaq />} |
| 77 | {vkBlocksObject.isPro && <AdminBreadcrumb />} |
| 78 | {vkBlocksObject.isPro && <AdminToc />} |
| 79 | {vkBlocksObject.isPro && <AdminCustomCss />} |
| 80 | <BlockManager /> |
| 81 | <BlockStyleManager /> |
| 82 | <SaveButton |
| 83 | classOption={'sticky'} |
| 84 | isChanged={isChanged} |
| 85 | setIsChanged={setIsChanged} |
| 86 | /> |
| 87 | <AdminImportExport |
| 88 | isChanged={isChanged} |
| 89 | setIsChanged={setIsChanged} |
| 90 | /> |
| 91 | </AdminContext.Provider> |
| 92 | </> |
| 93 | ); |
| 94 | } |
| 95 | |
| 96 | // NOTE: ReactDOM.renderが非推奨になったのでフォールバック WP6.1以下をサポートしなくなったら削除すること #1574 |
| 97 | const existsCreateRoot = typeof createRoot === 'function'; |
| 98 | if (existsCreateRoot) { |
| 99 | const container = document.getElementById('vk-blocks-admin'); |
| 100 | const root = createRoot(container); |
| 101 | root.render(<VKBlocksAdmin />); |
| 102 | } else { |
| 103 | render(<VKBlocksAdmin />, document.getElementById('vk-blocks-admin')); |
| 104 | } |
| 105 |