UNPKG

socialcalc

Version:

Collaborative spreadsheet editor

453 lines (388 loc) 16.8 kB
declare namespace SocialCalc { // Shape of {def, val} used by EncodeCellAttributes / DecodeCellAttributes etc. interface AttribValue { def: boolean; val: string; } type AttribSet = { [name: string]: AttribValue }; const Callbacks: { expand_wiki: ((displayvalue: string, sheetobj: Sheet, linkstyle: unknown, valueformat: string) => string) | null; expand_markup: (displayvalue: string, sheetobj: Sheet, linkstyle: unknown) => string; MakePageLink: ((pagename: string, workspacename: string, linkstyle: unknown, valueformat: string) => string) | null; NormalizeSheetName: ((name: string) => string) | null; [key: string]: any; }; const CellProperties: { [name: string]: number }; const CellPropertiesTable: { [name: string]: string }; class Cell { constructor(coord: string); coord: string; datavalue: string | number; datatype: "v" | "t" | "f" | "c" | null; formula: string; /** * First char is main type: b=blank, n=numeric, t=text, e=error. * Following chars are sub-types (e.g. "n$", "nl", "nt", "ndt", "th", "tl"). */ valuetype: string; readonly: boolean; errors: string; comment: string; displayvalue: string; parseinfo: any; bt: number; br: number; bb: number; bl: number; layout: number; font: number; color: number; bgcolor: number; cellformat: number; nontextvalueformat: number; textvalueformat: number; colspan: number; rowspan: number; cssc: string; csss: string; mod: string; displaystring: string; hcolspan: number; hrowspan: number; [key: string]: any; } class Sheet { constructor(); cells: { [coord: string]: Cell }; attribs: { lastcol: number; lastrow: number; defaultlayout: number; usermaxcol: number; usermaxrow: number; defaultcolwidth: string; defaultrowheight: number; defaulttextformat: number; defaultnontextformat: number; defaultfont: number; defaulttextvalueformat: number; defaultnontextvalueformat: number; defaultcolor: number; defaultbgcolor: number; circularreferencecell: string; recalc: string; needsrecalc: string; [key: string]: any; }; rowattribs: { hide: { [row: number]: string }; height: { [row: number]: number }; }; colattribs: { width: { [col: string]: string }; hide: { [col: string]: string }; }; names: { [name: string]: { desc: string; definition: string } }; layouts: string[]; layouthash: { [key: string]: number }; fonts: string[]; fonthash: { [key: string]: number }; colors: string[]; colorhash: { [key: string]: number }; borderstyles: string[]; borderstylehash: { [key: string]: number }; cellformats: string[]; cellformathash: { [key: string]: number }; valueformats: string[]; valueformathash: { [key: string]: number }; matched_cells: string[]; selected_search_cell: string | undefined; copiedfrom: string; changes: UndoStack; renderneeded: boolean; changedrendervalues: boolean; recalcchangedavalue: boolean; hiddencolrow: string; sci: SheetCommandInfo; ioEventTree: { [key: string]: any }; ioParameterList: { [key: string]: any }; statuscallback: ((data: any, status: string, arg: any, params: any) => void) | null; statuscallbackparams: any; xlt: any; ResetSheet(): void; AddCell(newcell: Cell): Cell; LastCol(): number; LastRow(): number; GetAssuredCell(coord: string): Cell; ParseSheetSave(savedsheet: string): void; CellFromStringParts(cell: Cell, parts: string[], j: number): void; CreateSheetSave(range?: string, canonicalize?: boolean): string; CellToString(cell: Cell): string; CanonicalizeSheet(full?: boolean): void; EncodeCellAttributes(coord: string): AttribSet; EncodeSheetAttributes(): AttribSet; DecodeCellAttributes(coord: string, attribs: AttribSet, range?: string): string | null; DecodeSheetAttributes(attribs: AttribSet): string | null; ScheduleSheetCommands(cmd: string, saveundo?: boolean): void; SheetUndo(): void; SheetRedo(): void; CreateAuditString(): string; GetStyleNum(atype: string, style: string): number; GetStyleString(atype: string, num: number): string | null; RecalcSheet(): void; [key: string]: any; } function ResetSheet(sheet: Sheet, reload?: boolean): void; function ParseSheetSave(savedsheet: string, sheetobj: Sheet): void; function CellFromStringParts(sheet: Sheet, cell: Cell, parts: string[], j: number): void; const sheetfields: string[]; const sheetfieldsshort: string[]; const sheetfieldsxlat: string[]; const sheetfieldsxlatshort: string[]; const sheetfieldsxlatxlt: string[]; function CreateSheetSave(sheetobj: Sheet, range?: string, canonicalize?: boolean): string; function CellToString(sheet: Sheet, cell: Cell): string; function CanonicalizeSheet(sheetobj: Sheet, full?: boolean): void; function EncodeCellAttributes(sheet: Sheet, coord: string): AttribSet; function EncodeSheetAttributes(sheet: Sheet): AttribSet; function DecodeCellAttributes(sheet: Sheet, coord: string, newattribs: AttribSet, range?: string): string | null; function DecodeSheetAttributes(sheet: Sheet, newattribs: AttribSet): string | null; class SheetCommandInfo { constructor(sheetobj: Sheet); sheetobj: Sheet; timerobj: ReturnType<typeof setTimeout> | null; firsttimerdelay: number; timerdelay: number; maxtimeslice: number; saveundo: boolean; CmdExtensionCallbacks: { [name: string]: { func: (cmdname: string, data: any, sheet: Sheet, parseobj: Parse, saveundo: boolean) => void; data: any } }; [key: string]: any; } function ScheduleSheetCommands(sheet: Sheet, cmdstr: string, saveundo?: boolean): void; function SheetCommandsTimerRoutine(sci: SheetCommandInfo, parseobj: Parse, saveundo?: boolean): void; function ExecuteSheetCommand(sheet: Sheet, cmd: Parse, saveundo?: boolean): string; function SheetUndo(sheet: Sheet): void; function SheetRedo(sheet: Sheet): void; function CreateAuditString(sheet: Sheet): string; function GetStyleNum(sheet: Sheet, atype: string, style: string): number; function GetStyleString(sheet: Sheet, atype: string, num: number): string | null; function OffsetFormulaCoords(formula: string, coloffset: number, rowoffset: number): string; function AdjustFormulaCoords(formula: string, col: number, coloffset: number, row: number, rowoffset: number): string; function ReplaceFormulaCoords(formula: string, movedto: { [coord: string]: string }): string; const RecalcInfo: { sheet: Sheet | null; currentState: number; state: { idle: number; start_calc: number; order: number; calc: number; start_wait: number; done_wait: number }; recalctimer: ReturnType<typeof setTimeout> | null; maxtimeslice: number; timeslicedelay: number; starttime: number | Date; queue: Sheet[]; LoadSheet: (sheetname: string) => boolean; [key: string]: any; }; class RecalcData { constructor(); inrecalc: boolean; celllist: string[]; celllistitem: number; calclist: { [coord: string]: string } | null; calclistlength: number; firstcalc: string | null; lastcalc: string | null; nextcalc: string | null; count: number; checkinfo: { [coord: string]: RecalcCheckInfo | true }; [key: string]: any; } class RecalcCheckInfo { constructor(); oldcoord: string | null; parsepos: number; inrange: boolean; inrangestart: boolean; cr1: { row: number; col: number } | null; cr2: { row: number; col: number } | null; c1: number | null; c2: number | null; r1: number | null; r2: number | null; c: number | null; r: number | null; [key: string]: any; } function RecalcSheet(sheet: Sheet): void; function RecalcSetTimeout(): void; function RecalcClearTimeout(): void; function RecalcLoadedSheet(sheetname: string | null, str: string, recalcneeded: boolean, live?: boolean): void; function RecalcTimerRoutine(): void; function RecalcCheckCell(sheet: Sheet, startcoord: string): string; class Parse { constructor(str: string); str: string; pos: number; delimiter: string; lineEnd: number; NextToken(): string; RestOfString(): string; RestOfStringNoMove(): string; NextLine(): void; EOF(): boolean; [key: string]: any; } class UndoStack { constructor(); stack: Array<{ command: string[]; type: string; undo: string[] }>; tos: number; maxRedo: number; maxUndo: number; PushChange(type: string): void; AddDo(...args: Array<string | number | null | undefined>): void; AddUndo(...args: Array<string | number | null | undefined>): void; TOS(): { command: string[]; type: string; undo: string[] } | null; Undo(): boolean; Redo(): boolean; [key: string]: any; } const Clipboard: { clipboard: string; [key: string]: any; }; class RenderContext { constructor(sheetobj: Sheet); sheetobj: Sheet; hideRowsCols: boolean; showGrid: boolean; showRCHeaders: boolean; rownamewidth: number | string; pixelsPerRow: number; cellskip: { [coord: string]: string } | null; coordToCR: { [coord: string]: { row: number; col: number } }; colwidth: string[]; rowheight: string[]; totalwidth: number; totalheight: number; rowpanes: Array<{ first: number; last: number }>; colpanes: Array<{ first: number; last: number }>; colunhideleft: HTMLElement[]; colunhideright: HTMLElement[]; rowunhidetop: HTMLElement[]; rowunhidebottom: HTMLElement[]; maxcol: number; maxrow: number; highlights: { [coord: string]: string }; cursorsuffix: string; highlightTypes: { [key: string]: { style: string; className: string } }; cellIDprefix: string; defaultlinkstyle: unknown; defaultHTMLlinkstyle: { type: string }; defaultfontstyle: string; defaultfontsize: string; defaultfontfamily: string; defaultlayout: string; defaultpanedividerwidth: number | string; defaultpanedividerheight: number | string; gridCSS: string; commentClassName: string; commentCSS: string; commentNoGridClassName: string; commentNoGridCSS: string; readonlyClassName: string; readonlyCSS: string; readonlyNoGridClassName: string; readonlyNoGridCSS: string; readonlyComment: string; classnames: { [key: string]: string }; explicitStyles: { [key: string]: string }; needcellskip: boolean; fonts: Array<{ style: string; weight: string; size: string; family: string }>; layouts: string[]; needprecompute: boolean; usermaxcol: number; usermaxrow: number; PrecomputeSheetFontsAndLayouts(): void; CalculateCellSkipData(): void; CalculateColWidthData(): void; CalculateRowHeightData(): void; SetRowPaneFirstLast(panenum: number, first: number, last: number): void; SetColPaneFirstLast(panenum: number, first: number, last: number): void; CoordInPane(coord: string, rowpane: number, colpane: number): boolean; CellInPane(row: number, col: number, rowpane: number, colpane: number): boolean; InitializeTable(tableobj: HTMLTableElement): void; RenderSheet(oldtable: HTMLTableElement | null, linkstyle?: unknown): HTMLTableElement; RenderColGroup(): HTMLElement; RenderColHeaders(): HTMLElement | null; RenderSizingRow(): HTMLElement; RenderRow(rownum: number, rowpane: number, linkstyle?: unknown): HTMLElement; RenderSpacingRow(): HTMLElement; RenderCell(rownum: number, colnum: number, rowpane: number, colpane: number, noElement?: boolean, linkstyle?: unknown): HTMLElement | PseudoElement | null; [key: string]: any; } interface PseudoElement { style: { cssText: string }; innerHTML: string; className: string; } function PrecomputeSheetFontsAndLayouts(context: RenderContext): void; function CalculateCellSkipData(context: RenderContext): void; function CalculateColWidthData(context: RenderContext): void; function CalculateRowHeightData(context: RenderContext): void; function InitializeTable(context: RenderContext, tableobj: HTMLTableElement): void; function RenderSheet(context: RenderContext, oldtable: HTMLTableElement | null, linkstyle?: unknown): HTMLTableElement; function RenderRow(context: RenderContext, rownum: number, rowpane: number, linkstyle?: unknown): HTMLElement; function RenderSpacingRow(context: RenderContext): HTMLElement; function RenderColHeaders(context: RenderContext): HTMLElement | null; function RenderColGroup(context: RenderContext): HTMLElement; function RenderSizingRow(context: RenderContext): HTMLElement; function RenderCell( context: RenderContext, rownum: number, colnum: number, rowpane: number, colpane: number, noElement?: boolean, linkstyle?: unknown ): HTMLElement | PseudoElement | null; function CoordInPane(context: RenderContext, coord: string, rowpane: number, colpane: number): boolean; function CellInPane(context: RenderContext, row: number, col: number, rowpane: number, colpane: number): boolean; function CreatePseudoElement(): PseudoElement; function rcColname(c: number): string; const letters: string[]; function crToCoord(c: number, r: number): string; const coordToCol: { [coord: string]: number }; const coordToRow: { [coord: string]: number }; function coordToCr(cr: string): { row: number; col: number }; function ParseRange(range: string): { cr1: { row: number; col: number; coord: string }; cr2: { row: number; col: number; coord: string } }; function decodeFromSave(s: string): string; function decodeFromAjax(s: string): string; function encodeForSave(s: string): string; function special_chars(string: string): string; function Lookup(value: number, list: number[]): number | null; function setStyles(element: HTMLElement, cssText: string): void; function GetViewportInfo(): { width: number; height: number; horizontalScroll: number; verticalScroll: number }; function GetElementPosition(element: HTMLElement): { left: number; top: number }; function GetElementPositionWithScroll(element: HTMLElement): { left: number; right: number; top: number; bottom: number; width: number; height: number }; function GetElementFixedParent(element: HTMLElement): HTMLElement | false; function GetComputedStyle(element: HTMLElement, style: string): string; function LookupElement<T extends { element: unknown }>(element: unknown, array: T[]): T | null; function AssignID(obj: { idPrefix?: string }, element: HTMLElement, id: string): void; function GetCellContents(sheetobj: Sheet, coord: string): string; function FormatValueForDisplay(sheetobj: Sheet, value: string | number, cr: string, linkstyle?: unknown): string; function format_text_for_display( rawvalue: string | number, valuetype: string, valueformat: string, sheetobj: Sheet, linkstyle?: unknown, nontextvalueformat?: number | string ): string; function format_number_for_display(rawvalue: string | number, valuetype: string, valueformat: string): string; function DetermineValueType(rawvalue: string | number): { value: string | number; type: string }; const InputConstants: { [key: string]: string }; function default_expand_markup(displayvalue: string, sheetobj: Sheet, linkstyle?: unknown): string; function expand_text_link(displayvalue: string, sheetobj: Sheet, linkstyle: unknown, valueformat: string): string; function ParseCellLinkText(str: string): { url: string; desc: string; newwin: boolean; pagename: string; workspace: string }; function ConvertSaveToOtherFormat(savestr: string, outputformat: string, dorecalc?: boolean): string; function ConvertOtherFormatToSave(inputstr: string, inputformat: string): string; function SetConvertedCell(sheet: Sheet, cr: string, rawvalue: string | number): void; }