@talk-control/talk-control-revealjs-extensions
Version:
TalkControl aims to provides an easy to use extensions for anyone wanted to create slides with reveal.js
341 lines (310 loc) • 9.88 kB
TypeScript
import { CSSResult } from 'lit';
import { LitElement } from 'lit';
import { marked } from 'marked';
import { PluginFunction } from 'reveal.js';
import { default as Reveal_2 } from 'reveal.js';
import { RootPart } from 'lit-html';
import { TemplateResult } from 'lit-html';
export declare function featherIconPack(): MarkedTcIconsOptions;
export declare function fontAwesomeIconPack(): MarkedTcIconsOptions;
/**
* Since CSS makes use of data-* attributes, we need to persist URL parameters there, giving
* them priority over anything that would already be there.
* @param {*} urlParams = new URLSearchParams(window.location.search)
* @param {*} queryParam = Search parameter (theme, type, data-lang)
* @param {*} slidesElement = the html Elements corresponding to the slides
* @param {*} htmlParam = the data-* attribute to set (data-theme-slides, data-type-show, data-lang)
* @param {*} defaultValue the default value of the attribute
* @returns
*/
export declare function _handle_parameter(urlParams: URLSearchParams, queryParam: string, slidesElement: HTMLElement, htmlParam: string, defaultValue: string): string;
declare interface MarkedTcIconsOptions {
/**
* Copy icon Keyword to identify the copy icon
*/
copyKeyword: string;
/**
* Keyword to identify the icon to use
*/
keyword: string;
/**
* true if we have to se the keyword in final tag (default false)
*/
includesKeyword?: boolean;
/**
* set the html attribute to use for the main tag
*/
htmlAttribute: string;
/**
* true if the value of icon (draw to use) should be in the innerHTML of the tag (default false)
*/
iconInTag?: boolean;
/**
* function that could be called to init the icons after the parsing
* @returns
*/
initFunction?: () => void;
}
export declare function materialSymbolsIconPack(): MarkedTcIconsOptions;
export { Reveal_2 as Reveal }
declare interface RevealConfig {
navigationMode?: 'linear' | 'grid';
}
export declare interface RevealMarkdownPlugin {
id: string;
marked: {
use: (ext: marked.MarkedExtension) => void;
};
init(reveal: Reveal_2.Api): void | Promise<unknown>;
processSlides(): void;
convertSlides(): void;
slidify(): void;
}
export declare interface SlidePath {
path: string;
}
export declare interface SlideTreeEntry {
prefix: string;
path: string;
index: number;
check: boolean;
}
declare interface TalkControlMarkedOptions {
fontIcons?: MarkedTcIconsOptions[];
knowStyles?: string[];
}
export declare class TcConfiguratorElement extends LitElement {
static shadowRootOptions: {
delegatesFocus: boolean;
mode: ShadowRootMode;
serializable?: boolean;
slotAssignment?: SlotAssignmentMode;
};
slides: SlideTreeEntry[];
theme: string;
defaultTheme: string;
type: string;
defaultType: string;
i18n: string;
defaultI18n: string;
revealOptions: Record<string, unknown>;
private selectedTab;
private isApplying;
render(): TemplateResult<1>;
selectTab(tab: 'talk-control' | 'revealjs'): void;
private handleTabKeydown;
private handleCloseKeydown;
private onConfigChanged;
/**
* Handler method that deals with the apply button. it will refresh the page
*/
applyConfiguration(): void;
private buildConfigurationUrl;
closeUI(): void;
static styles: CSSResult;
}
declare interface TcCustomBackgroundMap {
[key: string]: string;
}
declare interface TcCustomBackgroundOptions {
basePath: string;
mapBackgrounds: (theme?: string) => TcCustomBackgroundMap;
}
declare interface TcI18nConfig {
baseMarkdownPath: string;
defaultLang?: string;
}
export declare class TcRevealjsElement extends LitElement {
revealOptions: RevealConfig;
private shortcuts;
private editMode;
static styles: CSSResult;
protected firstUpdated(): void;
protected updated(changedProperties: Map<string | number | symbol, unknown>): void;
private updateShortcuts;
private handleNavigationModeChange;
private handleShortcutChange;
render(): TemplateResult<1>;
renderFooterEdit(): TemplateResult<1>;
}
export declare class TcTalkControlElement extends LitElement {
static shadowRootOptions: {
delegatesFocus: boolean;
mode: ShadowRootMode;
serializable?: boolean;
slotAssignment?: SlotAssignmentMode;
};
slides: SlideTreeEntry[];
theme: string;
defaultTheme: string;
type: string;
defaultType: string;
i18n: string;
defaultI18n: string;
private validationErrors;
private isDirty;
render(): TemplateResult<1>;
private onSlideSelected;
private onThemeInput;
private onLanguageInput;
private onTypeInput;
private onFormInput;
private onFormChange;
private markAsDirty;
private emitConfigChange;
/**
* Validation du thème
*/
private validateTheme;
/**
* Validation de la langue
*/
private validateLanguage;
/**
* Validation du type
*/
private validateType;
/**
* Validation complète du formulaire
*/
private validateForm;
/**
* Vérifier si le formulaire est valide
*/
private isFormValid;
/**
* Définir une erreur de validation
*/
private setValidationError;
/**
* Effacer une erreur de validation
*/
private clearValidationError;
/**
* Gestion générale des erreurs
*/
private handleError;
/**
* Méthode publique pour réinitialiser le formulaire
*/
resetForm(): void;
/**
* Méthode publique pour valider le formulaire
*/
validate(): boolean;
/**
* Méthode publique pour obtenir la configuration actuelle
*/
getConfiguration(): {
theme: string;
i18n: string;
type: string;
slides: SlideTreeEntry[];
isValid: boolean;
isDirty: boolean;
};
/**
* Gestion du focus initial
*/
firstUpdated(): void;
static styles: CSSResult;
}
declare interface TcThemeOptions {
defaultTheme?: string;
}
/**
* The tree checkbox element
*
* @csspart button - The button
*/
export declare class TcTreeSlidesElement extends LitElement {
slides: SlideTreeEntry[];
private treeArray;
render(): TemplateResult<1>;
/**
*
* @param {*} key the prefix of the tree. Key could be a path if no prefix
* @param {*} value the array of path under the prefix. Value could be null if no prefix.
* @returns the render litHTML Method
*/
renderTreeElement(key: string | SlideTreeEntry, value?: SlideTreeEntry[] | undefined): TemplateResult<1>;
/**
* Method that render a leaf of the tree
* @param {*} slide : a slide element with path, index, check, prefix
* @returns the render method
*/
renderLiElement(slide: SlideTreeEntry): TemplateResult<1>;
/**
* Handler method that deals with the checkbox of the prefix.
* This method will update the state and the session storage and reset the UI
* @param {*} event : click event
* @param {*} prefix : the prefix of the slides (to update the state of children slides)
*/
checkPrefix(event: InputEvent, prefix: string): void;
/**
* Handler method that deals with the checkbox of a slide.
* This method will update the state and the session storage and reset the UI
* @param {*} event : click event
* @param {*} index : the index of the slide in the state
*/
checkSlide(event: InputEvent, index: number): void;
/**
*
* Utilities methods
*/
fireSlidesSelected(): void;
/**
* Method to recalculate the slides
*/
recalculateSlides(): void;
/**
* Transform the slides array to a tree structure to render it
* it will only allow a one level tree depth.
*
* All the path with no prefix will be in the first element of the array
* @returns the tree structure of slides in an array
*/
createTreeFromSlides(slidesEntries: SlideTreeEntry[]): (SlideTreeEntry[] | [string, SlideTreeEntry[]])[];
static styles: CSSResult;
}
export declare const ThemeInitializer: {
/**
* @param {() => Array.<string>} slidesFactory
*/
init({ activeCopyClipboard, slidesFactory, tcMarkedOptions, tcI18nOptions, tcCustomBackgroundOptions, tcThemeOptions, defaultSlidesType, slidesRenderer, plugins, }: ThemeInitializerOptions): Promise<void>;
};
/**
*
*/
export declare interface ThemeInitializerOptions {
slidesFactory: (showType?: string) => SlidePath[];
activeCopyClipboard?: boolean;
tcMarkedOptions?: TalkControlMarkedOptions;
tcI18nOptions?: TcI18nConfig;
tcCustomBackgroundOptions?: TcCustomBackgroundOptions;
tcThemeOptions?: TcThemeOptions;
slidesRenderer?: (element: HTMLElement, slides: SlidePath[]) => RootPart;
defaultSlidesType?: string;
plugins?: PluginFunction[];
}
export { }
declare global {
interface HTMLElementTagNameMap {
'tc-tree-slides-element': TcTreeSlidesElement;
}
}
declare global {
interface HTMLElementTagNameMap {
'tc-talk-control-element': TcTalkControlElement;
}
}
declare global {
interface HTMLElementTagNameMap {
'tc-configurator-element': TcConfiguratorElement;
}
}
declare global {
interface HTMLElementTagNameMap {
'tc-revealjs-element': TcRevealjsElement;
}
}