scrivito
Version:
Scrivito is a professional, yet easy to use SaaS Enterprise Content Management Service, built for digital agencies and medium to large businesses. It is completely maintenance-free, cost-effective, and has unprecedented performance and security.
38 lines (31 loc) • 1.33 kB
text/typescript
import * as React from 'react';
import { currentPage } from 'scrivito_sdk/app_support/current_page';
import { getEditableArea } from 'scrivito_sdk/app_support/editable_area';
import { BasicObj } from 'scrivito_sdk/models';
import { useCurrentEditableArea } from 'scrivito_sdk/react/components/current_editable_area';
import { EditAsPageContentContext } from 'scrivito_sdk/react/edit_as_page_content_context';
import { InPlaceEditingEnabledContext } from 'scrivito_sdk/react/in_place_editing_enabled_context';
export function useInPlaceEditing(page: BasicObj | null): boolean {
const currentEditableArea = useCurrentEditableArea();
const inPlaceEditingEnabled = React.useContext(InPlaceEditingEnabledContext);
const editAsPageContent = React.useContext(EditAsPageContentContext);
if (!inPlaceEditingEnabled) return false;
if (page === null) return false;
switch (getEditableArea()) {
case 'layout':
return (
currentEditableArea === 'outermostLayout' ||
currentEditableArea === 'currentPageLayout'
);
case 'page':
return (
(editAsPageContent || currentEditableArea === 'currentPage') &&
isCurrentPage(page)
);
default:
return true;
}
}
function isCurrentPage(page?: BasicObj | null) {
return !!(page && page.id() === currentPage()?.id());
}