UNPKG

@livetv-app/tvguide

Version:

An Android TV Live Channels-like Electronic Programme Guide for React DOM and React Native applications.

133 lines (132 loc) 6.03 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.formatEpisodeText = exports.handleProgrammeAction = exports.getNextChannel = exports.getPreviousChannel = exports.getNextProgrammeTime = exports.getPreviousProgrammeTime = exports.getProgrammeAtTime = exports.formatTimeShort = exports.formatTime = exports.formatDay = exports.useCurrentTime = exports.getLocalised = exports.useLocalised = exports.LanguageContext = exports.DEFAULT_LANGUAGE = void 0; const react_1 = require("react"); exports.DEFAULT_LANGUAGE = 'en-GB'; exports.LanguageContext = react_1.createContext(exports.DEFAULT_LANGUAGE); function useLocalised(strings) { const language = react_1.useContext(exports.LanguageContext).toLowerCase(); return getLocalised(language, strings); } exports.useLocalised = useLocalised; function getLocalised(language, strings) { var _a; if (typeof strings !== 'object' || !strings) return strings; const languages = Object.entries(strings); for (const [l, s] of languages) { if (l.toLowerCase() === language) return s; } return (_a = languages[0]) === null || _a === void 0 ? void 0 : _a[1]; } exports.getLocalised = getLocalised; function useCurrentTime(interval = 60000) { const [time, setTime] = react_1.useState(() => new Date(Math.floor(Date.now() / interval) * interval)); react_1.useEffect(() => { const remaining = Math.max(interval - (Date.now() % interval), 10); let timeout; const setTimer = () => timeout = setTimeout(() => { setTime(new Date(Math.floor(Date.now() / interval) * interval)); setTimer(); }, remaining); setTimer(); return () => clearTimeout(timeout); }, [interval]); return time; } exports.useCurrentTime = useCurrentTime; function formatDay(time) { return time.toLocaleString('en-GB', { weekday: 'short', day: 'numeric', month: 'short', year: 'numeric', }); } exports.formatDay = formatDay; function formatTime(time) { return time.toLocaleString('en-GB', { weekday: 'short', day: 'numeric', month: 'short', hour: 'numeric', minute: 'numeric', hour12: true, }); } exports.formatTime = formatTime; function formatTimeShort(time) { return time.toLocaleString('en-GB', { hour: 'numeric', minute: 'numeric', hour12: true, }); } exports.formatTimeShort = formatTimeShort; var epgdata_1 = require("@livetv-app/epgdata"); Object.defineProperty(exports, "getProgrammeAtTime", { enumerable: true, get: function () { return epgdata_1.getProgrammeAtTime; } }); Object.defineProperty(exports, "getPreviousProgrammeTime", { enumerable: true, get: function () { return epgdata_1.getPreviousProgrammeTime; } }); Object.defineProperty(exports, "getNextProgrammeTime", { enumerable: true, get: function () { return epgdata_1.getNextProgrammeTime; } }); function getPreviousChannel(channel, channels, wrap = true) { var _a; if (channel) { const index = channels.findIndex(c => c.id === channel.id); if (index === 0) { return wrap ? channels[channels.length - 1] : null; } else if (index !== -1) { return channels[index - 1]; } } return (_a = channels[0]) !== null && _a !== void 0 ? _a : null; } exports.getPreviousChannel = getPreviousChannel; function getNextChannel(channel, channels, wrap = true) { var _a; if (channel) { const index = channels.findIndex(c => c.id === channel.id); if (index === channels.length - 1) { return wrap ? channels[0] : null; } else if (index !== -1) { return channels[index + 1]; } } return (_a = channels[0]) !== null && _a !== void 0 ? _a : null; } exports.getNextChannel = getNextChannel; function handleProgrammeAction(programme, action, event) { return __awaiter(this, void 0, void 0, function* () { // }); } exports.handleProgrammeAction = handleProgrammeAction; function formatEpisodeText(programme) { return typeof programme.episode === 'number' || programme.episode_name ? typeof programme.series === 'number' && typeof programme.episode === 'number' && programme.episode_name ? `S${programme.series + 1}, E${programme.episode + 1}: ${programme.episode_name}` : typeof programme.series === 'number' && typeof programme.episode === 'number' ? `Series ${programme.series + 1}, Episode ${programme.episode + 1}` + (programme.episode_name ? ': ' + programme.episode_name : '') : typeof programme.series === 'number' && programme.episode_name ? `S${programme.series + 1}: ${programme.episode_name}` : typeof programme.episode === 'number' && programme.episode_name ? `E${programme.episode + 1}: ${programme.episode_name}` : typeof programme.episode === 'number' ? `Episode ${programme.episode + 1}` : programme.episode_name ? programme.episode_name : null : null; } exports.formatEpisodeText = formatEpisodeText;