From a201749053a1d742fe9c5f08b8c1ecc0de1b5d0a Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 12 Mar 2022 16:17:11 -0800 Subject: [PATCH 1/9] add rich text support --- lib/index.css | 6 ++++ lib/index.d.ts | 47 +++++++++++++++++++++++-- lib/index.js | 76 ++++++++++++++++++++++++++++------------ lib/index.js.map | 2 +- local-test.html | 15 ++++---- src/index.ts | 90 +++++++++++++++++++++++++++++++++++------------- 6 files changed, 180 insertions(+), 56 deletions(-) diff --git a/lib/index.css b/lib/index.css index 182df40..cd5dbfd 100644 --- a/lib/index.css +++ b/lib/index.css @@ -15,6 +15,12 @@ display: block !important; } +#telescope hr { + border: 1px solid var(--telescope-text-color); + margin: 1em 0; + display: block !important; +} + #telescope .details { display: inline; border-radius: 3px; diff --git a/lib/index.d.ts b/lib/index.d.ts index 69461e9..97e117e 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -28,7 +28,40 @@ declare enum TextMode { */ Html = "html" } -declare const TextModeValues: TextMode[]; +declare const isTextMode: (e: any) => e is string | number | (() => string) | ((pos: number) => string) | ((index: number) => number) | ((...strings: string[]) => string) | ((searchString: string, position?: number) => number) | ((searchString: string, position?: number) => number) | { + (that: string): number; + (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; +} | { + (regexp: string | RegExp): RegExpMatchArray; + (matcher: { + [Symbol.match](string: string): RegExpMatchArray; + }): RegExpMatchArray; +} | { + (searchValue: string | RegExp, replaceValue: string): string; + (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; + (searchValue: { + [Symbol.replace](string: string, replaceValue: string): string; + }, replaceValue: string): string; + (searchValue: { + [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; + }, replacer: (substring: string, ...args: any[]) => string): string; +} | { + (regexp: string | RegExp): number; + (searcher: { + [Symbol.search](string: string): number; + }): number; +} | ((start?: number, end?: number) => string) | { + (separator: string | RegExp, limit?: number): string[]; + (splitter: { + [Symbol.split](string: string, limit?: number): string[]; + }, limit?: number): string[]; +} | ((start: number, end?: number) => string) | (() => string) | ((locales?: string | string[]) => string) | (() => string) | ((locales?: string | string[]) => string) | (() => string) | ((from: number, length?: number) => string) | (() => string) | ((pos: number) => number) | ((searchString: string, position?: number) => boolean) | ((searchString: string, endPosition?: number) => boolean) | { + (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; + (form?: string): string; +} | ((count: number) => string) | ((searchString: string, position?: number) => boolean) | ((name: string) => string) | (() => string) | (() => string) | (() => string) | (() => string) | ((color: string) => string) | { + (size: number): string; + (size: string): string; +} | (() => string) | ((url: string) => string) | (() => string) | (() => string) | (() => string) | (() => string) | ((maxLength: number, fillString?: string) => string) | ((maxLength: number, fillString?: string) => string) | (() => string) | (() => string) | (() => string) | (() => string) | ((regexp: RegExp) => IterableIterator) | (() => IterableIterator) | ((index: number) => string); interface Config { /** * Character used to separate entries on the same level. Defaults to a single space (" ") @@ -43,12 +76,20 @@ interface Config { */ textMode?: TextMode; /** - * + * Determines the wrapper element type for HTML elements. Defaults to 'span'. */ htmlContainerTag?: keyof HTMLElementTagNameMap; + /** + * Only valid when textMode is 'text'. Used to insert HTML element like blockquotes, line breaks, bold, and emphasis in plain text mode. + */ + specialCharacters?: TextReplacements; } -declare type CreateTelescopicTextConfig = Pick; +declare type CreateTelescopicTextConfig = Pick; declare let _lastHoveredTime: number; +interface TextReplacements { + [key: string]: (lineText: string) => HTMLElement; +} +declare const DefaultReplacements: TextReplacements; declare function _hydrate(line: Content, node: any, config?: CreateTelescopicTextConfig): void; declare function _createTelescopicText(content: Content[], config?: CreateTelescopicTextConfig): HTMLDivElement; /*****************/ diff --git a/lib/index.js b/lib/index.js index 845a00b..01b849a 100644 --- a/lib/index.js +++ b/lib/index.js @@ -32,31 +32,65 @@ var TextMode; */ TextMode["Html"] = "html"; })(TextMode || (TextMode = {})); -var TextModeValues = Object.values(TextMode); +// internal fn to typeguard TextMode +var isTextMode = function (e) { return Object.values(TextMode).includes(e); }; // time; recorded to prevent recursive text expansion on single hover var _lastHoveredTime = Date.now(); +// By default, only these special characters have text replacements +// - blockquotes +// - line breaks +// - bold +// - emphasis +var DefaultReplacements = { + // quote + "^> (.*)$": function (lineText) { + var el = document.createElement("blockquote"); + var span = document.createElement("span"); + span.appendChild(document.createTextNode(lineText)); + el.appendChild(span); + return el; + }, + // line break + "---": function (lineText) { + return document.createElement("hr"); + }, + // bold + "\\*(.*)\\*": function (lineText) { + var el = document.createElement("strong"); + el.appendChild(document.createTextNode(lineText)); + return el; + }, + // emphasis + "_(.*)_": function (lineText) { + var el = document.createElement("em"); + el.appendChild(document.createTextNode(lineText)); + return el; + } +}; // Internal recursive function to hydrate a node with a line object. function _hydrate(line, node, config) { if (config === void 0) { config = {}; } - var shouldExpandOnMouseOver = config.shouldExpandOnMouseOver, _a = config.textMode, textMode = _a === void 0 ? TextMode.Text : _a, _b = config.htmlContainerTag, htmlContainerTag = _b === void 0 ? "span" : _b; + var shouldExpandOnMouseOver = config.shouldExpandOnMouseOver, _a = config.textMode, textMode = _a === void 0 ? TextMode.Text : _a, _b = config.htmlContainerTag, htmlContainerTag = _b === void 0 ? "span" : _b, _c = config.specialCharacters, specialCharacters = _c === void 0 ? DefaultReplacements : _c; var lineText = line.text; function createLineNode(lineText) { switch (textMode) { case TextMode.Text: - // TODO: move this special character replacement functionality into a general purpose config - // passed in at the top-level. - if (lineText.includes("@Q ")) { - // if this is a quotation, turn it into a
element - var _a = lineText.split("@Q ", 2), before = _a[0], quote = _a[1]; - var pre = document.createTextNode(before); - node.appendChild(pre); - var el = document.createElement("blockquote"); - el.innerText = quote; - return el; - } - else { - return document.createTextNode(lineText); + for (var _i = 0, _a = Object.entries(specialCharacters); _i < _a.length; _i++) { + var _b = _a[_i], specialCharRegex = _b[0], replacementFn = _b[1]; + var matches = lineText.match(specialCharRegex); + if (matches) { + var container = document.createElement(htmlContainerTag); + var wholeMatch = matches[0], innerMatchText = matches[1], _ = matches[2]; + // compute pre and post match text + var _c = lineText.split(wholeMatch), pre = _c[0], post = _c[1]; + container.appendChild(createLineNode(pre)); + container.appendChild(replacementFn(innerMatchText)); + container.appendChild(createLineNode(post)); + return container; + } } + // leaf, no special characters + return document.createTextNode(lineText); case TextMode.Html: var newNode = document.createElement(htmlContainerTag); newNode.innerHTML = lineText; @@ -69,12 +103,10 @@ function _hydrate(line, node, config) { var _loop_1 = function (i) { var replacement = line.replacements[i]; // split single occurrence of replacement pattern - var _c = lineText.split(replacement.og), before = _c[0], afterarr = _c.slice(1); - var after = afterarr.join(replacement.og); - // consume - lineText = after; + var _d = lineText.split(replacement.og), before = _d[0], after = _d.slice(1); + lineText = after.join(replacement.og); // add old real text - node.appendChild(document.createTextNode(before)); + node.appendChild(createLineNode(before)); // create actual telescope var detail = document.createElement("span"); detail.classList.add("details", "close"); @@ -246,8 +278,8 @@ function createTelescopicTextFromBulletedList(listContent, _a) { if (_a === void 0) { _a = {}; } var _b = _a.separator, separator = _b === void 0 ? " " : _b, createTelescopicTextConfig = __rest(_a, ["separator"]); var _c = createTelescopicTextConfig.textMode, textMode = _c === void 0 ? TextMode.Text : _c; - if (!TextModeValues.includes(textMode)) { - throw new Error("Invalid textMode provided! Please input one of ".concat(TextModeValues.map(function (s) { return "'".concat(s, "'"); }).join(", "))); + if (!isTextMode(textMode)) { + throw new Error("Invalid textMode provided! Please input one of ".concat(Object.values(TextMode).map(function (s) { return "'".concat(s, "'"); }).join(", "))); } var content = _parseMarkdownIntoContent(listContent, separator); return _createTelescopicText([content], __assign({ textMode: textMode }, createTelescopicTextConfig)); diff --git a/lib/index.js.map b/lib/index.js.map index 4e72fa1..1e4ee78 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/local-test.html b/local-test.html index b009052..fdba40c 100644 --- a/local-test.html +++ b/local-test.html @@ -28,8 +28,8 @@ }, { content: ` -* Texts with - * Melodies and +* Texts + * Melodies * for * words * are @@ -42,14 +42,15 @@ * Texts * Melodies * are - * boundless shapeshifters, + * _boundless shapeshifters,_ * boundless shapeshifters (technicolor chameleons), * zealous freedom fighters, - * sacred + * *sacred* * sacred (laden with gravitas) - * holders of space - * holders of space and keepers of time - * holders of space and keepers of time and protectors of life`, + * --- + * > holders of space + * holders of *space* and keepers of time + * > holders of space and keepers of time and protectors of life`, }, ]; const poemContainer = document.getElementById("poems"); diff --git a/src/index.ts b/src/index.ts index 2a97787..9d2d4d0 100644 --- a/src/index.ts +++ b/src/index.ts @@ -33,7 +33,8 @@ enum TextMode { */ Html = "html", } -const TextModeValues = Object.values(TextMode); +// internal fn to typeguard TextMode +const isTextMode = (e: any): e is TextMode[keyof TextMode] => Object.values(TextMode).includes(e) interface Config { /** @@ -49,19 +50,62 @@ interface Config { */ textMode?: TextMode; /** - * + * Determines the wrapper element type for HTML elements. Defaults to 'span'. */ htmlContainerTag?: keyof HTMLElementTagNameMap; + /** + * Only valid when textMode is 'text'. Used to insert HTML element like blockquotes, line breaks, bold, and emphasis in plain text mode. + */ + specialCharacters?: TextReplacements; } type CreateTelescopicTextConfig = Pick< Config, - "shouldExpandOnMouseOver" | "textMode" | "htmlContainerTag" + "shouldExpandOnMouseOver" | "textMode" | "htmlContainerTag" | "specialCharacters" >; // time; recorded to prevent recursive text expansion on single hover let _lastHoveredTime = Date.now(); +interface TextReplacements { + // Each entry is keyed by its prefix string match (e.g. @Q) + // It defines a function that takes in the current line of text as well as its parent node + // and + [key: string]: (lineText: string) => HTMLElement +} + +// By default, only these special characters have text replacements +// - blockquotes +// - line breaks +// - bold +// - emphasis +const DefaultReplacements: TextReplacements = { + // quote + "^> (.*)$": (lineText) => { + const el = document.createElement("blockquote"); + const span = document.createElement("span"); + span.appendChild(document.createTextNode(lineText)); + el.appendChild(span); + return el; + }, + // line break + "---": (lineText) => { + return document.createElement("hr"); + }, + // bold + "\\*(.*)\\*": (lineText) => { + const el = document.createElement("strong"); + el.appendChild(document.createTextNode(lineText)); + return el; + }, + // emphasis + "_(.*)_": (lineText) => { + const el = document.createElement("em"); + el.appendChild(document.createTextNode(lineText)); + return el; + } +} + // Internal recursive function to hydrate a node with a line object. function _hydrate( line: Content, @@ -72,25 +116,28 @@ function _hydrate( shouldExpandOnMouseOver, textMode = TextMode.Text, htmlContainerTag = "span", + specialCharacters = DefaultReplacements, } = config; let lineText = line.text; function createLineNode(lineText: string) { switch (textMode) { case TextMode.Text: - // TODO: move this special character replacement functionality into a general purpose config - // passed in at the top-level. - if (lineText.includes("@Q ")) { - // if this is a quotation, turn it into a
element - const [before, quote] = lineText.split("@Q ", 2); - const pre = document.createTextNode(before); - node.appendChild(pre); - const el = document.createElement("blockquote"); - el.innerText = quote; - return el; - } else { - return document.createTextNode(lineText); + for (const [specialCharRegex, replacementFn] of Object.entries(specialCharacters)) { + const matches = lineText.match(specialCharRegex) + if (matches) { + const container = document.createElement(htmlContainerTag); + const [wholeMatch, innerMatchText, _] = matches + // compute pre and post match text + const [pre, post] = lineText.split(wholeMatch) + container.appendChild(createLineNode(pre)) + container.appendChild(replacementFn(innerMatchText)) + container.appendChild(createLineNode(post)) + return container + } } + // leaf, no special characters + return document.createTextNode(lineText); case TextMode.Html: const newNode = document.createElement(htmlContainerTag); @@ -108,14 +155,11 @@ function _hydrate( const replacement = line.replacements[i]; // split single occurrence of replacement pattern - const [before, ...afterarr] = lineText.split(replacement.og); - const after = afterarr.join(replacement.og); - - // consume - lineText = after; + const [before, ...after] = lineText.split(replacement.og); + lineText = after.join(replacement.og); // add old real text - node.appendChild(document.createTextNode(before)); + node.appendChild(createLineNode(before)); // create actual telescope const detail = document.createElement("span"); @@ -313,9 +357,9 @@ function createTelescopicTextFromBulletedList( { separator = " ", ...createTelescopicTextConfig }: Config = {} ): HTMLDivElement { const { textMode = TextMode.Text } = createTelescopicTextConfig; - if (!TextModeValues.includes(textMode)) { + if (!isTextMode(textMode)) { throw new Error( - `Invalid textMode provided! Please input one of ${TextModeValues.map( + `Invalid textMode provided! Please input one of ${Object.values(TextMode).map( (s) => `'${s}'` ).join(", ")}` ); From 749a2a440c8a700e137a78ef2e49b97c3ec1f87a Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 12 Mar 2022 16:24:32 -0800 Subject: [PATCH 2/9] fix customization of replacement fns --- lib/index.js | 12 ++---------- lib/index.js.map | 2 +- local-test.html | 14 +++++++++++++- src/index.ts | 16 ++++++---------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/lib/index.js b/lib/index.js index 01b849a..b9747db 100644 --- a/lib/index.js +++ b/lib/index.js @@ -42,14 +42,6 @@ var _lastHoveredTime = Date.now(); // - bold // - emphasis var DefaultReplacements = { - // quote - "^> (.*)$": function (lineText) { - var el = document.createElement("blockquote"); - var span = document.createElement("span"); - span.appendChild(document.createTextNode(lineText)); - el.appendChild(span); - return el; - }, // line break "---": function (lineText) { return document.createElement("hr"); @@ -70,12 +62,12 @@ var DefaultReplacements = { // Internal recursive function to hydrate a node with a line object. function _hydrate(line, node, config) { if (config === void 0) { config = {}; } - var shouldExpandOnMouseOver = config.shouldExpandOnMouseOver, _a = config.textMode, textMode = _a === void 0 ? TextMode.Text : _a, _b = config.htmlContainerTag, htmlContainerTag = _b === void 0 ? "span" : _b, _c = config.specialCharacters, specialCharacters = _c === void 0 ? DefaultReplacements : _c; + var shouldExpandOnMouseOver = config.shouldExpandOnMouseOver, _a = config.textMode, textMode = _a === void 0 ? TextMode.Text : _a, _b = config.htmlContainerTag, htmlContainerTag = _b === void 0 ? "span" : _b, _c = config.specialCharacters, specialCharacters = _c === void 0 ? {} : _c; var lineText = line.text; function createLineNode(lineText) { switch (textMode) { case TextMode.Text: - for (var _i = 0, _a = Object.entries(specialCharacters); _i < _a.length; _i++) { + for (var _i = 0, _a = Object.entries(__assign(__assign({}, DefaultReplacements), specialCharacters)); _i < _a.length; _i++) { var _b = _a[_i], specialCharRegex = _b[0], replacementFn = _b[1]; var matches = lineText.match(specialCharRegex); if (matches) { diff --git a/lib/index.js.map b/lib/index.js.map index 1e4ee78..c140a8e 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/local-test.html b/local-test.html index fdba40c..e128a5e 100644 --- a/local-test.html +++ b/local-test.html @@ -48,9 +48,21 @@ * *sacred* * sacred (laden with gravitas) * --- - * > holders of space + * holders of space * holders of *space* and keepers of time * > holders of space and keepers of time and protectors of life`, + config: { + specialCharacters: { + // quote + "^> (.*)$": (lineText) => { + const el = document.createElement("blockquote"); + const span = document.createElement("span"); + span.appendChild(document.createTextNode(lineText)); + el.appendChild(span); + return el; + }, + } + } }, ]; const poemContainer = document.getElementById("poems"); diff --git a/src/index.ts b/src/index.ts index 9d2d4d0..5fe2a14 100644 --- a/src/index.ts +++ b/src/index.ts @@ -80,14 +80,6 @@ interface TextReplacements { // - bold // - emphasis const DefaultReplacements: TextReplacements = { - // quote - "^> (.*)$": (lineText) => { - const el = document.createElement("blockquote"); - const span = document.createElement("span"); - span.appendChild(document.createTextNode(lineText)); - el.appendChild(span); - return el; - }, // line break "---": (lineText) => { return document.createElement("hr"); @@ -116,14 +108,18 @@ function _hydrate( shouldExpandOnMouseOver, textMode = TextMode.Text, htmlContainerTag = "span", - specialCharacters = DefaultReplacements, + specialCharacters = {}, } = config; + let lineText = line.text; function createLineNode(lineText: string) { switch (textMode) { case TextMode.Text: - for (const [specialCharRegex, replacementFn] of Object.entries(specialCharacters)) { + for (const [specialCharRegex, replacementFn] of Object.entries({ + ...DefaultReplacements, + ...specialCharacters + })) { const matches = lineText.match(specialCharRegex) if (matches) { const container = document.createElement(htmlContainerTag); From 3a8827c2a497e151b52a5eb11e97ef6c54090554 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 12 Mar 2022 16:27:08 -0800 Subject: [PATCH 3/9] simplify ts def --- src/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.ts b/src/index.ts index 5fe2a14..30ee518 100644 --- a/src/index.ts +++ b/src/index.ts @@ -34,7 +34,7 @@ enum TextMode { Html = "html", } // internal fn to typeguard TextMode -const isTextMode = (e: any): e is TextMode[keyof TextMode] => Object.values(TextMode).includes(e) +const isTextMode = (e: any): e is TextMode => Object.values(TextMode).includes(e) interface Config { /** From b9f68ffa1e714781c9ac7a123cb55627a5087771 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Sat, 12 Mar 2022 16:30:06 -0800 Subject: [PATCH 4/9] update ts def --- lib/index.d.ts | 35 +---------------------------------- lib/index.js | 4 +++- lib/index.js.map | 2 +- src/index.ts | 4 +++- 4 files changed, 8 insertions(+), 37 deletions(-) diff --git a/lib/index.d.ts b/lib/index.d.ts index 97e117e..792cc12 100644 --- a/lib/index.d.ts +++ b/lib/index.d.ts @@ -28,40 +28,7 @@ declare enum TextMode { */ Html = "html" } -declare const isTextMode: (e: any) => e is string | number | (() => string) | ((pos: number) => string) | ((index: number) => number) | ((...strings: string[]) => string) | ((searchString: string, position?: number) => number) | ((searchString: string, position?: number) => number) | { - (that: string): number; - (that: string, locales?: string | string[], options?: Intl.CollatorOptions): number; -} | { - (regexp: string | RegExp): RegExpMatchArray; - (matcher: { - [Symbol.match](string: string): RegExpMatchArray; - }): RegExpMatchArray; -} | { - (searchValue: string | RegExp, replaceValue: string): string; - (searchValue: string | RegExp, replacer: (substring: string, ...args: any[]) => string): string; - (searchValue: { - [Symbol.replace](string: string, replaceValue: string): string; - }, replaceValue: string): string; - (searchValue: { - [Symbol.replace](string: string, replacer: (substring: string, ...args: any[]) => string): string; - }, replacer: (substring: string, ...args: any[]) => string): string; -} | { - (regexp: string | RegExp): number; - (searcher: { - [Symbol.search](string: string): number; - }): number; -} | ((start?: number, end?: number) => string) | { - (separator: string | RegExp, limit?: number): string[]; - (splitter: { - [Symbol.split](string: string, limit?: number): string[]; - }, limit?: number): string[]; -} | ((start: number, end?: number) => string) | (() => string) | ((locales?: string | string[]) => string) | (() => string) | ((locales?: string | string[]) => string) | (() => string) | ((from: number, length?: number) => string) | (() => string) | ((pos: number) => number) | ((searchString: string, position?: number) => boolean) | ((searchString: string, endPosition?: number) => boolean) | { - (form: "NFC" | "NFD" | "NFKC" | "NFKD"): string; - (form?: string): string; -} | ((count: number) => string) | ((searchString: string, position?: number) => boolean) | ((name: string) => string) | (() => string) | (() => string) | (() => string) | (() => string) | ((color: string) => string) | { - (size: number): string; - (size: string): string; -} | (() => string) | ((url: string) => string) | (() => string) | (() => string) | (() => string) | (() => string) | ((maxLength: number, fillString?: string) => string) | ((maxLength: number, fillString?: string) => string) | (() => string) | (() => string) | (() => string) | (() => string) | ((regexp: RegExp) => IterableIterator) | (() => IterableIterator) | ((index: number) => string); +declare function isTextMode(e: any): e is TextMode[keyof TextMode]; interface Config { /** * Character used to separate entries on the same level. Defaults to a single space (" ") diff --git a/lib/index.js b/lib/index.js index b9747db..fad94b3 100644 --- a/lib/index.js +++ b/lib/index.js @@ -33,7 +33,9 @@ var TextMode; TextMode["Html"] = "html"; })(TextMode || (TextMode = {})); // internal fn to typeguard TextMode -var isTextMode = function (e) { return Object.values(TextMode).includes(e); }; +function isTextMode(e) { + return Object.values(TextMode).includes(e); +} // time; recorded to prevent recursive text expansion on single hover var _lastHoveredTime = Date.now(); // By default, only these special characters have text replacements diff --git a/lib/index.js.map b/lib/index.js.map index c140a8e..8e010a7 100644 --- a/lib/index.js.map +++ b/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/src/index.ts b/src/index.ts index 30ee518..36d2aa7 100644 --- a/src/index.ts +++ b/src/index.ts @@ -34,7 +34,9 @@ enum TextMode { Html = "html", } // internal fn to typeguard TextMode -const isTextMode = (e: any): e is TextMode => Object.values(TextMode).includes(e) +function isTextMode(e: any): e is TextMode[keyof TextMode] { + return Object.values(TextMode).includes(e); +} interface Config { /** From f07f63e5b1402e49fa5f4705261aeb137e29e0c7 Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Mon, 14 Mar 2022 23:42:22 -0700 Subject: [PATCH 5/9] remove redundant var and important --- lib/index.css | 10 +++++----- src/index.ts | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/index.css b/lib/index.css index cd5dbfd..9e493f2 100644 --- a/lib/index.css +++ b/lib/index.css @@ -8,17 +8,17 @@ color: var(--telescope-text-color); } -#telescope blockquote { +#telescope#telescope blockquote { margin-left: 0; padding-left: 1rem; border-left: 3px solid var(--telescope-text-color); - display: block !important; + display: block; } -#telescope hr { +#telescope#telescope hr { border: 1px solid var(--telescope-text-color); margin: 1em 0; - display: block !important; + display: block; } #telescope .details { @@ -45,4 +45,4 @@ #telescope .details *, #telescope p * { list-style: none; display: inline; -} \ No newline at end of file +} diff --git a/src/index.ts b/src/index.ts index 36d2aa7..a4e60d1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -83,7 +83,7 @@ interface TextReplacements { // - emphasis const DefaultReplacements: TextReplacements = { // line break - "---": (lineText) => { + "---": () => { return document.createElement("hr"); }, // bold From 1a2f38ab24260c7b6a14e8daab66eea6cbb1f32f Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Mon, 14 Mar 2022 23:51:54 -0700 Subject: [PATCH 6/9] readme + docs update around specialCharacters --- README.md | 26 ++++++++++++++++++++++++++ src/index.ts | 2 +- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9c0f16a..759684b 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,32 @@ interface Config { * A mode that designates what form the input text is in and should be interpreted as. Defaults to 'text'. */ textMode?: TextMode; + /** + * Determines the wrapper element type for HTML elements. Defaults to 'span'. + */ + htmlContainerTag?: keyof HTMLElementTagNameMap; + /** + * Only valid when textMode is 'text'. Used to insert HTML element like blockquotes, line breaks, bold, and emphasis in plain text mode. + */ + specialCharacters?: TextReplacements; +} +``` + +If you are using plain 'text' as the textMode, you can also define an object containing special characters and the rules for how to replace them. + +```ts +interface TextReplacements { + // Each entry is keyed by its regex string match + // It defines a function that takes in the current line of text as well as its parent node + // and + [key: string]: (lineText: string) => HTMLElement +} + +// for example, here's a text replacement rule for bolding text that is wrapped with * +"\\*(.*)\\*": (lineText) => { + const el = document.createElement("strong"); + el.appendChild(document.createTextNode(lineText)); + return el; } ``` diff --git a/src/index.ts b/src/index.ts index a4e60d1..66783b9 100644 --- a/src/index.ts +++ b/src/index.ts @@ -70,7 +70,7 @@ type CreateTelescopicTextConfig = Pick< let _lastHoveredTime = Date.now(); interface TextReplacements { - // Each entry is keyed by its prefix string match (e.g. @Q) + // Each entry is keyed by its regex string match // It defines a function that takes in the current line of text as well as its parent node // and [key: string]: (lineText: string) => HTMLElement From 57d2c1b5676f546d304573944374ebe6fe5dfa0e Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 15 Mar 2022 14:48:14 -0700 Subject: [PATCH 7/9] address review comments --- src/index.ts | 103 +++++++++++++++++++++++++-------------------------- 1 file changed, 51 insertions(+), 52 deletions(-) diff --git a/src/index.ts b/src/index.ts index 66783b9..479ed90 100644 --- a/src/index.ts +++ b/src/index.ts @@ -147,63 +147,62 @@ function _hydrate( } } - if (line.replacements.length > 0) { - // only iterate lines if there are actually things to replace - for (let i = 0; i < line.replacements.length; i++) { - const replacement = line.replacements[i]; - - // split single occurrence of replacement pattern - const [before, ...after] = lineText.split(replacement.og); - lineText = after.join(replacement.og); - - // add old real text - node.appendChild(createLineNode(before)); - - // create actual telescope - const detail = document.createElement("span"); - detail.classList.add("details", "close"); - - // add expand on click handler - detail.addEventListener("click", () => { - detail.classList.remove("close"); - detail.classList.add("open"); - }); + // only iterate lines if there are actually things to replace + for (let i = 0; i < line.replacements.length; i++) { + const replacement = line.replacements[i]; - if (shouldExpandOnMouseOver) { - // expand the text if text was not moused over immediately before - detail.addEventListener("mouseover", () => { - if (Date.now() - _lastHoveredTime > 10) { - detail.classList.remove("close"); - detail.classList.add("open"); - _lastHoveredTime = Date.now(); - } - }); - } + // split single occurrence of replacement pattern + const [before, ...after] = lineText.split(replacement.og); + lineText = after.join(replacement.og); - const summary = document.createElement("span"); - summary.classList.add("summary"); - const newNode = createLineNode(replacement.og); - summary.appendChild(newNode); - detail.appendChild(summary); + // add old real text + node.appendChild(createLineNode(before)); - // create inner text, recursively hydrate - const newLine = { - text: replacement.new, - replacements: replacement.replacements, - }; - const expanded = document.createElement("span"); - expanded.classList.add("expanded"); - _hydrate(newLine, expanded, config); + // create actual telescope + const detail = document.createElement("span"); + detail.classList.add("details", "close"); - // append to parent - detail.appendChild(expanded); - node.appendChild(detail); - } - if (lineText) { - const endText = createLineNode(lineText); - node.appendChild(endText); + // add expand on click handler + detail.addEventListener("click", () => { + detail.classList.remove("close"); + detail.classList.add("open"); + }); + + if (shouldExpandOnMouseOver) { + // expand the text if text was not moused over immediately before + detail.addEventListener("mouseover", () => { + if (Date.now() - _lastHoveredTime > 10) { + detail.classList.remove("close"); + detail.classList.add("open"); + _lastHoveredTime = Date.now(); + } + }); } - } else { + + const summary = document.createElement("span"); + summary.classList.add("summary"); + const newNode = createLineNode(replacement.og); + summary.appendChild(newNode); + detail.appendChild(summary); + + // create inner text, recursively hydrate + const newLine = { + text: replacement.new, + replacements: replacement.replacements, + }; + const expanded = document.createElement("span"); + expanded.classList.add("expanded"); + _hydrate(newLine, expanded, config); + + // append to parent + detail.appendChild(expanded); + node.appendChild(detail); + } + if (lineText) { + const endText = createLineNode(lineText); + node.appendChild(endText); + } + if (lineText) { // otherwise, this is a leaf node const newNode = createLineNode(lineText); node.appendChild(newNode); From 037a9c232581d0da411d48a8d845a91a711fb98e Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 15 Mar 2022 15:07:13 -0700 Subject: [PATCH 8/9] fix docs --- README.md | 5 +++++ src/index.ts | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 759684b..75933d7 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,11 @@ interface TextReplacements { } ``` +By default, only these special characters have text replacements +- line breaks (`---`) +- bold (`*...*`) +- emphasis (`_...*`) + You would use this by passing a custom configuration object into the function in order to override any of the defaults above. For example, this is how you would create telescopic text with custom HTML tags: ```javascript const content = ` diff --git a/src/index.ts b/src/index.ts index 479ed90..96045af 100644 --- a/src/index.ts +++ b/src/index.ts @@ -77,11 +77,10 @@ interface TextReplacements { } // By default, only these special characters have text replacements -// - blockquotes // - line breaks // - bold // - emphasis -const DefaultReplacements: TextReplacements = { +export const DefaultReplacements: TextReplacements = { // line break "---": () => { return document.createElement("hr"); @@ -110,7 +109,7 @@ function _hydrate( shouldExpandOnMouseOver, textMode = TextMode.Text, htmlContainerTag = "span", - specialCharacters = {}, + specialCharacters = DefaultReplacements, } = config; let lineText = line.text; @@ -118,10 +117,7 @@ function _hydrate( function createLineNode(lineText: string) { switch (textMode) { case TextMode.Text: - for (const [specialCharRegex, replacementFn] of Object.entries({ - ...DefaultReplacements, - ...specialCharacters - })) { + for (const [specialCharRegex, replacementFn] of Object.entries(specialCharacters)) { const matches = lineText.match(specialCharRegex) if (matches) { const container = document.createElement(htmlContainerTag); From 10bebf1919a4cb91e68be202fa7a8040c241b7fd Mon Sep 17 00:00:00 2001 From: Jacky Zhao Date: Tue, 15 Mar 2022 21:11:31 -0700 Subject: [PATCH 9/9] fix minor docs issues --- README.md | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 75933d7..84d659c 100644 --- a/README.md +++ b/README.md @@ -100,9 +100,22 @@ interface Config { } ``` +You would use this by passing a custom configuration object into the function in order to override any of the defaults above. For example, this is how you would create telescopic text with custom HTML tags: + +```javascript +const content = ` +* Some rich text + * with nested rich text +` +const config = { textMode: TextMode.Html }; +const poemContent = createTelescopicTextFromBulletedList(content, config); +``` + +You can check out a more detailed example in `demo/index.html` + If you are using plain 'text' as the textMode, you can also define an object containing special characters and the rules for how to replace them. -```ts +```typescript interface TextReplacements { // Each entry is keyed by its regex string match // It defines a function that takes in the current line of text as well as its parent node @@ -121,22 +134,15 @@ interface TextReplacements { By default, only these special characters have text replacements - line breaks (`---`) - bold (`*...*`) -- emphasis (`_...*`) +- emphasis (`_..._`) +To disable this, you can pass in an empty object for special characters: -You would use this by passing a custom configuration object into the function in order to override any of the defaults above. For example, this is how you would create telescopic text with custom HTML tags: -```javascript -const content = ` -* Some rich text - * with nested rich text -` -const config = { textMode: TextMode.Html }; -const poemContent = createTelescopicTextFromBulletedList(content, config); +```typescript +const poemContent = createTelescopicTextFromBulletedList(content, { + specialCharacters: {} +}); ``` -You can check out a more detailed example in `demo/index.html` - - - ## Types ```typescript // Default function to create a new `
` node containing the