blixify-ui-web 1.2.179 → 1.2.181
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/data/dataTemplate/index.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/index.js +129 -104
- package/lib/components/data/dataTemplate/index.js.map +1 -1
- package/lib/components/data/dataTemplate/settingsModal.d.ts +3 -0
- package/lib/components/data/dataTemplate/settingsModal.d.ts.map +1 -1
- package/lib/components/data/dataTemplate/settingsModal.js +83 -9
- package/lib/components/data/dataTemplate/settingsModal.js.map +1 -1
- package/lib/components/data/flexFilter/index.d.ts +21 -2
- package/lib/components/data/flexFilter/index.d.ts.map +1 -1
- package/lib/components/data/flexFilter/index.js +180 -34
- package/lib/components/data/flexFilter/index.js.map +1 -1
- package/lib/components/data/flexFilter/model.d.ts +1 -1
- package/lib/components/data/flexFilter/model.d.ts.map +1 -1
- package/lib/components/display/newTable/index.d.ts.map +1 -1
- package/lib/components/display/newTable/index.js +44 -12
- package/lib/components/display/newTable/index.js.map +1 -1
- package/lib/components/input/markdown/index.d.ts.map +1 -1
- package/lib/components/input/markdown/index.js +65 -40
- package/lib/components/input/markdown/index.js.map +1 -1
- package/lib/components/input/markdown/tableControls.d.ts +24 -0
- package/lib/components/input/markdown/tableControls.d.ts.map +1 -0
- package/lib/components/input/markdown/tableControls.js +471 -0
- package/lib/components/input/markdown/tableControls.js.map +1 -0
- package/lib/components/input/markdown/tableMarkdown.d.ts +34 -0
- package/lib/components/input/markdown/tableMarkdown.d.ts.map +1 -0
- package/lib/components/input/markdown/tableMarkdown.js +182 -0
- package/lib/components/input/markdown/tableMarkdown.js.map +1 -0
- package/lib/components/input/markdown/textColor.d.ts +40 -0
- package/lib/components/input/markdown/textColor.d.ts.map +1 -0
- package/lib/components/input/markdown/textColor.js +285 -0
- package/lib/components/input/markdown/textColor.js.map +1 -0
- package/lib/tail.css +2 -2
- package/package.json +1 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* How a table is written into the stored markdown.
|
|
4
|
+
*
|
|
5
|
+
* INFO: a GFM pipe table can only hold one line of inline text per cell. A
|
|
6
|
+
* table pasted from Notion carries lists, several lines and line breaks in its
|
|
7
|
+
* cells, and the old rule flattened all of that with textContent — the table
|
|
8
|
+
* looked right until the page was reopened. Worse, a table with no header row
|
|
9
|
+
* was written without the `| --- |` line, so markdown-it read it back as plain
|
|
10
|
+
* `| a | b |` text.
|
|
11
|
+
*
|
|
12
|
+
* So the table is written two ways:
|
|
13
|
+
* - simple (header row of th, body of td, one line of inline text per cell, no
|
|
14
|
+
* merged cells) stays a pipe table — every table written before this keeps
|
|
15
|
+
* serialising the same way
|
|
16
|
+
* - anything else is written as one line of html. markdown-it runs with
|
|
17
|
+
* html:true and the editor's table cells accept block content, so it reads
|
|
18
|
+
* back exactly as it was saved
|
|
19
|
+
*/
|
|
20
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
21
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
22
|
+
if (ar || !(i in from)) {
|
|
23
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
24
|
+
ar[i] = from[i];
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
28
|
+
};
|
|
29
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
30
|
+
exports.handleTableToMarkdown = exports.handleRenderRowMarker = exports.handleRenderCellMarker = exports.handleIsSimpleTable = exports.handleGetRowCells = exports.handleGetTableRows = void 0;
|
|
31
|
+
var handleChildElements = function (node) {
|
|
32
|
+
return Array.from(node.childNodes).filter(function (child) { return child.nodeType === 1; });
|
|
33
|
+
};
|
|
34
|
+
var handleIsTag = function (node) {
|
|
35
|
+
var tags = [];
|
|
36
|
+
for (var _i = 1; _i < arguments.length; _i++) {
|
|
37
|
+
tags[_i - 1] = arguments[_i];
|
|
38
|
+
}
|
|
39
|
+
return tags.includes(node.nodeName.toUpperCase());
|
|
40
|
+
};
|
|
41
|
+
/**
|
|
42
|
+
* INFO: walked by hand rather than through table.rows / querySelectorAll —
|
|
43
|
+
* those reach into a table nested in a cell, and turndown's node DOM does not
|
|
44
|
+
* implement the table collections at all
|
|
45
|
+
*/
|
|
46
|
+
var handleGetTableRows = function (table) {
|
|
47
|
+
var rows = [];
|
|
48
|
+
handleChildElements(table).forEach(function (child) {
|
|
49
|
+
if (handleIsTag(child, "TR"))
|
|
50
|
+
rows.push(child);
|
|
51
|
+
else if (handleIsTag(child, "THEAD", "TBODY", "TFOOT"))
|
|
52
|
+
handleChildElements(child).forEach(function (row) {
|
|
53
|
+
if (handleIsTag(row, "TR"))
|
|
54
|
+
rows.push(row);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
return rows;
|
|
58
|
+
};
|
|
59
|
+
exports.handleGetTableRows = handleGetTableRows;
|
|
60
|
+
var handleGetRowCells = function (row) {
|
|
61
|
+
return handleChildElements(row).filter(function (cell) { return handleIsTag(cell, "TH", "TD"); });
|
|
62
|
+
};
|
|
63
|
+
exports.handleGetRowCells = handleGetRowCells;
|
|
64
|
+
var handleIsMergedCell = function (cell) {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
return Number((_a = cell.getAttribute("colspan")) !== null && _a !== void 0 ? _a : "1") > 1 ||
|
|
67
|
+
Number((_b = cell.getAttribute("rowspan")) !== null && _b !== void 0 ? _b : "1") > 1;
|
|
68
|
+
};
|
|
69
|
+
// INFO: one paragraph with no line break, or nothing at all, is what a pipe
|
|
70
|
+
// table cell can hold without losing anything
|
|
71
|
+
var handleIsSimpleCell = function (cell) {
|
|
72
|
+
if (handleIsMergedCell(cell))
|
|
73
|
+
return false;
|
|
74
|
+
var hasLooseText = Array.from(cell.childNodes).some(function (child) { var _a; return child.nodeType === 3 && ((_a = child.textContent) !== null && _a !== void 0 ? _a : "").trim() !== ""; });
|
|
75
|
+
if (hasLooseText)
|
|
76
|
+
return false;
|
|
77
|
+
var children = handleChildElements(cell);
|
|
78
|
+
if (children.length === 0)
|
|
79
|
+
return true;
|
|
80
|
+
if (children.length > 1)
|
|
81
|
+
return false;
|
|
82
|
+
var only = children[0];
|
|
83
|
+
return handleIsTag(only, "P") && only.querySelector("br") === null;
|
|
84
|
+
};
|
|
85
|
+
var handleIsSimpleTable = function (table) {
|
|
86
|
+
if (table.querySelector("table"))
|
|
87
|
+
return false;
|
|
88
|
+
var rows = (0, exports.handleGetTableRows)(table);
|
|
89
|
+
if (rows.length === 0)
|
|
90
|
+
return false;
|
|
91
|
+
var headerCells = (0, exports.handleGetRowCells)(rows[0]);
|
|
92
|
+
if (headerCells.length === 0)
|
|
93
|
+
return false;
|
|
94
|
+
// INFO: a pipe table always has a header, so a table without one would come
|
|
95
|
+
// back with its first row promoted to header — html keeps it as it was
|
|
96
|
+
if (!headerCells.every(function (cell) { return handleIsTag(cell, "TH"); }))
|
|
97
|
+
return false;
|
|
98
|
+
return rows.every(function (row, rowIndex) {
|
|
99
|
+
var cells = (0, exports.handleGetRowCells)(row);
|
|
100
|
+
if (cells.length !== headerCells.length)
|
|
101
|
+
return false;
|
|
102
|
+
return cells.every(function (cell) {
|
|
103
|
+
return (rowIndex === 0 || handleIsTag(cell, "TD")) && handleIsSimpleCell(cell);
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
};
|
|
107
|
+
exports.handleIsSimpleTable = handleIsSimpleTable;
|
|
108
|
+
/**
|
|
109
|
+
* INFO: turndown converts a table's cells before it reaches the table rule,
|
|
110
|
+
* so the cell and row rules only wrap what it already wrote in markers and the
|
|
111
|
+
* table rule reads them back. Converting each cell again with its own turndown
|
|
112
|
+
* call re-parsed the html of every cell, twice per keystroke — a 100-row table
|
|
113
|
+
* cost ~90ms per save. Control characters, because turndown never writes them
|
|
114
|
+
* and never escapes them.
|
|
115
|
+
*/
|
|
116
|
+
var CELL_START = "\u0001";
|
|
117
|
+
var CELL_END = "\u0002";
|
|
118
|
+
var ROW_END = "\u0003";
|
|
119
|
+
var handleRenderCellMarker = function (content) {
|
|
120
|
+
return CELL_START +
|
|
121
|
+
content
|
|
122
|
+
.replace(/\s*\n+\s*/g, " ")
|
|
123
|
+
.trim()
|
|
124
|
+
// INFO: an unescaped pipe would split the cell and shift every column
|
|
125
|
+
// after it
|
|
126
|
+
.replace(/\|/g, "\\|") +
|
|
127
|
+
CELL_END;
|
|
128
|
+
};
|
|
129
|
+
exports.handleRenderCellMarker = handleRenderCellMarker;
|
|
130
|
+
var handleRenderRowMarker = function (content) { return content + ROW_END; };
|
|
131
|
+
exports.handleRenderRowMarker = handleRenderRowMarker;
|
|
132
|
+
// INFO: null when the markers do not describe the same grid as the DOM — the
|
|
133
|
+
// caller then falls back to html, which can never lose a cell
|
|
134
|
+
var handleRenderPipeTable = function (table, content) {
|
|
135
|
+
var domRows = (0, exports.handleGetTableRows)(table);
|
|
136
|
+
var rows = content
|
|
137
|
+
.split(ROW_END)
|
|
138
|
+
.map(function (row) {
|
|
139
|
+
return row
|
|
140
|
+
.split(CELL_END)
|
|
141
|
+
.filter(function (piece) { return piece.includes(CELL_START); })
|
|
142
|
+
.map(function (piece) { return piece.slice(piece.lastIndexOf(CELL_START) + 1); });
|
|
143
|
+
})
|
|
144
|
+
.filter(function (cells) { return cells.length > 0; });
|
|
145
|
+
var columnCount = (0, exports.handleGetRowCells)(domRows[0]).length;
|
|
146
|
+
if (rows.length !== domRows.length ||
|
|
147
|
+
rows.some(function (cells) { return cells.length !== columnCount; }))
|
|
148
|
+
return null;
|
|
149
|
+
var lines = rows.map(function (cells) { return "| " + cells.join(" | ") + " |"; });
|
|
150
|
+
var separator = "| " + Array.from({ length: columnCount }, function () { return "---"; }).join(" | ") + " |";
|
|
151
|
+
return __spreadArray([lines[0], separator], lines.slice(1), true).join("\n");
|
|
152
|
+
};
|
|
153
|
+
var handleRenderHtmlTable = function (table) {
|
|
154
|
+
var clone = table.cloneNode(true);
|
|
155
|
+
// INFO: the editor rebuilds its colgroup and min-width from the cells'
|
|
156
|
+
// colwidth on load, so they are noise in the stored body
|
|
157
|
+
clone.querySelectorAll("colgroup").forEach(function (each) { return each.remove(); });
|
|
158
|
+
clone.removeAttribute("style");
|
|
159
|
+
clone.querySelectorAll("th, td").forEach(function (cell) {
|
|
160
|
+
if (cell.getAttribute("colspan") === "1")
|
|
161
|
+
cell.removeAttribute("colspan");
|
|
162
|
+
if (cell.getAttribute("rowspan") === "1")
|
|
163
|
+
cell.removeAttribute("rowspan");
|
|
164
|
+
});
|
|
165
|
+
// INFO: markdown-it ends an html block at the first blank line, so the
|
|
166
|
+
// table must stay on one line. is still a newline inside a code block.
|
|
167
|
+
return clone.outerHTML.replace(/\r?\n/g, " ");
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* `content` is what turndown wrote for the table's children — cells wrapped by
|
|
171
|
+
* handleRenderCellMarker, rows by handleRenderRowMarker.
|
|
172
|
+
*/
|
|
173
|
+
var handleTableToMarkdown = function (table, content) {
|
|
174
|
+
if ((0, exports.handleGetTableRows)(table).length === 0)
|
|
175
|
+
return "";
|
|
176
|
+
var pipeTable = (0, exports.handleIsSimpleTable)(table)
|
|
177
|
+
? handleRenderPipeTable(table, content)
|
|
178
|
+
: null;
|
|
179
|
+
return "\n\n" + (pipeTable !== null && pipeTable !== void 0 ? pipeTable : handleRenderHtmlTable(table)) + "\n\n";
|
|
180
|
+
};
|
|
181
|
+
exports.handleTableToMarkdown = handleTableToMarkdown;
|
|
182
|
+
//# sourceMappingURL=tableMarkdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableMarkdown.js","sourceRoot":"","sources":["../../../../src/components/input/markdown/tableMarkdown.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Editor, Mark } from "@tiptap/core";
|
|
2
|
+
import TurndownService from "turndown";
|
|
3
|
+
import React from "react";
|
|
4
|
+
/**
|
|
5
|
+
* Text colour and highlight for the markdown editor, Notion style.
|
|
6
|
+
*
|
|
7
|
+
* INFO: markdown has no colour, so coloured text is stored as a small inline
|
|
8
|
+
* tag — `<span data-text-color="red" style="color: …">` and
|
|
9
|
+
* `<mark data-highlight="yellow" style="background-color: …; color: inherit">` — the way
|
|
10
|
+
* underline and superscript are already stored as <u> and <sup>. markdown-it
|
|
11
|
+
* renders the tag and still reads the markdown inside it.
|
|
12
|
+
*
|
|
13
|
+
* INFO: the editor reads back only the palette's names and writes out only its
|
|
14
|
+
* own CSS, so a note saved through the editor carries no other style through
|
|
15
|
+
* these tags. MarkdownStatic renders stored HTML as it is, so a note written
|
|
16
|
+
* by another route is not cleaned by this.
|
|
17
|
+
*/
|
|
18
|
+
export interface MarkdownColor {
|
|
19
|
+
key: string;
|
|
20
|
+
label: string;
|
|
21
|
+
css: string;
|
|
22
|
+
}
|
|
23
|
+
export declare const MARKDOWN_TEXT_COLORS: MarkdownColor[];
|
|
24
|
+
export declare const MARKDOWN_HIGHLIGHT_COLORS: MarkdownColor[];
|
|
25
|
+
export declare const handleFindMarkdownColor: (colors: MarkdownColor[], key?: string | null) => MarkdownColor | undefined;
|
|
26
|
+
export declare const TextColor: Mark<any, any>;
|
|
27
|
+
export declare const TextHighlight: Mark<any, any>;
|
|
28
|
+
export declare const handleAddColorRules: (turndown: TurndownService) => void;
|
|
29
|
+
interface ColorPickerProps {
|
|
30
|
+
editor: Editor;
|
|
31
|
+
darkMode?: boolean;
|
|
32
|
+
variant: "toolbar" | "selection";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The "A" button and its palette: a row of text colours and a row of
|
|
36
|
+
* highlights, each with Default to take the colour off again.
|
|
37
|
+
*/
|
|
38
|
+
export declare const ColorPicker: (props: ColorPickerProps) => React.JSX.Element;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=textColor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textColor.d.ts","sourceRoot":"","sources":["../../../../src/components/input/markdown/textColor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,eAAe,MAAM,UAAU,CAAC;AACvC,OAAO,KAAsC,MAAM,OAAO,CAAC;AAG3D;;;;;;;;;;;;;GAaG;AAEH,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAID,eAAO,MAAM,oBAAoB,EAAE,aAAa,EAU/C,CAAC;AAIF,eAAO,MAAM,yBAAyB,EAAE,aAAa,EAUpD,CAAC;AAEF,eAAO,MAAM,uBAAuB,WAC1B,aAAa,EAAE,QACjB,MAAM,GAAG,IAAI,8BACiC,CAAC;AAEvD,eAAO,MAAM,SAAS,gBAwCpB,CAAC;AAEH,eAAO,MAAM,aAAa,gBA2CxB,CAAC;AAIH,eAAO,MAAM,mBAAmB,aAAc,eAAe,SAmC5D,CAAC;AAEF,UAAU,gBAAgB;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,OAAO,EAAE,SAAS,GAAG,WAAW,CAAC;CAClC;AAED;;;GAGG;AACH,eAAO,MAAM,WAAW,UAAW,gBAAgB,sBAgNlD,CAAC"}
|
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.ColorPicker = exports.handleAddColorRules = exports.TextHighlight = exports.TextColor = exports.handleFindMarkdownColor = exports.MARKDOWN_HIGHLIGHT_COLORS = exports.MARKDOWN_TEXT_COLORS = void 0;
|
|
27
|
+
var core_1 = require("@tiptap/core");
|
|
28
|
+
var react_1 = __importStar(require("react"));
|
|
29
|
+
var react_dom_1 = require("react-dom");
|
|
30
|
+
// INFO: 600 shades, picked for a white page; on the dark editor blue, purple
|
|
31
|
+
// and brown are faint, since the colour is stored inline and does not theme
|
|
32
|
+
exports.MARKDOWN_TEXT_COLORS = [
|
|
33
|
+
{ key: "gray", label: "Gray", css: "#6b7280" },
|
|
34
|
+
{ key: "brown", label: "Brown", css: "#a16207" },
|
|
35
|
+
{ key: "orange", label: "Orange", css: "#ea580c" },
|
|
36
|
+
{ key: "yellow", label: "Yellow", css: "#ca8a04" },
|
|
37
|
+
{ key: "green", label: "Green", css: "#16a34a" },
|
|
38
|
+
{ key: "blue", label: "Blue", css: "#2563eb" },
|
|
39
|
+
{ key: "purple", label: "Purple", css: "#9333ea" },
|
|
40
|
+
{ key: "pink", label: "Pink", css: "#db2777" },
|
|
41
|
+
{ key: "red", label: "Red", css: "#dc2626" },
|
|
42
|
+
];
|
|
43
|
+
// INFO: see-through, so the text keeps its own colour on light and dark pages;
|
|
44
|
+
// the tag also sets color: inherit, since a browser draws <mark> text black
|
|
45
|
+
exports.MARKDOWN_HIGHLIGHT_COLORS = [
|
|
46
|
+
{ key: "gray", label: "Gray", css: "rgba(156, 163, 175, 0.35)" },
|
|
47
|
+
{ key: "brown", label: "Brown", css: "rgba(180, 83, 9, 0.25)" },
|
|
48
|
+
{ key: "orange", label: "Orange", css: "rgba(251, 146, 60, 0.35)" },
|
|
49
|
+
{ key: "yellow", label: "Yellow", css: "rgba(250, 204, 21, 0.4)" },
|
|
50
|
+
{ key: "green", label: "Green", css: "rgba(74, 222, 128, 0.35)" },
|
|
51
|
+
{ key: "blue", label: "Blue", css: "rgba(96, 165, 250, 0.35)" },
|
|
52
|
+
{ key: "purple", label: "Purple", css: "rgba(192, 132, 252, 0.35)" },
|
|
53
|
+
{ key: "pink", label: "Pink", css: "rgba(244, 114, 182, 0.35)" },
|
|
54
|
+
{ key: "red", label: "Red", css: "rgba(248, 113, 113, 0.35)" },
|
|
55
|
+
];
|
|
56
|
+
var handleFindMarkdownColor = function (colors, key) { return colors.find(function (eachColor) { return eachColor.key === key; }); };
|
|
57
|
+
exports.handleFindMarkdownColor = handleFindMarkdownColor;
|
|
58
|
+
exports.TextColor = core_1.Mark.create({
|
|
59
|
+
name: "textColor",
|
|
60
|
+
addAttributes: function () {
|
|
61
|
+
return {
|
|
62
|
+
color: {
|
|
63
|
+
default: null,
|
|
64
|
+
parseHTML: function (element) {
|
|
65
|
+
var _a, _b;
|
|
66
|
+
return (_b = (_a = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_TEXT_COLORS, element.getAttribute("data-text-color"))) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : null;
|
|
67
|
+
},
|
|
68
|
+
renderHTML: function (attributes) {
|
|
69
|
+
var color = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_TEXT_COLORS, attributes.color);
|
|
70
|
+
return color
|
|
71
|
+
? { "data-text-color": color.key, style: "color: ".concat(color.css) }
|
|
72
|
+
: {};
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
},
|
|
77
|
+
parseHTML: function () {
|
|
78
|
+
return [
|
|
79
|
+
{
|
|
80
|
+
tag: "span[data-text-color]",
|
|
81
|
+
getAttrs: function (element) {
|
|
82
|
+
return (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_TEXT_COLORS, element.getAttribute("data-text-color"))
|
|
83
|
+
? null
|
|
84
|
+
: false;
|
|
85
|
+
},
|
|
86
|
+
},
|
|
87
|
+
];
|
|
88
|
+
},
|
|
89
|
+
renderHTML: function (_a) {
|
|
90
|
+
var HTMLAttributes = _a.HTMLAttributes;
|
|
91
|
+
return ["span", HTMLAttributes, 0];
|
|
92
|
+
},
|
|
93
|
+
});
|
|
94
|
+
exports.TextHighlight = core_1.Mark.create({
|
|
95
|
+
name: "textHighlight",
|
|
96
|
+
addAttributes: function () {
|
|
97
|
+
return {
|
|
98
|
+
color: {
|
|
99
|
+
default: null,
|
|
100
|
+
parseHTML: function (element) {
|
|
101
|
+
var _a, _b;
|
|
102
|
+
return (_b = (_a = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_HIGHLIGHT_COLORS, element.getAttribute("data-highlight"))) === null || _a === void 0 ? void 0 : _a.key) !== null && _b !== void 0 ? _b : null;
|
|
103
|
+
},
|
|
104
|
+
renderHTML: function (attributes) {
|
|
105
|
+
var color = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_HIGHLIGHT_COLORS, attributes.color);
|
|
106
|
+
return color
|
|
107
|
+
? {
|
|
108
|
+
"data-highlight": color.key,
|
|
109
|
+
style: "background-color: ".concat(color.css, "; color: inherit"),
|
|
110
|
+
}
|
|
111
|
+
: {};
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
},
|
|
116
|
+
parseHTML: function () {
|
|
117
|
+
return [
|
|
118
|
+
{
|
|
119
|
+
tag: "mark[data-highlight]",
|
|
120
|
+
getAttrs: function (element) {
|
|
121
|
+
return (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_HIGHLIGHT_COLORS, element.getAttribute("data-highlight"))
|
|
122
|
+
? null
|
|
123
|
+
: false;
|
|
124
|
+
},
|
|
125
|
+
},
|
|
126
|
+
];
|
|
127
|
+
},
|
|
128
|
+
renderHTML: function (_a) {
|
|
129
|
+
var HTMLAttributes = _a.HTMLAttributes;
|
|
130
|
+
return ["mark", HTMLAttributes, 0];
|
|
131
|
+
},
|
|
132
|
+
});
|
|
133
|
+
// INFO: writes the tag back from the palette, never from the element's own
|
|
134
|
+
// style, and leaves a colour the palette does not know as plain text
|
|
135
|
+
var handleAddColorRules = function (turndown) {
|
|
136
|
+
turndown.addRule("textColor", {
|
|
137
|
+
filter: function (node) {
|
|
138
|
+
return node.nodeName === "SPAN" &&
|
|
139
|
+
!!(0, exports.handleFindMarkdownColor)(exports.MARKDOWN_TEXT_COLORS, node.getAttribute("data-text-color"));
|
|
140
|
+
},
|
|
141
|
+
replacement: function (content, node) {
|
|
142
|
+
var color = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_TEXT_COLORS, node.getAttribute("data-text-color"));
|
|
143
|
+
return content
|
|
144
|
+
? "<span data-text-color=\"".concat(color.key, "\" style=\"color: ").concat(color.css, "\">").concat(content, "</span>")
|
|
145
|
+
: "";
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
turndown.addRule("textHighlight", {
|
|
149
|
+
filter: function (node) {
|
|
150
|
+
return node.nodeName === "MARK" &&
|
|
151
|
+
!!(0, exports.handleFindMarkdownColor)(exports.MARKDOWN_HIGHLIGHT_COLORS, node.getAttribute("data-highlight"));
|
|
152
|
+
},
|
|
153
|
+
replacement: function (content, node) {
|
|
154
|
+
var color = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_HIGHLIGHT_COLORS, node.getAttribute("data-highlight"));
|
|
155
|
+
return content
|
|
156
|
+
? "<mark data-highlight=\"".concat(color.key, "\" style=\"background-color: ").concat(color.css, "; color: inherit\">").concat(content, "</mark>")
|
|
157
|
+
: "";
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
exports.handleAddColorRules = handleAddColorRules;
|
|
162
|
+
/**
|
|
163
|
+
* The "A" button and its palette: a row of text colours and a row of
|
|
164
|
+
* highlights, each with Default to take the colour off again.
|
|
165
|
+
*/
|
|
166
|
+
var ColorPicker = function (props) {
|
|
167
|
+
var _a;
|
|
168
|
+
var editor = props.editor, darkMode = props.darkMode;
|
|
169
|
+
// 1. State
|
|
170
|
+
var _b = (0, react_1.useState)(null), panel = _b[0], setPanel = _b[1];
|
|
171
|
+
// 2. Refs
|
|
172
|
+
var buttonRef = (0, react_1.useRef)(null);
|
|
173
|
+
var panelRef = (0, react_1.useRef)(null);
|
|
174
|
+
// 3. Computed
|
|
175
|
+
var currentText = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_TEXT_COLORS, editor.getAttributes("textColor").color);
|
|
176
|
+
var currentHighlight = (0, exports.handleFindMarkdownColor)(exports.MARKDOWN_HIGHLIGHT_COLORS, editor.getAttributes("textHighlight").color);
|
|
177
|
+
var surface = darkMode
|
|
178
|
+
? "bg-gray-800 border-gray-600 text-gray-200"
|
|
179
|
+
: "bg-white border-gray-200 text-gray-700";
|
|
180
|
+
var hover = darkMode ? "hover:bg-gray-700" : "hover:bg-gray-100";
|
|
181
|
+
var ring = darkMode ? "ring-gray-300" : "ring-gray-700";
|
|
182
|
+
// 4. Effects
|
|
183
|
+
(0, react_1.useEffect)(function () {
|
|
184
|
+
var _a, _b;
|
|
185
|
+
if (!panel)
|
|
186
|
+
return;
|
|
187
|
+
var handlePointerDown = function (event) {
|
|
188
|
+
var _a, _b;
|
|
189
|
+
var target = event.target;
|
|
190
|
+
if (((_a = panelRef.current) === null || _a === void 0 ? void 0 : _a.contains(target)) ||
|
|
191
|
+
((_b = buttonRef.current) === null || _b === void 0 ? void 0 : _b.contains(target)))
|
|
192
|
+
return;
|
|
193
|
+
setPanel(null);
|
|
194
|
+
};
|
|
195
|
+
var handleKeyDown = function (event) {
|
|
196
|
+
if (event.key !== "Escape")
|
|
197
|
+
return;
|
|
198
|
+
// INFO: the palette closes alone, not a modal the editor sits in
|
|
199
|
+
event.preventDefault();
|
|
200
|
+
event.stopPropagation();
|
|
201
|
+
setPanel(null);
|
|
202
|
+
editor.commands.focus();
|
|
203
|
+
};
|
|
204
|
+
// INFO: placed once when it opens, so a scroll would leave it behind the
|
|
205
|
+
// button it belongs to
|
|
206
|
+
var handleClose = function () { return setPanel(null); };
|
|
207
|
+
window.addEventListener("mousedown", handlePointerDown);
|
|
208
|
+
window.addEventListener("keydown", handleKeyDown, true);
|
|
209
|
+
window.addEventListener("scroll", handleClose, true);
|
|
210
|
+
window.addEventListener("resize", handleClose);
|
|
211
|
+
// INFO: a keyboard user lands on the current colour, not back in the toolbar
|
|
212
|
+
(_b = (_a = panelRef.current) === null || _a === void 0 ? void 0 : _a.querySelector('button[aria-pressed="true"]')) === null || _b === void 0 ? void 0 : _b.focus({ preventScroll: true });
|
|
213
|
+
return function () {
|
|
214
|
+
window.removeEventListener("mousedown", handlePointerDown);
|
|
215
|
+
window.removeEventListener("keydown", handleKeyDown, true);
|
|
216
|
+
window.removeEventListener("scroll", handleClose, true);
|
|
217
|
+
window.removeEventListener("resize", handleClose);
|
|
218
|
+
};
|
|
219
|
+
}, [panel, editor]);
|
|
220
|
+
// 5. Handlers
|
|
221
|
+
// INFO: fixed to the viewport so a toolbar that scrolls sideways or clips
|
|
222
|
+
// its overflow does not cut the palette off
|
|
223
|
+
var handleTogglePanel = function () {
|
|
224
|
+
var _a;
|
|
225
|
+
if (panel)
|
|
226
|
+
return setPanel(null);
|
|
227
|
+
var rect = (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.getBoundingClientRect();
|
|
228
|
+
if (!rect)
|
|
229
|
+
return;
|
|
230
|
+
setPanel({
|
|
231
|
+
top: rect.bottom + 6,
|
|
232
|
+
left: Math.max(8, Math.min(rect.left, window.innerWidth - 344)),
|
|
233
|
+
});
|
|
234
|
+
};
|
|
235
|
+
var handlePickText = function (key) {
|
|
236
|
+
var chain = editor.chain().focus();
|
|
237
|
+
if (key)
|
|
238
|
+
chain.setMark("textColor", { color: key }).run();
|
|
239
|
+
else
|
|
240
|
+
chain.unsetMark("textColor").run();
|
|
241
|
+
setPanel(null);
|
|
242
|
+
};
|
|
243
|
+
var handlePickHighlight = function (key) {
|
|
244
|
+
var chain = editor.chain().focus();
|
|
245
|
+
if (key)
|
|
246
|
+
chain.setMark("textHighlight", { color: key }).run();
|
|
247
|
+
else
|
|
248
|
+
chain.unsetMark("textHighlight").run();
|
|
249
|
+
setPanel(null);
|
|
250
|
+
};
|
|
251
|
+
// 6. Render
|
|
252
|
+
var renderSwatch = function (id, label, isCurrent, onPick, style) { return (react_1.default.createElement("button", { key: id, type: "button", title: label, "aria-label": label, "aria-pressed": isCurrent, "data-testid": "markdown-color-".concat(id), onClick: onPick, className: "flex h-7 w-7 items-center justify-center rounded border text-sm font-semibold ".concat(darkMode ? "border-gray-600" : "border-gray-200", " ").concat(hover, " ").concat(isCurrent ? "ring-2 ".concat(ring) : ""), style: style }, "A")); };
|
|
253
|
+
// INFO: drawn on the body — the selection toolbar is centred with a
|
|
254
|
+
// transform, and a transformed parent would carry a fixed panel off screen
|
|
255
|
+
var renderPanel = function () {
|
|
256
|
+
return panel &&
|
|
257
|
+
(0, react_dom_1.createPortal)(react_1.default.createElement("div", { ref: panelRef, "data-testid": "markdown-color-panel", className: "fixed z-[60] w-[min(21rem,calc(100vw-16px))] rounded-lg border p-2 shadow-lg ".concat(surface), style: { top: panel.top, left: panel.left },
|
|
258
|
+
// INFO: keeps the editor's selection while a swatch is pressed
|
|
259
|
+
onMouseDown: function (event) { return event.preventDefault(); } },
|
|
260
|
+
react_1.default.createElement("p", { className: "mb-1 text-xs font-medium text-gray-400" }, "Text"),
|
|
261
|
+
react_1.default.createElement("div", { className: "mb-2 flex flex-wrap gap-1" },
|
|
262
|
+
renderSwatch("text-default", "Default text", !currentText, function () { return handlePickText(); }, {}),
|
|
263
|
+
exports.MARKDOWN_TEXT_COLORS.map(function (eachColor) {
|
|
264
|
+
return renderSwatch("text-".concat(eachColor.key), "".concat(eachColor.label, " text"), (currentText === null || currentText === void 0 ? void 0 : currentText.key) === eachColor.key, function () { return handlePickText(eachColor.key); }, { color: eachColor.css });
|
|
265
|
+
})),
|
|
266
|
+
react_1.default.createElement("p", { className: "mb-1 text-xs font-medium text-gray-400" }, "Highlight"),
|
|
267
|
+
react_1.default.createElement("div", { className: "flex flex-wrap gap-1" },
|
|
268
|
+
renderSwatch("highlight-default", "No highlight", !currentHighlight, function () { return handlePickHighlight(); }, {}),
|
|
269
|
+
exports.MARKDOWN_HIGHLIGHT_COLORS.map(function (eachColor) {
|
|
270
|
+
return renderSwatch("highlight-".concat(eachColor.key), "".concat(eachColor.label, " highlight"), (currentHighlight === null || currentHighlight === void 0 ? void 0 : currentHighlight.key) === eachColor.key, function () { return handlePickHighlight(eachColor.key); }, { backgroundColor: eachColor.css });
|
|
271
|
+
}))), document.body);
|
|
272
|
+
};
|
|
273
|
+
// 7. Return
|
|
274
|
+
return (react_1.default.createElement(react_1.default.Fragment, null,
|
|
275
|
+
react_1.default.createElement("button", { ref: buttonRef, type: "button", title: "Colour", "aria-label": "Colour", "aria-expanded": !!panel, "data-testid": "markdown-color-button", onMouseDown: function (event) { return event.preventDefault(); }, onClick: handleTogglePanel, className: "flex flex-col items-center rounded ".concat(props.variant === "selection" ? "px-1.5 py-0.5" : "px-2 py-0.5", " text-sm font-semibold ").concat(darkMode
|
|
276
|
+
? "text-gray-300 hover:bg-gray-700"
|
|
277
|
+
: "text-gray-700 ".concat(hover)), style: currentHighlight ? { backgroundColor: currentHighlight.css } : {} },
|
|
278
|
+
react_1.default.createElement("span", { style: currentText ? { color: currentText.css } : {} }, "A"),
|
|
279
|
+
react_1.default.createElement("span", { className: "h-0.5 w-3.5 rounded", style: {
|
|
280
|
+
backgroundColor: (_a = currentText === null || currentText === void 0 ? void 0 : currentText.css) !== null && _a !== void 0 ? _a : (darkMode ? "#d1d5db" : "#374151"),
|
|
281
|
+
} })),
|
|
282
|
+
renderPanel()));
|
|
283
|
+
};
|
|
284
|
+
exports.ColorPicker = ColorPicker;
|
|
285
|
+
//# sourceMappingURL=textColor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textColor.js","sourceRoot":"","sources":["../../../../src/components/input/markdown/textColor.tsx"],"names":[],"mappings":"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"}
|