UNPKG

socialcalc

Version:

Collaborative spreadsheet editor

584 lines (483 loc) 21.9 kB
declare namespace SocialCalc { interface ECell { coord: string; row: number; col: number; } interface EditorRange { hasrange: boolean; anchorcoord?: string; anchorrow?: number; anchorcol?: number; top?: number; bottom?: number; left?: number; right?: number; } interface EditorRange2 { hasrange: boolean; top?: number; bottom?: number; left?: number; right?: number; } interface EditorPosition { left: number; top: number; right?: number; bottom?: number; } interface RenderedCellRef { element: HTMLElement; rowpane: number; colpane: number; } type EditorStatusCallbackFn = (editor: TableEditor, status: string, arg: any, params: any) => void; type EditorMoveECellCallbackFn = (editor: TableEditor) => void; type EditorRangeChangeCallbackFn = (editor: TableEditor) => void; interface EditorStatusCallbackEntry { func: EditorStatusCallbackFn; params: any; [key: string]: any; } class TableEditor { constructor(context: RenderContext); context: RenderContext; toplevel: HTMLElement | null; fullgrid: HTMLElement | null; noEdit: boolean; width: number | null; tablewidth: number | null; height: number | null; tableheight: number | null; inputBox: InputBox | null; inputEcho: InputEcho | null; verticaltablecontrol: TableControl | null; horizontaltablecontrol: TableControl | null; logo: HTMLElement | null; cellhandles: CellHandles | null; timeout: number | null; busy: boolean; ensureecell: boolean; deferredCommands: Array<{ cmdstr: string; saveundo: boolean }>; deferredEmailCommands: Array<{ cmdstr: string; saveundo: boolean }>; gridposition: EditorPosition | null; headposition: EditorPosition | null; firstscrollingrow: number | null; firstscrollingrowtop: number | null; lastnonscrollingrow: number | null; lastvisiblerow: number | null; firstscrollingcol: number | null; firstscrollingcolleft: number | null; lastnonscrollingcol: number | null; lastvisiblecol: number | null; rowpositions: number[]; colpositions: number[]; rowheight: number[]; colwidth: number[]; ecell: ECell | null; state: string; workingvalues: { [key: string]: any }; imageprefix: string; idPrefix: string; pageUpDnAmount: number; recalcFunction: (editor: TableEditor) => any; ctrlkeyFunction: (editor: TableEditor, charname: string) => boolean; StatusCallback: { [name: string]: EditorStatusCallbackEntry }; MoveECellCallback: { [name: string]: EditorMoveECellCallbackFn }; RangeChangeCallback: { [name: string]: EditorRangeChangeCallbackFn }; SettingsCallbacks: { [key: string]: any }; range: EditorRange; range2: EditorRange2; griddiv: HTMLElement; layouttable: HTMLElement; pasteTextarea: HTMLTextAreaElement; CreateTableEditor(width: number, height: number): HTMLElement; ResizeTableEditor(width: number, height: number): void; SaveEditorSettings(): string; LoadEditorSettings(str: string, flags?: { [key: string]: any }): void; EditorRenderSheet(): void; EditorScheduleSheetCommands(cmdstr: string, saveundo: boolean, ignorebusy: boolean): void; ScheduleSheetCommands(cmdstr: string, saveundo: boolean): void; SheetUndo(): void; SheetRedo(): void; EditorStepSet(status: any, arg: any): void; GetStatuslineString(status: string, arg: any, params: any): string; EditorMouseRegister(): void; EditorMouseUnregister(): void; EditorMouseRange(coord: string): void; EditorProcessKey(ch: string, e: KeyboardEvent): boolean; EditorAddToInput(str: string, prefix?: string): void; DisplayCellContents(): void; EditorSaveEdit(text?: string): void; EditorApplySetCommandsToRange(cmdline: string, type?: string): void; MoveECellWithKey(ch: string): string | null; MoveECell(newcell: string): string; ReplaceCell(cell: RenderedCellRef | null, row: number, col: number): void; UpdateCellCSS(cell: RenderedCellRef | null, row: number, col: number): void; SetECellHeaders(selected: string): void; EnsureECellVisible(): void; ECellReadonly(coord?: string): boolean; RangeAnchor(coord?: string): void; RangeExtend(coord?: string): void; RangeRemove(): void; Range2Remove(): void; FitToEditTable(): void; CalculateEditorPositions(): void; ScheduleRender(renderwidgets?: boolean): void; DoRenderStep(): void; SchedulePositionCalculations(): void; DoPositionCalculations(): void; CalculateRowPositions(panenum: number, positions: number[], sizes: number[]): void; CalculateColPositions(panenum: number, positions: number[], sizes: number[]): void; ScrollRelative(vertical: boolean, amount: number): void; ScrollRelativeBoth(vamount: number, hamount: number): void; PageRelative(vertical: boolean, direction: number): void; LimitLastPanes(): void; ScrollTableUpOneRow(): any; ScrollTableDownOneRow(): any; ScrollTableLeftOneCol(): any; ScrollTableRightOneCol(): any; StopPropagation(): any; SetMouseMoveUp(): any; RemoveMouseMoveUp(): any; [key: string]: any; } class InputBox { constructor(element: HTMLElement, editor: TableEditor); element: HTMLElement; editor: TableEditor; inputEcho: InputEcho | null; DisplayCellContents(coord?: string): void; ShowInputBox(show: boolean): void; GetText(): string; SetText(newtext: string): void; Focus(): void; Blur(): void; Select(t: string): void; [key: string]: any; } class InputEcho { constructor(editor: TableEditor); editor: TableEditor; text: string; interval: number | null; container: HTMLElement; main: HTMLElement; prompt: HTMLElement; hint: HTMLElement; functionbox: HTMLElement | null; ShowInputEcho(show: boolean): void; SetText(str: string): void; [key: string]: any; } class CellHandles { constructor(editor: TableEditor); editor: TableEditor; noCursorSuffix: boolean; movedmouse: boolean; draghandle: HTMLElement; dragpalette: HTMLElement; dragtooltip: HTMLElement; fillinghandle: HTMLElement; mouseDown: boolean; dragtype: string; filltype: string | null; startingcoord: string; startingX: number; startingY: number; timer: number | null; ShowCellHandles(show: boolean, moveshow?: boolean): void; [key: string]: any; } class TableControl { constructor(editor: TableEditor, vertical: boolean, size: number); editor: TableEditor; vertical: boolean; size: number; main: HTMLElement | null; endcap: HTMLElement | null; paneslider: HTMLElement | null; lessbutton: HTMLElement | null; morebutton: HTMLElement | null; scrollarea: HTMLElement | null; thumb: HTMLElement | null; controlborder: number | null; endcapstart: number | null; panesliderstart: number | null; lessbuttonstart: number | null; morebuttonstart: number | null; scrollareastart: number | null; scrollareaend: number | null; scrollareasize: number | null; thumbpos: number | null; controlthickness: number; sliderthickness: number; buttonthickness: number; thumbthickness: number; minscrollingpanesize: number; CreateTableControl(): HTMLElement; PositionTableControlElements(): void; ComputeTableControlPositions(): void; [key: string]: any; } interface MouseInfoRegisteredElement { element: HTMLElement; editor: TableEditor; [key: string]: any; } const EditorMouseInfo: { registeredElements: MouseInfoRegisteredElement[]; editor: TableEditor | null; element: HTMLElement | null; ignore: boolean; mousedowncoord: string; mouselastcoord: string; mouseresizecol: string; mouseresizeclientx: number | null; mouseresizedisplay: HTMLElement | null; [key: string]: any; }; const AutoRepeatInfo: { timer: number | null; mouseinfo: { [key: string]: any } | null; repeatinterval: number; editor: TableEditor | null; repeatcallback: ((coord: string, direction: string) => void) | null; [key: string]: any; }; interface DragRegisteredElement { element: HTMLElement; vertical: boolean; horizontal: boolean; functionobj: { [key: string]: any }; parent: HTMLElement; [key: string]: any; } const DragInfo: { registeredElements: DragRegisteredElement[]; draggingElement: DragRegisteredElement | null; startX: number; startY: number; startZ: number | string; clientX: number; clientY: number; offsetX: number; offsetY: number; relativeOffset: { left: number; top: number }; [key: string]: any; }; interface ButtonRegisteredElement { element: HTMLElement; editor: TableEditor; name?: string; normalstyle?: string; hoverstyle?: string; downstyle?: string; repeatwait?: number; repeatinterval?: number; functionobj: { [key: string]: any }; [key: string]: any; } const ButtonInfo: { registeredElements: ButtonRegisteredElement[]; buttonElement: ButtonRegisteredElement | null; doingHover: boolean; buttonDown: boolean; timer: number | null; relativeOffset: { left: number; top: number } | null; clientX: number; clientY: number; [key: string]: any; }; interface MouseWheelRegisteredElement { element: HTMLElement; functionobj: { [key: string]: any }; [key: string]: any; } const MouseWheelInfo: { registeredElements: MouseWheelRegisteredElement[]; [key: string]: any; }; const keyboardTables: { specialKeysCommon: { [key: number]: string }; controlKeysIE: { [key: number]: string }; specialKeysSafari: { [key: number]: string }; controlKeysSafari: { [key: number]: string }; ignoreKeysSafari: { [key: number]: string }; specialKeysFirefox: { [key: number]: string }; controlKeysFirefox: { [key: number]: string }; didProcessKey?: boolean; statusFromProcessKey?: boolean; repeatingKeyPress?: boolean; chForProcessKey?: string; [key: string]: any; }; const Keyboard: { areListener: boolean; focusTable: TableEditor | null; passThru: HTMLElement | boolean | null; didProcessKey: boolean; statusFromProcessKey: boolean; repeatingKeyPress: boolean; chForProcessKey: string; [key: string]: any; }; type MouseEventHandler = (e: MouseEvent) => any; type DragFunctionHandler = (event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement) => void; interface DragFunctionObject { MouseDown?: DragFunctionHandler; MouseMove?: DragFunctionHandler; MouseUp?: DragFunctionHandler; Disabled?: (() => boolean) | null; [key: string]: any; } interface ButtonParamObject { name?: string; normalstyle?: string; hoverstyle?: string; downstyle?: string; repeatwait?: number; repeatinterval?: number; [key: string]: any; } interface ButtonFunctionObject { MouseDown?: (e: MouseEvent, buttoninfo: typeof ButtonInfo, bobj: ButtonRegisteredElement) => void; MouseUp?: (e: MouseEvent, buttoninfo: typeof ButtonInfo, bobj: ButtonRegisteredElement) => void; Repeat?: (e: MouseEvent, buttoninfo: typeof ButtonInfo, bobj: ButtonRegisteredElement) => void; Disabled?: (() => boolean) | null; [key: string]: any; } interface MouseWheelFunctionObject { WheelMove?: (event: Event, delta: number, mousewheelinfo: typeof MouseWheelInfo, wobj: MouseWheelRegisteredElement) => void; [key: string]: any; } interface GridMousePositionResult { row: number; col: number; coord?: string; rowheader?: boolean; colheader?: boolean; rowfooter?: boolean; colfooter?: boolean; coltoresize?: number; rowtoresize?: number; distance?: number; [key: string]: any; } function CreateTableEditor(editor: TableEditor, width: number, height: number): HTMLElement; function SafariPasteFunction(e: Event): void; function ResizeTableEditor(editor: TableEditor, width: number, height: number): void; function SaveEditorSettings(editor: TableEditor): string; function LoadEditorSettings(editor: TableEditor, str: string, flags?: { [key: string]: any }): void; function EditorRenderSheet(editor: TableEditor): void; function EditorScheduleSheetCommands(editor: TableEditor, cmdstr: string, saveundo: boolean, ignorebusy: boolean): void; function EditorSheetStatusCallback(recalcdata: any, status: string, arg: any, editor: TableEditor): void; function EditorGetStatuslineString(editor: TableEditor, status: string, arg: any, params: any): string; function EditorMouseRegister(editor: TableEditor): void; function EditorMouseUnregister(editor: TableEditor): void; function StopPropagation(event: Event): void; function SetMouseMoveUp(move: MouseEventHandler, up: MouseEventHandler, element: HTMLElement, event: Event): void; function RemoveMouseMoveUp(move: MouseEventHandler, up: MouseEventHandler, element: HTMLElement, event: Event): void; function ProcessEditorMouseDown(e: MouseEvent): void; function EditorMouseRange(editor: TableEditor, coord: string): void; function ProcessEditorMouseMove(e: MouseEvent): void; function ProcessEditorMouseUp(e: MouseEvent): any; function ProcessEditorColsizeMouseDown(e: MouseEvent, ele: HTMLElement, result: GridMousePositionResult): void; function ProcessEditorColsizeMouseMove(e: MouseEvent): void; function ProcessEditorColsizeMouseUp(e: MouseEvent): any; function FinishColRowSize(): void; function ProcessEditorRowselectMouseDown(e: MouseEvent, ele: HTMLElement, result: GridMousePositionResult): void; function ProcessEditorRowselectMouseMove(e: MouseEvent): void; function ProcessEditorRowselectMouseUp(e: MouseEvent): void; function ProcessEditorColselectMouseDown(e: MouseEvent, ele: HTMLElement, result: GridMousePositionResult): void; function ProcessEditorColselectMouseMove(e: MouseEvent): void; function ProcessEditorColselectMouseUp(e: MouseEvent): void; function ProcessEditorRowsizeMouseDown(e: MouseEvent, ele: HTMLElement, result: GridMousePositionResult): void; function ProcessEditorRowsizeMouseMove(e: MouseEvent): void; function ProcessEditorRowsizeMouseUp(e: MouseEvent): any; function SetDragAutoRepeat(editor: TableEditor, mouseinfo: { [key: string]: any } | null, callback?: ((coord: string, direction: string) => void) | null): void; function DragAutoRepeat(): void; function ProcessEditorDblClick(e: MouseEvent): void; function EditorOpenCellEdit(editor: TableEditor): boolean | void; function EditorProcessKey(editor: TableEditor, ch: string, e: KeyboardEvent): boolean; function EditorAddToInput(editor: TableEditor, str: string, prefix?: string): void; function EditorDisplayCellContents(editor: TableEditor): void; function EditorSaveEdit(editor: TableEditor, text?: string): void; function EditedTriggerCell(actionFormulaCells: { [key: string]: any }, editedCellRef: string, editor: TableEditor, sheet: Sheet): void; function EditorApplySetCommandsToRange(editor: TableEditor, cmd: string): void; function EditorProcessMouseWheel(event: Event, delta: number, mousewheelinfo: MouseWheelRegisteredElement, wobj: MouseWheelRegisteredElement): void; function GridMousePosition(editor: TableEditor, clientX: number, clientY: number): GridMousePositionResult; function GetEditorCellElement(editor: TableEditor, row: number, col: number): RenderedCellRef | null; function MoveECellWithKey(editor: TableEditor, ch: string): string | null; function MoveECell(editor: TableEditor, newcell: string): string; function EnsureECellVisible(editor: TableEditor): void; function ReplaceCell(editor: TableEditor, cell: RenderedCellRef | null, row: number, col: number): void; function UpdateCellCSS(editor: TableEditor, cell: RenderedCellRef | null, row: number, col: number): void; function SetECellHeaders(editor: TableEditor, selected: string): void; function ECellReadonly(editor: TableEditor, ecoord?: string): boolean; function RangeAnchor(editor: TableEditor, ecoord?: string): void; function RangeExtend(editor: TableEditor, ecoord?: string): void; function RangeRemove(editor: TableEditor): void; function Range2Remove(editor: TableEditor): void; function FitToEditTable(editor: TableEditor): void; function CalculateEditorPositions(editor: TableEditor): void; function ScheduleRender(editor: TableEditor): void; function DoRenderStep(editor: TableEditor): void; function SchedulePositionCalculations(editor: TableEditor): void; function DoPositionCalculations(editor: TableEditor): void; function CalculateRowPositions(editor: TableEditor, panenum: number, positions: number[], sizes: number[]): void; function CalculateColPositions(editor: TableEditor, panenum: number, positions: number[], sizes: number[]): void; function ScrollRelative(editor: TableEditor, vertical: boolean, amount: number): void; function ScrollRelativeBoth(editor: TableEditor, vamount: number, hamount: number): void; function PageRelative(editor: TableEditor, vertical: boolean, direction: number): void; function LimitLastPanes(editor: TableEditor): void; function ScrollTableUpOneRow(editor: TableEditor): any; function ScrollTableDownOneRow(editor: TableEditor): any; function InputBoxDisplayCellContents(inputbox: InputBox, coord?: string): void; function InputBoxFocus(inputbox: InputBox): void; function InputBoxOnMouseDown(e: MouseEvent): boolean | void; function ShowInputEcho(inputecho: InputEcho, show: boolean): void; function SetInputEchoText(inputecho: InputEcho, str: string): void; function InputEchoHeartbeat(): void; function InputEchoMouseDown(e: MouseEvent): boolean | void; function ShowCellHandles(cellhandles: CellHandles, show: boolean, moveshow?: boolean): void; function CellHandlesMouseMoveOnHandle(e: MouseEvent): void; function SegmentDivHit(segtable: Array<number | string | any[]>, divWithMouseHit: HTMLElement, x: number, y: number): number; function CellHandlesHoverTimeout(): void; function CellHandlesMouseDown(e: MouseEvent): boolean | void; function CellHandlesMouseMove(e: MouseEvent): boolean | void; function CellHandlesDragAutoRepeat(coord: string, direction: string): void; function CellHandlesMouseUp(e: MouseEvent): boolean | void; function CreateTableControl(control: TableControl): HTMLElement; function ScrollAreaClick(e: MouseEvent, buttoninfo: typeof ButtonInfo, bobj: ButtonRegisteredElement): void; function PositionTableControlElements(control: TableControl): void; function ComputeTableControlPositions(control: TableControl): void; function TCPSDragFunctionStart(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function TCPSDragFunctionMove(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function TCPSDragFunctionStop(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function TCTDragFunctionStart(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function TCTDragFunctionRowSetStatus(draginfo: typeof DragInfo, editor: TableEditor, row: number): void; function TCTDragFunctionMove(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function TCTDragFunctionStop(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function DragRegister(element: HTMLElement, vertical: boolean, horizontal: boolean, functionobj: DragFunctionObject | null, parent: HTMLElement): void; function DragUnregister(element: HTMLElement): void; function DragMouseDown(event: MouseEvent): any; function DragMouseMove(event: MouseEvent): any; function DragMouseUp(event: MouseEvent): any; function DragFunctionStart(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function DragFunctionPosition(event: Event, draginfo: typeof DragInfo, dobj: DragRegisteredElement): void; function ButtonRegister(editor: TableEditor, element: HTMLElement, paramobj: ButtonParamObject | null, functionobj: ButtonFunctionObject | null): void; function ButtonMouseOver(event: MouseEvent): void; function ButtonMouseOut(event: MouseEvent): void; function ButtonMouseDown(event: MouseEvent): void; function ButtonMouseUp(event: MouseEvent): void; function ButtonRepeat(): void; function MouseWheelRegister(element: HTMLElement, functionobj: MouseWheelFunctionObject): void; function ProcessMouseWheel(e: Event): void; function KeyboardSetFocus(editor: TableEditor): void; function KeyboardFocus(): void; function ProcessKeyDown(e: KeyboardEvent): boolean; function ProcessKeyPress(e: KeyboardEvent): boolean; function ProcessKey(ch: string, e: KeyboardEvent): boolean; }