forked from FINAKON/HelpProject
1. Initial Commit - a boiler plate code and POC to realize the concept of context sensitive help 2. Frontend code written in ReactJS 3. Backend code written in Java, Spring Boot Framework 4. Frontend Start: pre-requisites : node, npm npm run dev ==> to start the frontend vite server 5. Backend Start: pre-requisites : java, mvn mvn spring-boot:run ==> to start the backend server 6. Visit http://localhost:5173/ for basic demo of help, press F1 in textboxes 7. Visit http://localhost:5173/editor and enter "admin123" to add/modify texts. Happy Coding !!! Thank you, Bhargava.
85 lines
2.6 KiB
TypeScript
85 lines
2.6 KiB
TypeScript
import type { TAG_ID } from './html.js';
|
|
export declare enum TokenType {
|
|
CHARACTER = 0,
|
|
NULL_CHARACTER = 1,
|
|
WHITESPACE_CHARACTER = 2,
|
|
START_TAG = 3,
|
|
END_TAG = 4,
|
|
COMMENT = 5,
|
|
DOCTYPE = 6,
|
|
EOF = 7,
|
|
HIBERNATION = 8
|
|
}
|
|
export interface Location {
|
|
/** One-based line index of the first character. */
|
|
startLine: number;
|
|
/** One-based column index of the first character. */
|
|
startCol: number;
|
|
/** Zero-based first character index. */
|
|
startOffset: number;
|
|
/** One-based line index of the last character. */
|
|
endLine: number;
|
|
/** One-based column index of the last character. Points directly *after* the last character. */
|
|
endCol: number;
|
|
/** Zero-based last character index. Points directly *after* the last character. */
|
|
endOffset: number;
|
|
}
|
|
export interface LocationWithAttributes extends Location {
|
|
/** Start tag attributes' location info. */
|
|
attrs?: Record<string, Location>;
|
|
}
|
|
export interface ElementLocation extends LocationWithAttributes {
|
|
/** Element's start tag location info. */
|
|
startTag?: Location;
|
|
/**
|
|
* Element's end tag location info.
|
|
* This property is undefined, if the element has no closing tag.
|
|
*/
|
|
endTag?: Location;
|
|
}
|
|
interface TokenBase {
|
|
readonly type: TokenType;
|
|
location: Location | null;
|
|
}
|
|
export interface DoctypeToken extends TokenBase {
|
|
readonly type: TokenType.DOCTYPE;
|
|
name: string | null;
|
|
forceQuirks: boolean;
|
|
publicId: string | null;
|
|
systemId: string | null;
|
|
}
|
|
export interface Attribute {
|
|
/** The name of the attribute. */
|
|
name: string;
|
|
/** The namespace of the attribute. */
|
|
namespace?: string;
|
|
/** The namespace-related prefix of the attribute. */
|
|
prefix?: string;
|
|
/** The value of the attribute. */
|
|
value: string;
|
|
}
|
|
export interface TagToken extends TokenBase {
|
|
readonly type: TokenType.START_TAG | TokenType.END_TAG;
|
|
tagName: string;
|
|
/** Used to cache the ID of the tag name. */
|
|
tagID: TAG_ID;
|
|
selfClosing: boolean;
|
|
ackSelfClosing: boolean;
|
|
attrs: Attribute[];
|
|
location: LocationWithAttributes | null;
|
|
}
|
|
export declare function getTokenAttr(token: TagToken, attrName: string): string | null;
|
|
export interface CommentToken extends TokenBase {
|
|
readonly type: TokenType.COMMENT;
|
|
data: string;
|
|
}
|
|
export interface EOFToken extends TokenBase {
|
|
readonly type: TokenType.EOF;
|
|
}
|
|
export interface CharacterToken extends TokenBase {
|
|
type: TokenType.CHARACTER | TokenType.NULL_CHARACTER | TokenType.WHITESPACE_CHARACTER;
|
|
chars: string;
|
|
}
|
|
export type Token = DoctypeToken | TagToken | CommentToken | EOFToken | CharacterToken;
|
|
export {};
|