AutorÃa | Ultima modificación | Ver Log |
// Type definitions for JsRender 1.0// Version: "v1.0.7"// Project: http://www.jsviews.com/#jsrender// Definitions by: Boris Moore <https://github.com/borismoore>// Definitions: https://www.jsviews.com/download/typescript/jsrender/index.d.ts// TypeScript Version: 2.3/// <reference types="jquery" />declare module 'jsrender' {export = jsrender;}declare const jsrender: ((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<T> {[option: string]: T;}/* $.views*/interface Views {/* $.views.templates() */templates: Templates;/* $.views.converters() */converters: Store<Converter, Converter>;/* $.views.tags() */tags: Store<Tag, TagSetter>;/* $.views.helpers() */helpers: Store<any, any>;/* $.views.viewModels() */viewModels: ViewModels;/* $.views.settings */settings: Settings;/* $.views.sub.xxx */sub: Hash<any>;/* $.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<T, TO> {/*** 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<TO>, 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;}// Templatesinterface Templates extends Store<Template, TemplateSetter> {/*** 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<TagSetter>;templates?: Hash<TemplateSetter>;markup: any;converters?: Hash<Converter>;helpers?: Hash<any>;useViews?: boolean;}type TemplateSetter = TemplateOptions | string;interface Template extends TemplateRender {/* Compiled template object */tmplName: string;tags?: Hash<Tag>;templates?: Hash<Template>;render: TemplateRender;fn?: (...args: any[]) => string;_is: string;markup: string;converters?: Hash<Converter>;helpers?: Hash<any>;useViews?: boolean;}interface TemplateRender {/*** Template render method: render the template as a string, using the specified data and helpers/context* var htmlString = template(data, myHelpersObject);* var htmlString = template.render(data, myHelpersObject);** $("#tmpl").render(), tmpl.render(), tagCtx.render(), $.render.namedTmpl()** @param {any} data* @param {hash} [helpersOrContext]* @param {boolean} [noIteration]* @returns {string} rendered template*/(data?: any, helpersOrContext?: Hash<any>, noIteration?: boolean): string;(data?: any, noIteration?: boolean): string;}// ViewModelsinterface ViewModelOptions {/* ViewModel options hash */// getters?: string[] | ;getters?: any[];extend?: Hash<any>;id?: string | ((a: any, b: any) => boolean);}interface ViewModel {/* ViewModel options hash */getters: string[];extend: Hash<any>;map(data: any): any;(...args: any[]): any;[prop: string]: any;}interface ViewModels extends Hash<ViewModel> {/* $.views.viewModels() */(viewModel: ViewModelOptions): ViewModel;(name: string, viewModel: ViewModelOptions, viewModels?: Hash<ViewModel>): ViewModel;(namedItems: Hash<ViewModelOptions>, viewModels?: Hash<ViewModel>): Hash<ViewModel>;}// Convertersinterface Converter {/* Converter function */(value: any, ...restArgs: any[]): any;}// Tagsinterface TagOptionProps {/* Properties that can be set as tag options, and retrieved as Tag properties */init?: (this: TagInst, tagCtx?: TagCtx, linkCtx?: LinkCtx, ctx?: Context) => void ;render?: (this: TagInst, ...args: any[]) => string |void ;baseTag?: string | Tag;contentCtx?: boolean | ((this: TagInst, arg0: any) => any);convert?: string | Converter;argDefault?: boolean;bindTo?: number | string | Array < number |string>;bindFrom?: number | string | Array < number |string>;flow?: boolean;ctx?: Hash < any>;[prop: string]: any;}interface TagOptions extends TagOptionProps {/* Tag options hash */template?: TemplateSetter;}type TagSetter = TagOptions | string | ((...args: any[]) => any);interface Tag extends TagOptionProps {/* Tag object */tagCtx: TagCtx;tagCtxs: TagCtx[];tagName: string;parent?: Tag;parents?: Hash<Tag>;rendering?: Hash<any>;ctxPrm(name: string, value?: any): any; // get/set in JsViews but get only in JsRendercvtArgs(elseBlock?: number): any[] | void ;bndArgs(elseBlock?: number): any[] | void ;base?: (...args: any[]) => any;baseApply?: (args: any[]|IArguments) => any;}interface TagInst extends Tag {template?: TemplateSetter;}interface Context {/* ctx object *//* Root data object or array */root: any;/* This tag */tag?: Tag;/* Ancestor tags */parentTags?: Hash<Tag>;/* tagCtx object */tagCtx?: any;[prop: string]: any;}interface TagCtxParams {/* tagCtx.params object */args: string[];props: Hash<string>;ctx: Hash<string>;}interface TagCtx {/* tagCtx object *//* Arguments passed declaratively */args: any[];/* Properties passed declaratively */props: Hash<any>;/* Declarative tag params object */params: TagCtxParams;/* External tmpl, or else template for wrapped content. Otherwise, false */tmpl: Template;/* Template for wrapped content, or else external template. Otherwise, false */content: Template;/* Tag instance index (if siblings rendered against array data) */index: number;/* JsViews view containing this tag instance */view: View;/* View context for tag */ctx: Context;/* This tag instance */tag: Tag;/* Tag render method */render: TagRenderMethod;/* tagCtx.ctxPrm() method */ctxPrm(name: string, value?: any): any; // get/set in JsViews but get only in JsRender/* tagCtx.cvtArgs() method */cvtArgs(): any[]| void ;/* tagCtx.bndArgs() method */bndArgs(): any[] | void;}interface LinkCtx {/* linkCtx object, null in JsRender */}interface TagRenderMethod {/* tag render method */(...arguments: any[]): string;}interface View {/* Template rendered by view */tmpl: Template;/* Block content template (for block tags) */content?: Template;/* Child views */views: View[] & Hash<View>;/* Parent view */parent: View;/* View context (helpers and parameters from parent views) */ctx: Context;/* View type */type: string;/* view.get() method: find parent or child views */get(type?: string): View;get(inner: boolean, type?: string): View;/* view.getIndex() method: get index of parent "item" view */getIndex(): number;/* view.ctxPrm() method: get/set contextual parameter or helper */ctxPrm(name: string, value?: any): any; // get/set in JsViews but get only in JsRender/* Find contextual template resource */getRsc(namedCollection: string, itemName: string): any;/* Index of this view in parent views collection */index: number;/* tag (for tag views) */tag: Tag;/* contextual data */data: any;/* root View (top-level) */root: View;scope: View;}} // end namespace