// ========== БАЗОВЫЕ ШАБЛОНЫ ==========
// Здесь регистрируются стандартные шаблоны: фото+текст, только фото и т.д.
// ----- Вспомогательные функции для базовых шаблонов -----
function getDefaultTextForTemplate(type, variant) {
if (type === 'photo-text') {
if (variant === 'normal') {
return `
Новая страница. Напишите здесь свой текст.
Кликните на область слева, чтобы добавить фото.
ВАША ИСТОРИЯ
`;
} else {
return `
Новая страница. Напишите здесь свой текст.
Кликните на область справа, чтобы добавить фото.
ВАША ИСТОРИЯ
`;
}
}
return 'Ваш текст здесь...';
}
// ----- Шаблон №5: Фото слева, текст справа -----
BookBuilder.registerTemplate('photo-text-normal', {
type: 'photo-text',
name: 'шаблон №5',
desc: 'Фото слева, текст справа',
category: 'photoText',
defaultData: {
text: getDefaultTextForTemplate('photo-text', 'normal'),
photo: null,
template: 'normal'
},
// Функция рендеринга
render(page, pageNumber, container) {
const hasPhoto = page.photo && page.photo !== '';
const transform = page.transform;
container.innerHTML = `
${pageNumber}
`;
return { hasPhoto: true, textEditable: true };
}
});
// ----- Шаблон №6: Фото справа, текст слева -----
BookBuilder.registerTemplate('photo-text-mirror', {
type: 'photo-text',
name: 'шаблон №6',
desc: 'Фото справа, текст слева',
category: 'photoText',
defaultData: {
text: getDefaultTextForTemplate('photo-text', 'mirror'),
photo: null,
template: 'mirror'
},
render(page, pageNumber, container) {
const hasPhoto = page.photo && page.photo !== '';
const transform = page.transform;
container.innerHTML = `
${pageNumber}
`;
return { hasPhoto: true, textEditable: true };
}
});
// ----- Шаблоны "Только фото" (№7-11) -----
const photoOnlyVariants = [
{ key: 'photo-only-1', name: 'шаблон №7', desc: 'Фото во всю ширину, текст снизу',
photoClass: 'photo-only-1', captionClass: 'caption-only-1',
captionPosition: 'bottom', radius: '0 0 32px 32px' },
{ key: 'photo-only-2', name: 'шаблон №8', desc: 'Фото до низа, текст справа вверху',
photoClass: 'photo-only-2', captionClass: 'caption-only-2',
captionPosition: 'top-right', radius: '32px 32px 0 0' },
{ key: 'photo-only-3', name: 'шаблон №9', desc: 'Фото до низа, текст слева вверху',
photoClass: 'photo-only-3', captionClass: 'caption-only-3',
captionPosition: 'top-left', radius: '32px 32px 0 0' },
{ key: 'photo-only-4', name: 'шаблон №10', desc: 'Фото в край справа и снизу, текст слева вверху',
photoClass: 'photo-only-4', captionClass: 'caption-only-4',
captionPosition: 'top-left', radius: '32px 0 0 0' },
{ key: 'photo-only-4-mirror', name: 'шаблон №11', desc: 'Фото в край слева и снизу, текст справа вверху',
photoClass: 'photo-only-4-mirror', captionClass: 'caption-only-4-mirror',
captionPosition: 'top-right', radius: '0 32px 0 0' }
];
photoOnlyVariants.forEach(variant => {
BookBuilder.registerTemplate(variant.key, {
type: 'photo-only',
name: variant.name,
desc: variant.desc,
category: 'photoOnly',
defaultData: {
text: 'Ваш текст здесь...',
photo: null,
photoVariant: variant.key
},
render(page, pageNumber, container) {
const hasPhoto = page.photo && page.photo !== '';
const transform = page.transform;
container.innerHTML = `
${page.text}
${pageNumber}
`;
return { hasPhoto: true, textEditable: true };
}
});
});
// ----- Пустой шаблон -----
BookBuilder.registerTemplate('special-empty', {
type: 'special-empty',
name: 'шаблон №1',
desc: 'Пустая страница',
category: 'special',
defaultData: {},
render(page, pageNumber, container) {
container.innerHTML = `
`;
return { hasPhoto: false, textEditable: false };
}
});
console.log('✅ Базовые шаблоны зарегистрированы');