word-ability
Version:
一款文本标注,全文查找,替换的插件,基于vue
78 lines (73 loc) • 2.85 kB
TypeScript
export {};
import { Iparams, Ioptions, Iresult } from './lib/packages/useFindReplace/common/type';
declare module 'word-ability' {
export function useFindReplace(params: Iparams, options?: Ioptions): Iresult;
export class TextMark {
private _element: Element;
private _selection: Nullable<Selection>;
public onSelected: Nullable<Function>;
public onClick: Nullable<Function>;
constructor(ops: opsConfig);
private _beautifyHTML(ele: Element);
private _setEleNoSelect(ele: Element, classNames: string[]);
private _onClick(e: Event);
private _onError;
private _onMouseUp(e: Event);
private _onSelected(e: Selected | string);
deleteMark(uuid: Number): void;
private _captureSelection(range: markRange): void;
repaintRange(rangeNode: rangeNode): void;
beautifyHTML(): void;
renderStore(obj: SelectInfo[]): void;
destroy(): void;
findWord(word: string): void;
replaceMarkClass(uuid: number, className: string): void;
private _removeMark(eleS: NodeListOf<Element>);
private hasCoverSelector(range: Range, attrName: string): boolean;
private _removeMarkClass(eleS: NodeListOf<Element>, className: string);
}
}
declare type Nullable<T> = T | null;
interface SelectBase {
offset: number; //选中文本相对于根结点的偏移量
text: string; //选中的文本
}
interface SelectInfo extends SelectBase {
storeRenderOther?: any; //来自jsMark.renderStore方法的用户自定义参数
}
interface Selected extends SelectBase {
textNodes: Text[]; //选中的所有文本节点
hasStoreRender: boolean; //是否来自renderStore方法渲染,一般用于从数据库拿到数据运用jsMark.renderStore方法判断首次渲染
storeRenderOther: any; //来自jsMark.renderStore方法的用户自定义参数
}
interface rangeNode {
collapsed?: boolean;
commonAncestorContainer?: Element;
endContainer: Text;
endOffset: number;
startContainer: Text;
startOffset: number;
storeRenderOther?: any;
}
interface RangeNodes {
textNodes: Text[]; //选中的所有文本节点
uuid?: string; //标注文本节点的唯一id,会绑定到节点身上的data-selector属性,此id可用于清除当前标注节点,可选,不传会自动生成
className?: string; //需要标注的文本节点样式类,不设置默认标注颜色为 background:rgba(255, 255, 0, 0.3)
}
interface options {
isCover?: boolean; //是否覆盖
ignoreClass?: string[]; //划词忽略的class
}
interface opsConfig {
el: HTMLElement; //要挂载的元素节点
options?: options; //配置
}
interface markRange extends Range {
storeRenderOther?: any; //来自jsMark.renderStore方法的用户自定义参数
}
interface ele extends Element {
ignore: boolean; //是否忽略
}
interface textEle extends Text {
ignore?: boolean; //是否忽略
}