UNPKG

h5p-standalone

Version:

Display H5P content as standalone frontend code, no server needed.

264 lines (232 loc) 8.04 kB
/** * H5PIntegration Interface */ export interface H5PIntegration { baseUrl?: string; //should not include a trailing slash url: string; //should not include trailing slash urlLibraries?: string; //url to override where to fetch content libraries ajaxPath?: string; //deprecated - used only by older content types user?: User; //provide only if user account is available - form part of xAPI actor siteUrl?: string; //user site homepage on xAPI actor property. Used if user data is not provided. reportingIsEnabled?: boolean; //Enable submit button on Interactive book https://github.com/h5p/h5p-interactive-book/blob/6373b8440b0ef5eaf25fe21cae8ad57e9f8d8a9e/src/scripts/app.js#L60 saveFreq?: false | number; postUserStatistics?: boolean; //makes sense if user is available ajax: { /** * endpoint where to post results on completion. * postUserStatistics has to be true */ setFinished?: string; /** * Endpoint to update,restore,or delete user state. * H5P core provides placeholders which must start with full colon to work i.e * :contentId; :dataType, and :subContentId * * example endpoint api/v1/h5p/content-user-data/:contentId/:dataType/:subContentId */ contentUserData?: string; crossoriginCacheBuster?: boolean; }, l10n: { H5P: H5Pl10n }, core?: { //required only when Embed Type = iframe scripts: string[]; styles: string[]; } loadedJs?: string[];//required only when Embed Type = div loadedCss?: string[]; contents: { [key: `cid-${string}`]: H5PContent } } export interface User { name: string; mail: string; //unique user email id?: number; canToggleViewOthersH5PContents?: 0 | 1; } export interface H5PContent { title: string; //content title url: string; //content URI (absolute + canonical) used to generate xAPI statement.object.id contentUrl?: string; //storage path to override location of the content files library: string; //main content library fullScreen: boolean; //if to enable fullscreen button jsonContent: string; //content start parameters as a JSON string (content.json) scripts: string[]; // content libraries scripts styles: string[]; //content libraries styles displayOptions: H5PPlayerDisplayOptions; exportUrl?: string; //path to download the H5P embedCode: string; //code to show on embed dialog resizeCode?: string; // script to use for resize. h5p standalone already bundles one by default contentUserData?: { [subContentId: string]: 'RESET' | { 'state': string } }[];/* user preloaded data where RESET: will delete previous user state, and state: exp*/ metadata?: { // any content metadata title: string, license: string } } export interface H5PPlayerDisplayOptions { frame: boolean; export: boolean; embed: boolean; copyright: boolean; icon: boolean; copy: boolean; } export interface H5Pl10n { //h5p-confirmation-dialog.js confirmDialogHeader: string; confirmDialogBody: string; cancelLabel: string; confirmLabel: string; //h5-action-bar.js reuse: string; copyrights: string; embed: string; reuseDescription: string; copyrightsDescription: string; embedDescription: string; h5pDescription: string; //request-queue.js offlineDialogHeader: string; offlineDialogBody: string; offlineDialogRetryMessage: string; offlineDialogRetryButtonLabel: string; offlineSuccessfulSubmit: string //h5p.js fullscreen: string; disableFullscreen: string; contentChanged: string; startingOver: string; copyrightInformation: string; close: string; reuseContent: string; contentCopied: string; hideAdvanced: string; showAdvanced: string; advancedHelp: string; thumbnail: string; contentType: string; title: string; author: string; year: string; source: string; changes: string; license: string; licenseExtras: string; licenseU: string; licenseCCBY: string; licenseCCBYSA: string; licenseCCBYND: string; licenseCCBYNC: string; licenseCCBYNCSA: string; licenseCCBYNCND: string; licenseCC10: string; licenseCC20: string; licenseCC25: string; licenseCC30: string; licenseCC40: string; licenseGPL: string; licenseV1: string; licenseV2: string; licenseV3: string; licenseC: string; licenseCC010: string; licensePD: string; licensePDM: string; //deprecated download?: string; downloadDescription?: string; size?: string; noCopyrights?: string; by?: string; showMore?: string; showLess?: string; subLevel?: string; connectionLost?: string; connectionReestablished?: string; resubmitScores?: string; } /** * library.json interface */ interface H5PLibraryDefinition { title: string; //textual human readable library name machineName: string; //Include only characters, numbers, dashes, & periods. Start with character majorVersion: number; //positive non-fractional integer minorVersion: number; //Neutral or positive non-fractional integer patchVersion: number; //Neutral or positive non-fractional integer. Update only on error fixes runnable: 0 | 1; //1 if library can run alone description?: string //textual description of the library contentType?: 'Font' | 'Utility'; fullscreen?: 1; //enables integrated fullscreen button license?: keyof License; //content licence author?: string; embedTypes?: ['iframe' | 'div']; //possible ways to embed the package in the page coreApi?: { //required core API version majorVersion: number; //defaults to 1 minorVersion: number; //defaults to 0 }; preloadedCss?: { path: string }[];//paths (relative to root folder) to required CSS files preloadedJs?: { path: string }[]; //paths (relative to root folder) to required JS files preloadedDependencies?: LibraryDependency[]; //required libraries for it to work dynamicDependencies?: LibraryDependency[]; //libs that may be loaded dynamically during execution editorDependencies?: LibraryDependency[]; metadataSettings?: { disable?: 0 | 1; //disable metadata completely disableExtraTitleField?: 1 | 0 //hide title field from contenty type form } } /** * h5p.json interface */ interface H5PPackageDefinition { title: string; language: string; // ISO-639-1 mainLibrary: string; //without version embedTypes: ['div'] | ['iframe'] | ['div', 'iframe']; preloadedDependencies: LibraryDependency[]; license?: keyof License; authors?: { name: string, role: 'Author' | 'Editor' | 'Licensee' | 'Originator' }[]; source?: string; //source url of the licensed material licenseVersion?: keyof LicenseVersion; licenseExtras?: string; //any additional license info yearFrom?: string; //license valid since yearTo?: string; // license valid end year changes?: { [key: string]: string }[]; //changelog authorComments?: string; //comments for the editor } interface LibraryDependency { machineName: string minorVersion: number majorVersion: number } interface License { //enum would have been better 'CC-BY': 'CC-BY', 'CC BY-SA': 'CC BY-SA', 'CC BY-ND': 'CC BY-ND', 'CC BY-NC': 'CC BY-NC', 'CC BY-NC-SA': 'CC BY-NC-SA', 'CC CC-BY-NC-CD': 'CC CC-BY-NC-CD', 'CC0 1.0': 'CC0 1.0', 'GNU GPL': 'GNU GPL', 'PD': 'PD', 'ODC PDDL': 'ODC PDDL', 'CC PDM': 'CC PDM', 'C': 'C', 'U': 'U' } interface LicenseVersion { //CC '1.0': '1.0', '2.0': '2.0', '2.5': '2.5', //number cannot be enum key 😔 '3.0': '3.0', '4.0': '4.0', //GNU GPL 'v1': 'v1', 'v2': 'v2', 'v3': 'v3', //PD '-': '-', 'CCO 1.0': 'CCO 1.0', 'CC PDM': 'CC PDM', }