@ngxsmk/cdk 1.3.2 → 3.0.0
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/README.md +1 -1
- package/cva-base/cva-base.d.ts +34 -0
- package/cva-base/cva-base.d.ts.map +1 -0
- package/cva-base/index.d.ts +2 -0
- package/cva-base/index.d.ts.map +1 -0
- package/cva-base/ngxsmk-cdk-cva-base.d.ts.map +1 -0
- package/esm2022/cva-base/cva-base.mjs +45 -0
- package/esm2022/cva-base/index.mjs +2 -0
- package/esm2022/cva-base/ngxsmk-cdk-cva-base.mjs +5 -0
- package/esm2022/input-group/index.mjs +3 -0
- package/esm2022/input-group/input-group-engine.mjs +219 -0
- package/esm2022/input-group/models/index.mjs +2 -0
- package/esm2022/input-group/models/input-group.model.mjs +2 -0
- package/esm2022/input-group/ngxsmk-cdk-input-group.mjs +5 -0
- package/esm2022/listbox-keyboard/index.mjs +2 -0
- package/esm2022/listbox-keyboard/listbox-keyboard.mjs +145 -0
- package/esm2022/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.mjs +5 -0
- package/esm2022/public-api.mjs +10 -1
- package/esm2022/roving-focus/index.mjs +2 -0
- package/esm2022/roving-focus/ngxsmk-cdk-roving-focus.mjs +5 -0
- package/esm2022/roving-focus/roving-focus.mjs +176 -0
- package/esm2022/scheduler/index.mjs +5 -0
- package/esm2022/scheduler/models/date-range.mjs +2 -0
- package/esm2022/scheduler/models/event.model.mjs +2 -0
- package/esm2022/scheduler/models/index.mjs +6 -0
- package/esm2022/scheduler/models/resource.model.mjs +5 -0
- package/esm2022/scheduler/models/selection.model.mjs +7 -0
- package/esm2022/scheduler/models/view.model.mjs +7 -0
- package/esm2022/scheduler/ngxsmk-cdk-scheduler.mjs +5 -0
- package/esm2022/scheduler/plugin/drag-plugin.mjs +82 -0
- package/esm2022/scheduler/plugin/index.mjs +8 -0
- package/esm2022/scheduler/plugin/keyboard-plugin.mjs +150 -0
- package/esm2022/scheduler/plugin/plugin-host.mjs +48 -0
- package/esm2022/scheduler/plugin/plugin.types.mjs +2 -0
- package/esm2022/scheduler/plugin/resize-plugin.mjs +74 -0
- package/esm2022/scheduler/plugin/selection-plugin.mjs +84 -0
- package/esm2022/scheduler/plugin/tooltip-plugin.mjs +103 -0
- package/esm2022/scheduler/scheduler-engine.mjs +316 -0
- package/esm2022/scheduler/utils/date-utils.mjs +131 -0
- package/esm2022/scheduler/utils/index.mjs +3 -0
- package/esm2022/scheduler/utils/snap.mjs +24 -0
- package/esm2022/scroll-lock/scroll-lock.mjs +22 -5
- package/esm2022/skip-link/index.mjs +2 -0
- package/esm2022/skip-link/ngxsmk-cdk-skip-link.mjs +5 -0
- package/esm2022/skip-link/skip-link.mjs +33 -0
- package/esm2022/spreadsheet/index.mjs +5 -0
- package/esm2022/spreadsheet/models/cell.model.mjs +2 -0
- package/esm2022/spreadsheet/models/column.model.mjs +2 -0
- package/esm2022/spreadsheet/models/filter.model.mjs +2 -0
- package/esm2022/spreadsheet/models/formula.model.mjs +2 -0
- package/esm2022/spreadsheet/models/index.mjs +8 -0
- package/esm2022/spreadsheet/models/row.model.mjs +2 -0
- package/esm2022/spreadsheet/models/selection.model.mjs +2 -0
- package/esm2022/spreadsheet/models/sort.model.mjs +2 -0
- package/esm2022/spreadsheet/ngxsmk-cdk-spreadsheet.mjs +5 -0
- package/esm2022/spreadsheet/plugin/clipboard-plugin.mjs +171 -0
- package/esm2022/spreadsheet/plugin/filter-plugin.mjs +87 -0
- package/esm2022/spreadsheet/plugin/formula-plugin.mjs +456 -0
- package/esm2022/spreadsheet/plugin/index.mjs +10 -0
- package/esm2022/spreadsheet/plugin/plugin-host.mjs +188 -0
- package/esm2022/spreadsheet/plugin/plugin.types.mjs +2 -0
- package/esm2022/spreadsheet/plugin/selection-plugin.mjs +114 -0
- package/esm2022/spreadsheet/plugin/sort-plugin.mjs +63 -0
- package/esm2022/spreadsheet/plugin/undo-plugin.mjs +138 -0
- package/esm2022/spreadsheet/plugin/validation-plugin.mjs +71 -0
- package/esm2022/spreadsheet/spreadsheet-engine.mjs +547 -0
- package/esm2022/spreadsheet/utils/cell-utils.mjs +129 -0
- package/esm2022/spreadsheet/utils/index.mjs +2 -0
- package/fesm2022/ngxsmk-cdk-cva-base.mjs +52 -0
- package/fesm2022/ngxsmk-cdk-cva-base.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-input-group.mjs +226 -0
- package/fesm2022/ngxsmk-cdk-input-group.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs +152 -0
- package/fesm2022/ngxsmk-cdk-listbox-keyboard.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-roving-focus.mjs +183 -0
- package/fesm2022/ngxsmk-cdk-roving-focus.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-scheduler.mjs +1035 -0
- package/fesm2022/ngxsmk-cdk-scheduler.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-scroll-lock.mjs +21 -4
- package/fesm2022/ngxsmk-cdk-scroll-lock.mjs.map +1 -1
- package/fesm2022/ngxsmk-cdk-skip-link.mjs +40 -0
- package/fesm2022/ngxsmk-cdk-skip-link.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk-spreadsheet.mjs +1969 -0
- package/fesm2022/ngxsmk-cdk-spreadsheet.mjs.map +1 -0
- package/fesm2022/ngxsmk-cdk.mjs +5 -0
- package/fesm2022/ngxsmk-cdk.mjs.map +1 -1
- package/input-group/index.d.ts +3 -0
- package/input-group/index.d.ts.map +1 -0
- package/input-group/input-group-engine.d.ts +88 -0
- package/input-group/input-group-engine.d.ts.map +1 -0
- package/input-group/models/index.d.ts +2 -0
- package/input-group/models/index.d.ts.map +1 -0
- package/input-group/models/input-group.model.d.ts +114 -0
- package/input-group/models/input-group.model.d.ts.map +1 -0
- package/input-group/ngxsmk-cdk-input-group.d.ts.map +1 -0
- package/listbox-keyboard/index.d.ts +2 -0
- package/listbox-keyboard/index.d.ts.map +1 -0
- package/listbox-keyboard/listbox-keyboard.d.ts +60 -0
- package/listbox-keyboard/listbox-keyboard.d.ts.map +1 -0
- package/listbox-keyboard/ngxsmk-cdk-listbox-keyboard.d.ts.map +1 -0
- package/package.json +59 -17
- package/public-api.d.ts +8 -0
- package/public-api.d.ts.map +1 -1
- package/roving-focus/index.d.ts +2 -0
- package/roving-focus/index.d.ts.map +1 -0
- package/roving-focus/ngxsmk-cdk-roving-focus.d.ts.map +1 -0
- package/roving-focus/roving-focus.d.ts +61 -0
- package/roving-focus/roving-focus.d.ts.map +1 -0
- package/scheduler/index.d.ts +5 -0
- package/scheduler/index.d.ts.map +1 -0
- package/scheduler/models/date-range.d.ts +6 -0
- package/scheduler/models/date-range.d.ts.map +1 -0
- package/scheduler/models/event.model.d.ts +50 -0
- package/scheduler/models/event.model.d.ts.map +1 -0
- package/scheduler/models/index.d.ts +6 -0
- package/scheduler/models/index.d.ts.map +1 -0
- package/scheduler/models/resource.model.d.ts +16 -0
- package/scheduler/models/resource.model.d.ts.map +1 -0
- package/scheduler/models/selection.model.d.ts +12 -0
- package/scheduler/models/selection.model.d.ts.map +1 -0
- package/scheduler/models/view.model.d.ts +21 -0
- package/scheduler/models/view.model.d.ts.map +1 -0
- package/scheduler/ngxsmk-cdk-scheduler.d.ts.map +1 -0
- package/scheduler/plugin/drag-plugin.d.ts +28 -0
- package/scheduler/plugin/drag-plugin.d.ts.map +1 -0
- package/scheduler/plugin/index.d.ts +8 -0
- package/scheduler/plugin/index.d.ts.map +1 -0
- package/scheduler/plugin/keyboard-plugin.d.ts +24 -0
- package/scheduler/plugin/keyboard-plugin.d.ts.map +1 -0
- package/scheduler/plugin/plugin-host.d.ts +16 -0
- package/scheduler/plugin/plugin-host.d.ts.map +1 -0
- package/scheduler/plugin/plugin.types.d.ts +9 -0
- package/scheduler/plugin/plugin.types.d.ts.map +1 -0
- package/scheduler/plugin/resize-plugin.d.ts +26 -0
- package/scheduler/plugin/resize-plugin.d.ts.map +1 -0
- package/scheduler/plugin/selection-plugin.d.ts +40 -0
- package/scheduler/plugin/selection-plugin.d.ts.map +1 -0
- package/scheduler/plugin/tooltip-plugin.d.ts +41 -0
- package/scheduler/plugin/tooltip-plugin.d.ts.map +1 -0
- package/scheduler/scheduler-engine.d.ts +95 -0
- package/scheduler/scheduler-engine.d.ts.map +1 -0
- package/scheduler/utils/date-utils.d.ts +26 -0
- package/scheduler/utils/date-utils.d.ts.map +1 -0
- package/scheduler/utils/index.d.ts +3 -0
- package/scheduler/utils/index.d.ts.map +1 -0
- package/scheduler/utils/snap.d.ts +7 -0
- package/scheduler/utils/snap.d.ts.map +1 -0
- package/scroll-lock/scroll-lock.d.ts +2 -0
- package/scroll-lock/scroll-lock.d.ts.map +1 -1
- package/skip-link/index.d.ts +2 -0
- package/skip-link/index.d.ts.map +1 -0
- package/skip-link/ngxsmk-cdk-skip-link.d.ts.map +1 -0
- package/skip-link/skip-link.d.ts +18 -0
- package/skip-link/skip-link.d.ts.map +1 -0
- package/spreadsheet/index.d.ts +5 -0
- package/spreadsheet/index.d.ts.map +1 -0
- package/spreadsheet/models/cell.model.d.ts +44 -0
- package/spreadsheet/models/cell.model.d.ts.map +1 -0
- package/spreadsheet/models/column.model.d.ts +77 -0
- package/spreadsheet/models/column.model.d.ts.map +1 -0
- package/spreadsheet/models/filter.model.d.ts +15 -0
- package/spreadsheet/models/filter.model.d.ts.map +1 -0
- package/spreadsheet/models/formula.model.d.ts +65 -0
- package/spreadsheet/models/formula.model.d.ts.map +1 -0
- package/spreadsheet/models/index.d.ts +8 -0
- package/spreadsheet/models/index.d.ts.map +1 -0
- package/spreadsheet/models/row.model.d.ts +33 -0
- package/spreadsheet/models/row.model.d.ts.map +1 -0
- package/spreadsheet/models/selection.model.d.ts +18 -0
- package/spreadsheet/models/selection.model.d.ts.map +1 -0
- package/spreadsheet/models/sort.model.d.ts +14 -0
- package/spreadsheet/models/sort.model.d.ts.map +1 -0
- package/spreadsheet/ngxsmk-cdk-spreadsheet.d.ts.map +1 -0
- package/spreadsheet/plugin/clipboard-plugin.d.ts +24 -0
- package/spreadsheet/plugin/clipboard-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/filter-plugin.d.ts +21 -0
- package/spreadsheet/plugin/filter-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/formula-plugin.d.ts +39 -0
- package/spreadsheet/plugin/formula-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/index.d.ts +10 -0
- package/spreadsheet/plugin/index.d.ts.map +1 -0
- package/spreadsheet/plugin/plugin-host.d.ts +66 -0
- package/spreadsheet/plugin/plugin-host.d.ts.map +1 -0
- package/spreadsheet/plugin/plugin.types.d.ts +58 -0
- package/spreadsheet/plugin/plugin.types.d.ts.map +1 -0
- package/spreadsheet/plugin/selection-plugin.d.ts +28 -0
- package/spreadsheet/plugin/selection-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/sort-plugin.d.ts +18 -0
- package/spreadsheet/plugin/sort-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/undo-plugin.d.ts +40 -0
- package/spreadsheet/plugin/undo-plugin.d.ts.map +1 -0
- package/spreadsheet/plugin/validation-plugin.d.ts +29 -0
- package/spreadsheet/plugin/validation-plugin.d.ts.map +1 -0
- package/spreadsheet/spreadsheet-engine.d.ts +194 -0
- package/spreadsheet/spreadsheet-engine.d.ts.map +1 -0
- package/spreadsheet/utils/cell-utils.d.ts +26 -0
- package/spreadsheet/utils/cell-utils.d.ts.map +1 -0
- package/spreadsheet/utils/index.d.ts +2 -0
- package/spreadsheet/utils/index.d.ts.map +1 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Injectable } from '@angular/core';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
export class PluginHost {
|
|
4
|
+
constructor() {
|
|
5
|
+
this._plugins = new Map();
|
|
6
|
+
this._engine = null;
|
|
7
|
+
}
|
|
8
|
+
register(engine, plugins) {
|
|
9
|
+
this._engine = engine;
|
|
10
|
+
const sorted = [...plugins].sort((a, b) => (a.priority ?? 100) - (b.priority ?? 100));
|
|
11
|
+
for (const plugin of sorted) {
|
|
12
|
+
if (this._plugins.has(plugin.name))
|
|
13
|
+
continue;
|
|
14
|
+
this._plugins.set(plugin.name, plugin);
|
|
15
|
+
plugin.onInit?.(engine);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
unregister(name) {
|
|
19
|
+
const plugin = this._plugins.get(name);
|
|
20
|
+
if (plugin) {
|
|
21
|
+
plugin.onDestroy?.();
|
|
22
|
+
this._plugins.delete(name);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
notifyRender() {
|
|
26
|
+
for (const plugin of this._plugins.values()) {
|
|
27
|
+
plugin.onRender?.();
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
destroy() {
|
|
31
|
+
for (const plugin of this._plugins.values()) {
|
|
32
|
+
plugin.onDestroy?.();
|
|
33
|
+
}
|
|
34
|
+
this._plugins.clear();
|
|
35
|
+
}
|
|
36
|
+
has(name) {
|
|
37
|
+
return this._plugins.has(name);
|
|
38
|
+
}
|
|
39
|
+
get(name) {
|
|
40
|
+
return this._plugins.get(name);
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginHost, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginHost }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PluginHost, decorators: [{
|
|
46
|
+
type: Injectable
|
|
47
|
+
}] });
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLWhvc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL3BsdWdpbi9wbHVnaW4taG9zdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDOztBQUszQyxNQUFNLE9BQU8sVUFBVTtJQUR2QjtRQUVVLGFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztRQUM5QyxZQUFPLEdBQTJCLElBQUksQ0FBQztLQXdDaEQ7SUF0Q0MsUUFBUSxDQUFDLE1BQXVCLEVBQUUsT0FBMEI7UUFDMUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0RixLQUFLLE1BQU0sTUFBTSxJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQzVCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFBRSxTQUFTO1lBQzdDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDdkMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBRUQsVUFBVSxDQUFDLElBQVk7UUFDckIsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkMsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1lBQ3JCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDO0lBRUQsWUFBWTtRQUNWLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1FBQ3RCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDO1lBQzVDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFDRCxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxHQUFHLENBQUMsSUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVELEdBQUcsQ0FBQyxJQUFZO1FBQ2QsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNqQyxDQUFDOzhHQXpDVSxVQUFVO2tIQUFWLFVBQVU7OzJGQUFWLFVBQVU7a0JBRHRCLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJQbHVnaW4gfSBmcm9tICcuL3BsdWdpbi50eXBlcyc7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBQbHVnaW5Ib3N0IHtcbiAgcHJpdmF0ZSBfcGx1Z2lucyA9IG5ldyBNYXA8c3RyaW5nLCBTY2hlZHVsZXJQbHVnaW4+KCk7XG4gIHByaXZhdGUgX2VuZ2luZTogU2NoZWR1bGVyRW5naW5lIHwgbnVsbCA9IG51bGw7XG5cbiAgcmVnaXN0ZXIoZW5naW5lOiBTY2hlZHVsZXJFbmdpbmUsIHBsdWdpbnM6IFNjaGVkdWxlclBsdWdpbltdKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lID0gZW5naW5lO1xuICAgIGNvbnN0IHNvcnRlZCA9IFsuLi5wbHVnaW5zXS5zb3J0KChhLCBiKSA9PiAoYS5wcmlvcml0eSA/PyAxMDApIC0gKGIucHJpb3JpdHkgPz8gMTAwKSk7XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2Ygc29ydGVkKSB7XG4gICAgICBpZiAodGhpcy5fcGx1Z2lucy5oYXMocGx1Z2luLm5hbWUpKSBjb250aW51ZTtcbiAgICAgIHRoaXMuX3BsdWdpbnMuc2V0KHBsdWdpbi5uYW1lLCBwbHVnaW4pO1xuICAgICAgcGx1Z2luLm9uSW5pdD8uKGVuZ2luZSk7XG4gICAgfVxuICB9XG5cbiAgdW5yZWdpc3RlcihuYW1lOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBwbHVnaW4gPSB0aGlzLl9wbHVnaW5zLmdldChuYW1lKTtcbiAgICBpZiAocGx1Z2luKSB7XG4gICAgICBwbHVnaW4ub25EZXN0cm95Py4oKTtcbiAgICAgIHRoaXMuX3BsdWdpbnMuZGVsZXRlKG5hbWUpO1xuICAgIH1cbiAgfVxuXG4gIG5vdGlmeVJlbmRlcigpOiB2b2lkIHtcbiAgICBmb3IgKGNvbnN0IHBsdWdpbiBvZiB0aGlzLl9wbHVnaW5zLnZhbHVlcygpKSB7XG4gICAgICBwbHVnaW4ub25SZW5kZXI/LigpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Ryb3koKTogdm9pZCB7XG4gICAgZm9yIChjb25zdCBwbHVnaW4gb2YgdGhpcy5fcGx1Z2lucy52YWx1ZXMoKSkge1xuICAgICAgcGx1Z2luLm9uRGVzdHJveT8uKCk7XG4gICAgfVxuICAgIHRoaXMuX3BsdWdpbnMuY2xlYXIoKTtcbiAgfVxuXG4gIGhhcyhuYW1lOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5fcGx1Z2lucy5oYXMobmFtZSk7XG4gIH1cblxuICBnZXQobmFtZTogc3RyaW5nKTogU2NoZWR1bGVyUGx1Z2luIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fcGx1Z2lucy5nZXQobmFtZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGx1Z2luLnR5cGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY2RrL3NjaGVkdWxlci9wbHVnaW4vcGx1Z2luLnR5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjaGVkdWxlclBsdWdpbiB7XG4gIG5hbWU6IHN0cmluZztcbiAgcHJpb3JpdHk/OiBudW1iZXI7XG4gIG9uSW5pdD8oZW5naW5lOiBTY2hlZHVsZXJFbmdpbmUpOiB2b2lkO1xuICBvbkRlc3Ryb3k/KCk6IHZvaWQ7XG4gIG9uUmVuZGVyPygpOiB2b2lkO1xufVxuIl19
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
export class ResizePlugin {
|
|
2
|
+
constructor(options = {}) {
|
|
3
|
+
this.name = 'resize';
|
|
4
|
+
this.priority = 11;
|
|
5
|
+
this._resizing = null;
|
|
6
|
+
this._options = options;
|
|
7
|
+
}
|
|
8
|
+
onInit(engine) {
|
|
9
|
+
this._engine = engine;
|
|
10
|
+
}
|
|
11
|
+
onDestroy() {
|
|
12
|
+
this._resizing = null;
|
|
13
|
+
}
|
|
14
|
+
startResize(eventId) {
|
|
15
|
+
const event = this._engine.events().find((e) => e.id === eventId);
|
|
16
|
+
if (!event || event.resizable === false)
|
|
17
|
+
return false;
|
|
18
|
+
if (this._options.onResizeStart && !this._options.onResizeStart(event))
|
|
19
|
+
return false;
|
|
20
|
+
this._resizing = { eventId, originEnd: new Date(event.end) };
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
moveResize(pointerY, dayEl) {
|
|
24
|
+
if (!this._resizing)
|
|
25
|
+
return null;
|
|
26
|
+
const event = this._engine.events().find((e) => e.id === this._resizing.eventId);
|
|
27
|
+
if (!event)
|
|
28
|
+
return null;
|
|
29
|
+
const hh = this._engine.hourHeight();
|
|
30
|
+
const scrollTop = dayEl.closest('.ngxsmk-sch__scroll')?.scrollTop ?? 0;
|
|
31
|
+
const colTop = dayEl.getBoundingClientRect().top;
|
|
32
|
+
const rawY = pointerY - colTop + scrollTop;
|
|
33
|
+
const snap = this._options.snapDuration ?? this._engine.viewState().snapDuration;
|
|
34
|
+
const snapPx = (snap / 60) * hh;
|
|
35
|
+
const y = Math.max(this._engine.eventTop(event) + snapPx, Math.round(rawY / snapPx) * snapPx);
|
|
36
|
+
const minutes = (y / hh) * 60;
|
|
37
|
+
const newEnd = new Date(event.start);
|
|
38
|
+
newEnd.setHours(0, 0, 0, 0);
|
|
39
|
+
newEnd.setMinutes(minutes);
|
|
40
|
+
const minDur = this._options.minDuration ?? 15;
|
|
41
|
+
if (newEnd.getTime() - event.start.getTime() < minDur * 60_000) {
|
|
42
|
+
newEnd.setTime(event.start.getTime() + minDur * 60_000);
|
|
43
|
+
}
|
|
44
|
+
return newEnd;
|
|
45
|
+
}
|
|
46
|
+
endResize() {
|
|
47
|
+
if (!this._resizing)
|
|
48
|
+
return null;
|
|
49
|
+
const event = this._engine.events().find((e) => e.id === this._resizing.eventId);
|
|
50
|
+
if (!event) {
|
|
51
|
+
this._resizing = null;
|
|
52
|
+
return null;
|
|
53
|
+
}
|
|
54
|
+
const resize = {
|
|
55
|
+
event,
|
|
56
|
+
oldEnd: this._resizing.originEnd,
|
|
57
|
+
newEnd: event.end,
|
|
58
|
+
};
|
|
59
|
+
this._engine.resizeEvent(event.id, event.end);
|
|
60
|
+
this._options.onResizeEnd?.(resize);
|
|
61
|
+
this._resizing = null;
|
|
62
|
+
return resize;
|
|
63
|
+
}
|
|
64
|
+
cancelResize() {
|
|
65
|
+
this._resizing = null;
|
|
66
|
+
}
|
|
67
|
+
get resizing() {
|
|
68
|
+
return this._resizing !== null;
|
|
69
|
+
}
|
|
70
|
+
get resizingEventId() {
|
|
71
|
+
return this._resizing?.eventId ?? null;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY2hlZHVsZXIvcGx1Z2luL3Jlc2l6ZS1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBV0EsTUFBTSxPQUFPLFlBQVk7SUFXdkIsWUFBWSxVQUErQixFQUFFO1FBVnBDLFNBQUksR0FBRyxRQUFRLENBQUM7UUFDaEIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUlmLGNBQVMsR0FHTixJQUFJLENBQUM7UUFHZCxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXVCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO0lBQ3hCLENBQUM7SUFFRCxTQUFTO1FBQ1AsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVcsQ0FBQyxPQUFlO1FBQ3pCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLE9BQU8sQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQUUsT0FBTyxLQUFLLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDLGFBQWEsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztZQUFFLE9BQU8sS0FBSyxDQUFDO1FBRXJGLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxPQUFPLEVBQUUsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzdELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVE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QUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM5QyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxZQUFZO1FBQ1YsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLFNBQVMsS0FBSyxJQUFJLENBQUM7SUFDakMsQ0FBQztJQUVELElBQUksZUFBZTtRQUNqQixPQUFPLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxJQUFJLElBQUksQ0FBQztJQUN6QyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFdmVudCwgU2NoZWR1bGVyUmVzaXplIH0gZnJvbSAnLi4vbW9kZWxzJztcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyUGx1Z2luIH0gZnJvbSAnLi9wbHVnaW4udHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc2l6ZVBsdWdpbk9wdGlvbnMge1xuICBzbmFwRHVyYXRpb24/OiBudW1iZXI7XG4gIG1pbkR1cmF0aW9uPzogbnVtYmVyO1xuICBvblJlc2l6ZVN0YXJ0PzogKGV2ZW50OiBTY2hlZHVsZXJFdmVudCkgPT4gYm9vbGVhbjtcbiAgb25SZXNpemVFbmQ/OiAocmVzaXplOiBTY2hlZHVsZXJSZXNpemUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSZXNpemVQbHVnaW4gaW1wbGVtZW50cyBTY2hlZHVsZXJQbHVnaW4ge1xuICByZWFkb25seSBuYW1lID0gJ3Jlc2l6ZSc7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gMTE7XG5cbiAgcHJpdmF0ZSBfZW5naW5lITogU2NoZWR1bGVyRW5naW5lO1xuICBwcml2YXRlIF9vcHRpb25zOiBSZXNpemVQbHVnaW5PcHRpb25zO1xuICBwcml2YXRlIF9yZXNpemluZzoge1xuICAgIGV2ZW50SWQ6IHN0cmluZztcbiAgICBvcmlnaW5FbmQ6IERhdGU7XG4gIH0gfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBSZXNpemVQbHVnaW5PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIG9uSW5pdChlbmdpbmU6IFNjaGVkdWxlckVuZ2luZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZ2luZSA9IGVuZ2luZTtcbiAgfVxuXG4gIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLl9yZXNpemluZyA9IG51bGw7XG4gIH1cblxuICBzdGFydFJlc2l6ZShldmVudElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBjb25zdCBldmVudCA9IHRoaXMuX2VuZ2luZS5ldmVudHMoKS5maW5kKChlKSA9PiBlLmlkID09PSBldmVudElkKTtcbiAgICBpZiAoIWV2ZW50IHx8IGV2ZW50LnJlc2l6YWJsZSA9PT0gZmFsc2UpIHJldHVybiBmYWxzZTtcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5vblJlc2l6ZVN0YXJ0ICYmICF0aGlzLl9vcHRpb25zLm9uUmVzaXplU3RhcnQoZXZlbnQpKSByZXR1cm4gZmFsc2U7XG5cbiAgICB0aGlzLl9yZXNpemluZyA9IHsgZXZlbnRJZCwgb3JpZ2luRW5kOiBuZXcgRGF0ZShldmVudC5lbmQpIH07XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBtb3ZlUmVzaXplKHBvaW50ZXJZOiBudW1iZXIsIGRheUVsOiBIVE1MRWxlbWVudCk6IERhdGUgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3Jlc2l6aW5nKSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGV2ZW50ID0gdGhpcy5fZW5naW5lLmV2ZW50cygpLmZpbmQoKGUpID0+IGUuaWQgPT09IHRoaXMuX3Jlc2l6aW5nIS5ldmVudElkKTtcbiAgICBpZiAoIWV2ZW50KSByZXR1cm4gbnVsbDtcblxuICAgIGNvbnN0IGhoID0gdGhpcy5fZW5naW5lLmhvdXJIZWlnaHQoKTtcbiAgICBjb25zdCBzY3JvbGxUb3AgPSBkYXlFbC5jbG9zZXN0KCcubmd4c21rLXNjaF9fc2Nyb2xsJyk/LnNjcm9sbFRvcCA/PyAwO1xuICAgIGNvbnN0IGNvbFRvcCA9IGRheUVsLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcDtcbiAgICBjb25zdCByYXdZID0gcG9pbnRlclkgLSBjb2xUb3AgKyBzY3JvbGxUb3A7XG4gICAgY29uc3Qgc25hcCA9IHRoaXMuX29wdGlvbnMuc25hcER1cmF0aW9uID8/IHRoaXMuX2VuZ2luZS52aWV3U3RhdGUoKS5zbmFwRHVyYXRpb247XG4gICAgY29uc3Qgc25hcFB4ID0gKHNuYXAgLyA2MCkgKiBoaDtcbiAgICBjb25zdCB5ID0gTWF0aC5tYXgodGhpcy5fZW5naW5lLmV2ZW50VG9wKGV2ZW50KSArIHNuYXBQeCwgTWF0aC5yb3VuZChyYXdZIC8gc25hcFB4KSAqIHNuYXBQeCk7XG5cbiAgICBjb25zdCBtaW51dGVzID0gKHkgLyBoaCkgKiA2MDtcbiAgICBjb25zdCBuZXdFbmQgPSBuZXcgRGF0ZShldmVudC5zdGFydCk7XG4gICAgbmV3RW5kLnNldEhvdXJzKDAsIDAsIDAsIDApO1xuICAgIG5ld0VuZC5zZXRNaW51dGVzKG1pbnV0ZXMpO1xuXG4gICAgY29uc3QgbWluRHVyID0gdGhpcy5fb3B0aW9ucy5taW5EdXJhdGlvbiA/PyAxNTtcbiAgICBpZiAobmV3RW5kLmdldFRpbWUoKSAtIGV2ZW50LnN0YXJ0LmdldFRpbWUoKSA8IG1pbkR1ciAqIDYwXzAwMCkge1xuICAgICAgbmV3RW5kLnNldFRpbWUoZXZlbnQuc3RhcnQuZ2V0VGltZSgpICsgbWluRHVyICogNjBfMDAwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3RW5kO1xuICB9XG5cbiAgZW5kUmVzaXplKCk6IFNjaGVkdWxlclJlc2l6ZSB8IG51bGwge1xuICAgIGlmICghdGhpcy5fcmVzaXppbmcpIHJldHVybiBudWxsO1xuXG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9lbmdpbmUuZXZlbnRzKCkuZmluZCgoZSkgPT4gZS5pZCA9PT0gdGhpcy5fcmVzaXppbmchLmV2ZW50SWQpO1xuICAgIGlmICghZXZlbnQpIHtcbiAgICAgIHRoaXMuX3Jlc2l6aW5nID0gbnVsbDtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc2l6ZTogU2NoZWR1bGVyUmVzaXplID0ge1xuICAgICAgZXZlbnQsXG4gICAgICBvbGRFbmQ6IHRoaXMuX3Jlc2l6aW5nLm9yaWdpbkVuZCxcbiAgICAgIG5ld0VuZDogZXZlbnQuZW5kLFxuICAgIH07XG5cbiAgICB0aGlzLl9lbmdpbmUucmVzaXplRXZlbnQoZXZlbnQuaWQsIGV2ZW50LmVuZCk7XG4gICAgdGhpcy5fb3B0aW9ucy5vblJlc2l6ZUVuZD8uKHJlc2l6ZSk7XG4gICAgdGhpcy5fcmVzaXppbmcgPSBudWxsO1xuICAgIHJldHVybiByZXNpemU7XG4gIH1cblxuICBjYW5jZWxSZXNpemUoKTogdm9pZCB7XG4gICAgdGhpcy5fcmVzaXppbmcgPSBudWxsO1xuICB9XG5cbiAgZ2V0IHJlc2l6aW5nKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLl9yZXNpemluZyAhPT0gbnVsbDtcbiAgfVxuXG4gIGdldCByZXNpemluZ0V2ZW50SWQoKTogc3RyaW5nIHwgbnVsbCB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc2l6aW5nPy5ldmVudElkID8/IG51bGw7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
export class SelectionPlugin {
|
|
2
|
+
constructor(options = {}) {
|
|
3
|
+
this.name = 'selection';
|
|
4
|
+
this.priority = 5;
|
|
5
|
+
this._rangeSelecting = false;
|
|
6
|
+
this._rangeStart = null;
|
|
7
|
+
this._options = options;
|
|
8
|
+
}
|
|
9
|
+
onInit(engine) {
|
|
10
|
+
this._engine = engine;
|
|
11
|
+
if (this._options.multiSelect) {
|
|
12
|
+
this._engine.selection.update((s) => ({ ...s, multiSelect: true }));
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
onDestroy() {
|
|
16
|
+
this._rangeSelecting = false;
|
|
17
|
+
this._rangeStart = null;
|
|
18
|
+
}
|
|
19
|
+
toggleEvent(eventId, modifierKey = false) {
|
|
20
|
+
const multi = this._options.multiSelect && modifierKey;
|
|
21
|
+
this._engine.selectEvent(eventId, multi);
|
|
22
|
+
const selectedIds = this._engine.selection().selectedEventIds;
|
|
23
|
+
const selectedEvents = this._engine.events().filter((e) => selectedIds.has(e.id));
|
|
24
|
+
if (selectedIds.has(eventId)) {
|
|
25
|
+
this._options.onSelect?.(selectedEvents);
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
this._options.onDeselect?.(selectedEvents);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
selectOnly(eventId) {
|
|
32
|
+
this._engine.clearSelection();
|
|
33
|
+
this._engine.selectEvent(eventId);
|
|
34
|
+
const event = this._engine.events().find((e) => e.id === eventId);
|
|
35
|
+
if (event)
|
|
36
|
+
this._options.onSelect?.([event]);
|
|
37
|
+
}
|
|
38
|
+
selectRange(start, end) {
|
|
39
|
+
this._engine.selectRange(start, end);
|
|
40
|
+
this._options.onRangeSelect?.(start, end);
|
|
41
|
+
}
|
|
42
|
+
startRangeSelect(date) {
|
|
43
|
+
this._rangeSelecting = true;
|
|
44
|
+
this._rangeStart = date;
|
|
45
|
+
}
|
|
46
|
+
updateRangeSelect(date) {
|
|
47
|
+
if (!this._rangeSelecting || !this._rangeStart)
|
|
48
|
+
return;
|
|
49
|
+
const s = this._rangeStart < date ? this._rangeStart : date;
|
|
50
|
+
const e = this._rangeStart < date ? date : this._rangeStart;
|
|
51
|
+
this._engine.selectRange(s, e);
|
|
52
|
+
}
|
|
53
|
+
endRangeSelect() {
|
|
54
|
+
if (!this._rangeSelecting || !this._rangeStart)
|
|
55
|
+
return null;
|
|
56
|
+
const range = this._engine.selection().selectedRange;
|
|
57
|
+
this._rangeSelecting = false;
|
|
58
|
+
this._rangeStart = null;
|
|
59
|
+
return range;
|
|
60
|
+
}
|
|
61
|
+
selectAll() {
|
|
62
|
+
const all = this._engine.events();
|
|
63
|
+
this._engine.selection.update((s) => ({
|
|
64
|
+
...s,
|
|
65
|
+
selectedEventIds: new Set(all.map((e) => e.id)),
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
clearSelection() {
|
|
69
|
+
this._engine.clearSelection();
|
|
70
|
+
}
|
|
71
|
+
get selectedIds() {
|
|
72
|
+
return this._engine.selection().selectedEventIds;
|
|
73
|
+
}
|
|
74
|
+
get selectedCount() {
|
|
75
|
+
return this._engine.selection().selectedEventIds.size;
|
|
76
|
+
}
|
|
77
|
+
get hasSelection() {
|
|
78
|
+
return this._engine.selection().selectedEventIds.size > 0;
|
|
79
|
+
}
|
|
80
|
+
get isRangeSelecting() {
|
|
81
|
+
return this._rangeSelecting;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0aW9uLXBsdWdpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2Nkay9zY2hlZHVsZXIvcGx1Z2luL3NlbGVjdGlvbi1wbHVnaW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsTUFBTSxPQUFPLGVBQWU7SUFTMUIsWUFBWSxVQUFrQyxFQUFFO1FBUnZDLFNBQUksR0FBRyxXQUFXLENBQUM7UUFDbkIsYUFBUSxHQUFHLENBQUMsQ0FBQztRQUlkLG9CQUFlLEdBQUcsS0FBSyxDQUFDO1FBQ3hCLGdCQUFXLEdBQWdCLElBQUksQ0FBQztRQUd0QyxJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQXVCO1FBQzVCLElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBTSxDQUFDO1FBQ3RCLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUM5QixJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7SUFDSCxDQUFDO0lBRUQsU0FBUztRQUNQLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO0lBQzFCLENBQUM7SUFFRCxXQUFXLENBQUMsT0FBZSxFQUFFLFdBQVcsR0FBRyxLQUFLO1FBQzlDLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQztRQUN2RCxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFekMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztRQUM5RCxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUVsRixJQUFJLFdBQVcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzNDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELFVBQVUsQ0FBQyxPQUFlO1FBQ3hCLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbEMsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEtBQUssT0FBTyxDQUFDLENBQUM7UUFDbEUsSUFBSSxLQUFLO1lBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVELFdBQVcsQ0FBQyxLQUFXLEVBQUUsR0FBUztRQUNoQyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxhQUFhLEVBQUUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELGdCQUFnQixDQUFDLElBQVU7UUFDekIsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDMUIsQ0FBQztJQUVELGlCQUFpQixDQUFDLElBQVU7UUFDMUIsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE9BQU87UUFDdkQsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUM1RCxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQzVELElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBRUQsY0FBYztRQUNaLElBQUksQ0FBQyxJQUFJLENBQUMsZUFBZSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFBRSxPQUFPLElBQUksQ0FBQztRQUM1RCxNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLGFBQWEsQ0FBQztRQUNyRCxJQUFJLENBQUMsZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxTQUFTO1FBQ1AsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDcEMsR0FBRyxDQUFDO1lBQ0osZ0JBQWdCLEVBQUUsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1NBQ2hELENBQUMsQ0FBQyxDQUFDO0lBQ04sQ0FBQztJQUVELGNBQWM7UUFDWixJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBQ2hDLENBQUM7SUFFRCxJQUFJLFdBQVc7UUFDYixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUMsZ0JBQWdCLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUM7SUFDeEQsQ0FBQztJQUVELElBQUksWUFBWTtRQUNkLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFRCxJQUFJLGdCQUFnQjtRQUNsQixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUM7SUFDOUIsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFbmdpbmUgfSBmcm9tICcuLi9zY2hlZHVsZXItZW5naW5lJztcbmltcG9ydCB0eXBlIHsgU2NoZWR1bGVyRXZlbnQgfSBmcm9tICcuLi9tb2RlbHMnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJQbHVnaW4gfSBmcm9tICcuL3BsdWdpbi50eXBlcyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VsZWN0aW9uUGx1Z2luT3B0aW9ucyB7XG4gIG11bHRpU2VsZWN0PzogYm9vbGVhbjtcbiAgcmFuZ2VTZWxlY3Q/OiBib29sZWFuO1xuICBvblNlbGVjdD86IChldmVudHM6IFNjaGVkdWxlckV2ZW50W10pID0+IHZvaWQ7XG4gIG9uRGVzZWxlY3Q/OiAoZXZlbnRzOiBTY2hlZHVsZXJFdmVudFtdKSA9PiB2b2lkO1xuICBvblJhbmdlU2VsZWN0PzogKHN0YXJ0OiBEYXRlLCBlbmQ6IERhdGUpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBjbGFzcyBTZWxlY3Rpb25QbHVnaW4gaW1wbGVtZW50cyBTY2hlZHVsZXJQbHVnaW4ge1xuICByZWFkb25seSBuYW1lID0gJ3NlbGVjdGlvbic7XG4gIHJlYWRvbmx5IHByaW9yaXR5ID0gNTtcblxuICBwcml2YXRlIF9lbmdpbmUhOiBTY2hlZHVsZXJFbmdpbmU7XG4gIHByaXZhdGUgX29wdGlvbnM6IFNlbGVjdGlvblBsdWdpbk9wdGlvbnM7XG4gIHByaXZhdGUgX3JhbmdlU2VsZWN0aW5nID0gZmFsc2U7XG4gIHByaXZhdGUgX3JhbmdlU3RhcnQ6IERhdGUgfCBudWxsID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTZWxlY3Rpb25QbHVnaW5PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9vcHRpb25zID0gb3B0aW9ucztcbiAgfVxuXG4gIG9uSW5pdChlbmdpbmU6IFNjaGVkdWxlckVuZ2luZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZ2luZSA9IGVuZ2luZTtcbiAgICBpZiAodGhpcy5fb3B0aW9ucy5tdWx0aVNlbGVjdCkge1xuICAgICAgdGhpcy5fZW5naW5lLnNlbGVjdGlvbi51cGRhdGUoKHMpID0+ICh7IC4uLnMsIG11bHRpU2VsZWN0OiB0cnVlIH0pKTtcbiAgICB9XG4gIH1cblxuICBvbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5fcmFuZ2VTZWxlY3RpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yYW5nZVN0YXJ0ID0gbnVsbDtcbiAgfVxuXG4gIHRvZ2dsZUV2ZW50KGV2ZW50SWQ6IHN0cmluZywgbW9kaWZpZXJLZXkgPSBmYWxzZSk6IHZvaWQge1xuICAgIGNvbnN0IG11bHRpID0gdGhpcy5fb3B0aW9ucy5tdWx0aVNlbGVjdCAmJiBtb2RpZmllcktleTtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0RXZlbnQoZXZlbnRJZCwgbXVsdGkpO1xuXG4gICAgY29uc3Qgc2VsZWN0ZWRJZHMgPSB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uKCkuc2VsZWN0ZWRFdmVudElkcztcbiAgICBjb25zdCBzZWxlY3RlZEV2ZW50cyA9IHRoaXMuX2VuZ2luZS5ldmVudHMoKS5maWx0ZXIoKGUpID0+IHNlbGVjdGVkSWRzLmhhcyhlLmlkKSk7XG5cbiAgICBpZiAoc2VsZWN0ZWRJZHMuaGFzKGV2ZW50SWQpKSB7XG4gICAgICB0aGlzLl9vcHRpb25zLm9uU2VsZWN0Py4oc2VsZWN0ZWRFdmVudHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9vcHRpb25zLm9uRGVzZWxlY3Q/LihzZWxlY3RlZEV2ZW50cyk7XG4gICAgfVxuICB9XG5cbiAgc2VsZWN0T25seShldmVudElkOiBzdHJpbmcpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmdpbmUuY2xlYXJTZWxlY3Rpb24oKTtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0RXZlbnQoZXZlbnRJZCk7XG4gICAgY29uc3QgZXZlbnQgPSB0aGlzLl9lbmdpbmUuZXZlbnRzKCkuZmluZCgoZSkgPT4gZS5pZCA9PT0gZXZlbnRJZCk7XG4gICAgaWYgKGV2ZW50KSB0aGlzLl9vcHRpb25zLm9uU2VsZWN0Py4oW2V2ZW50XSk7XG4gIH1cblxuICBzZWxlY3RSYW5nZShzdGFydDogRGF0ZSwgZW5kOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fZW5naW5lLnNlbGVjdFJhbmdlKHN0YXJ0LCBlbmQpO1xuICAgIHRoaXMuX29wdGlvbnMub25SYW5nZVNlbGVjdD8uKHN0YXJ0LCBlbmQpO1xuICB9XG5cbiAgc3RhcnRSYW5nZVNlbGVjdChkYXRlOiBEYXRlKTogdm9pZCB7XG4gICAgdGhpcy5fcmFuZ2VTZWxlY3RpbmcgPSB0cnVlO1xuICAgIHRoaXMuX3JhbmdlU3RhcnQgPSBkYXRlO1xuICB9XG5cbiAgdXBkYXRlUmFuZ2VTZWxlY3QoZGF0ZTogRGF0ZSk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fcmFuZ2VTZWxlY3RpbmcgfHwgIXRoaXMuX3JhbmdlU3RhcnQpIHJldHVybjtcbiAgICBjb25zdCBzID0gdGhpcy5fcmFuZ2VTdGFydCA8IGRhdGUgPyB0aGlzLl9yYW5nZVN0YXJ0IDogZGF0ZTtcbiAgICBjb25zdCBlID0gdGhpcy5fcmFuZ2VTdGFydCA8IGRhdGUgPyBkYXRlIDogdGhpcy5fcmFuZ2VTdGFydDtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0UmFuZ2UocywgZSk7XG4gIH1cblxuICBlbmRSYW5nZVNlbGVjdCgpOiBEYXRlUmFuZ2UgfCBudWxsIHtcbiAgICBpZiAoIXRoaXMuX3JhbmdlU2VsZWN0aW5nIHx8ICF0aGlzLl9yYW5nZVN0YXJ0KSByZXR1cm4gbnVsbDtcbiAgICBjb25zdCByYW5nZSA9IHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKS5zZWxlY3RlZFJhbmdlO1xuICAgIHRoaXMuX3JhbmdlU2VsZWN0aW5nID0gZmFsc2U7XG4gICAgdGhpcy5fcmFuZ2VTdGFydCA9IG51bGw7XG4gICAgcmV0dXJuIHJhbmdlO1xuICB9XG5cbiAgc2VsZWN0QWxsKCk6IHZvaWQge1xuICAgIGNvbnN0IGFsbCA9IHRoaXMuX2VuZ2luZS5ldmVudHMoKTtcbiAgICB0aGlzLl9lbmdpbmUuc2VsZWN0aW9uLnVwZGF0ZSgocykgPT4gKHtcbiAgICAgIC4uLnMsXG4gICAgICBzZWxlY3RlZEV2ZW50SWRzOiBuZXcgU2V0KGFsbC5tYXAoKGUpID0+IGUuaWQpKSxcbiAgICB9KSk7XG4gIH1cblxuICBjbGVhclNlbGVjdGlvbigpOiB2b2lkIHtcbiAgICB0aGlzLl9lbmdpbmUuY2xlYXJTZWxlY3Rpb24oKTtcbiAgfVxuXG4gIGdldCBzZWxlY3RlZElkcygpOiBTZXQ8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKS5zZWxlY3RlZEV2ZW50SWRzO1xuICB9XG5cbiAgZ2V0IHNlbGVjdGVkQ291bnQoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy5fZW5naW5lLnNlbGVjdGlvbigpLnNlbGVjdGVkRXZlbnRJZHMuc2l6ZTtcbiAgfVxuXG4gIGdldCBoYXNTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX2VuZ2luZS5zZWxlY3Rpb24oKS5zZWxlY3RlZEV2ZW50SWRzLnNpemUgPiAwO1xuICB9XG5cbiAgZ2V0IGlzUmFuZ2VTZWxlY3RpbmcoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3JhbmdlU2VsZWN0aW5nO1xuICB9XG59XG5cbmludGVyZmFjZSBEYXRlUmFuZ2Uge1xuICBzdGFydDogRGF0ZTtcbiAgZW5kOiBEYXRlO1xuICByZXNvdXJjZUlkPzogc3RyaW5nO1xufVxuIl19
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
export function createDefaultTooltipState() {
|
|
2
|
+
return {
|
|
3
|
+
visible: false,
|
|
4
|
+
event: null,
|
|
5
|
+
x: 0,
|
|
6
|
+
y: 0,
|
|
7
|
+
placement: 'top',
|
|
8
|
+
content: '',
|
|
9
|
+
};
|
|
10
|
+
}
|
|
11
|
+
export class TooltipPlugin {
|
|
12
|
+
constructor(options = {}) {
|
|
13
|
+
this.name = 'tooltip';
|
|
14
|
+
this.priority = 50;
|
|
15
|
+
this._timeout = null;
|
|
16
|
+
this._state = createDefaultTooltipState();
|
|
17
|
+
this._listeners = [];
|
|
18
|
+
this._options = {
|
|
19
|
+
delay: options.delay ?? 400,
|
|
20
|
+
showArrow: options.showArrow ?? true,
|
|
21
|
+
placement: options.placement ?? 'top',
|
|
22
|
+
maxWidth: options.maxWidth ?? 280,
|
|
23
|
+
onShow: options.onShow ?? (() => true),
|
|
24
|
+
onHide: options.onHide ??
|
|
25
|
+
(() => {
|
|
26
|
+
/* noop */
|
|
27
|
+
}),
|
|
28
|
+
content: options.content ?? defaultContent,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
onInit(engine) {
|
|
32
|
+
this._engine = engine;
|
|
33
|
+
}
|
|
34
|
+
onDestroy() {
|
|
35
|
+
this.hide();
|
|
36
|
+
this._clearTimeout();
|
|
37
|
+
for (const unlisten of this._listeners)
|
|
38
|
+
unlisten();
|
|
39
|
+
this._listeners = [];
|
|
40
|
+
}
|
|
41
|
+
show(event, targetEl) {
|
|
42
|
+
this._clearTimeout();
|
|
43
|
+
this._timeout = setTimeout(() => {
|
|
44
|
+
if (this._options.onShow(event) === false)
|
|
45
|
+
return;
|
|
46
|
+
const rect = targetEl.getBoundingClientRect();
|
|
47
|
+
const pos = this._computePosition(rect);
|
|
48
|
+
this._state = {
|
|
49
|
+
visible: true,
|
|
50
|
+
event,
|
|
51
|
+
x: pos.x,
|
|
52
|
+
y: pos.y,
|
|
53
|
+
placement: pos.placement,
|
|
54
|
+
content: this._options.content(event),
|
|
55
|
+
};
|
|
56
|
+
}, this._options.delay);
|
|
57
|
+
}
|
|
58
|
+
hide() {
|
|
59
|
+
this._clearTimeout();
|
|
60
|
+
if (this._state.event) {
|
|
61
|
+
this._options.onHide(this._state.event);
|
|
62
|
+
}
|
|
63
|
+
this._state = createDefaultTooltipState();
|
|
64
|
+
}
|
|
65
|
+
updatePosition(targetEl) {
|
|
66
|
+
if (!this._state.visible || !this._state.event)
|
|
67
|
+
return;
|
|
68
|
+
const rect = targetEl.getBoundingClientRect();
|
|
69
|
+
const pos = this._computePosition(rect);
|
|
70
|
+
this._state = { ...this._state, x: pos.x, y: pos.y, placement: pos.placement };
|
|
71
|
+
}
|
|
72
|
+
get state() {
|
|
73
|
+
return this._state;
|
|
74
|
+
}
|
|
75
|
+
get isVisible() {
|
|
76
|
+
return this._state.visible;
|
|
77
|
+
}
|
|
78
|
+
_computePosition(rect) {
|
|
79
|
+
const placement = this._options.placement;
|
|
80
|
+
const offset = 8;
|
|
81
|
+
switch (placement) {
|
|
82
|
+
case 'top':
|
|
83
|
+
return { x: rect.left + rect.width / 2, y: rect.top - offset, placement };
|
|
84
|
+
case 'bottom':
|
|
85
|
+
return { x: rect.left + rect.width / 2, y: rect.bottom + offset, placement };
|
|
86
|
+
case 'left':
|
|
87
|
+
return { x: rect.left - offset, y: rect.top + rect.height / 2, placement };
|
|
88
|
+
case 'right':
|
|
89
|
+
return { x: rect.right + offset, y: rect.top + rect.height / 2, placement };
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
_clearTimeout() {
|
|
93
|
+
if (this._timeout) {
|
|
94
|
+
clearTimeout(this._timeout);
|
|
95
|
+
this._timeout = null;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
function defaultContent(event) {
|
|
100
|
+
const time = `${event.start.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })} – ${event.end.toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })}`;
|
|
101
|
+
return `${event.title}\n${time}`;
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHRpcC1wbHVnaW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jZGsvc2NoZWR1bGVyL3BsdWdpbi90b29sdGlwLXBsdWdpbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF1QkEsTUFBTSxVQUFVLHlCQUF5QjtJQUN2QyxPQUFPO1FBQ0wsT0FBTyxFQUFFLEtBQUs7UUFDZCxLQUFLLEVBQUUsSUFBSTtRQUNYLENBQUMsRUFBRSxDQUFDO1FBQ0osQ0FBQyxFQUFFLENBQUM7UUFDSixTQUFTLEVBQUUsS0FBSztRQUNoQixPQUFPLEVBQUUsRUFBRTtLQUNaLENBQUM7QUFDSixDQUFDO0FBRUQsTUFBTSxPQUFPLGFBQWE7SUFVeEIsWUFBWSxVQUFnQyxFQUFFO1FBVHJDLFNBQUksR0FBRyxTQUFTLENBQUM7UUFDakIsYUFBUSxHQUFHLEVBQUUsQ0FBQztRQUlmLGFBQVEsR0FBeUMsSUFBSSxDQUFDO1FBQ3RELFdBQU0sR0FBaUIseUJBQXlCLEVBQUUsQ0FBQztRQUNuRCxlQUFVLEdBQW1CLEVBQUUsQ0FBQztRQUd0QyxJQUFJLENBQUMsUUFBUSxHQUFHO1lBQ2QsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLElBQUksR0FBRztZQUMzQixTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxJQUFJO1lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUyxJQUFJLEtBQUs7WUFDckMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRLElBQUksR0FBRztZQUNqQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQztZQUN0QyxNQUFNLEVBQ0osT0FBTyxDQUFDLE1BQU07Z0JBQ2QsQ0FBQyxHQUFHLEVBQUU7b0JBQ0osVUFBVTtnQkFDWixDQUFDLENBQUM7WUFDSixPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sSUFBSSxjQUFjO1NBQzNDLENBQUM7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LENBQUMsS0FBSyxLQUFLLElBQUksRUFBRSxDQUFDO0FBQ25DLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNjaGVkdWxlckVuZ2luZSB9IGZyb20gJy4uL3NjaGVkdWxlci1lbmdpbmUnO1xuaW1wb3J0IHR5cGUgeyBTY2hlZHVsZXJFdmVudCB9IGZyb20gJy4uL21vZGVscyc7XG5pbXBvcnQgdHlwZSB7IFNjaGVkdWxlclBsdWdpbiB9IGZyb20gJy4vcGx1Z2luLnR5cGVzJztcblxuZXhwb3J0IGludGVyZmFjZSBUb29sdGlwUGx1Z2luT3B0aW9ucyB7XG4gIGRlbGF5PzogbnVtYmVyO1xuICBzaG93QXJyb3c/OiBib29sZWFuO1xuICBwbGFjZW1lbnQ/OiAndG9wJyB8ICdib3R0b20nIHwgJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgbWF4V2lkdGg/OiBudW1iZXI7XG4gIG9uU2hvdz86IChldmVudDogU2NoZWR1bGVyRXZlbnQpID0+IGJvb2xlYW4gfCB2b2lkO1xuICBvbkhpZGU/OiAoZXZlbnQ6IFNjaGVkdWxlckV2ZW50KSA9PiB2b2lkO1xuICBjb250ZW50PzogKGV2ZW50OiBTY2hlZHVsZXJFdmVudCkgPT4gc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvb2x0aXBTdGF0ZSB7XG4gIHZpc2libGU6IGJvb2xlYW47XG4gIGV2ZW50OiBTY2hlZHVsZXJFdmVudCB8IG51bGw7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xuICBwbGFjZW1lbnQ6ICd0b3AnIHwgJ2JvdHRvbScgfCAnbGVmdCcgfCAncmlnaHQnO1xuICBjb250ZW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VG9vbHRpcFN0YXRlKCk6IFRvb2x0aXBTdGF0ZSB7XG4gIHJldHVybiB7XG4gICAgdmlzaWJsZTogZmFsc2UsXG4gICAgZXZlbnQ6IG51bGwsXG4gICAgeDogMCxcbiAgICB5OiAwLFxuICAgIHBsYWNlbWVudDogJ3RvcCcsXG4gICAgY29udGVudDogJycsXG4gIH07XG59XG5cbmV4cG9ydCBjbGFzcyBUb29sdGlwUGx1Z2luIGltcGxlbWVudHMgU2NoZWR1bGVyUGx1Z2luIHtcbiAgcmVhZG9ubHkgbmFtZSA9ICd0b29sdGlwJztcbiAgcmVhZG9ubHkgcHJpb3JpdHkgPSA1MDtcblxuICBwcml2YXRlIF9lbmdpbmUhOiBTY2hlZHVsZXJFbmdpbmU7XG4gIHByaXZhdGUgX29wdGlvbnM6IFJlcXVpcmVkPFRvb2x0aXBQbHVnaW5PcHRpb25zPjtcbiAgcHJpdmF0ZSBfdGltZW91dDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0VGltZW91dD4gfCBudWxsID0gbnVsbDtcbiAgcHJpdmF0ZSBfc3RhdGU6IFRvb2x0aXBTdGF0ZSA9IGNyZWF0ZURlZmF1bHRUb29sdGlwU3RhdGUoKTtcbiAgcHJpdmF0ZSBfbGlzdGVuZXJzOiAoKCkgPT4gdm9pZClbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRvb2x0aXBQbHVnaW5PcHRpb25zID0ge30pIHtcbiAgICB0aGlzLl9vcHRpb25zID0ge1xuICAgICAgZGVsYXk6IG9wdGlvbnMuZGVsYXkgPz8gNDAwLFxuICAgICAgc2hvd0Fycm93OiBvcHRpb25zLnNob3dBcnJvdyA/PyB0cnVlLFxuICAgICAgcGxhY2VtZW50OiBvcHRpb25zLnBsYWNlbWVudCA/PyAndG9wJyxcbiAgICAgIG1heFdpZHRoOiBvcHRpb25zLm1heFdpZHRoID8/IDI4MCxcbiAgICAgIG9uU2hvdzogb3B0aW9ucy5vblNob3cgPz8gKCgpID0+IHRydWUpLFxuICAgICAgb25IaWRlOlxuICAgICAgICBvcHRpb25zLm9uSGlkZSA/P1xuICAgICAgICAoKCkgPT4ge1xuICAgICAgICAgIC8qIG5vb3AgKi9cbiAgICAgICAgfSksXG4gICAgICBjb250ZW50OiBvcHRpb25zLmNvbnRlbnQgPz8gZGVmYXVsdENvbnRlbnQsXG4gICAgfTtcbiAgfVxuXG4gIG9uSW5pdChlbmdpbmU6IFNjaGVkdWxlckVuZ2luZSk6IHZvaWQge1xuICAgIHRoaXMuX2VuZ2luZSA9IGVuZ2luZTtcbiAgfVxuXG4gIG9uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLmhpZGUoKTtcbiAgICB0aGlzLl9jbGVhclRpbWVvdXQoKTtcbiAgICBmb3IgKGNvbnN0IHVubGlzdGVuIG9mIHRoaXMuX2xpc3RlbmVycykgdW5saXN0ZW4oKTtcbiAgICB0aGlzLl9saXN0ZW5lcnMgPSBbXTtcbiAgfVxuXG4gIHNob3coZXZlbnQ6IFNjaGVkdWxlckV2ZW50LCB0YXJnZXRFbDogSFRNTEVsZW1lbnQpOiB2b2lkIHtcbiAgICB0aGlzLl9jbGVhclRpbWVvdXQoKTtcblxuICAgIHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9vcHRpb25zLm9uU2hvdyhldmVudCkgPT09IGZhbHNlKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHJlY3QgPSB0YXJnZXRFbC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IHBvcyA9IHRoaXMuX2NvbXB1dGVQb3NpdGlvbihyZWN0KTtcblxuICAgICAgdGhpcy5fc3RhdGUgPSB7XG4gICAgICAgIHZpc2libGU6IHRydWUsXG4gICAgICAgIGV2ZW50LFxuICAgICAgICB4OiBwb3MueCxcbiAgICAgICAgeTogcG9zLnksXG4gICAgICAgIHBsYWNlbWVudDogcG9zLnBsYWNlbWVudCxcbiAgICAgICAgY29udGVudDogdGhpcy5fb3B0aW9ucy5jb250ZW50KGV2ZW50KSxcbiAgICAgIH07XG4gICAgfSwgdGhpcy5fb3B0aW9ucy5kZWxheSk7XG4gIH1cblxuICBoaWRlKCk6IHZvaWQge1xuICAgIHRoaXMuX2NsZWFyVGltZW91dCgpO1xuICAgIGlmICh0aGlzLl9zdGF0ZS5ldmVudCkge1xuICAgICAgdGhpcy5fb3B0aW9ucy5vbkhpZGUodGhpcy5fc3RhdGUuZXZlbnQpO1xuICAgIH1cbiAgICB0aGlzLl9zdGF0ZSA9IGNyZWF0ZURlZmF1bHRUb29sdGlwU3RhdGUoKTtcbiAgfVxuXG4gIHVwZGF0ZVBvc2l0aW9uKHRhcmdldEVsOiBIVE1MRWxlbWVudCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5fc3RhdGUudmlzaWJsZSB8fCAhdGhpcy5fc3RhdGUuZXZlbnQpIHJldHVybjtcbiAgICBjb25zdCByZWN0ID0gdGFyZ2V0RWwuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgcG9zID0gdGhpcy5fY29tcHV0ZVBvc2l0aW9uKHJlY3QpO1xuICAgIHRoaXMuX3N0YXRlID0geyAuLi50aGlzLl9zdGF0ZSwgeDogcG9zLngsIHk6IHBvcy55LCBwbGFjZW1lbnQ6IHBvcy5wbGFjZW1lbnQgfTtcbiAgfVxuXG4gIGdldCBzdGF0ZSgpOiBUb29sdGlwU3RhdGUge1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZTtcbiAgfVxuXG4gIGdldCBpc1Zpc2libGUoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXRlLnZpc2libGU7XG4gIH1cblxuICBwcml2YXRlIF9jb21wdXRlUG9zaXRpb24ocmVjdDogRE9NUmVjdCk6IHtcbiAgICB4OiBudW1iZXI7XG4gICAgeTogbnVtYmVyO1xuICAgIHBsYWNlbWVudDogJ3RvcCcgfCAnYm90dG9tJyB8ICdsZWZ0JyB8ICdyaWdodCc7XG4gIH0ge1xuICAgIGNvbnN0IHBsYWNlbWVudCA9IHRoaXMuX29wdGlvbnMucGxhY2VtZW50O1xuICAgIGNvbnN0IG9mZnNldCA9IDg7XG5cbiAgICBzd2l0Y2ggKHBsYWNlbWVudCkge1xuICAgICAgY2FzZSAndG9wJzpcbiAgICAgICAgcmV0dXJuIHsgeDogcmVjdC5sZWZ0ICsgcmVjdC53aWR0aCAvIDIsIHk6IHJlY3QudG9wIC0gb2Zmc2V0LCBwbGFjZW1lbnQgfTtcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICAgIHJldHVybiB7IHg6IHJlY3QubGVmdCArIHJlY3Qud2lkdGggLyAyLCB5OiByZWN0LmJvdHRvbSArIG9mZnNldCwgcGxhY2VtZW50IH07XG4gICAgICBjYXNlICdsZWZ0JzpcbiAgICAgICAgcmV0dXJuIHsgeDogcmVjdC5sZWZ0IC0gb2Zmc2V0LCB5OiByZWN0LnRvcCArIHJlY3QuaGVpZ2h0IC8gMiwgcGxhY2VtZW50IH07XG4gICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgIHJldHVybiB7IHg6IHJlY3QucmlnaHQgKyBvZmZzZXQsIHk6IHJlY3QudG9wICsgcmVjdC5oZWlnaHQgLyAyLCBwbGFjZW1lbnQgfTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIF9jbGVhclRpbWVvdXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuX3RpbWVvdXQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtcbiAgICAgIHRoaXMuX3RpbWVvdXQgPSBudWxsO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBkZWZhdWx0Q29udGVudChldmVudDogU2NoZWR1bGVyRXZlbnQpOiBzdHJpbmcge1xuICBjb25zdCB0aW1lID0gYCR7ZXZlbnQuc3RhcnQudG9Mb2NhbGVUaW1lU3RyaW5nKFtdLCB7IGhvdXI6ICcyLWRpZ2l0JywgbWludXRlOiAnMi1kaWdpdCcgfSl9IOKAkyAke2V2ZW50LmVuZC50b0xvY2FsZVRpbWVTdHJpbmcoW10sIHsgaG91cjogJzItZGlnaXQnLCBtaW51dGU6ICcyLWRpZ2l0JyB9KX1gO1xuICByZXR1cm4gYCR7ZXZlbnQudGl0bGV9XFxuJHt0aW1lfWA7XG59XG4iXX0=
|