UNPKG

@jsx6/nodditor

Version:

JSX6 blocky nodes code editor

199 lines (193 loc) 5.3 kB
/** @typedef BlockData @property {string} id @property {string} type @property {Array<number>} pos @property {Array<number>} size @property {HTMLElement} el @property {Object} block @property {Map<string, ConnectorData>} map @property {Set<Element>} resizeSet @property {Map<string, ConnectorData>} connectorMap @property {NodeEditor} editor @typedef HTMLBlock_ @property {BlockData} neBlock @typedef {HTMLElement & HTMLBlock_} HTMLBlock @typedef ConnectorData @property {string} id @property {string} dir @property {number} changed @property {string} idFull @property {HTMLElement} el @property {BlockData} root @property {Array<number>} relPos @property {Array<number>} pos @property {number} offsetX @property {number} offsetY @property {Array<number>} size @property {NodeEditor} editor @typedef HTMLConnector_ @property {ConnectorData} ncData @typedef {HTMLElement & HTMLConnector_} HTMLConnector @typedef LinePoint @property {Array<number>} pos @property {ConnectorData} con @property {Array<Function>} listen @property {string} align */ /** * */ export class NodeEditor { /** @type {Array<BlockData>} */ blocks: Array<BlockData>; /** @type {Array<ConnectLine>} */ lines: Array<ConnectLine>; /** @type {ConnectLine} */ selectedLine: ConnectLine; /** @type {Array<BlockData>} */ selectedBlocks: Array<BlockData>; blockMap: Map<any, any>; nodeMap: Map<any, any>; /** @type {HTMLElement} */ currentMenu: HTMLElement; /** * @param {ConnectorData} con */ newConnector(con: ConnectorData): void; /** * * @param {any} block * @param {string} id * @param {Object} [param2] * @returns {BlockData} */ add(block: any, id: string, { pos, type }?: any): BlockData; recheckConnectors(blockData: any): void; /** * * @param {string} id * @returns {BlockData} */ getBlockData(id: string): BlockData; /** * * @param {string} nid * @returns {Array<number>} */ getPos(nid: string): Array<number>; /** * * @param {string | Array<string>} blockId block id * @param {string} [cid] connector id * @returns {ConnectorData} */ getConnector(blockId: string | Array<string>, cid?: string): ConnectorData; lineHasConnector(con: any): boolean; removeLine(line: any): void; removeBlock(block: any): void; getMinXY(): number[]; setZoomAndPos(zoom: any, x: any, y: any): void; set zoom(zoom: any); get zoom(): any; resetView(padx?: number, pady?: number): void; moveAll(dx?: number, dy?: number): void; setPos(nid: any, pos: any): void; _setPos(blockData: any, pos: any): void; tpl({ menu, ...attr }?: { menu?: any; }): any; menuGenerator: any; lineinteraciton: LineInteraction; realWidth: any; realHeight: any; observer: ResizeObserver; svgLayer: any; contentArea: any; _zoom: any; $focusOrSelecting: any; onfocus: (e: any) => boolean; onblur: (e: any) => boolean; udpateSize(): void; changeZoomMouse(zoom: any, e: any): void; changeZoomCenter(zoom: any): void; changeZoom(delta: any, x?: number, y?: number): void; clear(): void; deleteSelectedBlocks(): void; deleteBlocks(blocks: any): void; /** * * @param {string|Array<string>} c1 * @param {string|Array<string>} c2 * @returns {ConnectLine} */ addConnectorFromTo(c1: string | Array<string>, c2: string | Array<string>): ConnectLine; /** * @param {ConnectLine} con */ addConnector(con: ConnectLine): ConnectLine; /** * * @typedef Menu * @property {Function} afterAdd * * @typedef {HTMLElement & Menu} MenuHtml * * @param {*} blocks */ selectBlocks(blocks: any): void; selectConnector(con: any): void; deselect(): void; /** * * @param {Element} el * @param {string} name * @param {*} [detail] */ fireCustom(el: Element, name: string, detail?: any): void; fireMoveDone(blockData: any): void; fireMove(blockData: any, evtName?: string): void; } export type BlockData = { id: string; type: string; pos: Array<number>; size: Array<number>; el: HTMLElement; block: any; map: Map<string, ConnectorData>; resizeSet: Set<Element>; connectorMap: Map<string, ConnectorData>; editor: NodeEditor; }; export type HTMLBlock_ = { neBlock: BlockData; }; export type HTMLBlock = HTMLElement & HTMLBlock_; export type ConnectorData = { id: string; dir: string; changed: number; idFull: string; el: HTMLElement; root: BlockData; relPos: Array<number>; pos: Array<number>; offsetX: number; offsetY: number; size: Array<number>; editor: NodeEditor; }; export type HTMLConnector_ = { ncData: ConnectorData; }; export type HTMLConnector = HTMLElement & HTMLConnector_; export type LinePoint = { pos: Array<number>; con: ConnectorData; listen: Array<Function>; align: string; }; import { ConnectLine } from './ConnectLine.js'; import { LineInteraction } from './LineInteraction.js'; //# sourceMappingURL=NodeEditor.d.ts.map