@plait/core 0.14.0 → 0.15.1
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/constants/index.d.ts +1 -0
- package/esm2020/board/board.component.mjs +17 -29
- package/esm2020/constants/index.mjs +2 -1
- package/esm2020/interfaces/board.mjs +13 -4
- package/esm2020/plugins/create-board.mjs +2 -1
- package/esm2020/plugins/with-hotkey.mjs +54 -0
- package/esm2020/transforms/board.mjs +2 -2
- package/esm2020/utils/draw/line.mjs +20 -1
- package/esm2020/utils/weak-maps.mjs +2 -1
- package/fesm2015/plait-core.mjs +145 -78
- package/fesm2015/plait-core.mjs.map +1 -1
- package/fesm2020/plait-core.mjs +145 -78
- package/fesm2020/plait-core.mjs.map +1 -1
- package/interfaces/board.d.ts +3 -1
- package/package.json +1 -1
- package/plugins/with-hotkey.d.ts +2 -0
- package/utils/draw/line.d.ts +1 -0
- package/utils/weak-maps.d.ts +1 -0
|
@@ -21,4 +21,23 @@ export function drawLinearPath(points, options) {
|
|
|
21
21
|
g.appendChild(path);
|
|
22
22
|
return g;
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
export function drawBezierPath(points, options) {
|
|
25
|
+
const g = createG();
|
|
26
|
+
const path = createPath();
|
|
27
|
+
let polylinePath = '';
|
|
28
|
+
for (let i = 0; i < points.length - 3; i += 3) {
|
|
29
|
+
if (i === 0) {
|
|
30
|
+
polylinePath += `M ${points[0][0]} ${points[0][1]} `;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
polylinePath += `C ${points[i + 1][0]} ${points[i + 1][1]}, ${points[i + 2][0]} ${points[i + 2][1]}, ${points[i + 3][0]} ${points[i + 3][1]}`;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
path.setAttribute('d', polylinePath);
|
|
37
|
+
path.setAttribute('stroke', `${options?.stroke}`);
|
|
38
|
+
path.setAttribute('stroke-width', `${options?.strokeWidth}`);
|
|
39
|
+
path.setAttribute('fill', `none`);
|
|
40
|
+
g.appendChild(path);
|
|
41
|
+
return g;
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3BsYWl0L3NyYy91dGlscy9kcmF3L2xpbmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEQsTUFBTSxVQUFVLFFBQVEsQ0FBQyxFQUFZLEVBQUUsS0FBWSxFQUFFLEdBQVUsRUFBRSxPQUFnQjtJQUM3RSxPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEQsQ0FBQztBQUVELE1BQU0sVUFBVSxjQUFjLENBQUMsTUFBZSxFQUFFLE9BQWlCO0lBQzdELE1BQU0sQ0FBQyxHQUFHLE9BQU8sRUFBRSxDQUFDO0lBQ3BCLE1BQU0sSUFBSSxHQUFHLFVBQVUsRUFBRSxDQUFDO0lBRTFCLElBQUksWUFBWSxHQUFHLEVBQUUsQ0FBQztJQUN0QixNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFO1FBQzVCLElBQUksS0FBSyxLQUFLLENBQUMsRUFBRTtZQUNiLFlBQVksSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQztTQUNoRDthQUFNO1lBQ0gsWUFBWSxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ2hEO0lBQ0wsQ0FBQyxDQUFDLENBQUM7SUFFSCxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUNyQyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ2xELElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxFQUFFLEdBQUcsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDN0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDbEMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVwQixPQUFPLENBQUMsQ0FBQztBQUNiLENBQUM7QUFFRCxNQUFNLFVBQVUsY0FBYyxDQUFDLE1BQWUsRUFBRSxPQUFpQjtJQUM3RCxNQUFNLENBQUMsR0FBRyxPQUFPLEVBQUUsQ0FBQztJQUNwQixNQUFNLElBQUksR0FBRyxVQUFVLEVBQUUsQ0FBQztJQUUxQixJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDM0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFO1lBQ1QsWUFBWSxJQUFJLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1NBQ3hEO2FBQU07WUFDSCxZQUFZLElBQUksS0FBSyxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQ25ILE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNuQixFQUFFLENBQUM7U0FDTjtLQUNKO0lBRUQsSUFBSSxDQUFDLFlBQVksQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFDckMsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsR0FBRyxPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNsRCxJQUFJLENBQUMsWUFBWSxDQUFDLGNBQWMsRUFBRSxHQUFHLE9BQU8sRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFDO0lBQzdELElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2xDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFcEIsT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgUG9pbnQgfSBmcm9tICcuLi8uLi9pbnRlcmZhY2VzL3BvaW50JztcbmltcG9ydCB7IE9wdGlvbnMgfSBmcm9tICdyb3VnaGpzL2Jpbi9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZUcsIGNyZWF0ZVBhdGggfSBmcm9tICcuLi9kb20vY29tbW9uJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdMaW5lKHJzOiBSb3VnaFNWRywgc3RhcnQ6IFBvaW50LCBlbmQ6IFBvaW50LCBvcHRpb25zOiBPcHRpb25zKTogU1ZHR0VsZW1lbnQge1xuICAgIHJldHVybiBycy5saW5lYXJQYXRoKFtzdGFydCwgZW5kXSwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcmF3TGluZWFyUGF0aChwb2ludHM6IFBvaW50W10sIG9wdGlvbnM/OiBPcHRpb25zKSB7XG4gICAgY29uc3QgZyA9IGNyZWF0ZUcoKTtcbiAgICBjb25zdCBwYXRoID0gY3JlYXRlUGF0aCgpO1xuXG4gICAgbGV0IHBvbHlsaW5lUGF0aCA9ICcnO1xuICAgIHBvaW50cy5mb3JFYWNoKChwb2ludCwgaW5kZXgpID0+IHtcbiAgICAgICAgaWYgKGluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBwb2x5bGluZVBhdGggKz0gYE0gJHtwb2ludFswXX0gJHtwb2ludFsxXX0gYDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHBvbHlsaW5lUGF0aCArPSBgTCAke3BvaW50WzBdfSAke3BvaW50WzFdfSBgO1xuICAgICAgICB9XG4gICAgfSk7XG5cbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnZCcsIHBvbHlsaW5lUGF0aCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGAke29wdGlvbnM/LnN0cm9rZX1gKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgYCR7b3B0aW9ucz8uc3Ryb2tlV2lkdGh9YCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBgbm9uZWApO1xuICAgIGcuYXBwZW5kQ2hpbGQocGF0aCk7XG5cbiAgICByZXR1cm4gZztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRyYXdCZXppZXJQYXRoKHBvaW50czogUG9pbnRbXSwgb3B0aW9ucz86IE9wdGlvbnMpIHtcbiAgICBjb25zdCBnID0gY3JlYXRlRygpO1xuICAgIGNvbnN0IHBhdGggPSBjcmVhdGVQYXRoKCk7XG5cbiAgICBsZXQgcG9seWxpbmVQYXRoID0gJyc7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoIC0gMzsgaSArPSAzKSB7XG4gICAgICAgIGlmIChpID09PSAwKSB7XG4gICAgICAgICAgICBwb2x5bGluZVBhdGggKz0gYE0gJHtwb2ludHNbMF1bMF19ICR7cG9pbnRzWzBdWzFdfSBgO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcG9seWxpbmVQYXRoICs9IGBDICR7cG9pbnRzW2kgKyAxXVswXX0gJHtwb2ludHNbaSArIDFdWzFdfSwgJHtwb2ludHNbaSArIDJdWzBdfSAke3BvaW50c1tpICsgMl1bMV19LCAke3BvaW50c1tpICsgM11bMF19ICR7XG4gICAgICAgICAgICAgICAgcG9pbnRzW2kgKyAzXVsxXVxuICAgICAgICAgICAgfWA7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnZCcsIHBvbHlsaW5lUGF0aCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ3N0cm9rZScsIGAke29wdGlvbnM/LnN0cm9rZX1gKTtcbiAgICBwYXRoLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLXdpZHRoJywgYCR7b3B0aW9ucz8uc3Ryb2tlV2lkdGh9YCk7XG4gICAgcGF0aC5zZXRBdHRyaWJ1dGUoJ2ZpbGwnLCBgbm9uZWApO1xuICAgIGcuYXBwZW5kQ2hpbGQocGF0aCk7XG5cbiAgICByZXR1cm4gZztcbn1cbiJdfQ==
|
|
@@ -10,6 +10,7 @@ export const BOARD_TO_ROUGH_SVG = new WeakMap();
|
|
|
10
10
|
export const BOARD_TO_HOST = new WeakMap();
|
|
11
11
|
export const BOARD_TO_ELEMENT_HOST = new WeakMap();
|
|
12
12
|
export const BOARD_TO_SELECTED_ELEMENT = new WeakMap();
|
|
13
|
+
export const BOARD_TO_MOVING_POINT_IN_BOARD = new WeakMap();
|
|
13
14
|
export const BOARD_TO_MOVING_POINT = new WeakMap();
|
|
14
15
|
export const BOARD_TO_VIEWPORT_ORIGINATION = new WeakMap();
|
|
15
16
|
export const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
|
|
@@ -17,4 +18,4 @@ export const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
|
|
|
17
18
|
export const BOARD_TO_TEMPORARY_ELEMENTS = new WeakMap();
|
|
18
19
|
export const BOARD_TO_MOVING_ELEMENT = new WeakMap();
|
|
19
20
|
export const PATH_REFS = new WeakMap();
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
21
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vhay1tYXBzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcGFja2FnZXMvcGxhaXQvc3JjL3V0aWxzL3dlYWstbWFwcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSw4QkFBOEI7QUFDOUIsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUFtQixDQUFDO0FBRTdELE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUzRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsSUFBSSxPQUFPLEVBQXFCLENBQUM7QUFFOUQsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRWpFLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxFQUF1QixDQUFDO0FBRW5FLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUEwQixDQUFDO0FBRXhFLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF1QyxDQUFDO0FBRXJGLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLElBQUksT0FBTyxFQUF3QixDQUFDO0FBRXRFLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxJQUFJLE9BQU8sRUFBNkIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBMkIsQ0FBQztBQUU1RSxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxJQUFJLE9BQU8sRUFBOEIsQ0FBQztBQUVuRixNQUFNLENBQUMsTUFBTSw4QkFBOEIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUUvRSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUV0RSxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLE9BQU8sRUFBcUIsQ0FBQztBQUU5RSxNQUFNLENBQUMsTUFBTSw0QkFBNEIsR0FBRyxJQUFJLE9BQU8sRUFBdUIsQ0FBQztBQUUvRSxxQ0FBcUM7QUFDckMsTUFBTSxDQUFDLE1BQU0sMkJBQTJCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7QUFFckYsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxPQUFPLEVBQThCLENBQUM7QUFFakYsTUFBTSxDQUFDLE1BQU0sU0FBUyxHQUFzQyxJQUFJLE9BQU8sRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91Z2hTVkcgfSBmcm9tICdyb3VnaGpzL2Jpbi9zdmcnO1xuaW1wb3J0IHsgQm9hcmRDb21wb25lbnRJbnRlcmZhY2UgfSBmcm9tICcuLi9ib2FyZC9ib2FyZC5jb21wb25lbnQuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBsYWl0RWxlbWVudCB9IGZyb20gJy4uL2ludGVyZmFjZXMvZWxlbWVudCc7XG5pbXBvcnQgeyBQbGFpdEJvYXJkIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9ib2FyZCc7XG5pbXBvcnQgeyBQb2ludCB9IGZyb20gJy4uL2ludGVyZmFjZXMvcG9pbnQnO1xuaW1wb3J0IHsgQW5jZXN0b3IsIFBsYWl0Tm9kZSB9IGZyb20gJy4uL2ludGVyZmFjZXMvbm9kZSc7XG5pbXBvcnQgeyBQYXRoUmVmIH0gZnJvbSAnLi4vaW50ZXJmYWNlcy9wYXRoLXJlZic7XG5cbi8vIHJlY29yZCByaWNodGV4dCB0eXBlIHN0YXR1c1xuZXhwb3J0IGNvbnN0IElTX0JPQVJEX0NBQ0hFID0gbmV3IFdlYWtNYXA8T2JqZWN0LCBib29sZWFuPigpO1xuXG5leHBvcnQgY29uc3QgRkxVU0hJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG5leHBvcnQgY29uc3QgTk9ERV9UT19JTkRFWCA9IG5ldyBXZWFrTWFwPFBsYWl0Tm9kZSwgbnVtYmVyPigpO1xuXG5leHBvcnQgY29uc3QgTk9ERV9UT19QQVJFTlQgPSBuZXcgV2Vha01hcDxQbGFpdE5vZGUsIEFuY2VzdG9yPigpO1xuXG5leHBvcnQgY29uc3QgSVNfVEVYVF9FRElUQUJMRSA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIGJvb2xlYW4+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19PTl9DSEFOR0UgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCAoKSA9PiB2b2lkPigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fQ09NUE9ORU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgQm9hcmRDb21wb25lbnRJbnRlcmZhY2U+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19ST1VHSF9TVkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBSb3VnaFNWRz4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0hPU1QgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBTVkdTVkdFbGVtZW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fRUxFTUVOVF9IT1NUID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgU1ZHR0VsZW1lbnQ+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19TRUxFQ1RFRF9FTEVNRU5UID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19NT1ZJTkdfUE9JTlRfSU5fQk9BUkQgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQb2ludD4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX01PVklOR19QT0lOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBvaW50PigpO1xuXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fVklFV1BPUlRfT1JJR0lOQVRJT04gPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBQb2ludD4oKTtcblxuZXhwb3J0IGNvbnN0IEJPQVJEX1RPX0lTX1NFTEVDVElPTl9NT1ZJTkcgPSBuZXcgV2Vha01hcDxQbGFpdEJvYXJkLCBib29sZWFuPigpO1xuXG4vLyBzYXZlIG5vIHN0YW5kYXJkIHNlbGVjdGVkIGVsZW1lbnRzXG5leHBvcnQgY29uc3QgQk9BUkRfVE9fVEVNUE9SQVJZX0VMRU1FTlRTID0gbmV3IFdlYWtNYXA8UGxhaXRCb2FyZCwgUGxhaXRFbGVtZW50W10+KCk7XG5cbmV4cG9ydCBjb25zdCBCT0FSRF9UT19NT1ZJTkdfRUxFTUVOVCA9IG5ldyBXZWFrTWFwPFBsYWl0Qm9hcmQsIFBsYWl0RWxlbWVudFtdPigpO1xuXG5leHBvcnQgY29uc3QgUEFUSF9SRUZTOiBXZWFrTWFwPFBsYWl0Qm9hcmQsIFNldDxQYXRoUmVmPj4gPSBuZXcgV2Vha01hcCgpO1xuIl19
|
package/fesm2015/plait-core.mjs
CHANGED
|
@@ -21,6 +21,7 @@ const BOARD_TO_ROUGH_SVG = new WeakMap();
|
|
|
21
21
|
const BOARD_TO_HOST = new WeakMap();
|
|
22
22
|
const BOARD_TO_ELEMENT_HOST = new WeakMap();
|
|
23
23
|
const BOARD_TO_SELECTED_ELEMENT = new WeakMap();
|
|
24
|
+
const BOARD_TO_MOVING_POINT_IN_BOARD = new WeakMap();
|
|
24
25
|
const BOARD_TO_MOVING_POINT = new WeakMap();
|
|
25
26
|
const BOARD_TO_VIEWPORT_ORIGINATION = new WeakMap();
|
|
26
27
|
const BOARD_TO_IS_SELECTION_MOVING = new WeakMap();
|
|
@@ -134,6 +135,54 @@ const ThemeColors = [
|
|
|
134
135
|
StarryThemeColor
|
|
135
136
|
];
|
|
136
137
|
|
|
138
|
+
// https://stackoverflow.com/a/6853926/232122
|
|
139
|
+
function distanceBetweenPointAndSegment(x, y, x1, y1, x2, y2) {
|
|
140
|
+
const A = x - x1;
|
|
141
|
+
const B = y - y1;
|
|
142
|
+
const C = x2 - x1;
|
|
143
|
+
const D = y2 - y1;
|
|
144
|
+
const dot = A * C + B * D;
|
|
145
|
+
const lenSquare = C * C + D * D;
|
|
146
|
+
let param = -1;
|
|
147
|
+
if (lenSquare !== 0) {
|
|
148
|
+
// in case of 0 length line
|
|
149
|
+
param = dot / lenSquare;
|
|
150
|
+
}
|
|
151
|
+
let xx, yy;
|
|
152
|
+
if (param < 0) {
|
|
153
|
+
xx = x1;
|
|
154
|
+
yy = y1;
|
|
155
|
+
}
|
|
156
|
+
else if (param > 1) {
|
|
157
|
+
xx = x2;
|
|
158
|
+
yy = y2;
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
xx = x1 + param * C;
|
|
162
|
+
yy = y1 + param * D;
|
|
163
|
+
}
|
|
164
|
+
const dx = x - xx;
|
|
165
|
+
const dy = y - yy;
|
|
166
|
+
return Math.hypot(dx, dy);
|
|
167
|
+
}
|
|
168
|
+
function rotate(x1, y1, x2, y2, angle) {
|
|
169
|
+
// 𝑎′𝑥=(𝑎𝑥−𝑐𝑥)cos𝜃−(𝑎𝑦−𝑐𝑦)sin𝜃+𝑐𝑥
|
|
170
|
+
// 𝑎′𝑦=(𝑎𝑥−𝑐𝑥)sin𝜃+(𝑎𝑦−𝑐𝑦)cos𝜃+𝑐𝑦.
|
|
171
|
+
// https://math.stackexchange.com/questions/2204520/how-do-i-rotate-a-line-segment-in-a-specific-point-on-the-line
|
|
172
|
+
return [(x1 - x2) * Math.cos(angle) - (y1 - y2) * Math.sin(angle) + x2, (x1 - x2) * Math.sin(angle) + (y1 - y2) * Math.cos(angle) + y2];
|
|
173
|
+
}
|
|
174
|
+
function distanceBetweenPointAndPoint(x1, y1, x2, y2) {
|
|
175
|
+
const dx = x1 - x2;
|
|
176
|
+
const dy = y1 - y2;
|
|
177
|
+
return Math.hypot(dx, dy);
|
|
178
|
+
}
|
|
179
|
+
// https://stackoverflow.com/questions/5254838/calculating-distance-between-a-point-and-a-rectangular-box-nearest-point
|
|
180
|
+
function distanceBetweenPointAndRectangle(x, y, rect) {
|
|
181
|
+
var dx = Math.max(rect.x - x, 0, x - (rect.x + rect.width));
|
|
182
|
+
var dy = Math.max(rect.y - y, 0, y - (rect.y + rect.height));
|
|
183
|
+
return Math.sqrt(dx * dx + dy * dy);
|
|
184
|
+
}
|
|
185
|
+
|
|
137
186
|
const PlaitBoard = {
|
|
138
187
|
isBoard(value) {
|
|
139
188
|
const cachedIsBoard = IS_BOARD_CACHE.get(value);
|
|
@@ -202,8 +251,16 @@ const PlaitBoard = {
|
|
|
202
251
|
isPointer(board, pointer) {
|
|
203
252
|
return board.pointer === pointer;
|
|
204
253
|
},
|
|
205
|
-
|
|
206
|
-
return
|
|
254
|
+
getMovingPointInBoard(board) {
|
|
255
|
+
return BOARD_TO_MOVING_POINT_IN_BOARD.get(board);
|
|
256
|
+
},
|
|
257
|
+
isMovingPointInBoard(board) {
|
|
258
|
+
const point = BOARD_TO_MOVING_POINT.get(board);
|
|
259
|
+
const rect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
260
|
+
if (point && distanceBetweenPointAndRectangle(point[0], point[1], rect) === 0) {
|
|
261
|
+
return true;
|
|
262
|
+
}
|
|
263
|
+
return false;
|
|
207
264
|
},
|
|
208
265
|
getThemeColors(board) {
|
|
209
266
|
return (board.options.themeColors || ThemeColors);
|
|
@@ -788,6 +845,7 @@ const SINGLE_QUOTE = 222;
|
|
|
788
845
|
const MAC_META = 224;
|
|
789
846
|
|
|
790
847
|
const CLIP_BOARD_FORMAT_KEY = 'x-plait-fragment';
|
|
848
|
+
const HOST_CLASS_NAME = 'plait-board-container';
|
|
791
849
|
const SCROLL_BAR_WIDTH = 20;
|
|
792
850
|
const MAX_RADIUS = 16;
|
|
793
851
|
const POINTER_BUTTON = {
|
|
@@ -849,54 +907,6 @@ const isMainPointer = (event) => {
|
|
|
849
907
|
return event.button === POINTER_BUTTON.MAIN;
|
|
850
908
|
};
|
|
851
909
|
|
|
852
|
-
// https://stackoverflow.com/a/6853926/232122
|
|
853
|
-
function distanceBetweenPointAndSegment(x, y, x1, y1, x2, y2) {
|
|
854
|
-
const A = x - x1;
|
|
855
|
-
const B = y - y1;
|
|
856
|
-
const C = x2 - x1;
|
|
857
|
-
const D = y2 - y1;
|
|
858
|
-
const dot = A * C + B * D;
|
|
859
|
-
const lenSquare = C * C + D * D;
|
|
860
|
-
let param = -1;
|
|
861
|
-
if (lenSquare !== 0) {
|
|
862
|
-
// in case of 0 length line
|
|
863
|
-
param = dot / lenSquare;
|
|
864
|
-
}
|
|
865
|
-
let xx, yy;
|
|
866
|
-
if (param < 0) {
|
|
867
|
-
xx = x1;
|
|
868
|
-
yy = y1;
|
|
869
|
-
}
|
|
870
|
-
else if (param > 1) {
|
|
871
|
-
xx = x2;
|
|
872
|
-
yy = y2;
|
|
873
|
-
}
|
|
874
|
-
else {
|
|
875
|
-
xx = x1 + param * C;
|
|
876
|
-
yy = y1 + param * D;
|
|
877
|
-
}
|
|
878
|
-
const dx = x - xx;
|
|
879
|
-
const dy = y - yy;
|
|
880
|
-
return Math.hypot(dx, dy);
|
|
881
|
-
}
|
|
882
|
-
function rotate(x1, y1, x2, y2, angle) {
|
|
883
|
-
// 𝑎′𝑥=(𝑎𝑥−𝑐𝑥)cos𝜃−(𝑎𝑦−𝑐𝑦)sin𝜃+𝑐𝑥
|
|
884
|
-
// 𝑎′𝑦=(𝑎𝑥−𝑐𝑥)sin𝜃+(𝑎𝑦−𝑐𝑦)cos𝜃+𝑐𝑦.
|
|
885
|
-
// https://math.stackexchange.com/questions/2204520/how-do-i-rotate-a-line-segment-in-a-specific-point-on-the-line
|
|
886
|
-
return [(x1 - x2) * Math.cos(angle) - (y1 - y2) * Math.sin(angle) + x2, (x1 - x2) * Math.sin(angle) + (y1 - y2) * Math.cos(angle) + y2];
|
|
887
|
-
}
|
|
888
|
-
function distanceBetweenPointAndPoint(x1, y1, x2, y2) {
|
|
889
|
-
const dx = x1 - x2;
|
|
890
|
-
const dy = y1 - y2;
|
|
891
|
-
return Math.hypot(dx, dy);
|
|
892
|
-
}
|
|
893
|
-
// https://stackoverflow.com/questions/5254838/calculating-distance-between-a-point-and-a-rectangular-box-nearest-point
|
|
894
|
-
function distanceBetweenPointAndRectangle(x, y, rect) {
|
|
895
|
-
var dx = Math.max(rect.x - x, 0, x - (rect.x + rect.width));
|
|
896
|
-
var dy = Math.max(rect.y - y, 0, y - (rect.y + rect.height));
|
|
897
|
-
return Math.sqrt(dx * dx + dy * dy);
|
|
898
|
-
}
|
|
899
|
-
|
|
900
910
|
const SELECTION_BORDER_COLOR = '#6698FF';
|
|
901
911
|
const SELECTION_FILL_COLOR = '#6698FF19'; // 主色 0.1 透明度
|
|
902
912
|
const Selection = {
|
|
@@ -1403,6 +1413,25 @@ function drawLinearPath(points, options) {
|
|
|
1403
1413
|
g.appendChild(path);
|
|
1404
1414
|
return g;
|
|
1405
1415
|
}
|
|
1416
|
+
function drawBezierPath(points, options) {
|
|
1417
|
+
const g = createG();
|
|
1418
|
+
const path = createPath();
|
|
1419
|
+
let polylinePath = '';
|
|
1420
|
+
for (let i = 0; i < points.length - 3; i += 3) {
|
|
1421
|
+
if (i === 0) {
|
|
1422
|
+
polylinePath += `M ${points[0][0]} ${points[0][1]} `;
|
|
1423
|
+
}
|
|
1424
|
+
else {
|
|
1425
|
+
polylinePath += `C ${points[i + 1][0]} ${points[i + 1][1]}, ${points[i + 2][0]} ${points[i + 2][1]}, ${points[i + 3][0]} ${points[i + 3][1]}`;
|
|
1426
|
+
}
|
|
1427
|
+
}
|
|
1428
|
+
path.setAttribute('d', polylinePath);
|
|
1429
|
+
path.setAttribute('stroke', `${options === null || options === void 0 ? void 0 : options.stroke}`);
|
|
1430
|
+
path.setAttribute('stroke-width', `${options === null || options === void 0 ? void 0 : options.strokeWidth}`);
|
|
1431
|
+
path.setAttribute('fill', `none`);
|
|
1432
|
+
g.appendChild(path);
|
|
1433
|
+
return g;
|
|
1434
|
+
}
|
|
1406
1435
|
|
|
1407
1436
|
let timerId = null;
|
|
1408
1437
|
const throttleRAF = (fn) => {
|
|
@@ -1875,7 +1904,7 @@ const updatePointerType = (board, pointer) => {
|
|
|
1875
1904
|
};
|
|
1876
1905
|
function updateZoom(board, newZoom, isCenter = true) {
|
|
1877
1906
|
newZoom = clampZoomLevel(newZoom);
|
|
1878
|
-
const mousePoint = PlaitBoard.
|
|
1907
|
+
const mousePoint = PlaitBoard.getMovingPointInBoard(board);
|
|
1879
1908
|
const nativeElement = PlaitBoard.getBoardContainer(board);
|
|
1880
1909
|
const nativeElementRect = nativeElement.getBoundingClientRect();
|
|
1881
1910
|
const boardContainerRect = PlaitBoard.getBoardContainer(board).getBoundingClientRect();
|
|
@@ -2054,6 +2083,7 @@ function createBoard(children, options) {
|
|
|
2054
2083
|
mouseup: (event) => { },
|
|
2055
2084
|
globalMouseup: (event) => { },
|
|
2056
2085
|
keydown: (event) => { },
|
|
2086
|
+
globalKeydown: (event) => { },
|
|
2057
2087
|
keyup: (event) => { },
|
|
2058
2088
|
dblclick: (event) => { },
|
|
2059
2089
|
setFragment: (data) => { },
|
|
@@ -2576,6 +2606,56 @@ const hasOnBoardChange = (value) => {
|
|
|
2576
2606
|
}
|
|
2577
2607
|
};
|
|
2578
2608
|
|
|
2609
|
+
const withHotkey = (board) => {
|
|
2610
|
+
const { keydown, globalKeydown } = board;
|
|
2611
|
+
board.keydown = (event) => {
|
|
2612
|
+
const options = board.getPluginOptions(PlaitPluginKey.withSelection);
|
|
2613
|
+
if (!PlaitBoard.isReadonly(board) && options.isMultiple && isHotkey('mod+a', event)) {
|
|
2614
|
+
event.preventDefault();
|
|
2615
|
+
let elements = [];
|
|
2616
|
+
depthFirstRecursion(board, node => {
|
|
2617
|
+
elements.push(node);
|
|
2618
|
+
}, node => {
|
|
2619
|
+
if (PlaitBoard.isBoard(node) || board.isRecursion(node)) {
|
|
2620
|
+
return true;
|
|
2621
|
+
}
|
|
2622
|
+
else {
|
|
2623
|
+
return false;
|
|
2624
|
+
}
|
|
2625
|
+
}, true);
|
|
2626
|
+
Transforms.setSelectionWithTemporaryElements(board, elements);
|
|
2627
|
+
return;
|
|
2628
|
+
}
|
|
2629
|
+
keydown(event);
|
|
2630
|
+
};
|
|
2631
|
+
board.globalKeydown = (event) => {
|
|
2632
|
+
if (PlaitBoard.getMovingPointInBoard(board) || PlaitBoard.isMovingPointInBoard(board)) {
|
|
2633
|
+
if (isHotkey(['mod+=', 'mod++'], { byKey: true })(event)) {
|
|
2634
|
+
event.preventDefault();
|
|
2635
|
+
BoardTransforms.updateZoom(board, board.viewport.zoom + 0.1, false);
|
|
2636
|
+
return;
|
|
2637
|
+
}
|
|
2638
|
+
if (isHotkey(['mod+shift+=', 'mod+shift++'], { byKey: true })(event)) {
|
|
2639
|
+
event.preventDefault();
|
|
2640
|
+
BoardTransforms.fitViewport(board);
|
|
2641
|
+
return;
|
|
2642
|
+
}
|
|
2643
|
+
if (isHotkey(['mod+-', 'mod+shift+-'])(event)) {
|
|
2644
|
+
event.preventDefault();
|
|
2645
|
+
BoardTransforms.updateZoom(board, board.viewport.zoom - 0.1);
|
|
2646
|
+
return;
|
|
2647
|
+
}
|
|
2648
|
+
if (isHotkey(['mod+0', 'mod+shift+0'], { byKey: true })(event)) {
|
|
2649
|
+
event.preventDefault();
|
|
2650
|
+
BoardTransforms.updateZoom(board, 1);
|
|
2651
|
+
return;
|
|
2652
|
+
}
|
|
2653
|
+
}
|
|
2654
|
+
globalKeydown(event);
|
|
2655
|
+
};
|
|
2656
|
+
return board;
|
|
2657
|
+
};
|
|
2658
|
+
|
|
2579
2659
|
class PlaitElementComponent {
|
|
2580
2660
|
constructor(renderer2, viewContainerRef) {
|
|
2581
2661
|
this.renderer2 = renderer2;
|
|
@@ -2732,7 +2812,7 @@ class PlaitBoardComponent {
|
|
|
2732
2812
|
return this.svg.nativeElement;
|
|
2733
2813
|
}
|
|
2734
2814
|
get hostClass() {
|
|
2735
|
-
return
|
|
2815
|
+
return `${HOST_CLASS_NAME} pointer-${this.board.pointer} theme-${this.board.theme.themeColorMode}`;
|
|
2736
2816
|
}
|
|
2737
2817
|
get readonly() {
|
|
2738
2818
|
return this.board.options.readonly;
|
|
@@ -2773,6 +2853,11 @@ class PlaitBoardComponent {
|
|
|
2773
2853
|
this.initializeHookListener();
|
|
2774
2854
|
this.viewportScrollListener();
|
|
2775
2855
|
this.elementResizeListener();
|
|
2856
|
+
fromEvent(document, 'mouseleave')
|
|
2857
|
+
.pipe(takeUntil(this.destroy$))
|
|
2858
|
+
.subscribe((event) => {
|
|
2859
|
+
BOARD_TO_MOVING_POINT.delete(this.board);
|
|
2860
|
+
});
|
|
2776
2861
|
});
|
|
2777
2862
|
BOARD_TO_COMPONENT.set(this.board, this);
|
|
2778
2863
|
BOARD_TO_ROUGH_SVG.set(this.board, roughSVG);
|
|
@@ -2819,7 +2904,7 @@ class PlaitBoardComponent {
|
|
|
2819
2904
|
initializeViewportOffset(this.board);
|
|
2820
2905
|
}
|
|
2821
2906
|
initializePlugins() {
|
|
2822
|
-
let board = withHandPointer(withHistory(withSelection(withMoving(withBoard(withViewport(withOptions(createBoard(this.plaitValue, this.plaitOptions))))))));
|
|
2907
|
+
let board = withHotkey(withHandPointer(withHistory(withSelection(withMoving(withBoard(withViewport(withOptions(createBoard(this.plaitValue, this.plaitOptions)))))))));
|
|
2823
2908
|
this.plaitPlugins.forEach(plugin => {
|
|
2824
2909
|
board = plugin(board);
|
|
2825
2910
|
});
|
|
@@ -2840,18 +2925,19 @@ class PlaitBoardComponent {
|
|
|
2840
2925
|
fromEvent(this.host, 'mousemove')
|
|
2841
2926
|
.pipe(takeUntil(this.destroy$))
|
|
2842
2927
|
.subscribe((event) => {
|
|
2843
|
-
|
|
2928
|
+
BOARD_TO_MOVING_POINT_IN_BOARD.set(this.board, [event.x, event.y]);
|
|
2844
2929
|
this.board.mousemove(event);
|
|
2845
2930
|
});
|
|
2846
2931
|
fromEvent(this.host, 'mouseleave')
|
|
2847
2932
|
.pipe(takeUntil(this.destroy$))
|
|
2848
2933
|
.subscribe((event) => {
|
|
2849
|
-
|
|
2934
|
+
BOARD_TO_MOVING_POINT_IN_BOARD.delete(this.board);
|
|
2850
2935
|
this.board.mouseleave(event);
|
|
2851
2936
|
});
|
|
2852
2937
|
fromEvent(document, 'mousemove')
|
|
2853
2938
|
.pipe(takeUntil(this.destroy$))
|
|
2854
2939
|
.subscribe((event) => {
|
|
2940
|
+
BOARD_TO_MOVING_POINT.set(this.board, [event.x, event.y]);
|
|
2855
2941
|
this.board.globalMousemove(event);
|
|
2856
2942
|
});
|
|
2857
2943
|
fromEvent(this.host, 'mouseup')
|
|
@@ -2870,27 +2956,8 @@ class PlaitBoardComponent {
|
|
|
2870
2956
|
this.board.dblclick(event);
|
|
2871
2957
|
});
|
|
2872
2958
|
fromEvent(document, 'keydown')
|
|
2873
|
-
.pipe(takeUntil(this.destroy$), tap(
|
|
2874
|
-
|
|
2875
|
-
if (isHotkey(['mod+=', 'mod++'], { byKey: true })(event)) {
|
|
2876
|
-
event.preventDefault();
|
|
2877
|
-
BoardTransforms.updateZoom(this.board, this.board.viewport.zoom + 0.1, false);
|
|
2878
|
-
}
|
|
2879
|
-
if (isHotkey('mod+-', { byKey: true })(event)) {
|
|
2880
|
-
event.preventDefault();
|
|
2881
|
-
BoardTransforms.updateZoom(this.board, this.board.viewport.zoom - 0.1);
|
|
2882
|
-
}
|
|
2883
|
-
if (isHotkey('mod+0', { byKey: true })(event)) {
|
|
2884
|
-
event.preventDefault();
|
|
2885
|
-
BoardTransforms.updateZoom(this.board, 1);
|
|
2886
|
-
return;
|
|
2887
|
-
}
|
|
2888
|
-
if (isHotkey('mod+shift+=', { byKey: true })(event)) {
|
|
2889
|
-
event.preventDefault();
|
|
2890
|
-
BoardTransforms.fitViewport(this.board);
|
|
2891
|
-
return;
|
|
2892
|
-
}
|
|
2893
|
-
}
|
|
2959
|
+
.pipe(takeUntil(this.destroy$), tap(event => {
|
|
2960
|
+
this.board.globalKeydown(event);
|
|
2894
2961
|
}), filter(event => this.isFocused && !PlaitBoard.hasBeenTextEditing(this.board) && !hasInputOrTextareaTarget(event.target)))
|
|
2895
2962
|
.subscribe((event) => {
|
|
2896
2963
|
var _a;
|
|
@@ -2912,7 +2979,7 @@ class PlaitBoardComponent {
|
|
|
2912
2979
|
fromEvent(document, 'paste')
|
|
2913
2980
|
.pipe(takeUntil(this.destroy$), filter(() => this.isFocused && !PlaitBoard.isReadonly(this.board) && !PlaitBoard.hasBeenTextEditing(this.board)))
|
|
2914
2981
|
.subscribe((clipboardEvent) => {
|
|
2915
|
-
const mousePoint = PlaitBoard.
|
|
2982
|
+
const mousePoint = PlaitBoard.getMovingPointInBoard(this.board);
|
|
2916
2983
|
if (mousePoint) {
|
|
2917
2984
|
const targetPoint = transformPoint(this.board, toPoint(mousePoint[0], mousePoint[1], this.host));
|
|
2918
2985
|
this.board.insertFragment(clipboardEvent.clipboardData, targetPoint);
|
|
@@ -3226,5 +3293,5 @@ function createModModifierKeys() {
|
|
|
3226
3293
|
* Generated bundle index. Do not edit.
|
|
3227
3294
|
*/
|
|
3228
3295
|
|
|
3229
|
-
export { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, D, DASH, DELETE, DOWN_ARROW, DarkThemeColor, DefaultThemeColor, E, EIGHT, ELEMENT_TO_COMPONENT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FLUSHING, FOUR, G, H, HOME, I, INSERT, IS_APPLE, IS_BOARD_CACHE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_FIREFOX, IS_IOS, IS_MAC, IS_SAFARI, IS_TEXT_EDITABLE, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, MAX_RADIUS, MERGING, META, MUTE, N, NINE, NODE_TO_INDEX, NODE_TO_PARENT, NS, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PATH_REFS, PAUSE, PERIOD, PLUS_SIGN, POINTER_BUTTON, PRINT_SCREEN, Path, PlaitBoard, PlaitBoardComponent, PlaitChildrenElement, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, PlaitModule, PlaitNode, PlaitOperation, PlaitPluginElementComponent, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RIGHT_ARROW, RectangleClient, RetroThemeColor, S, SAVING, SCROLL_BAR_WIDTH, SCROLL_LOCK, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, Selection, SoftThemeColor, StarryThemeColor, T, TAB, THREE, TILDE, TWO, ThemeColorMode, ThemeColors, Transforms, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, Viewport, W, X, Y, Z, ZERO, addMovingElements, addSelectedElement, arrowPoints, cacheMovingElements, cacheSelectedElements, clampZoomLevel, clearNodeWeakMap, clearSelectedElement, clearSelectionMoving, clearViewportOrigination, createFakeEvent, createForeignObject, createG, createKeyboardEvent, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, downloadImage, drawAbstractRoundRectangle, drawArrow, drawCircle, drawLine, drawLinearPath, drawRoundRectangle, fakeNodeWeakMap, getBoardRectangle, getElementHostBBox, getHitElementOfRoot, getHitElements, getMovingElements, getRealScrollBarWidth, getRectangleByElements, getSelectedElements, getTemporaryElements, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnBoardChange, hasOnContextChanged, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isDOMElement, isDOMNode, isFromScrolling, isFromViewportChange, isHitElements, isInPlaitBoard, isMainPointer, isNullOrUndefined, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setIsFromScrolling, setIsFromViewportChange, setSVGViewBox, setSelectionMoving, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
|
|
3296
|
+
export { A, ALT, APOSTROPHE, AT_SIGN, B, BACKSLASH, BACKSPACE, BOARD_TO_COMPONENT, BOARD_TO_ELEMENT_HOST, BOARD_TO_HOST, BOARD_TO_IS_SELECTION_MOVING, BOARD_TO_MOVING_ELEMENT, BOARD_TO_MOVING_POINT, BOARD_TO_MOVING_POINT_IN_BOARD, BOARD_TO_ON_CHANGE, BOARD_TO_ROUGH_SVG, BOARD_TO_SELECTED_ELEMENT, BOARD_TO_TEMPORARY_ELEMENTS, BOARD_TO_VIEWPORT_ORIGINATION, BoardTransforms, C, CAPS_LOCK, CLIP_BOARD_FORMAT_KEY, CLOSE_SQUARE_BRACKET, COMMA, CONTEXT_MENU, CONTROL, ColorfulThemeColor, D, DASH, DELETE, DOWN_ARROW, DarkThemeColor, DefaultThemeColor, E, EIGHT, ELEMENT_TO_COMPONENT, END, ENTER, EQUALS, ESCAPE, F, F1, F10, F11, F12, F2, F3, F4, F5, F6, F7, F8, F9, FF_EQUALS, FF_MINUS, FF_MUTE, FF_SEMICOLON, FF_VOLUME_DOWN, FF_VOLUME_UP, FIRST_MEDIA, FIVE, FLUSHING, FOUR, G, H, HOME, HOST_CLASS_NAME, I, INSERT, IS_APPLE, IS_BOARD_CACHE, IS_CHROME, IS_CHROME_LEGACY, IS_EDGE_LEGACY, IS_FIREFOX, IS_IOS, IS_MAC, IS_SAFARI, IS_TEXT_EDITABLE, J, K, L, LAST_MEDIA, LEFT_ARROW, M, MAC_ENTER, MAC_META, MAC_WK_CMD_LEFT, MAC_WK_CMD_RIGHT, MAX_RADIUS, MERGING, META, MUTE, N, NINE, NODE_TO_INDEX, NODE_TO_PARENT, NS, NUMPAD_DIVIDE, NUMPAD_EIGHT, NUMPAD_FIVE, NUMPAD_FOUR, NUMPAD_MINUS, NUMPAD_MULTIPLY, NUMPAD_NINE, NUMPAD_ONE, NUMPAD_PERIOD, NUMPAD_PLUS, NUMPAD_SEVEN, NUMPAD_SIX, NUMPAD_THREE, NUMPAD_TWO, NUMPAD_ZERO, NUM_CENTER, NUM_LOCK, O, ONE, OPEN_SQUARE_BRACKET, P, PAGE_DOWN, PAGE_UP, PATH_REFS, PAUSE, PERIOD, PLUS_SIGN, POINTER_BUTTON, PRINT_SCREEN, Path, PlaitBoard, PlaitBoardComponent, PlaitChildrenElement, PlaitElement, PlaitElementComponent, PlaitHistoryBoard, PlaitIslandBaseComponent, PlaitIslandPopoverBaseComponent, PlaitModule, PlaitNode, PlaitOperation, PlaitPluginElementComponent, PlaitPluginKey, PlaitPointerType, Point, Q, QUESTION_MARK, R, RIGHT_ARROW, RectangleClient, RetroThemeColor, S, SAVING, SCROLL_BAR_WIDTH, SCROLL_LOCK, SELECTION_BORDER_COLOR, SELECTION_FILL_COLOR, SEMICOLON, SEVEN, SHIFT, SINGLE_QUOTE, SIX, SLASH, SPACE, Selection, SoftThemeColor, StarryThemeColor, T, TAB, THREE, TILDE, TWO, ThemeColorMode, ThemeColors, Transforms, U, UP_ARROW, V, VOLUME_DOWN, VOLUME_UP, Viewport, W, X, Y, Z, ZERO, addMovingElements, addSelectedElement, arrowPoints, cacheMovingElements, cacheSelectedElements, clampZoomLevel, clearNodeWeakMap, clearSelectedElement, clearSelectionMoving, clearViewportOrigination, createFakeEvent, createForeignObject, createG, createKeyboardEvent, createModModifierKeys, createMouseEvent, createPath, createPointerEvent, createSVG, createSelectionOuterG, createTestingBoard, createText, createTouchEvent, debounce, deleteTemporaryElements, depthFirstRecursion, distanceBetweenPointAndPoint, distanceBetweenPointAndRectangle, distanceBetweenPointAndSegment, downloadImage, drawAbstractRoundRectangle, drawArrow, drawBezierPath, drawCircle, drawLine, drawLinearPath, drawRoundRectangle, fakeNodeWeakMap, getBoardRectangle, getElementHostBBox, getHitElementOfRoot, getHitElements, getMovingElements, getRealScrollBarWidth, getRectangleByElements, getSelectedElements, getTemporaryElements, getViewBox, getViewBoxCenterPoint, getViewportContainerRect, getViewportOrigination, hasBeforeContextChange, hasInputOrTextareaTarget, hasOnBoardChange, hasOnContextChanged, hotkeys, idCreator, initializeViewBox, initializeViewportContainer, initializeViewportOffset, inverse, isDOMElement, isDOMNode, isFromScrolling, isFromViewportChange, isHitElements, isInPlaitBoard, isMainPointer, isNullOrUndefined, isSecondaryPointer, isSelectedElement, isSelectionMoving, isSetViewportOperation, normalizePoint, removeMovingElements, removeSelectedElement, rotate, scrollToRectangle, setIsFromScrolling, setIsFromViewportChange, setSVGViewBox, setSelectionMoving, shouldClear, shouldMerge, shouldSave, throttleRAF, toImage, toPoint, transformPoint, transformPoints, updateForeignObject, updateViewportContainerScroll, updateViewportOffset, updateViewportOrigination, withMoving, withOptions, withSelection };
|
|
3230
3297
|
//# sourceMappingURL=plait-core.mjs.map
|