@wordpress/widget-dashboard 0.1.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.
- package/CHANGELOG.md +19 -0
- package/LICENSE.md +788 -0
- package/README.md +241 -0
- package/build/components/actions/actions.cjs +265 -0
- package/build/components/actions/actions.cjs.map +7 -0
- package/build/components/actions/index.cjs +31 -0
- package/build/components/actions/index.cjs.map +7 -0
- package/build/components/actions-menu/actions-menu.cjs +92 -0
- package/build/components/actions-menu/actions-menu.cjs.map +7 -0
- package/build/components/actions-menu/index.cjs +31 -0
- package/build/components/actions-menu/index.cjs.map +7 -0
- package/build/components/commands/commands.cjs +177 -0
- package/build/components/commands/commands.cjs.map +7 -0
- package/build/components/commands/index.cjs +33 -0
- package/build/components/commands/index.cjs.map +7 -0
- package/build/components/commands/use-pending-when-edit-mode.cjs +57 -0
- package/build/components/commands/use-pending-when-edit-mode.cjs.map +7 -0
- package/build/components/layout-settings/index.cjs +31 -0
- package/build/components/layout-settings/index.cjs.map +7 -0
- package/build/components/layout-settings/layout-model-edit-field/index.cjs +186 -0
- package/build/components/layout-settings/layout-model-edit-field/index.cjs.map +7 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-grid.cjs +53 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-grid.cjs.map +7 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-masonry.cjs +53 -0
- package/build/components/layout-settings/layout-model-edit-field/thumbnail-masonry.cjs.map +7 -0
- package/build/components/layout-settings/layout-settings.cjs +207 -0
- package/build/components/layout-settings/layout-settings.cjs.map +7 -0
- package/build/components/no-widgets-state/index.cjs +31 -0
- package/build/components/no-widgets-state/index.cjs.map +7 -0
- package/build/components/no-widgets-state/no-widgets-state.cjs +140 -0
- package/build/components/no-widgets-state/no-widgets-state.cjs.map +7 -0
- package/build/components/reset-confirmation/index.cjs +31 -0
- package/build/components/reset-confirmation/index.cjs.map +7 -0
- package/build/components/reset-confirmation/reset-confirmation.cjs +62 -0
- package/build/components/reset-confirmation/reset-confirmation.cjs.map +7 -0
- package/build/components/widget-chrome/index.cjs +31 -0
- package/build/components/widget-chrome/index.cjs.map +7 -0
- package/build/components/widget-chrome/widget-chrome.cjs +277 -0
- package/build/components/widget-chrome/widget-chrome.cjs.map +7 -0
- package/build/components/widget-inserter/index.cjs +31 -0
- package/build/components/widget-inserter/index.cjs.map +7 -0
- package/build/components/widget-inserter/widget-inserter.cjs +78 -0
- package/build/components/widget-inserter/widget-inserter.cjs.map +7 -0
- package/build/components/widget-picker/index.cjs +31 -0
- package/build/components/widget-picker/index.cjs.map +7 -0
- package/build/components/widget-picker/widget-picker.cjs +209 -0
- package/build/components/widget-picker/widget-picker.cjs.map +7 -0
- package/build/components/widget-render/index.cjs +31 -0
- package/build/components/widget-render/index.cjs.map +7 -0
- package/build/components/widget-render/widget-render.cjs +62 -0
- package/build/components/widget-render/widget-render.cjs.map +7 -0
- package/build/components/widget-settings/index.cjs +37 -0
- package/build/components/widget-settings/index.cjs.map +7 -0
- package/build/components/widget-settings/utils/get-admin-menu-inset.cjs +41 -0
- package/build/components/widget-settings/utils/get-admin-menu-inset.cjs.map +7 -0
- package/build/components/widget-settings/utils/get-widget-settings.cjs +38 -0
- package/build/components/widget-settings/utils/get-widget-settings.cjs.map +7 -0
- package/build/components/widget-settings/utils/index.cjs +34 -0
- package/build/components/widget-settings/utils/index.cjs.map +7 -0
- package/build/components/widget-settings/widget-settings-toolbar.cjs +138 -0
- package/build/components/widget-settings/widget-settings-toolbar.cjs.map +7 -0
- package/build/components/widget-settings/widget-settings-trigger.cjs +82 -0
- package/build/components/widget-settings/widget-settings-trigger.cjs.map +7 -0
- package/build/components/widget-settings/widget-settings.cjs +269 -0
- package/build/components/widget-settings/widget-settings.cjs.map +7 -0
- package/build/components/widget-toolbar/index.cjs +31 -0
- package/build/components/widget-toolbar/index.cjs.map +7 -0
- package/build/components/widget-toolbar/widget-toolbar.cjs +148 -0
- package/build/components/widget-toolbar/widget-toolbar.cjs.map +7 -0
- package/build/components/widgets/index.cjs +31 -0
- package/build/components/widgets/index.cjs.map +7 -0
- package/build/components/widgets/widget-layout-toolbar.cjs +206 -0
- package/build/components/widgets/widget-layout-toolbar.cjs.map +7 -0
- package/build/components/widgets/widget-resize-handle.cjs +163 -0
- package/build/components/widgets/widget-resize-handle.cjs.map +7 -0
- package/build/components/widgets/widgets.cjs +277 -0
- package/build/components/widgets/widgets.cjs.map +7 -0
- package/build/context/dashboard-context.cjs +234 -0
- package/build/context/dashboard-context.cjs.map +7 -0
- package/build/context/ui-context.cjs +77 -0
- package/build/context/ui-context.cjs.map +7 -0
- package/build/context/widget-context.cjs +44 -0
- package/build/context/widget-context.cjs.map +7 -0
- package/build/hooks/use-dashboard-container-column-count.cjs +61 -0
- package/build/hooks/use-dashboard-container-column-count.cjs.map +7 -0
- package/build/index.cjs +45 -0
- package/build/index.cjs.map +7 -0
- package/build/lock-unlock.cjs +37 -0
- package/build/lock-unlock.cjs.map +7 -0
- package/build/types.cjs +31 -0
- package/build/types.cjs.map +7 -0
- package/build/utils/create-dashboard-widget/create-dashboard-widget.cjs +44 -0
- package/build/utils/create-dashboard-widget/create-dashboard-widget.cjs.map +7 -0
- package/build/utils/create-dashboard-widget/index.cjs +31 -0
- package/build/utils/create-dashboard-widget/index.cjs.map +7 -0
- package/build/utils/default-grid/default-grid.cjs +37 -0
- package/build/utils/default-grid/default-grid.cjs.map +7 -0
- package/build/utils/default-grid/index.cjs +31 -0
- package/build/utils/default-grid/index.cjs.map +7 -0
- package/build/utils/grid-model-change/grid-model-change.cjs +56 -0
- package/build/utils/grid-model-change/grid-model-change.cjs.map +7 -0
- package/build/utils/grid-model-change/index.cjs +33 -0
- package/build/utils/grid-model-change/index.cjs.map +7 -0
- package/build/utils/index.cjs +34 -0
- package/build/utils/index.cjs.map +7 -0
- package/build/utils/migrate-layout/index.cjs +31 -0
- package/build/utils/migrate-layout/index.cjs.map +7 -0
- package/build/utils/migrate-layout/migrate-layout.cjs +94 -0
- package/build/utils/migrate-layout/migrate-layout.cjs.map +7 -0
- package/build/utils/normalize-grid-settings/index.cjs +31 -0
- package/build/utils/normalize-grid-settings/index.cjs.map +7 -0
- package/build/utils/normalize-grid-settings/normalize-grid-settings.cjs +46 -0
- package/build/utils/normalize-grid-settings/normalize-grid-settings.cjs.map +7 -0
- package/build/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.cjs +49 -0
- package/build/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.cjs.map +7 -0
- package/build/utils/row-height-presets/index.cjs +39 -0
- package/build/utils/row-height-presets/index.cjs.map +7 -0
- package/build/utils/row-height-presets/row-height-presets.cjs +63 -0
- package/build/utils/row-height-presets/row-height-presets.cjs.map +7 -0
- package/build/widget-dashboard.cjs +86 -0
- package/build/widget-dashboard.cjs.map +7 -0
- package/build/wordpress-commands.d.cjs +2 -0
- package/build/wordpress-commands.d.cjs.map +7 -0
- package/build-module/components/actions/actions.mjs +240 -0
- package/build-module/components/actions/actions.mjs.map +7 -0
- package/build-module/components/actions/index.mjs +6 -0
- package/build-module/components/actions/index.mjs.map +7 -0
- package/build-module/components/actions-menu/actions-menu.mjs +67 -0
- package/build-module/components/actions-menu/actions-menu.mjs.map +7 -0
- package/build-module/components/actions-menu/index.mjs +6 -0
- package/build-module/components/actions-menu/index.mjs.map +7 -0
- package/build-module/components/commands/commands.mjs +160 -0
- package/build-module/components/commands/commands.mjs.map +7 -0
- package/build-module/components/commands/index.mjs +7 -0
- package/build-module/components/commands/index.mjs.map +7 -0
- package/build-module/components/commands/use-pending-when-edit-mode.mjs +32 -0
- package/build-module/components/commands/use-pending-when-edit-mode.mjs.map +7 -0
- package/build-module/components/layout-settings/index.mjs +6 -0
- package/build-module/components/layout-settings/index.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-model-edit-field/index.mjs +151 -0
- package/build-module/components/layout-settings/layout-model-edit-field/index.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs +28 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs +28 -0
- package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs.map +7 -0
- package/build-module/components/layout-settings/layout-settings.mjs +187 -0
- package/build-module/components/layout-settings/layout-settings.mjs.map +7 -0
- package/build-module/components/no-widgets-state/index.mjs +6 -0
- package/build-module/components/no-widgets-state/index.mjs.map +7 -0
- package/build-module/components/no-widgets-state/no-widgets-state.mjs +115 -0
- package/build-module/components/no-widgets-state/no-widgets-state.mjs.map +7 -0
- package/build-module/components/reset-confirmation/index.mjs +6 -0
- package/build-module/components/reset-confirmation/index.mjs.map +7 -0
- package/build-module/components/reset-confirmation/reset-confirmation.mjs +37 -0
- package/build-module/components/reset-confirmation/reset-confirmation.mjs.map +7 -0
- package/build-module/components/widget-chrome/index.mjs +6 -0
- package/build-module/components/widget-chrome/index.mjs.map +7 -0
- package/build-module/components/widget-chrome/widget-chrome.mjs +248 -0
- package/build-module/components/widget-chrome/widget-chrome.mjs.map +7 -0
- package/build-module/components/widget-inserter/index.mjs +6 -0
- package/build-module/components/widget-inserter/index.mjs.map +7 -0
- package/build-module/components/widget-inserter/widget-inserter.mjs +53 -0
- package/build-module/components/widget-inserter/widget-inserter.mjs.map +7 -0
- package/build-module/components/widget-picker/index.mjs +6 -0
- package/build-module/components/widget-picker/index.mjs.map +7 -0
- package/build-module/components/widget-picker/widget-picker.mjs +184 -0
- package/build-module/components/widget-picker/widget-picker.mjs.map +7 -0
- package/build-module/components/widget-render/index.mjs +6 -0
- package/build-module/components/widget-render/index.mjs.map +7 -0
- package/build-module/components/widget-render/widget-render.mjs +37 -0
- package/build-module/components/widget-render/widget-render.mjs.map +7 -0
- package/build-module/components/widget-settings/index.mjs +10 -0
- package/build-module/components/widget-settings/index.mjs.map +7 -0
- package/build-module/components/widget-settings/utils/get-admin-menu-inset.mjs +16 -0
- package/build-module/components/widget-settings/utils/get-admin-menu-inset.mjs.map +7 -0
- package/build-module/components/widget-settings/utils/get-widget-settings.mjs +13 -0
- package/build-module/components/widget-settings/utils/get-widget-settings.mjs.map +7 -0
- package/build-module/components/widget-settings/utils/index.mjs +8 -0
- package/build-module/components/widget-settings/utils/index.mjs.map +7 -0
- package/build-module/components/widget-settings/widget-settings-toolbar.mjs +113 -0
- package/build-module/components/widget-settings/widget-settings-toolbar.mjs.map +7 -0
- package/build-module/components/widget-settings/widget-settings-trigger.mjs +57 -0
- package/build-module/components/widget-settings/widget-settings-trigger.mjs.map +7 -0
- package/build-module/components/widget-settings/widget-settings.mjs +244 -0
- package/build-module/components/widget-settings/widget-settings.mjs.map +7 -0
- package/build-module/components/widget-toolbar/index.mjs +6 -0
- package/build-module/components/widget-toolbar/index.mjs.map +7 -0
- package/build-module/components/widget-toolbar/widget-toolbar.mjs +113 -0
- package/build-module/components/widget-toolbar/widget-toolbar.mjs.map +7 -0
- package/build-module/components/widgets/index.mjs +6 -0
- package/build-module/components/widgets/index.mjs.map +7 -0
- package/build-module/components/widgets/widget-layout-toolbar.mjs +181 -0
- package/build-module/components/widgets/widget-layout-toolbar.mjs.map +7 -0
- package/build-module/components/widgets/widget-resize-handle.mjs +128 -0
- package/build-module/components/widgets/widget-resize-handle.mjs.map +7 -0
- package/build-module/components/widgets/widgets.mjs +242 -0
- package/build-module/components/widgets/widgets.mjs.map +7 -0
- package/build-module/context/dashboard-context.mjs +205 -0
- package/build-module/context/dashboard-context.mjs.map +7 -0
- package/build-module/context/ui-context.mjs +56 -0
- package/build-module/context/ui-context.mjs.map +7 -0
- package/build-module/context/widget-context.mjs +18 -0
- package/build-module/context/widget-context.mjs.map +7 -0
- package/build-module/hooks/use-dashboard-container-column-count.mjs +40 -0
- package/build-module/hooks/use-dashboard-container-column-count.mjs.map +7 -0
- package/build-module/index.mjs +18 -0
- package/build-module/index.mjs.map +7 -0
- package/build-module/lock-unlock.mjs +11 -0
- package/build-module/lock-unlock.mjs.map +7 -0
- package/build-module/types.mjs +6 -0
- package/build-module/types.mjs.map +7 -0
- package/build-module/utils/create-dashboard-widget/create-dashboard-widget.mjs +19 -0
- package/build-module/utils/create-dashboard-widget/create-dashboard-widget.mjs.map +7 -0
- package/build-module/utils/create-dashboard-widget/index.mjs +6 -0
- package/build-module/utils/create-dashboard-widget/index.mjs.map +7 -0
- package/build-module/utils/default-grid/default-grid.mjs +12 -0
- package/build-module/utils/default-grid/default-grid.mjs.map +7 -0
- package/build-module/utils/default-grid/index.mjs +6 -0
- package/build-module/utils/default-grid/index.mjs.map +7 -0
- package/build-module/utils/grid-model-change/grid-model-change.mjs +30 -0
- package/build-module/utils/grid-model-change/grid-model-change.mjs.map +7 -0
- package/build-module/utils/grid-model-change/index.mjs +7 -0
- package/build-module/utils/grid-model-change/index.mjs.map +7 -0
- package/build-module/utils/index.mjs +8 -0
- package/build-module/utils/index.mjs.map +7 -0
- package/build-module/utils/migrate-layout/index.mjs +6 -0
- package/build-module/utils/migrate-layout/index.mjs.map +7 -0
- package/build-module/utils/migrate-layout/migrate-layout.mjs +69 -0
- package/build-module/utils/migrate-layout/migrate-layout.mjs.map +7 -0
- package/build-module/utils/normalize-grid-settings/index.mjs +6 -0
- package/build-module/utils/normalize-grid-settings/index.mjs.map +7 -0
- package/build-module/utils/normalize-grid-settings/normalize-grid-settings.mjs +21 -0
- package/build-module/utils/normalize-grid-settings/normalize-grid-settings.mjs.map +7 -0
- package/build-module/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.mjs +22 -0
- package/build-module/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.mjs.map +7 -0
- package/build-module/utils/row-height-presets/index.mjs +16 -0
- package/build-module/utils/row-height-presets/index.mjs.map +7 -0
- package/build-module/utils/row-height-presets/row-height-presets.mjs +34 -0
- package/build-module/utils/row-height-presets/row-height-presets.mjs.map +7 -0
- package/build-module/widget-dashboard.mjs +61 -0
- package/build-module/widget-dashboard.mjs.map +7 -0
- package/build-module/wordpress-commands.d.mjs +1 -0
- package/build-module/wordpress-commands.d.mjs.map +7 -0
- package/build-types/components/actions/actions.d.ts +11 -0
- package/build-types/components/actions/actions.d.ts.map +1 -0
- package/build-types/components/actions/index.d.ts +2 -0
- package/build-types/components/actions/index.d.ts.map +1 -0
- package/build-types/components/actions-menu/actions-menu.d.ts +22 -0
- package/build-types/components/actions-menu/actions-menu.d.ts.map +1 -0
- package/build-types/components/actions-menu/index.d.ts +3 -0
- package/build-types/components/actions-menu/index.d.ts.map +1 -0
- package/build-types/components/commands/commands.d.ts +7 -0
- package/build-types/components/commands/commands.d.ts.map +1 -0
- package/build-types/components/commands/index.d.ts +2 -0
- package/build-types/components/commands/index.d.ts.map +1 -0
- package/build-types/components/commands/use-pending-when-edit-mode.d.ts +15 -0
- package/build-types/components/commands/use-pending-when-edit-mode.d.ts.map +1 -0
- package/build-types/components/layout-settings/index.d.ts +2 -0
- package/build-types/components/layout-settings/index.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-model-edit-field/index.d.ts +17 -0
- package/build-types/components/layout-settings/layout-model-edit-field/index.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-grid.d.ts +6 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-grid.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-masonry.d.ts +6 -0
- package/build-types/components/layout-settings/layout-model-edit-field/thumbnail-masonry.d.ts.map +1 -0
- package/build-types/components/layout-settings/layout-settings.d.ts +14 -0
- package/build-types/components/layout-settings/layout-settings.d.ts.map +1 -0
- package/build-types/components/no-widgets-state/index.d.ts +2 -0
- package/build-types/components/no-widgets-state/index.d.ts.map +1 -0
- package/build-types/components/no-widgets-state/no-widgets-state.d.ts +17 -0
- package/build-types/components/no-widgets-state/no-widgets-state.d.ts.map +1 -0
- package/build-types/components/reset-confirmation/index.d.ts +2 -0
- package/build-types/components/reset-confirmation/index.d.ts.map +1 -0
- package/build-types/components/reset-confirmation/reset-confirmation.d.ts +8 -0
- package/build-types/components/reset-confirmation/reset-confirmation.d.ts.map +1 -0
- package/build-types/components/widget-chrome/index.d.ts +2 -0
- package/build-types/components/widget-chrome/index.d.ts.map +1 -0
- package/build-types/components/widget-chrome/widget-chrome.d.ts +22 -0
- package/build-types/components/widget-chrome/widget-chrome.d.ts.map +1 -0
- package/build-types/components/widget-inserter/index.d.ts +2 -0
- package/build-types/components/widget-inserter/index.d.ts.map +1 -0
- package/build-types/components/widget-inserter/widget-inserter.d.ts +7 -0
- package/build-types/components/widget-inserter/widget-inserter.d.ts.map +1 -0
- package/build-types/components/widget-picker/index.d.ts +2 -0
- package/build-types/components/widget-picker/index.d.ts.map +1 -0
- package/build-types/components/widget-picker/widget-picker.d.ts +26 -0
- package/build-types/components/widget-picker/widget-picker.d.ts.map +1 -0
- package/build-types/components/widget-render/index.d.ts +2 -0
- package/build-types/components/widget-render/index.d.ts.map +1 -0
- package/build-types/components/widget-render/widget-render.d.ts +17 -0
- package/build-types/components/widget-render/widget-render.d.ts.map +1 -0
- package/build-types/components/widget-settings/index.d.ts +5 -0
- package/build-types/components/widget-settings/index.d.ts.map +1 -0
- package/build-types/components/widget-settings/utils/get-admin-menu-inset.d.ts +17 -0
- package/build-types/components/widget-settings/utils/get-admin-menu-inset.d.ts.map +1 -0
- package/build-types/components/widget-settings/utils/get-widget-settings.d.ts +10 -0
- package/build-types/components/widget-settings/utils/get-widget-settings.d.ts.map +1 -0
- package/build-types/components/widget-settings/utils/index.d.ts +3 -0
- package/build-types/components/widget-settings/utils/index.d.ts.map +1 -0
- package/build-types/components/widget-settings/widget-settings-toolbar.d.ts +20 -0
- package/build-types/components/widget-settings/widget-settings-toolbar.d.ts.map +1 -0
- package/build-types/components/widget-settings/widget-settings-trigger.d.ts +23 -0
- package/build-types/components/widget-settings/widget-settings-trigger.d.ts.map +1 -0
- package/build-types/components/widget-settings/widget-settings.d.ts +13 -0
- package/build-types/components/widget-settings/widget-settings.d.ts.map +1 -0
- package/build-types/components/widget-toolbar/index.d.ts +3 -0
- package/build-types/components/widget-toolbar/index.d.ts.map +1 -0
- package/build-types/components/widget-toolbar/widget-toolbar.d.ts +16 -0
- package/build-types/components/widget-toolbar/widget-toolbar.d.ts.map +1 -0
- package/build-types/components/widgets/index.d.ts +2 -0
- package/build-types/components/widgets/index.d.ts.map +1 -0
- package/build-types/components/widgets/widget-layout-toolbar.d.ts +14 -0
- package/build-types/components/widgets/widget-layout-toolbar.d.ts.map +1 -0
- package/build-types/components/widgets/widget-resize-handle.d.ts +12 -0
- package/build-types/components/widgets/widget-resize-handle.d.ts.map +1 -0
- package/build-types/components/widgets/widgets.d.ts +10 -0
- package/build-types/components/widgets/widgets.d.ts.map +1 -0
- package/build-types/context/dashboard-context.d.ts +111 -0
- package/build-types/context/dashboard-context.d.ts.map +1 -0
- package/build-types/context/ui-context.d.ts +54 -0
- package/build-types/context/ui-context.d.ts.map +1 -0
- package/build-types/context/widget-context.d.ts +25 -0
- package/build-types/context/widget-context.d.ts.map +1 -0
- package/build-types/hooks/use-dashboard-container-column-count.d.ts +15 -0
- package/build-types/hooks/use-dashboard-container-column-count.d.ts.map +1 -0
- package/build-types/index.d.ts +7 -0
- package/build-types/index.d.ts.map +1 -0
- package/build-types/lock-unlock.d.ts +2 -0
- package/build-types/lock-unlock.d.ts.map +1 -0
- package/build-types/types.d.ts +222 -0
- package/build-types/types.d.ts.map +1 -0
- package/build-types/utils/create-dashboard-widget/create-dashboard-widget.d.ts +20 -0
- package/build-types/utils/create-dashboard-widget/create-dashboard-widget.d.ts.map +1 -0
- package/build-types/utils/create-dashboard-widget/index.d.ts +2 -0
- package/build-types/utils/create-dashboard-widget/index.d.ts.map +1 -0
- package/build-types/utils/default-grid/default-grid.d.ts +11 -0
- package/build-types/utils/default-grid/default-grid.d.ts.map +1 -0
- package/build-types/utils/default-grid/index.d.ts +2 -0
- package/build-types/utils/default-grid/index.d.ts.map +1 -0
- package/build-types/utils/grid-model-change/grid-model-change.d.ts +20 -0
- package/build-types/utils/grid-model-change/grid-model-change.d.ts.map +1 -0
- package/build-types/utils/grid-model-change/index.d.ts +2 -0
- package/build-types/utils/grid-model-change/index.d.ts.map +1 -0
- package/build-types/utils/index.d.ts +3 -0
- package/build-types/utils/index.d.ts.map +1 -0
- package/build-types/utils/migrate-layout/index.d.ts +2 -0
- package/build-types/utils/migrate-layout/index.d.ts.map +1 -0
- package/build-types/utils/migrate-layout/migrate-layout.d.ts +36 -0
- package/build-types/utils/migrate-layout/migrate-layout.d.ts.map +1 -0
- package/build-types/utils/normalize-grid-settings/index.d.ts +2 -0
- package/build-types/utils/normalize-grid-settings/index.d.ts.map +1 -0
- package/build-types/utils/normalize-grid-settings/normalize-grid-settings.d.ts +11 -0
- package/build-types/utils/normalize-grid-settings/normalize-grid-settings.d.ts.map +1 -0
- package/build-types/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.d.ts +21 -0
- package/build-types/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.d.ts.map +1 -0
- package/build-types/utils/row-height-presets/index.d.ts +3 -0
- package/build-types/utils/row-height-presets/index.d.ts.map +1 -0
- package/build-types/utils/row-height-presets/row-height-presets.d.ts +17 -0
- package/build-types/utils/row-height-presets/row-height-presets.d.ts.map +1 -0
- package/build-types/widget-dashboard.d.ts +51 -0
- package/build-types/widget-dashboard.d.ts.map +1 -0
- package/package.json +90 -0
- package/src/components/actions/actions.module.css +54 -0
- package/src/components/actions/actions.tsx +180 -0
- package/src/components/actions/index.ts +1 -0
- package/src/components/actions-menu/actions-menu.tsx +104 -0
- package/src/components/actions-menu/index.ts +2 -0
- package/src/components/commands/commands.tsx +182 -0
- package/src/components/commands/index.ts +1 -0
- package/src/components/commands/use-pending-when-edit-mode.ts +48 -0
- package/src/components/layout-settings/index.ts +1 -0
- package/src/components/layout-settings/layout-model-edit-field/index.tsx +98 -0
- package/src/components/layout-settings/layout-model-edit-field/style.module.css +34 -0
- package/src/components/layout-settings/layout-model-edit-field/thumbnail-grid.tsx +28 -0
- package/src/components/layout-settings/layout-model-edit-field/thumbnail-masonry.tsx +28 -0
- package/src/components/layout-settings/layout-settings.tsx +217 -0
- package/src/components/no-widgets-state/index.ts +1 -0
- package/src/components/no-widgets-state/no-widgets-state.module.css +3 -0
- package/src/components/no-widgets-state/no-widgets-state.tsx +56 -0
- package/src/components/reset-confirmation/index.ts +1 -0
- package/src/components/reset-confirmation/reset-confirmation.tsx +44 -0
- package/src/components/widget-chrome/index.ts +1 -0
- package/src/components/widget-chrome/widget-chrome.module.css +87 -0
- package/src/components/widget-chrome/widget-chrome.tsx +255 -0
- package/src/components/widget-inserter/index.ts +1 -0
- package/src/components/widget-inserter/widget-inserter.tsx +70 -0
- package/src/components/widget-picker/index.ts +1 -0
- package/src/components/widget-picker/widget-picker.module.css +11 -0
- package/src/components/widget-picker/widget-picker.tsx +137 -0
- package/src/components/widget-render/index.ts +1 -0
- package/src/components/widget-render/widget-render.tsx +58 -0
- package/src/components/widget-settings/index.ts +4 -0
- package/src/components/widget-settings/utils/get-admin-menu-inset.ts +30 -0
- package/src/components/widget-settings/utils/get-widget-settings.ts +22 -0
- package/src/components/widget-settings/utils/index.ts +2 -0
- package/src/components/widget-settings/widget-settings-toolbar.module.css +25 -0
- package/src/components/widget-settings/widget-settings-toolbar.tsx +45 -0
- package/src/components/widget-settings/widget-settings-trigger.tsx +96 -0
- package/src/components/widget-settings/widget-settings.module.css +8 -0
- package/src/components/widget-settings/widget-settings.tsx +200 -0
- package/src/components/widget-toolbar/index.ts +2 -0
- package/src/components/widget-toolbar/widget-toolbar.module.css +12 -0
- package/src/components/widget-toolbar/widget-toolbar.tsx +46 -0
- package/src/components/widgets/index.ts +1 -0
- package/src/components/widgets/widget-layout-toolbar.module.css +6 -0
- package/src/components/widgets/widget-layout-toolbar.tsx +118 -0
- package/src/components/widgets/widget-resize-handle.module.css +135 -0
- package/src/components/widgets/widget-resize-handle.tsx +60 -0
- package/src/components/widgets/widgets.module.css +43 -0
- package/src/components/widgets/widgets.tsx +208 -0
- package/src/context/dashboard-context.tsx +386 -0
- package/src/context/ui-context.tsx +118 -0
- package/src/context/widget-context.tsx +45 -0
- package/src/hooks/use-dashboard-container-column-count.ts +63 -0
- package/src/index.ts +9 -0
- package/src/lock-unlock.ts +10 -0
- package/src/test/actions.test.tsx +228 -0
- package/src/test/commands.test.tsx +176 -0
- package/src/test/create-dashboard-widget.test.ts +59 -0
- package/src/test/dashboard-context.test.tsx +26 -0
- package/src/test/staging.test.tsx +476 -0
- package/src/test/widget-dashboard.test.tsx +204 -0
- package/src/test/widget-inserter.test.tsx +210 -0
- package/src/test/widget-settings.test.tsx +199 -0
- package/src/types.ts +260 -0
- package/src/utils/create-dashboard-widget/create-dashboard-widget.ts +43 -0
- package/src/utils/create-dashboard-widget/index.ts +1 -0
- package/src/utils/default-grid/default-grid.ts +17 -0
- package/src/utils/default-grid/index.ts +1 -0
- package/src/utils/grid-model-change/grid-model-change.ts +53 -0
- package/src/utils/grid-model-change/index.ts +1 -0
- package/src/utils/index.ts +2 -0
- package/src/utils/migrate-layout/index.ts +1 -0
- package/src/utils/migrate-layout/migrate-layout.ts +156 -0
- package/src/utils/migrate-layout/test/migrate-layout.test.ts +114 -0
- package/src/utils/normalize-grid-settings/index.ts +1 -0
- package/src/utils/normalize-grid-settings/normalize-grid-settings.ts +38 -0
- package/src/utils/resolve-dashboard-column-count/resolve-dashboard-column-count.ts +41 -0
- package/src/utils/resolve-dashboard-column-count/test/resolve-dashboard-column-count.test.ts +44 -0
- package/src/utils/row-height-presets/index.ts +8 -0
- package/src/utils/row-height-presets/row-height-presets.ts +43 -0
- package/src/widget-dashboard.tsx +102 -0
- package/src/wordpress-commands.d.ts +12 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/layout-settings/layout-model-edit-field/index.tsx
|
|
2
|
+
import clsx from "clsx";
|
|
3
|
+
import { useCallback } from "@wordpress/element";
|
|
4
|
+
import { Button, Fieldset, Stack, Text } from "@wordpress/ui";
|
|
5
|
+
import { GridThumbnail } from "./thumbnail-grid.mjs";
|
|
6
|
+
import { MasonryThumbnail } from "./thumbnail-masonry.mjs";
|
|
7
|
+
|
|
8
|
+
// packages/style-runtime/src/index.ts
|
|
9
|
+
var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
|
|
10
|
+
function getRuntime() {
|
|
11
|
+
const globalScope = globalThis;
|
|
12
|
+
if (globalScope.__wpStyleRuntime) {
|
|
13
|
+
return globalScope.__wpStyleRuntime;
|
|
14
|
+
}
|
|
15
|
+
globalScope.__wpStyleRuntime = {
|
|
16
|
+
documents: /* @__PURE__ */ new Map(),
|
|
17
|
+
styles: /* @__PURE__ */ new Map(),
|
|
18
|
+
injectedStyles: /* @__PURE__ */ new WeakMap()
|
|
19
|
+
};
|
|
20
|
+
if (typeof document !== "undefined") {
|
|
21
|
+
registerDocument(document);
|
|
22
|
+
}
|
|
23
|
+
return globalScope.__wpStyleRuntime;
|
|
24
|
+
}
|
|
25
|
+
function documentContainsStyleHash(targetDocument, hash) {
|
|
26
|
+
if (!targetDocument.head) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
for (const style of targetDocument.head.querySelectorAll(
|
|
30
|
+
`style[${STYLE_HASH_ATTRIBUTE}]`
|
|
31
|
+
)) {
|
|
32
|
+
if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) {
|
|
33
|
+
return true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
function injectStyle(targetDocument, hash, css) {
|
|
39
|
+
if (!targetDocument.head) {
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const runtime = getRuntime();
|
|
43
|
+
let injectedStyles = runtime.injectedStyles.get(targetDocument);
|
|
44
|
+
if (!injectedStyles) {
|
|
45
|
+
injectedStyles = /* @__PURE__ */ new Set();
|
|
46
|
+
runtime.injectedStyles.set(targetDocument, injectedStyles);
|
|
47
|
+
}
|
|
48
|
+
if (injectedStyles.has(hash)) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
if (documentContainsStyleHash(targetDocument, hash)) {
|
|
52
|
+
injectedStyles.add(hash);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const style = targetDocument.createElement("style");
|
|
56
|
+
style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
|
|
57
|
+
style.appendChild(targetDocument.createTextNode(css));
|
|
58
|
+
targetDocument.head.appendChild(style);
|
|
59
|
+
injectedStyles.add(hash);
|
|
60
|
+
}
|
|
61
|
+
function registerDocument(targetDocument) {
|
|
62
|
+
const runtime = getRuntime();
|
|
63
|
+
runtime.documents.set(
|
|
64
|
+
targetDocument,
|
|
65
|
+
(runtime.documents.get(targetDocument) ?? 0) + 1
|
|
66
|
+
);
|
|
67
|
+
for (const [hash, css] of runtime.styles) {
|
|
68
|
+
injectStyle(targetDocument, hash, css);
|
|
69
|
+
}
|
|
70
|
+
return () => {
|
|
71
|
+
const count = runtime.documents.get(targetDocument);
|
|
72
|
+
if (count === void 0) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
if (count <= 1) {
|
|
76
|
+
runtime.documents.delete(targetDocument);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
runtime.documents.set(targetDocument, count - 1);
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
function registerStyle(hash, css) {
|
|
83
|
+
const runtime = getRuntime();
|
|
84
|
+
runtime.styles.set(hash, css);
|
|
85
|
+
for (const targetDocument of runtime.documents.keys()) {
|
|
86
|
+
injectStyle(targetDocument, hash, css);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// packages/widget-dashboard/src/components/layout-settings/layout-model-edit-field/style.module.css
|
|
91
|
+
if (typeof process === "undefined" || process.env.NODE_ENV !== "test") {
|
|
92
|
+
registerStyle("1e741045ea", ".a197e5fadbd013d8__option{background:transparent;border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);color:inherit;cursor:var(--wpds-cursor-control,pointer);flex:1;padding:var(--wpds-dimension-padding-md,12px);text-align:center;transition:border-color var(--wpds-motion-duration-sm,.1s) var(--wpds-motion-easing-subtle,cubic-bezier(.15,0,.15,1)),background-color var(--wpds-motion-duration-sm,.1s) var(--wpds-motion-easing-subtle,cubic-bezier(.15,0,.15,1))}.a197e5fadbd013d8__option:hover{border-color:var(--wpds-color-stroke-surface-neutral-strong,#8d8d8d)}._90dfb85f4fe1f83c__optionSelected,._90dfb85f4fe1f83c__optionSelected:hover{background-color:color-mix(in srgb,var(--wpds-color-background-surface-brand,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 9%,#fff)) 6%,transparent);border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9))}._8dc1e0008b2c61a8__thumbnail{block-size:auto;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:block;inline-size:100%}._90dfb85f4fe1f83c__optionSelected ._8dc1e0008b2c61a8__thumbnail{color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}");
|
|
93
|
+
}
|
|
94
|
+
var style_default = { "option": "a197e5fadbd013d8__option", "optionSelected": "_90dfb85f4fe1f83c__optionSelected", "thumbnail": "_8dc1e0008b2c61a8__thumbnail" };
|
|
95
|
+
|
|
96
|
+
// packages/widget-dashboard/src/components/layout-settings/layout-model-edit-field/index.tsx
|
|
97
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
98
|
+
function ModelThumbnail({
|
|
99
|
+
model,
|
|
100
|
+
className
|
|
101
|
+
}) {
|
|
102
|
+
return model === "masonry" ? /* @__PURE__ */ jsx(MasonryThumbnail, { className }) : /* @__PURE__ */ jsx(GridThumbnail, { className });
|
|
103
|
+
}
|
|
104
|
+
function LayoutModelEditField({
|
|
105
|
+
data,
|
|
106
|
+
field,
|
|
107
|
+
onChange
|
|
108
|
+
}) {
|
|
109
|
+
const { getValue, setValue, elements = [] } = field;
|
|
110
|
+
const value = getValue({ item: data });
|
|
111
|
+
const disabled = field.isDisabled({ item: data, field });
|
|
112
|
+
const onSelect = useCallback(
|
|
113
|
+
(nextValue) => onChange(setValue({ item: data, value: nextValue })),
|
|
114
|
+
[data, onChange, setValue]
|
|
115
|
+
);
|
|
116
|
+
return /* @__PURE__ */ jsxs(Fieldset.Root, { children: [
|
|
117
|
+
/* @__PURE__ */ jsx(Fieldset.Legend, { children: field.label }),
|
|
118
|
+
/* @__PURE__ */ jsx(Stack, { direction: "row", gap: "md", role: "radiogroup", children: elements.map((option) => {
|
|
119
|
+
const isSelected = value === option.value;
|
|
120
|
+
return /* @__PURE__ */ jsx(
|
|
121
|
+
Button,
|
|
122
|
+
{
|
|
123
|
+
variant: "unstyled",
|
|
124
|
+
role: "radio",
|
|
125
|
+
"aria-checked": isSelected,
|
|
126
|
+
disabled,
|
|
127
|
+
className: clsx(style_default.option, {
|
|
128
|
+
[style_default.optionSelected]: isSelected
|
|
129
|
+
}),
|
|
130
|
+
onClick: () => onSelect(option.value),
|
|
131
|
+
children: /* @__PURE__ */ jsxs(Stack, { direction: "column", gap: "sm", align: "stretch", children: [
|
|
132
|
+
/* @__PURE__ */ jsx(
|
|
133
|
+
ModelThumbnail,
|
|
134
|
+
{
|
|
135
|
+
model: String(option.value),
|
|
136
|
+
className: style_default.thumbnail
|
|
137
|
+
}
|
|
138
|
+
),
|
|
139
|
+
/* @__PURE__ */ jsx(Text, { children: option.label })
|
|
140
|
+
] })
|
|
141
|
+
},
|
|
142
|
+
String(option.value)
|
|
143
|
+
);
|
|
144
|
+
}) }),
|
|
145
|
+
typeof field.description === "string" && /* @__PURE__ */ jsx(Fieldset.Description, { children: field.description })
|
|
146
|
+
] });
|
|
147
|
+
}
|
|
148
|
+
export {
|
|
149
|
+
LayoutModelEditField
|
|
150
|
+
};
|
|
151
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/layout-settings/layout-model-edit-field/index.tsx", "../../../../../style-runtime/src/index.ts", "../../../../src/components/layout-settings/layout-model-edit-field/style.module.css"],
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport clsx from 'clsx';\n\n/**\n * WordPress dependencies\n */\nimport type { DataFormControlProps } from '@wordpress/dataviews';\nimport { useCallback } from '@wordpress/element';\n/* eslint-disable @wordpress/use-recommended-components */\nimport { Button, Fieldset, Stack, Text } from '@wordpress/ui';\n/* eslint-enable @wordpress/use-recommended-components */\n\n/**\n * Internal dependencies\n */\nimport type { WidgetGridSettings } from '../../../types';\nimport { GridThumbnail } from './thumbnail-grid';\nimport { MasonryThumbnail } from './thumbnail-masonry';\nimport styles from './style.module.css';\n\ninterface ModelThumbnailProps {\n\tmodel: string;\n\tclassName?: string;\n}\n\nfunction ModelThumbnail( {\n\tmodel,\n\tclassName,\n}: ModelThumbnailProps ): React.ReactNode {\n\treturn model === 'masonry' ? (\n\t\t<MasonryThumbnail className={ className } />\n\t) : (\n\t\t<GridThumbnail className={ className } />\n\t);\n}\n\n/**\n * Card-style picker for the layout model: each option (`grid`, `masonry`)\n * renders as a thumbnail card in a radio group. Wired as the `Edit` control\n * for the `model` field of the layout settings DataForm.\n *\n * @param {DataFormControlProps< WidgetGridSettings >} props DataForm control props.\n */\nexport function LayoutModelEditField( {\n\tdata,\n\tfield,\n\tonChange,\n}: DataFormControlProps< WidgetGridSettings > ): React.ReactNode {\n\tconst { getValue, setValue, elements = [] } = field;\n\tconst value = getValue( { item: data } );\n\tconst disabled = field.isDisabled( { item: data, field } );\n\n\tconst onSelect = useCallback(\n\t\t( nextValue: string | number | undefined ) =>\n\t\t\tonChange( setValue( { item: data, value: nextValue } ) ),\n\t\t[ data, onChange, setValue ]\n\t);\n\n\treturn (\n\t\t<Fieldset.Root>\n\t\t\t<Fieldset.Legend>{ field.label }</Fieldset.Legend>\n\t\t\t<Stack direction=\"row\" gap=\"md\" role=\"radiogroup\">\n\t\t\t\t{ elements.map( ( option ) => {\n\t\t\t\t\tconst isSelected = value === option.value;\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\tkey={ String( option.value ) }\n\t\t\t\t\t\t\tvariant=\"unstyled\"\n\t\t\t\t\t\t\trole=\"radio\"\n\t\t\t\t\t\t\taria-checked={ isSelected }\n\t\t\t\t\t\t\tdisabled={ disabled }\n\t\t\t\t\t\t\tclassName={ clsx( styles.option, {\n\t\t\t\t\t\t\t\t[ styles.optionSelected ]: isSelected,\n\t\t\t\t\t\t\t} ) }\n\t\t\t\t\t\t\tonClick={ () => onSelect( option.value ) }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Stack direction=\"column\" gap=\"sm\" align=\"stretch\">\n\t\t\t\t\t\t\t\t<ModelThumbnail\n\t\t\t\t\t\t\t\t\tmodel={ String( option.value ) }\n\t\t\t\t\t\t\t\t\tclassName={ styles.thumbnail }\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<Text>{ option.label }</Text>\n\t\t\t\t\t\t\t</Stack>\n\t\t\t\t\t\t</Button>\n\t\t\t\t\t);\n\t\t\t\t} ) }\n\t\t\t</Stack>\n\t\t\t{ typeof field.description === 'string' && (\n\t\t\t\t<Fieldset.Description>\n\t\t\t\t\t{ field.description }\n\t\t\t\t</Fieldset.Description>\n\t\t\t) }\n\t\t</Fieldset.Root>\n\t);\n}\n", "type GlobalScopeWithStyleRuntime = typeof globalThis & {\n\t// This global is shared by separately bundled copies of this package.\n\t// Keep its shape backward compatible after release.\n\t__wpStyleRuntime?: {\n\t\tdocuments: Map< Document, number >;\n\t\tstyles: Map< string, string >;\n\t\tinjectedStyles: WeakMap< Document, Set< string > >;\n\t};\n};\n\nconst STYLE_HASH_ATTRIBUTE = 'data-wp-hash';\n\n/**\n * Returns the shared style runtime registry.\n *\n * The registry is stored on `globalThis` so separately bundled copies of this\n * package can coordinate through the same document and style maps.\n *\n * @return The shared runtime registry.\n */\nfunction getRuntime() {\n\tconst globalScope = globalThis as GlobalScopeWithStyleRuntime;\n\n\tif ( globalScope.__wpStyleRuntime ) {\n\t\treturn globalScope.__wpStyleRuntime;\n\t}\n\n\tglobalScope.__wpStyleRuntime = {\n\t\tdocuments: new Map(),\n\t\tstyles: new Map(),\n\t\tinjectedStyles: new WeakMap(),\n\t};\n\n\tif ( typeof document !== 'undefined' ) {\n\t\tregisterDocument( document );\n\t}\n\n\treturn globalScope.__wpStyleRuntime;\n}\n\n/**\n * Checks whether a document already contains a style tag for a hash.\n *\n * @param targetDocument Document to inspect.\n * @param hash Stable hash for the transformed CSS.\n *\n * @return Whether the style hash already exists in the document.\n */\nfunction documentContainsStyleHash(\n\ttargetDocument: Document,\n\thash: string\n): boolean {\n\tif ( ! targetDocument.head ) {\n\t\treturn false;\n\t}\n\n\tfor ( const style of targetDocument.head.querySelectorAll(\n\t\t`style[${ STYLE_HASH_ATTRIBUTE }]`\n\t) ) {\n\t\tif ( style.getAttribute( STYLE_HASH_ATTRIBUTE ) === hash ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Injects a registered style into a document, unless that document already\n * contains a style tag for the same hash.\n *\n * @param targetDocument Document to inject the style into.\n * @param hash Stable hash for the transformed CSS.\n * @param css CSS text to inject.\n */\nfunction injectStyle( targetDocument: Document, hash: string, css: string ) {\n\tif ( ! targetDocument.head ) {\n\t\treturn;\n\t}\n\n\tconst runtime = getRuntime();\n\tlet injectedStyles = runtime.injectedStyles.get( targetDocument );\n\n\tif ( ! injectedStyles ) {\n\t\tinjectedStyles = new Set();\n\t\truntime.injectedStyles.set( targetDocument, injectedStyles );\n\t}\n\n\tif ( injectedStyles.has( hash ) ) {\n\t\treturn;\n\t}\n\n\t// Older generated CSS module output can still inject matching style tags\n\t// after this document's cache is created, so keep the DOM as the fallback\n\t// source of truth on cache misses.\n\tif ( documentContainsStyleHash( targetDocument, hash ) ) {\n\t\tinjectedStyles.add( hash );\n\t\treturn;\n\t}\n\n\tconst style = targetDocument.createElement( 'style' );\n\tstyle.setAttribute( STYLE_HASH_ATTRIBUTE, hash );\n\tstyle.appendChild( targetDocument.createTextNode( css ) );\n\ttargetDocument.head.appendChild( style );\n\tinjectedStyles.add( hash );\n}\n\n/**\n * Registers a document as a style injection target.\n *\n * Existing registered styles are replayed into the document immediately.\n * Documents are reference-counted so multiple providers can safely register the\n * same document without one cleanup removing it while another registration is\n * still active.\n *\n * @param targetDocument Document to receive registered styles.\n * @return Cleanup function that unregisters this document registration.\n */\nexport function registerDocument( targetDocument: Document ) {\n\tconst runtime = getRuntime();\n\n\truntime.documents.set(\n\t\ttargetDocument,\n\t\t( runtime.documents.get( targetDocument ) ?? 0 ) + 1\n\t);\n\n\tfor ( const [ hash, css ] of runtime.styles ) {\n\t\tinjectStyle( targetDocument, hash, css );\n\t}\n\n\treturn () => {\n\t\tconst count = runtime.documents.get( targetDocument );\n\n\t\tif ( count === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( count <= 1 ) {\n\t\t\truntime.documents.delete( targetDocument );\n\t\t\treturn;\n\t\t}\n\n\t\truntime.documents.set( targetDocument, count - 1 );\n\t};\n}\n\n/**\n * Registers a style and injects it into all registered documents.\n *\n * The hash is used as the deduplication key, so calling this repeatedly with\n * the same hash will not add duplicate style tags to a document.\n * Registered styles are retained for the lifetime of the page so they can be\n * replayed into documents that are registered later.\n *\n * @param hash Stable hash for the transformed CSS.\n * @param css CSS text to inject.\n */\nexport function registerStyle( hash: string, css: string ) {\n\tconst runtime = getRuntime();\n\n\truntime.styles.set( hash, css );\n\n\tfor ( const targetDocument of runtime.documents.keys() ) {\n\t\tinjectStyle( targetDocument, hash, css );\n\t}\n}\n", "import { registerStyle } from '@wordpress/style-runtime';\nif (typeof process === 'undefined' || process.env.NODE_ENV !== 'test') {\n\tregisterStyle(\"1e741045ea\", \".a197e5fadbd013d8__option{background:transparent;border:var(--wpds-border-width-xs,1px) solid var(--wpds-color-stroke-surface-neutral,#dbdbdb);border-radius:var(--wpds-border-radius-md,4px);color:inherit;cursor:var(--wpds-cursor-control,pointer);flex:1;padding:var(--wpds-dimension-padding-md,12px);text-align:center;transition:border-color var(--wpds-motion-duration-sm,.1s) var(--wpds-motion-easing-subtle,cubic-bezier(.15,0,.15,1)),background-color var(--wpds-motion-duration-sm,.1s) var(--wpds-motion-easing-subtle,cubic-bezier(.15,0,.15,1))}.a197e5fadbd013d8__option:hover{border-color:var(--wpds-color-stroke-surface-neutral-strong,#8d8d8d)}._90dfb85f4fe1f83c__optionSelected,._90dfb85f4fe1f83c__optionSelected:hover{background-color:color-mix(in srgb,var(--wpds-color-background-surface-brand,color-mix(in oklch,var(--wp-admin-theme-color,#3858e9) 9%,#fff)) 6%,transparent);border-color:var(--wpds-color-stroke-interactive-brand,var(--wp-admin-theme-color,#3858e9))}._8dc1e0008b2c61a8__thumbnail{block-size:auto;color:var(--wpds-color-foreground-content-neutral-weak,#707070);display:block;inline-size:100%}._90dfb85f4fe1f83c__optionSelected ._8dc1e0008b2c61a8__thumbnail{color:var(--wpds-color-foreground-interactive-brand,var(--wp-admin-theme-color,#3858e9))}\");\n}\nexport default {\"option\":\"a197e5fadbd013d8__option\",\"optionSelected\":\"_90dfb85f4fe1f83c__optionSelected\",\"thumbnail\":\"_8dc1e0008b2c61a8__thumbnail\"};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/layout-settings/layout-model-edit-field/thumbnail-grid.tsx
|
|
2
|
+
import { SVG, Rect } from "@wordpress/primitives";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
function GridThumbnail({
|
|
5
|
+
className
|
|
6
|
+
}) {
|
|
7
|
+
return /* @__PURE__ */ jsxs(
|
|
8
|
+
SVG,
|
|
9
|
+
{
|
|
10
|
+
className,
|
|
11
|
+
viewBox: "0 0 40 24",
|
|
12
|
+
fill: "currentColor",
|
|
13
|
+
"aria-hidden": "true",
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ jsx(Rect, { x: "2", y: "1.25", width: "11", height: "10", rx: "1.5" }),
|
|
16
|
+
/* @__PURE__ */ jsx(Rect, { x: "14.5", y: "1.25", width: "11", height: "10", rx: "1.5" }),
|
|
17
|
+
/* @__PURE__ */ jsx(Rect, { x: "27", y: "1.25", width: "11", height: "10", rx: "1.5" }),
|
|
18
|
+
/* @__PURE__ */ jsx(Rect, { x: "2", y: "12.75", width: "11", height: "10", rx: "1.5" }),
|
|
19
|
+
/* @__PURE__ */ jsx(Rect, { x: "14.5", y: "12.75", width: "11", height: "10", rx: "1.5" }),
|
|
20
|
+
/* @__PURE__ */ jsx(Rect, { x: "27", y: "12.75", width: "11", height: "10", rx: "1.5" })
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
GridThumbnail
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=thumbnail-grid.mjs.map
|
package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-grid.mjs.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/layout-settings/layout-model-edit-field/thumbnail-grid.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { SVG, Rect } from '@wordpress/primitives';\n\ninterface GridThumbnailProps {\n\tclassName?: string;\n}\n\nexport function GridThumbnail( {\n\tclassName,\n}: GridThumbnailProps ): React.ReactNode {\n\treturn (\n\t\t<SVG\n\t\t\tclassName={ className }\n\t\t\tviewBox=\"0 0 40 24\"\n\t\t\tfill=\"currentColor\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<Rect x=\"2\" y=\"1.25\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t\t<Rect x=\"14.5\" y=\"1.25\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t\t<Rect x=\"27\" y=\"1.25\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t\t<Rect x=\"2\" y=\"12.75\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t\t<Rect x=\"14.5\" y=\"12.75\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t\t<Rect x=\"27\" y=\"12.75\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t</SVG>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,KAAK,YAAY;AAUxB,SAMC,KAND;AAJK,SAAS,cAAe;AAAA,EAC9B;AACD,GAAyC;AACxC,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MAEZ;AAAA,4BAAC,QAAK,GAAE,KAAI,GAAE,QAAO,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACrD,oBAAC,QAAK,GAAE,QAAO,GAAE,QAAO,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACxD,oBAAC,QAAK,GAAE,MAAK,GAAE,QAAO,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACtD,oBAAC,QAAK,GAAE,KAAI,GAAE,SAAQ,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACtD,oBAAC,QAAK,GAAE,QAAO,GAAE,SAAQ,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACzD,oBAAC,QAAK,GAAE,MAAK,GAAE,SAAQ,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA;AAAA;AAAA,EACxD;AAEF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/layout-settings/layout-model-edit-field/thumbnail-masonry.tsx
|
|
2
|
+
import { SVG, Rect } from "@wordpress/primitives";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
function MasonryThumbnail({
|
|
5
|
+
className
|
|
6
|
+
}) {
|
|
7
|
+
return /* @__PURE__ */ jsxs(
|
|
8
|
+
SVG,
|
|
9
|
+
{
|
|
10
|
+
className,
|
|
11
|
+
viewBox: "0 0 40 24",
|
|
12
|
+
fill: "currentColor",
|
|
13
|
+
"aria-hidden": "true",
|
|
14
|
+
children: [
|
|
15
|
+
/* @__PURE__ */ jsx(Rect, { x: "2", y: "0.75", width: "11", height: "13", rx: "1.5" }),
|
|
16
|
+
/* @__PURE__ */ jsx(Rect, { x: "2", y: "15.25", width: "11", height: "8", rx: "1.5" }),
|
|
17
|
+
/* @__PURE__ */ jsx(Rect, { x: "14.5", y: "0.75", width: "11", height: "8", rx: "1.5" }),
|
|
18
|
+
/* @__PURE__ */ jsx(Rect, { x: "14.5", y: "10.25", width: "11", height: "13", rx: "1.5" }),
|
|
19
|
+
/* @__PURE__ */ jsx(Rect, { x: "27", y: "0.75", width: "11", height: "10", rx: "1.5" }),
|
|
20
|
+
/* @__PURE__ */ jsx(Rect, { x: "27", y: "12.25", width: "11", height: "11", rx: "1.5" })
|
|
21
|
+
]
|
|
22
|
+
}
|
|
23
|
+
);
|
|
24
|
+
}
|
|
25
|
+
export {
|
|
26
|
+
MasonryThumbnail
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=thumbnail-masonry.mjs.map
|
package/build-module/components/layout-settings/layout-model-edit-field/thumbnail-masonry.mjs.map
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../../src/components/layout-settings/layout-model-edit-field/thumbnail-masonry.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { SVG, Rect } from '@wordpress/primitives';\n\ninterface MasonryThumbnailProps {\n\tclassName?: string;\n}\n\nexport function MasonryThumbnail( {\n\tclassName,\n}: MasonryThumbnailProps ): React.ReactNode {\n\treturn (\n\t\t<SVG\n\t\t\tclassName={ className }\n\t\t\tviewBox=\"0 0 40 24\"\n\t\t\tfill=\"currentColor\"\n\t\t\taria-hidden=\"true\"\n\t\t>\n\t\t\t<Rect x=\"2\" y=\"0.75\" width=\"11\" height=\"13\" rx=\"1.5\" />\n\t\t\t<Rect x=\"2\" y=\"15.25\" width=\"11\" height=\"8\" rx=\"1.5\" />\n\t\t\t<Rect x=\"14.5\" y=\"0.75\" width=\"11\" height=\"8\" rx=\"1.5\" />\n\t\t\t<Rect x=\"14.5\" y=\"10.25\" width=\"11\" height=\"13\" rx=\"1.5\" />\n\t\t\t<Rect x=\"27\" y=\"0.75\" width=\"11\" height=\"10\" rx=\"1.5\" />\n\t\t\t<Rect x=\"27\" y=\"12.25\" width=\"11\" height=\"11\" rx=\"1.5\" />\n\t\t</SVG>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";AAGA,SAAS,KAAK,YAAY;AAUxB,SAMC,KAND;AAJK,SAAS,iBAAkB;AAAA,EACjC;AACD,GAA4C;AAC3C,SACC;AAAA,IAAC;AAAA;AAAA,MACA;AAAA,MACA,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MAEZ;AAAA,4BAAC,QAAK,GAAE,KAAI,GAAE,QAAO,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACrD,oBAAC,QAAK,GAAE,KAAI,GAAE,SAAQ,OAAM,MAAK,QAAO,KAAI,IAAG,OAAM;AAAA,QACrD,oBAAC,QAAK,GAAE,QAAO,GAAE,QAAO,OAAM,MAAK,QAAO,KAAI,IAAG,OAAM;AAAA,QACvD,oBAAC,QAAK,GAAE,QAAO,GAAE,SAAQ,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACzD,oBAAC,QAAK,GAAE,MAAK,GAAE,QAAO,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA,QACtD,oBAAC,QAAK,GAAE,MAAK,GAAE,SAAQ,OAAM,MAAK,QAAO,MAAK,IAAG,OAAM;AAAA;AAAA;AAAA,EACxD;AAEF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/layout-settings/layout-settings.tsx
|
|
2
|
+
import { DataForm } from "@wordpress/dataviews";
|
|
3
|
+
import { useCallback, useEffect } from "@wordpress/element";
|
|
4
|
+
import { __ } from "@wordpress/i18n";
|
|
5
|
+
import { Button, Drawer } from "@wordpress/ui";
|
|
6
|
+
import { useDashboardInternalContext } from "../../context/dashboard-context.mjs";
|
|
7
|
+
import { useDashboardUIContext } from "../../context/ui-context.mjs";
|
|
8
|
+
import { migrateLayout } from "../../utils/migrate-layout/index.mjs";
|
|
9
|
+
import {
|
|
10
|
+
presetToRowHeight,
|
|
11
|
+
rowHeightToPreset
|
|
12
|
+
} from "../../utils/row-height-presets/index.mjs";
|
|
13
|
+
import {
|
|
14
|
+
WIDGET_DASHBOARD_COLUMN_COUNT
|
|
15
|
+
} from "../../types.mjs";
|
|
16
|
+
import { LayoutModelEditField } from "./layout-model-edit-field/index.mjs";
|
|
17
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
18
|
+
function getModel(item) {
|
|
19
|
+
return item.model ?? "grid";
|
|
20
|
+
}
|
|
21
|
+
function isMasonry(item) {
|
|
22
|
+
return getModel(item) === "masonry";
|
|
23
|
+
}
|
|
24
|
+
var fields = [
|
|
25
|
+
{
|
|
26
|
+
id: "model",
|
|
27
|
+
type: "text",
|
|
28
|
+
Edit: LayoutModelEditField,
|
|
29
|
+
label: __("Layout model"),
|
|
30
|
+
description: __(
|
|
31
|
+
"Grid keeps every tile the same height. Masonry lets tiles flow at their own height."
|
|
32
|
+
),
|
|
33
|
+
elements: [
|
|
34
|
+
{ value: "grid", label: __("Standard grid") },
|
|
35
|
+
{ value: "masonry", label: __("Masonry") }
|
|
36
|
+
],
|
|
37
|
+
getValue: ({ item }) => getModel(item)
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: "rowHeight",
|
|
41
|
+
type: "text",
|
|
42
|
+
Edit: "toggleGroup",
|
|
43
|
+
label: __("Row height"),
|
|
44
|
+
description: __("Height of each grid row."),
|
|
45
|
+
elements: [
|
|
46
|
+
{ value: "small", label: __("Small") },
|
|
47
|
+
{ value: "medium", label: __("Medium") },
|
|
48
|
+
{ value: "large", label: __("Large") }
|
|
49
|
+
],
|
|
50
|
+
getValue: ({ item }) => {
|
|
51
|
+
const rowHeight = item.rowHeight;
|
|
52
|
+
if (typeof rowHeight !== "number") {
|
|
53
|
+
return "medium";
|
|
54
|
+
}
|
|
55
|
+
return rowHeightToPreset(rowHeight);
|
|
56
|
+
},
|
|
57
|
+
setValue: ({ value }) => ({
|
|
58
|
+
rowHeight: presetToRowHeight(value)
|
|
59
|
+
}),
|
|
60
|
+
isVisible: (item) => !isMasonry(item)
|
|
61
|
+
}
|
|
62
|
+
];
|
|
63
|
+
var form = {
|
|
64
|
+
layout: { type: "regular", labelPosition: "top" },
|
|
65
|
+
fields: ["model", "rowHeight"]
|
|
66
|
+
};
|
|
67
|
+
function LayoutSettings() {
|
|
68
|
+
const {
|
|
69
|
+
gridSettings,
|
|
70
|
+
onGridSettingsChange,
|
|
71
|
+
layout,
|
|
72
|
+
onLayoutChange,
|
|
73
|
+
commit,
|
|
74
|
+
cancel: cancelStaging,
|
|
75
|
+
resetGridSettings,
|
|
76
|
+
hasUncommittedChanges,
|
|
77
|
+
canEditGridSettings,
|
|
78
|
+
editMode
|
|
79
|
+
} = useDashboardInternalContext();
|
|
80
|
+
const { layoutSettingsOpen: open, setLayoutSettingsOpen: onOpenChange } = useDashboardUIContext();
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!editMode && open) {
|
|
83
|
+
onOpenChange(false);
|
|
84
|
+
}
|
|
85
|
+
}, [editMode, open, onOpenChange]);
|
|
86
|
+
const handleChange = useCallback(
|
|
87
|
+
(edits) => {
|
|
88
|
+
const nextModel = edits.model;
|
|
89
|
+
const currentModel = getModel(gridSettings);
|
|
90
|
+
if (nextModel && nextModel !== currentModel) {
|
|
91
|
+
const migrated = migrateLayout(
|
|
92
|
+
layout,
|
|
93
|
+
currentModel,
|
|
94
|
+
nextModel,
|
|
95
|
+
{ columns: WIDGET_DASHBOARD_COLUMN_COUNT }
|
|
96
|
+
);
|
|
97
|
+
onLayoutChange(migrated);
|
|
98
|
+
}
|
|
99
|
+
onGridSettingsChange({
|
|
100
|
+
...gridSettings,
|
|
101
|
+
...edits
|
|
102
|
+
});
|
|
103
|
+
},
|
|
104
|
+
[gridSettings, layout, onGridSettingsChange, onLayoutChange]
|
|
105
|
+
);
|
|
106
|
+
const handleCancel = useCallback(() => {
|
|
107
|
+
cancelStaging({ exitEditMode: false, revertLayout: false });
|
|
108
|
+
onOpenChange(false);
|
|
109
|
+
}, [cancelStaging, onOpenChange]);
|
|
110
|
+
const handleSave = useCallback(() => {
|
|
111
|
+
commit({ exitEditMode: false });
|
|
112
|
+
onOpenChange(false);
|
|
113
|
+
}, [commit, onOpenChange]);
|
|
114
|
+
const handleOpenChange = useCallback(
|
|
115
|
+
(nextOpen) => {
|
|
116
|
+
if (!nextOpen && open) {
|
|
117
|
+
cancelStaging({ exitEditMode: false, revertLayout: false });
|
|
118
|
+
}
|
|
119
|
+
onOpenChange(nextOpen);
|
|
120
|
+
},
|
|
121
|
+
[open, cancelStaging, onOpenChange]
|
|
122
|
+
);
|
|
123
|
+
if (!canEditGridSettings) {
|
|
124
|
+
return null;
|
|
125
|
+
}
|
|
126
|
+
return /* @__PURE__ */ jsx(
|
|
127
|
+
Drawer.Root,
|
|
128
|
+
{
|
|
129
|
+
open,
|
|
130
|
+
onOpenChange: handleOpenChange,
|
|
131
|
+
swipeDirection: "right",
|
|
132
|
+
children: /* @__PURE__ */ jsxs(Drawer.Popup, { size: "medium", style: { marginTop: "32px" }, children: [
|
|
133
|
+
/* @__PURE__ */ jsxs(Drawer.Header, { children: [
|
|
134
|
+
/* @__PURE__ */ jsx(Drawer.Title, { children: __("Layout settings") }),
|
|
135
|
+
/* @__PURE__ */ jsx(Drawer.CloseIcon, {})
|
|
136
|
+
] }),
|
|
137
|
+
/* @__PURE__ */ jsx(Drawer.Content, { children: /* @__PURE__ */ jsx(
|
|
138
|
+
DataForm,
|
|
139
|
+
{
|
|
140
|
+
data: gridSettings,
|
|
141
|
+
fields,
|
|
142
|
+
form,
|
|
143
|
+
onChange: handleChange
|
|
144
|
+
}
|
|
145
|
+
) }),
|
|
146
|
+
/* @__PURE__ */ jsxs(Drawer.Footer, { children: [
|
|
147
|
+
/* @__PURE__ */ jsx(
|
|
148
|
+
Button,
|
|
149
|
+
{
|
|
150
|
+
variant: "minimal",
|
|
151
|
+
tone: "neutral",
|
|
152
|
+
size: "compact",
|
|
153
|
+
onClick: resetGridSettings,
|
|
154
|
+
style: { marginInlineEnd: "auto" },
|
|
155
|
+
children: __("Reset")
|
|
156
|
+
}
|
|
157
|
+
),
|
|
158
|
+
/* @__PURE__ */ jsx(
|
|
159
|
+
Button,
|
|
160
|
+
{
|
|
161
|
+
variant: "minimal",
|
|
162
|
+
tone: "brand",
|
|
163
|
+
size: "compact",
|
|
164
|
+
onClick: handleCancel,
|
|
165
|
+
children: __("Cancel")
|
|
166
|
+
}
|
|
167
|
+
),
|
|
168
|
+
/* @__PURE__ */ jsx(
|
|
169
|
+
Button,
|
|
170
|
+
{
|
|
171
|
+
variant: "solid",
|
|
172
|
+
tone: "brand",
|
|
173
|
+
size: "compact",
|
|
174
|
+
onClick: handleSave,
|
|
175
|
+
disabled: !hasUncommittedChanges,
|
|
176
|
+
children: __("Save")
|
|
177
|
+
}
|
|
178
|
+
)
|
|
179
|
+
] })
|
|
180
|
+
] })
|
|
181
|
+
}
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
export {
|
|
185
|
+
LayoutSettings
|
|
186
|
+
};
|
|
187
|
+
//# sourceMappingURL=layout-settings.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/layout-settings/layout-settings.tsx"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { DataForm } from '@wordpress/dataviews';\nimport type { Field, Form } from '@wordpress/dataviews';\nimport { useCallback, useEffect } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { Button, Drawer } from '@wordpress/ui'; // eslint-disable-line @wordpress/use-recommended-components\n\n/**\n * Internal dependencies\n */\nimport { useDashboardInternalContext } from '../../context/dashboard-context';\nimport { useDashboardUIContext } from '../../context/ui-context';\nimport { migrateLayout } from '../../utils/migrate-layout';\nimport {\n\tpresetToRowHeight,\n\trowHeightToPreset,\n\ttype RowHeightPreset,\n} from '../../utils/row-height-presets';\nimport {\n\tWIDGET_DASHBOARD_COLUMN_COUNT,\n\ttype WidgetGridLayoutSettings,\n\ttype WidgetGridModel,\n\ttype WidgetGridSettings,\n} from '../../types';\nimport { LayoutModelEditField } from './layout-model-edit-field';\n\nfunction getModel( item: WidgetGridSettings ): WidgetGridModel {\n\treturn item.model ?? 'grid';\n}\n\nfunction isMasonry( item: WidgetGridSettings ): boolean {\n\treturn getModel( item ) === 'masonry';\n}\n\nconst fields: Field< WidgetGridSettings >[] = [\n\t{\n\t\tid: 'model',\n\t\ttype: 'text',\n\t\tEdit: LayoutModelEditField,\n\t\tlabel: __( 'Layout model' ),\n\t\tdescription: __(\n\t\t\t'Grid keeps every tile the same height. Masonry lets tiles flow at their own height.'\n\t\t),\n\t\telements: [\n\t\t\t{ value: 'grid', label: __( 'Standard grid' ) },\n\t\t\t{ value: 'masonry', label: __( 'Masonry' ) },\n\t\t],\n\t\tgetValue: ( { item } ) => getModel( item ),\n\t},\n\t{\n\t\tid: 'rowHeight',\n\t\ttype: 'text',\n\t\tEdit: 'toggleGroup',\n\t\tlabel: __( 'Row height' ),\n\t\tdescription: __( 'Height of each grid row.' ),\n\t\telements: [\n\t\t\t{ value: 'small', label: __( 'Small' ) },\n\t\t\t{ value: 'medium', label: __( 'Medium' ) },\n\t\t\t{ value: 'large', label: __( 'Large' ) },\n\t\t],\n\t\tgetValue: ( { item } ) => {\n\t\t\tconst rowHeight = ( item as WidgetGridLayoutSettings ).rowHeight;\n\t\t\tif ( typeof rowHeight !== 'number' ) {\n\t\t\t\treturn 'medium';\n\t\t\t}\n\t\t\treturn rowHeightToPreset( rowHeight );\n\t\t},\n\t\tsetValue: ( { value } ) => ( {\n\t\t\trowHeight: presetToRowHeight( value as RowHeightPreset ),\n\t\t} ),\n\t\tisVisible: ( item ) => ! isMasonry( item ),\n\t},\n];\n\nconst form: Form = {\n\tlayout: { type: 'regular', labelPosition: 'top' },\n\tfields: [ 'model', 'rowHeight' ],\n};\n\n/**\n * Modal side drawer for grid-level settings (layout model and row height),\n * mounted by the engine and shown while `layoutSettingsOpen` is set in the\n * shared UI context. Renders nothing when grid settings are not editable.\n *\n * Edits, including Reset, apply to the staging copy and preview live behind\n * the drawer. Save commits them; Cancel and any other dismissal (X, Escape)\n * revert them. Either way only grid settings change, so in-progress widget\n * layout edits survive and customize mode stays active.\n *\n * Tile gap is deliberately not exposed; spacing stays a design-system concern.\n */\nexport function LayoutSettings(): React.ReactNode {\n\tconst {\n\t\tgridSettings,\n\t\tonGridSettingsChange,\n\t\tlayout,\n\t\tonLayoutChange,\n\t\tcommit,\n\t\tcancel: cancelStaging,\n\t\tresetGridSettings,\n\t\thasUncommittedChanges,\n\t\tcanEditGridSettings,\n\t\teditMode,\n\t} = useDashboardInternalContext();\n\n\tconst { layoutSettingsOpen: open, setLayoutSettingsOpen: onOpenChange } =\n\t\tuseDashboardUIContext();\n\n\t// Close when customize mode exits, whatever the exit path.\n\tuseEffect( () => {\n\t\tif ( ! editMode && open ) {\n\t\t\tonOpenChange( false );\n\t\t}\n\t}, [ editMode, open, onOpenChange ] );\n\n\tconst handleChange = useCallback(\n\t\t( edits: Record< string, unknown > ) => {\n\t\t\tconst nextModel = edits.model as WidgetGridModel | undefined;\n\t\t\tconst currentModel = getModel( gridSettings );\n\n\t\t\tif ( nextModel && nextModel !== currentModel ) {\n\t\t\t\tconst migrated = migrateLayout(\n\t\t\t\t\tlayout,\n\t\t\t\t\tcurrentModel,\n\t\t\t\t\tnextModel,\n\t\t\t\t\t{ columns: WIDGET_DASHBOARD_COLUMN_COUNT }\n\t\t\t\t);\n\t\t\t\tonLayoutChange( migrated );\n\t\t\t}\n\n\t\t\tonGridSettingsChange( {\n\t\t\t\t...gridSettings,\n\t\t\t\t...edits,\n\t\t\t} as WidgetGridSettings );\n\t\t},\n\t\t[ gridSettings, layout, onGridSettingsChange, onLayoutChange ]\n\t);\n\n\tconst handleCancel = useCallback( () => {\n\t\tcancelStaging( { exitEditMode: false, revertLayout: false } );\n\t\tonOpenChange( false );\n\t}, [ cancelStaging, onOpenChange ] );\n\n\tconst handleSave = useCallback( () => {\n\t\tcommit( { exitEditMode: false } );\n\t\tonOpenChange( false );\n\t}, [ commit, onOpenChange ] );\n\n\tconst handleOpenChange = useCallback(\n\t\t( nextOpen: boolean ) => {\n\t\t\tif ( ! nextOpen && open ) {\n\t\t\t\tcancelStaging( { exitEditMode: false, revertLayout: false } );\n\t\t\t}\n\t\t\tonOpenChange( nextOpen );\n\t\t},\n\t\t[ open, cancelStaging, onOpenChange ]\n\t);\n\n\tif ( ! canEditGridSettings ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Drawer.Root\n\t\t\topen={ open }\n\t\t\tonOpenChange={ handleOpenChange }\n\t\t\tswipeDirection=\"right\"\n\t\t>\n\t\t\t<Drawer.Popup size=\"medium\" style={ { marginTop: '32px' } }>\n\t\t\t\t<Drawer.Header>\n\t\t\t\t\t<Drawer.Title>{ __( 'Layout settings' ) }</Drawer.Title>\n\t\t\t\t\t<Drawer.CloseIcon />\n\t\t\t\t</Drawer.Header>\n\n\t\t\t\t<Drawer.Content>\n\t\t\t\t\t<DataForm\n\t\t\t\t\t\tdata={ gridSettings }\n\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\tform={ form }\n\t\t\t\t\t\tonChange={ handleChange }\n\t\t\t\t\t/>\n\t\t\t\t</Drawer.Content>\n\n\t\t\t\t<Drawer.Footer>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\ttone=\"neutral\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ resetGridSettings }\n\t\t\t\t\t\tstyle={ { marginInlineEnd: 'auto' } }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Reset' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"minimal\"\n\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ handleCancel }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Cancel' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tvariant=\"solid\"\n\t\t\t\t\t\ttone=\"brand\"\n\t\t\t\t\t\tsize=\"compact\"\n\t\t\t\t\t\tonClick={ handleSave }\n\t\t\t\t\t\tdisabled={ ! hasUncommittedChanges }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Save' ) }\n\t\t\t\t\t</Button>\n\t\t\t\t</Drawer.Footer>\n\t\t\t</Drawer.Popup>\n\t\t</Drawer.Root>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
// packages/widget-dashboard/src/components/no-widgets-state/no-widgets-state.tsx
|
|
2
|
+
import { __ } from "@wordpress/i18n";
|
|
3
|
+
import { home } from "@wordpress/icons";
|
|
4
|
+
import { EmptyState, Stack } from "@wordpress/ui";
|
|
5
|
+
import { useDashboardInternalContext } from "../../context/dashboard-context.mjs";
|
|
6
|
+
|
|
7
|
+
// packages/style-runtime/src/index.ts
|
|
8
|
+
var STYLE_HASH_ATTRIBUTE = "data-wp-hash";
|
|
9
|
+
function getRuntime() {
|
|
10
|
+
const globalScope = globalThis;
|
|
11
|
+
if (globalScope.__wpStyleRuntime) {
|
|
12
|
+
return globalScope.__wpStyleRuntime;
|
|
13
|
+
}
|
|
14
|
+
globalScope.__wpStyleRuntime = {
|
|
15
|
+
documents: /* @__PURE__ */ new Map(),
|
|
16
|
+
styles: /* @__PURE__ */ new Map(),
|
|
17
|
+
injectedStyles: /* @__PURE__ */ new WeakMap()
|
|
18
|
+
};
|
|
19
|
+
if (typeof document !== "undefined") {
|
|
20
|
+
registerDocument(document);
|
|
21
|
+
}
|
|
22
|
+
return globalScope.__wpStyleRuntime;
|
|
23
|
+
}
|
|
24
|
+
function documentContainsStyleHash(targetDocument, hash) {
|
|
25
|
+
if (!targetDocument.head) {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
for (const style of targetDocument.head.querySelectorAll(
|
|
29
|
+
`style[${STYLE_HASH_ATTRIBUTE}]`
|
|
30
|
+
)) {
|
|
31
|
+
if (style.getAttribute(STYLE_HASH_ATTRIBUTE) === hash) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
function injectStyle(targetDocument, hash, css) {
|
|
38
|
+
if (!targetDocument.head) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const runtime = getRuntime();
|
|
42
|
+
let injectedStyles = runtime.injectedStyles.get(targetDocument);
|
|
43
|
+
if (!injectedStyles) {
|
|
44
|
+
injectedStyles = /* @__PURE__ */ new Set();
|
|
45
|
+
runtime.injectedStyles.set(targetDocument, injectedStyles);
|
|
46
|
+
}
|
|
47
|
+
if (injectedStyles.has(hash)) {
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (documentContainsStyleHash(targetDocument, hash)) {
|
|
51
|
+
injectedStyles.add(hash);
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
const style = targetDocument.createElement("style");
|
|
55
|
+
style.setAttribute(STYLE_HASH_ATTRIBUTE, hash);
|
|
56
|
+
style.appendChild(targetDocument.createTextNode(css));
|
|
57
|
+
targetDocument.head.appendChild(style);
|
|
58
|
+
injectedStyles.add(hash);
|
|
59
|
+
}
|
|
60
|
+
function registerDocument(targetDocument) {
|
|
61
|
+
const runtime = getRuntime();
|
|
62
|
+
runtime.documents.set(
|
|
63
|
+
targetDocument,
|
|
64
|
+
(runtime.documents.get(targetDocument) ?? 0) + 1
|
|
65
|
+
);
|
|
66
|
+
for (const [hash, css] of runtime.styles) {
|
|
67
|
+
injectStyle(targetDocument, hash, css);
|
|
68
|
+
}
|
|
69
|
+
return () => {
|
|
70
|
+
const count = runtime.documents.get(targetDocument);
|
|
71
|
+
if (count === void 0) {
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
if (count <= 1) {
|
|
75
|
+
runtime.documents.delete(targetDocument);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
runtime.documents.set(targetDocument, count - 1);
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function registerStyle(hash, css) {
|
|
82
|
+
const runtime = getRuntime();
|
|
83
|
+
runtime.styles.set(hash, css);
|
|
84
|
+
for (const targetDocument of runtime.documents.keys()) {
|
|
85
|
+
injectStyle(targetDocument, hash, css);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// packages/widget-dashboard/src/components/no-widgets-state/no-widgets-state.module.css
|
|
90
|
+
if (typeof process === "undefined" || process.env.NODE_ENV !== "test") {
|
|
91
|
+
registerStyle("dc7dd85362", "._86b63a6f839a2e2b__root{padding-block-start:calc(var(--wpds-dimension-padding-3xl, 32px)*3.5)}");
|
|
92
|
+
}
|
|
93
|
+
var no_widgets_state_default = { "root": "_86b63a6f839a2e2b__root" };
|
|
94
|
+
|
|
95
|
+
// packages/widget-dashboard/src/components/no-widgets-state/no-widgets-state.tsx
|
|
96
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
97
|
+
function NoWidgetsState({
|
|
98
|
+
children
|
|
99
|
+
}) {
|
|
100
|
+
const { layout } = useDashboardInternalContext();
|
|
101
|
+
if (layout.length > 0) {
|
|
102
|
+
return null;
|
|
103
|
+
}
|
|
104
|
+
return /* @__PURE__ */ jsx(Stack, { justify: "center", align: "center", className: no_widgets_state_default.root, children: children ?? /* @__PURE__ */ jsxs(EmptyState.Root, { children: [
|
|
105
|
+
/* @__PURE__ */ jsx(EmptyState.Icon, { icon: home }),
|
|
106
|
+
/* @__PURE__ */ jsx(EmptyState.Title, { children: __("Your dashboard is empty") }),
|
|
107
|
+
/* @__PURE__ */ jsx(EmptyState.Description, { children: __(
|
|
108
|
+
"Add widgets to start customizing your dashboard."
|
|
109
|
+
) })
|
|
110
|
+
] }) });
|
|
111
|
+
}
|
|
112
|
+
export {
|
|
113
|
+
NoWidgetsState
|
|
114
|
+
};
|
|
115
|
+
//# sourceMappingURL=no-widgets-state.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/no-widgets-state/no-widgets-state.tsx", "../../../../style-runtime/src/index.ts", "../../../src/components/no-widgets-state/no-widgets-state.module.css"],
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport type { ReactNode } from 'react';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { home } from '@wordpress/icons';\nimport { EmptyState, Stack } from '@wordpress/ui';\n\n/**\n * Internal dependencies\n */\nimport { useDashboardInternalContext } from '../../context/dashboard-context';\nimport styles from './no-widgets-state.module.css';\n\nexport interface NoWidgetsStateProps {\n\tchildren?: ReactNode;\n}\n\n/**\n * Empty-state placeholder shown while the dashboard `layout` has no widgets.\n * Pair it with `WidgetDashboard.Widgets` so it stands in for the grid until\n * widgets are added. Falls back to a built-in placeholder; pass `children` to\n * override.\n *\n * @param {NoWidgetsStateProps} props Component props.\n */\nexport function NoWidgetsState( {\n\tchildren,\n}: NoWidgetsStateProps ): React.ReactNode {\n\tconst { layout } = useDashboardInternalContext();\n\tif ( layout.length > 0 ) {\n\t\treturn null;\n\t}\n\n\treturn (\n\t\t<Stack justify=\"center\" align=\"center\" className={ styles.root }>\n\t\t\t{ children ?? (\n\t\t\t\t<EmptyState.Root>\n\t\t\t\t\t<EmptyState.Icon icon={ home } />\n\t\t\t\t\t<EmptyState.Title>\n\t\t\t\t\t\t{ __( 'Your dashboard is empty' ) }\n\t\t\t\t\t</EmptyState.Title>\n\t\t\t\t\t<EmptyState.Description>\n\t\t\t\t\t\t{ __(\n\t\t\t\t\t\t\t'Add widgets to start customizing your dashboard.'\n\t\t\t\t\t\t) }\n\t\t\t\t\t</EmptyState.Description>\n\t\t\t\t</EmptyState.Root>\n\t\t\t) }\n\t\t</Stack>\n\t);\n}\n", "type GlobalScopeWithStyleRuntime = typeof globalThis & {\n\t// This global is shared by separately bundled copies of this package.\n\t// Keep its shape backward compatible after release.\n\t__wpStyleRuntime?: {\n\t\tdocuments: Map< Document, number >;\n\t\tstyles: Map< string, string >;\n\t\tinjectedStyles: WeakMap< Document, Set< string > >;\n\t};\n};\n\nconst STYLE_HASH_ATTRIBUTE = 'data-wp-hash';\n\n/**\n * Returns the shared style runtime registry.\n *\n * The registry is stored on `globalThis` so separately bundled copies of this\n * package can coordinate through the same document and style maps.\n *\n * @return The shared runtime registry.\n */\nfunction getRuntime() {\n\tconst globalScope = globalThis as GlobalScopeWithStyleRuntime;\n\n\tif ( globalScope.__wpStyleRuntime ) {\n\t\treturn globalScope.__wpStyleRuntime;\n\t}\n\n\tglobalScope.__wpStyleRuntime = {\n\t\tdocuments: new Map(),\n\t\tstyles: new Map(),\n\t\tinjectedStyles: new WeakMap(),\n\t};\n\n\tif ( typeof document !== 'undefined' ) {\n\t\tregisterDocument( document );\n\t}\n\n\treturn globalScope.__wpStyleRuntime;\n}\n\n/**\n * Checks whether a document already contains a style tag for a hash.\n *\n * @param targetDocument Document to inspect.\n * @param hash Stable hash for the transformed CSS.\n *\n * @return Whether the style hash already exists in the document.\n */\nfunction documentContainsStyleHash(\n\ttargetDocument: Document,\n\thash: string\n): boolean {\n\tif ( ! targetDocument.head ) {\n\t\treturn false;\n\t}\n\n\tfor ( const style of targetDocument.head.querySelectorAll(\n\t\t`style[${ STYLE_HASH_ATTRIBUTE }]`\n\t) ) {\n\t\tif ( style.getAttribute( STYLE_HASH_ATTRIBUTE ) === hash ) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n}\n\n/**\n * Injects a registered style into a document, unless that document already\n * contains a style tag for the same hash.\n *\n * @param targetDocument Document to inject the style into.\n * @param hash Stable hash for the transformed CSS.\n * @param css CSS text to inject.\n */\nfunction injectStyle( targetDocument: Document, hash: string, css: string ) {\n\tif ( ! targetDocument.head ) {\n\t\treturn;\n\t}\n\n\tconst runtime = getRuntime();\n\tlet injectedStyles = runtime.injectedStyles.get( targetDocument );\n\n\tif ( ! injectedStyles ) {\n\t\tinjectedStyles = new Set();\n\t\truntime.injectedStyles.set( targetDocument, injectedStyles );\n\t}\n\n\tif ( injectedStyles.has( hash ) ) {\n\t\treturn;\n\t}\n\n\t// Older generated CSS module output can still inject matching style tags\n\t// after this document's cache is created, so keep the DOM as the fallback\n\t// source of truth on cache misses.\n\tif ( documentContainsStyleHash( targetDocument, hash ) ) {\n\t\tinjectedStyles.add( hash );\n\t\treturn;\n\t}\n\n\tconst style = targetDocument.createElement( 'style' );\n\tstyle.setAttribute( STYLE_HASH_ATTRIBUTE, hash );\n\tstyle.appendChild( targetDocument.createTextNode( css ) );\n\ttargetDocument.head.appendChild( style );\n\tinjectedStyles.add( hash );\n}\n\n/**\n * Registers a document as a style injection target.\n *\n * Existing registered styles are replayed into the document immediately.\n * Documents are reference-counted so multiple providers can safely register the\n * same document without one cleanup removing it while another registration is\n * still active.\n *\n * @param targetDocument Document to receive registered styles.\n * @return Cleanup function that unregisters this document registration.\n */\nexport function registerDocument( targetDocument: Document ) {\n\tconst runtime = getRuntime();\n\n\truntime.documents.set(\n\t\ttargetDocument,\n\t\t( runtime.documents.get( targetDocument ) ?? 0 ) + 1\n\t);\n\n\tfor ( const [ hash, css ] of runtime.styles ) {\n\t\tinjectStyle( targetDocument, hash, css );\n\t}\n\n\treturn () => {\n\t\tconst count = runtime.documents.get( targetDocument );\n\n\t\tif ( count === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( count <= 1 ) {\n\t\t\truntime.documents.delete( targetDocument );\n\t\t\treturn;\n\t\t}\n\n\t\truntime.documents.set( targetDocument, count - 1 );\n\t};\n}\n\n/**\n * Registers a style and injects it into all registered documents.\n *\n * The hash is used as the deduplication key, so calling this repeatedly with\n * the same hash will not add duplicate style tags to a document.\n * Registered styles are retained for the lifetime of the page so they can be\n * replayed into documents that are registered later.\n *\n * @param hash Stable hash for the transformed CSS.\n * @param css CSS text to inject.\n */\nexport function registerStyle( hash: string, css: string ) {\n\tconst runtime = getRuntime();\n\n\truntime.styles.set( hash, css );\n\n\tfor ( const targetDocument of runtime.documents.keys() ) {\n\t\tinjectStyle( targetDocument, hash, css );\n\t}\n}\n", "import { registerStyle } from '@wordpress/style-runtime';\nif (typeof process === 'undefined' || process.env.NODE_ENV !== 'test') {\n\tregisterStyle(\"dc7dd85362\", \"._86b63a6f839a2e2b__root{padding-block-start:calc(var(--wpds-dimension-padding-3xl, 32px)*3.5)}\");\n}\nexport default {\"root\":\"_86b63a6f839a2e2b__root\"};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|