// Type definitions for JsViews 1.0 // Version: "v1.0.16" // Project: http://www.jsviews.com/#jsviews // Definitions by: Boris Moore // Definitions: https://www.jsviews.com/download/typescript/jsviews/index.d.ts // TypeScript Version: 2.3 /// declare module 'jsviews' { export = jsviews; } declare const jsviews: ((jquery?: JQueryStatic) => JQueryStatic) & JQueryStatic; // ********************************** JsRender ********************************** interface JQueryStatic { /* var htmlString = $.render.templateName(data, myHelpersObject); // Render named template */ render: { [tmplName: string]: JsViews.TemplateRender; }; /* $.views.xxx ... // JsRender/JsViews APIs */ views: JsViews.Views; /* $.templates(...) or $.templates.templateName: Compile/get template */ templates: JsViews.Templates; } interface JQuery { /* var htmlString = $("#template").render(data, myHelpersObject); // Render template, and pass in helpers or context */ render: JsViews.TemplateRender; } declare namespace JsViews { /* Generic hash of objects of type T */ interface Hash { [option: string]: T; } /* $.views*/ interface Views { /* $.views.templates() */ templates: Templates; /* $.views.converters() */ converters: Store; /* $.views.tags() */ tags: Store; /* $.views.helpers() */ helpers: Store; /* $.views.viewModels() */ viewModels: ViewModels; /* $.views.settings */ settings: Settings; /* $.views.sub.xxx */ sub: Hash; /* $.views.map() */ map(any: any): any; } /* $.views.settings*/ interface Settings { /** * Set delimiters * $.views.settings.delimiters(...) * * @param {string} openChars * @param {string} [closeChars] * @param {string} [link] * @returns {Settings} */ delimiters(openChars: string, closeChars?: string, link?: string): Settings; delimiters(chars: string[]): Settings; /** * Get delimiters * delimsArray = $.views.settings.delimiters() * * @returns {string[]} */ delimiters(): string[]; /** * Set debug mode * $.views.settings.debugMode(true) * * @param {boolean} debugMode * @returns {Settings} */ debugMode(debugMode: boolean | ((e?: any, fallback?: string, view?: View) => any)): Settings; /** * Get debug mode setting * debugMode = $.views.settings.debugMode() * * @returns {boolean} */ debugMode(): boolean; /** * Set allowCode mode * $.views.settings.allowCode(true) * * @param {boolean} allowCode * @returns {Settings} */ allowCode(allowCode: boolean): Settings; /** * Get allowCode mode setting * allowCode = $.views.settings.allowCode() * * @returns {boolean} */ allowCode(): boolean; /** * Set advanced settings (useViews, _jsv ...) * $.views.settings.advanced({useViews: true}) * * @param {object} settings * @returns {Settings} */ advanced(settings: Hash < any>): Settings; /** * Get advanced settings * advancedSettings = $.views.settings.advanced() * * @returns {object} */ advanced(): Hash < any>; } interface Store { /** * Generic store() function to register item, named item, or hash of items * Also used as hash to store the registered items * Used as implementation of $.templates(), $.views.templates(), $.views.tags(), $.views.helpers() and $.views.converters() * * @param {string|hash} name name - or selector, in case of $.templates(). Or hash of items * @param {any} [item] (e.g. markup for named template) * @param {Template} [parentTmpl] For item being registered as private resource of template * @returns {any|Views} e.g. compiled template - or $.views in case of registering hash of items */ (name: string, item?: TO, parentTmpl?: Template): T; // named item (namedItems: Hash, parentTmpl?: Template): Views; // Multiple named items /** * var template = $.templates.templateName; // Get compiled named template - or similar for named tags, converters, helpers, viewModels */ [itemName: string]: T; } // Templates interface Templates extends Store { /** * Additional $.templates() signature for compiling unnamed template * * @param {string|TemplateOptions} markup or selector * @param {Template} [parentTmpl] For compling template as private resource of parent template * @returns {Template} compiled template */ (markupOrSelectorOrOptions: string | TemplateOptions, parentTmpl?: Template): Template; // Unnamed template } interface TemplateOptions { /* Template options hash */ tags?: Hash; templates?: Hash; markup: any; converters?: Hash; helpers?: Hash; useViews?: boolean; } type TemplateSetter = TemplateOptions | string; interface Template extends TemplateRender { /* Compiled template object */ tmplName: string; tags?: Hash; templates?: Hash