UNPKG

react-native-mobile-page-flipper

Version:
162 lines (158 loc) 4.01 kB
"use strict"; export const createPages = ({ portrait, singleImageMode, data }) => { const allPages = []; if (portrait) { if (!singleImageMode) { data.forEach((page, index) => { allPages.push({ left: { index: index, content: page, totalPages: data.length }, right: { index: index, content: page, totalPages: data.length } }); allPages.push({ left: { index: index, content: page, totalPages: data.length }, right: { index: index, content: page, totalPages: data.length } }); }); } else { for (let i = 0; i < data.length; i++) { allPages[i] = { left: { index: i, content: data[i], totalPages: data.length }, right: { index: i, content: data[i], totalPages: data.length } }; } } } else { for (let i = 0; i < data.length; i++) { if (singleImageMode) { allPages.push({ left: { index: i, content: data[i], totalPages: data.length }, right: { index: i + 1, content: data[i + 1], totalPages: data.length } }); i++; } else { allPages.push({ left: { index: i, content: data[i], totalPages: data.length }, right: { index: i, content: data[i], totalPages: data.length } }); } } } return allPages; }; export const transformOrigin = ({ x, y }) => { 'worklet'; return [{ translateX: x }, { translateY: y }, { translateX: -x }, { translateY: -y }]; }; export const snapPoint = (value, velocity, points) => { 'worklet'; const point = value + 0.25 * velocity; const deltas = points.map(p => Math.abs(point - p)); const minDelta = Math.min.apply(null, deltas); return points.filter(p => Math.abs(point - p) === minDelta)[0]; }; export function clamp(number, min, max) { 'worklet'; return Math.max(min, Math.min(number, max)); } export const splitTextForPage = (story, linesFirstPage, linesPerPage, maxWidth, _font, fontSize) => { const words = story.split(' '); let pages = []; let currentLine = ''; let currentPage = ''; let linesCount = 0; let isFirstPage = true; const measureTextWidth = text => { const averageCharWidth = 0.5 * fontSize; // Approssimazione della larghezza media dei caratteri return text.length * averageCharWidth; }; for (let i = 0; i < words.length; i++) { const word = words[i]; if (currentLine !== '') { currentLine += ' '; } currentLine += word; if (measureTextWidth(currentLine) > maxWidth) { if (currentLine.trim() === word) { // Se la parola stessa supera la larghezza massima, iniziare una nuova riga con essa currentPage += currentLine.trim() + '\n'; currentLine = ''; linesCount++; } else { // Altrimenti, rimuovere l'ultima parola dalla linea corrente e aggiungerla a una nuova linea currentLine = currentLine.trimEnd().substring(0, currentLine.lastIndexOf(' ')); currentPage += currentLine + '\n'; currentLine = word; linesCount++; } } if (isFirstPage && linesCount >= linesFirstPage || !isFirstPage && linesCount >= linesPerPage) { pages.push(currentPage.trim()); currentPage = ''; linesCount = 0; isFirstPage = false; } } if (currentLine.trim() !== '') { currentPage += currentLine.trim() + '\n'; } if (currentPage.trim() !== '') { pages.push(currentPage.trim()); } return pages; }; //# sourceMappingURL=utils.js.map