@design.estate/dees-domtools 2.0.36
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/dist_bundle/bundle.js +14073 -0
- package/dist_bundle/bundle.js.map +7 -0
- package/dist_ts/00_commitinfo_data.d.ts +8 -0
- package/dist_ts/00_commitinfo_data.js +9 -0
- package/dist_ts/domtools.classes.domtools.d.ts +72 -0
- package/dist_ts/domtools.classes.domtools.js +157 -0
- package/dist_ts/domtools.classes.keyboard.d.ts +134 -0
- package/dist_ts/domtools.classes.keyboard.js +187 -0
- package/dist_ts/domtools.classes.scroller.d.ts +2 -0
- package/dist_ts/domtools.classes.scroller.js +4 -0
- package/dist_ts/domtools.classes.thememanager.d.ts +22 -0
- package/dist_ts/domtools.classes.thememanager.js +45 -0
- package/dist_ts/domtools.colors.d.ts +6 -0
- package/dist_ts/domtools.colors.js +2 -0
- package/dist_ts/domtools.css.basestyles.d.ts +5 -0
- package/dist_ts/domtools.css.basestyles.js +39 -0
- package/dist_ts/domtools.css.breakpoints.d.ts +12 -0
- package/dist_ts/domtools.css.breakpoints.js +58 -0
- package/dist_ts/domtools.css.d.ts +1 -0
- package/dist_ts/domtools.css.js +8 -0
- package/dist_ts/domtools.elementbasic.d.ts +12 -0
- package/dist_ts/domtools.elementbasic.js +51 -0
- package/dist_ts/domtools.plugins.d.ts +25 -0
- package/dist_ts/domtools.plugins.js +31 -0
- package/dist_ts/index.d.ts +16 -0
- package/dist_ts/index.js +17 -0
- package/license +20 -0
- package/npmextra.json +18 -0
- package/package.json +56 -0
- package/readme.md +37 -0
- package/ts/00_commitinfo_data.ts +8 -0
- package/ts/domtools.classes.domtools.ts +185 -0
- package/ts/domtools.classes.keyboard.ts +213 -0
- package/ts/domtools.classes.scroller.ts +5 -0
- package/ts/domtools.classes.thememanager.ts +54 -0
- package/ts/domtools.colors.ts +6 -0
- package/ts/domtools.css.basestyles.ts +41 -0
- package/ts/domtools.css.breakpoints.ts +66 -0
- package/ts/domtools.css.ts +9 -0
- package/ts/domtools.elementbasic.ts +59 -0
- package/ts/domtools.plugins.ts +50 -0
- package/ts/index.ts +20 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* autocreated commitinfo by @pushrocks/commitinfo
|
|
3
|
+
*/
|
|
4
|
+
export const commitinfo = {
|
|
5
|
+
name: '@design.estate/dees-domtools',
|
|
6
|
+
version: '2.0.36',
|
|
7
|
+
description: 'tools to simplify complex css structures'
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSw4QkFBOEI7SUFDcEMsT0FBTyxFQUFFLFFBQVE7SUFDakIsV0FBVyxFQUFFLDBDQUEwQztDQUN4RCxDQUFBIn0=
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import * as plugins from './domtools.plugins.js';
|
|
2
|
+
import { TViewport } from './domtools.css.breakpoints.js';
|
|
3
|
+
import { WebSetup } from '@pushrocks/websetup';
|
|
4
|
+
import { ThemeManager } from './domtools.classes.thememanager.js';
|
|
5
|
+
import { Keyboard } from './domtools.classes.keyboard.js';
|
|
6
|
+
export interface IDomToolsState {
|
|
7
|
+
virtualViewport: TViewport;
|
|
8
|
+
jwt: string;
|
|
9
|
+
}
|
|
10
|
+
export interface IDomToolsContructorOptions {
|
|
11
|
+
ignoreGlobal?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare class DomTools {
|
|
14
|
+
/**
|
|
15
|
+
* setups domtools
|
|
16
|
+
*/
|
|
17
|
+
static setupDomTools(optionsArg?: IDomToolsContructorOptions): Promise<DomTools>;
|
|
18
|
+
/**
|
|
19
|
+
* if you can, use the static asysnc .setupDomTools() function instead since it is safer to use.
|
|
20
|
+
*/
|
|
21
|
+
static getGlobalDomToolsSync(): DomTools;
|
|
22
|
+
elements: {
|
|
23
|
+
headElement: HTMLElement;
|
|
24
|
+
bodyElement: HTMLElement;
|
|
25
|
+
};
|
|
26
|
+
websetup: WebSetup;
|
|
27
|
+
smartstate: plugins.smartstate.Smartstate<unknown>;
|
|
28
|
+
domToolsStatePart: plugins.smartstate.StatePart<unknown, IDomToolsState>;
|
|
29
|
+
router: plugins.smartrouter.SmartRouter;
|
|
30
|
+
convenience: {
|
|
31
|
+
typedrequest: typeof plugins.typedrequest;
|
|
32
|
+
smartdelay: typeof plugins.smartdelay;
|
|
33
|
+
smartjson: typeof plugins.smartjson;
|
|
34
|
+
smarturl: typeof plugins.smarturl;
|
|
35
|
+
};
|
|
36
|
+
deesComms: plugins.deesComms.DeesComms;
|
|
37
|
+
scroller: plugins.SweetScroll;
|
|
38
|
+
themeManager: ThemeManager;
|
|
39
|
+
keyboard: Keyboard;
|
|
40
|
+
domToolsReady: plugins.smartpromise.Deferred<unknown>;
|
|
41
|
+
domReady: plugins.smartpromise.Deferred<unknown>;
|
|
42
|
+
globalStylesReady: plugins.smartpromise.Deferred<unknown>;
|
|
43
|
+
constructor(optionsArg: IDomToolsContructorOptions);
|
|
44
|
+
private runOnceTrackerStringMap;
|
|
45
|
+
private runOnceResultMap;
|
|
46
|
+
/**
|
|
47
|
+
* run a function once and always get the Promise of the first execution
|
|
48
|
+
* @param identifierArg the indentifier arg identifies functions. functions with the same identifier are considered equal
|
|
49
|
+
* @param funcArg the actual func arg to run
|
|
50
|
+
*/
|
|
51
|
+
runOnce<T>(identifierArg: string, funcArg: () => Promise<T>): Promise<unknown>;
|
|
52
|
+
/**
|
|
53
|
+
* allows to set global styles
|
|
54
|
+
* @param stylesText the css text you want to set
|
|
55
|
+
*/
|
|
56
|
+
setGlobalStyles(stylesText: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* allows to set global styles
|
|
59
|
+
* @param stylesText the css text you want to set
|
|
60
|
+
*/
|
|
61
|
+
setExternalScript(scriptLinkArg: string): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* allows setting external css files
|
|
64
|
+
* @param cssLinkArg a url to an external stylesheet
|
|
65
|
+
*/
|
|
66
|
+
setExternalCss(cssLinkArg: string): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* allows setting of website infos
|
|
69
|
+
* @param optionsArg the website info
|
|
70
|
+
*/
|
|
71
|
+
setWebsiteInfo(optionsArg: plugins.websetup.IWebSetupConstructorOptions): Promise<void>;
|
|
72
|
+
}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import * as plugins from './domtools.plugins.js';
|
|
2
|
+
import './domtools.css.breakpoints.js';
|
|
3
|
+
import './domtools.classes.scroller.js';
|
|
4
|
+
import { WebSetup } from '@pushrocks/websetup';
|
|
5
|
+
import { ThemeManager } from './domtools.classes.thememanager.js';
|
|
6
|
+
import { Keyboard } from './domtools.classes.keyboard.js';
|
|
7
|
+
export class DomTools {
|
|
8
|
+
// ======
|
|
9
|
+
// STATIC
|
|
10
|
+
// ======
|
|
11
|
+
/**
|
|
12
|
+
* setups domtools
|
|
13
|
+
*/
|
|
14
|
+
static async setupDomTools(optionsArg = {}) {
|
|
15
|
+
let domToolsInstance;
|
|
16
|
+
if (!globalThis.deesDomTools && !optionsArg.ignoreGlobal) {
|
|
17
|
+
globalThis.deesDomTools = new DomTools(optionsArg);
|
|
18
|
+
domToolsInstance = globalThis.deesDomTools;
|
|
19
|
+
// lets make sure the dom is ready
|
|
20
|
+
const readyStateChangedFunc = () => {
|
|
21
|
+
if (document.readyState === 'interactive' || document.readyState === 'complete') {
|
|
22
|
+
domToolsInstance.elements.headElement = document.querySelector('head');
|
|
23
|
+
domToolsInstance.elements.bodyElement = document.querySelector('body');
|
|
24
|
+
domToolsInstance.domReady.resolve();
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
document.addEventListener('readystatechange', readyStateChangedFunc);
|
|
28
|
+
domToolsInstance.domToolsReady.resolve();
|
|
29
|
+
}
|
|
30
|
+
else if (optionsArg.ignoreGlobal) {
|
|
31
|
+
domToolsInstance = new DomTools(optionsArg);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
domToolsInstance = globalThis.deesDomTools;
|
|
35
|
+
}
|
|
36
|
+
await domToolsInstance.domToolsReady.promise;
|
|
37
|
+
return domToolsInstance;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* if you can, use the static asysnc .setupDomTools() function instead since it is safer to use.
|
|
41
|
+
*/
|
|
42
|
+
static getGlobalDomToolsSync() {
|
|
43
|
+
const globalDomTools = globalThis.deesDomTools;
|
|
44
|
+
if (!globalDomTools) {
|
|
45
|
+
throw new Error('You tried to access domtools synchronously too early');
|
|
46
|
+
}
|
|
47
|
+
return globalThis.deesDomTools;
|
|
48
|
+
}
|
|
49
|
+
constructor(optionsArg) {
|
|
50
|
+
// ========
|
|
51
|
+
// INSTANCE
|
|
52
|
+
// ========
|
|
53
|
+
// elements
|
|
54
|
+
this.elements = {
|
|
55
|
+
headElement: null,
|
|
56
|
+
bodyElement: null,
|
|
57
|
+
};
|
|
58
|
+
this.websetup = new WebSetup({
|
|
59
|
+
metaObject: {
|
|
60
|
+
title: 'loading...',
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
this.smartstate = new plugins.smartstate.Smartstate();
|
|
64
|
+
this.domToolsStatePart = this.smartstate.getStatePart('domtools', {
|
|
65
|
+
virtualViewport: 'native',
|
|
66
|
+
jwt: null,
|
|
67
|
+
});
|
|
68
|
+
this.router = new plugins.smartrouter.SmartRouter({
|
|
69
|
+
debug: false,
|
|
70
|
+
});
|
|
71
|
+
this.convenience = {
|
|
72
|
+
typedrequest: plugins.typedrequest,
|
|
73
|
+
smartdelay: plugins.smartdelay,
|
|
74
|
+
smartjson: plugins.smartjson,
|
|
75
|
+
smarturl: plugins.smarturl,
|
|
76
|
+
};
|
|
77
|
+
this.deesComms = new plugins.deesComms.DeesComms();
|
|
78
|
+
this.scroller = new plugins.SweetScroll({
|
|
79
|
+
/* some options */
|
|
80
|
+
}); // TODO: switch to scroller class
|
|
81
|
+
this.themeManager = new ThemeManager(this);
|
|
82
|
+
this.keyboard = new Keyboard(document.body);
|
|
83
|
+
this.domToolsReady = plugins.smartpromise.defer();
|
|
84
|
+
this.domReady = plugins.smartpromise.defer();
|
|
85
|
+
this.globalStylesReady = plugins.smartpromise.defer();
|
|
86
|
+
this.runOnceTrackerStringMap = new plugins.lik.Stringmap();
|
|
87
|
+
this.runOnceResultMap = new plugins.lik.FastMap();
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* run a function once and always get the Promise of the first execution
|
|
91
|
+
* @param identifierArg the indentifier arg identifies functions. functions with the same identifier are considered equal
|
|
92
|
+
* @param funcArg the actual func arg to run
|
|
93
|
+
*/
|
|
94
|
+
async runOnce(identifierArg, funcArg) {
|
|
95
|
+
const runningId = `${identifierArg}+runningCheck`;
|
|
96
|
+
if (!this.runOnceTrackerStringMap.checkString(identifierArg)) {
|
|
97
|
+
this.runOnceTrackerStringMap.addString(identifierArg);
|
|
98
|
+
this.runOnceTrackerStringMap.addString(runningId);
|
|
99
|
+
const result = await funcArg();
|
|
100
|
+
this.runOnceResultMap.addToMap(identifierArg, result);
|
|
101
|
+
this.runOnceTrackerStringMap.removeString(runningId);
|
|
102
|
+
}
|
|
103
|
+
return await this.runOnceTrackerStringMap.registerUntilTrue((stringMap) => {
|
|
104
|
+
return !stringMap.includes(runningId);
|
|
105
|
+
}, () => {
|
|
106
|
+
return this.runOnceResultMap.getByKey(identifierArg);
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// setStuff
|
|
110
|
+
/**
|
|
111
|
+
* allows to set global styles
|
|
112
|
+
* @param stylesText the css text you want to set
|
|
113
|
+
*/
|
|
114
|
+
async setGlobalStyles(stylesText) {
|
|
115
|
+
await this.domReady.promise;
|
|
116
|
+
const styleElement = document.createElement('style');
|
|
117
|
+
styleElement.type = 'text/css';
|
|
118
|
+
styleElement.appendChild(document.createTextNode(stylesText));
|
|
119
|
+
this.elements.headElement.appendChild(styleElement);
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* allows to set global styles
|
|
123
|
+
* @param stylesText the css text you want to set
|
|
124
|
+
*/
|
|
125
|
+
async setExternalScript(scriptLinkArg) {
|
|
126
|
+
await this.domReady.promise;
|
|
127
|
+
const done = plugins.smartpromise.defer();
|
|
128
|
+
const script = document.createElement('script');
|
|
129
|
+
script.src = scriptLinkArg;
|
|
130
|
+
script.addEventListener('load', function () {
|
|
131
|
+
done.resolve();
|
|
132
|
+
});
|
|
133
|
+
const parentNode = document.head || document.body;
|
|
134
|
+
parentNode.append(script);
|
|
135
|
+
await done.promise;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* allows setting external css files
|
|
139
|
+
* @param cssLinkArg a url to an external stylesheet
|
|
140
|
+
*/
|
|
141
|
+
async setExternalCss(cssLinkArg) {
|
|
142
|
+
const cssTag = document.createElement('link');
|
|
143
|
+
cssTag.rel = 'stylesheet';
|
|
144
|
+
cssTag.crossOrigin = 'anonymous';
|
|
145
|
+
cssTag.href = cssLinkArg;
|
|
146
|
+
document.head.append(cssTag);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* allows setting of website infos
|
|
150
|
+
* @param optionsArg the website info
|
|
151
|
+
*/
|
|
152
|
+
async setWebsiteInfo(optionsArg) {
|
|
153
|
+
await this.websetup.setup(optionsArg);
|
|
154
|
+
await this.websetup.readyPromise;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy5kb210b29scy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLmNsYXNzZXMuZG9tdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUEwQiwrQkFBK0IsQ0FBQztBQUMxRCxPQUF5QixnQ0FBZ0MsQ0FBQztBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQ2xFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxnQ0FBZ0MsQ0FBQztBQVcxRCxNQUFNLE9BQU8sUUFBUTtJQUNuQixTQUFTO0lBQ1QsU0FBUztJQUNULFNBQVM7SUFDVDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLGFBQXlDLEVBQUU7UUFDM0UsSUFBSSxnQkFBMEIsQ0FBQztRQUMvQixJQUFJLENBQUMsVUFBVSxDQUFDLFlBQVksSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLEVBQUU7WUFDeEQsVUFBVSxDQUFDLFlBQVksR0FBRyxJQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUNuRCxnQkFBZ0IsR0FBRyxVQUFVLENBQUMsWUFBWSxDQUFDO1lBRTNDLGtDQUFrQztZQUNsQyxNQUFNLHFCQUFxQixHQUFHLEdBQUcsRUFBRTtnQkFDakMsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLGFBQWEsSUFBSSxRQUFRLENBQUMsVUFBVSxLQUFLLFVBQVUsRUFBRTtvQkFDL0UsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFdBQVcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUN2RSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsV0FBVyxHQUFHLFFBQVEsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFD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
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import * as plugins from './domtools.plugins.js';
|
|
2
|
+
export declare enum Key {
|
|
3
|
+
Backspace = 8,
|
|
4
|
+
Tab = 9,
|
|
5
|
+
Enter = 13,
|
|
6
|
+
Shift = 16,
|
|
7
|
+
Ctrl = 17,
|
|
8
|
+
Alt = 18,
|
|
9
|
+
PauseBreak = 19,
|
|
10
|
+
CapsLock = 20,
|
|
11
|
+
Escape = 27,
|
|
12
|
+
Space = 32,
|
|
13
|
+
PageUp = 33,
|
|
14
|
+
PageDown = 34,
|
|
15
|
+
End = 35,
|
|
16
|
+
Home = 36,
|
|
17
|
+
LeftArrow = 37,
|
|
18
|
+
UpArrow = 38,
|
|
19
|
+
RightArrow = 39,
|
|
20
|
+
DownArrow = 40,
|
|
21
|
+
Insert = 45,
|
|
22
|
+
Delete = 46,
|
|
23
|
+
Zero = 48,
|
|
24
|
+
ClosedParen = 48,
|
|
25
|
+
One = 49,
|
|
26
|
+
ExclamationMark = 49,
|
|
27
|
+
Two = 50,
|
|
28
|
+
AtSign = 50,
|
|
29
|
+
Three = 51,
|
|
30
|
+
PoundSign = 51,
|
|
31
|
+
Hash = 51,
|
|
32
|
+
Four = 52,
|
|
33
|
+
DollarSign = 52,
|
|
34
|
+
Five = 53,
|
|
35
|
+
PercentSign = 53,
|
|
36
|
+
Six = 54,
|
|
37
|
+
Caret = 54,
|
|
38
|
+
Hat = 54,
|
|
39
|
+
Seven = 55,
|
|
40
|
+
Ampersand = 55,
|
|
41
|
+
Eight = 56,
|
|
42
|
+
Star = 56,
|
|
43
|
+
Asterik = 56,
|
|
44
|
+
Nine = 57,
|
|
45
|
+
OpenParen = 57,
|
|
46
|
+
A = 65,
|
|
47
|
+
B = 66,
|
|
48
|
+
C = 67,
|
|
49
|
+
D = 68,
|
|
50
|
+
E = 69,
|
|
51
|
+
F = 70,
|
|
52
|
+
G = 71,
|
|
53
|
+
H = 72,
|
|
54
|
+
I = 73,
|
|
55
|
+
J = 74,
|
|
56
|
+
K = 75,
|
|
57
|
+
L = 76,
|
|
58
|
+
M = 77,
|
|
59
|
+
N = 78,
|
|
60
|
+
O = 79,
|
|
61
|
+
P = 80,
|
|
62
|
+
Q = 81,
|
|
63
|
+
R = 82,
|
|
64
|
+
S = 83,
|
|
65
|
+
T = 84,
|
|
66
|
+
U = 85,
|
|
67
|
+
V = 86,
|
|
68
|
+
W = 87,
|
|
69
|
+
X = 88,
|
|
70
|
+
Y = 89,
|
|
71
|
+
Z = 90,
|
|
72
|
+
LeftWindowKey = 91,
|
|
73
|
+
RightWindowKey = 92,
|
|
74
|
+
SelectKey = 93,
|
|
75
|
+
Numpad0 = 96,
|
|
76
|
+
Numpad1 = 97,
|
|
77
|
+
Numpad2 = 98,
|
|
78
|
+
Numpad3 = 99,
|
|
79
|
+
Numpad4 = 100,
|
|
80
|
+
Numpad5 = 101,
|
|
81
|
+
Numpad6 = 102,
|
|
82
|
+
Numpad7 = 103,
|
|
83
|
+
Numpad8 = 104,
|
|
84
|
+
Numpad9 = 105,
|
|
85
|
+
Multiply = 106,
|
|
86
|
+
Add = 107,
|
|
87
|
+
Subtract = 109,
|
|
88
|
+
DecimalPoint = 110,
|
|
89
|
+
Divide = 111,
|
|
90
|
+
F1 = 112,
|
|
91
|
+
F2 = 113,
|
|
92
|
+
F3 = 114,
|
|
93
|
+
F4 = 115,
|
|
94
|
+
F5 = 116,
|
|
95
|
+
F6 = 117,
|
|
96
|
+
F7 = 118,
|
|
97
|
+
F8 = 119,
|
|
98
|
+
F9 = 120,
|
|
99
|
+
F10 = 121,
|
|
100
|
+
F11 = 122,
|
|
101
|
+
F12 = 123,
|
|
102
|
+
NumLock = 144,
|
|
103
|
+
ScrollLock = 145,
|
|
104
|
+
SemiColon = 186,
|
|
105
|
+
Equals = 187,
|
|
106
|
+
Comma = 188,
|
|
107
|
+
Dash = 189,
|
|
108
|
+
Period = 190,
|
|
109
|
+
UnderScore = 189,
|
|
110
|
+
PlusSign = 187,
|
|
111
|
+
ForwardSlash = 191,
|
|
112
|
+
Tilde = 192,
|
|
113
|
+
GraveAccent = 192,
|
|
114
|
+
OpenBracket = 219,
|
|
115
|
+
ClosedBracket = 221,
|
|
116
|
+
Quote = 222
|
|
117
|
+
}
|
|
118
|
+
export declare class Keyboard {
|
|
119
|
+
private domNode;
|
|
120
|
+
private mapCombosToHandlers;
|
|
121
|
+
private pressedKeys;
|
|
122
|
+
constructor(domNode: Element | Document);
|
|
123
|
+
keyEnum: typeof Key;
|
|
124
|
+
on(keys: Key[]): plugins.smartrx.rxjs.Subject<KeyboardEvent>;
|
|
125
|
+
triggerKeyPress(keysArg: Key[]): void;
|
|
126
|
+
startListening(): void;
|
|
127
|
+
stopListening(): void;
|
|
128
|
+
clear(): void;
|
|
129
|
+
private handleKeyDown;
|
|
130
|
+
private checkMatchingKeyboardSubjects;
|
|
131
|
+
private handleKeyUp;
|
|
132
|
+
private areAllKeysPressed;
|
|
133
|
+
private registerKeys;
|
|
134
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import * as plugins from './domtools.plugins.js';
|
|
2
|
+
export var Key;
|
|
3
|
+
(function (Key) {
|
|
4
|
+
Key[Key["Backspace"] = 8] = "Backspace";
|
|
5
|
+
Key[Key["Tab"] = 9] = "Tab";
|
|
6
|
+
Key[Key["Enter"] = 13] = "Enter";
|
|
7
|
+
Key[Key["Shift"] = 16] = "Shift";
|
|
8
|
+
Key[Key["Ctrl"] = 17] = "Ctrl";
|
|
9
|
+
Key[Key["Alt"] = 18] = "Alt";
|
|
10
|
+
Key[Key["PauseBreak"] = 19] = "PauseBreak";
|
|
11
|
+
Key[Key["CapsLock"] = 20] = "CapsLock";
|
|
12
|
+
Key[Key["Escape"] = 27] = "Escape";
|
|
13
|
+
Key[Key["Space"] = 32] = "Space";
|
|
14
|
+
Key[Key["PageUp"] = 33] = "PageUp";
|
|
15
|
+
Key[Key["PageDown"] = 34] = "PageDown";
|
|
16
|
+
Key[Key["End"] = 35] = "End";
|
|
17
|
+
Key[Key["Home"] = 36] = "Home";
|
|
18
|
+
Key[Key["LeftArrow"] = 37] = "LeftArrow";
|
|
19
|
+
Key[Key["UpArrow"] = 38] = "UpArrow";
|
|
20
|
+
Key[Key["RightArrow"] = 39] = "RightArrow";
|
|
21
|
+
Key[Key["DownArrow"] = 40] = "DownArrow";
|
|
22
|
+
Key[Key["Insert"] = 45] = "Insert";
|
|
23
|
+
Key[Key["Delete"] = 46] = "Delete";
|
|
24
|
+
Key[Key["Zero"] = 48] = "Zero";
|
|
25
|
+
Key[Key["ClosedParen"] = 48] = "ClosedParen";
|
|
26
|
+
Key[Key["One"] = 49] = "One";
|
|
27
|
+
Key[Key["ExclamationMark"] = 49] = "ExclamationMark";
|
|
28
|
+
Key[Key["Two"] = 50] = "Two";
|
|
29
|
+
Key[Key["AtSign"] = 50] = "AtSign";
|
|
30
|
+
Key[Key["Three"] = 51] = "Three";
|
|
31
|
+
Key[Key["PoundSign"] = 51] = "PoundSign";
|
|
32
|
+
Key[Key["Hash"] = 51] = "Hash";
|
|
33
|
+
Key[Key["Four"] = 52] = "Four";
|
|
34
|
+
Key[Key["DollarSign"] = 52] = "DollarSign";
|
|
35
|
+
Key[Key["Five"] = 53] = "Five";
|
|
36
|
+
Key[Key["PercentSign"] = 53] = "PercentSign";
|
|
37
|
+
Key[Key["Six"] = 54] = "Six";
|
|
38
|
+
Key[Key["Caret"] = 54] = "Caret";
|
|
39
|
+
Key[Key["Hat"] = 54] = "Hat";
|
|
40
|
+
Key[Key["Seven"] = 55] = "Seven";
|
|
41
|
+
Key[Key["Ampersand"] = 55] = "Ampersand";
|
|
42
|
+
Key[Key["Eight"] = 56] = "Eight";
|
|
43
|
+
Key[Key["Star"] = 56] = "Star";
|
|
44
|
+
Key[Key["Asterik"] = 56] = "Asterik";
|
|
45
|
+
Key[Key["Nine"] = 57] = "Nine";
|
|
46
|
+
Key[Key["OpenParen"] = 57] = "OpenParen";
|
|
47
|
+
Key[Key["A"] = 65] = "A";
|
|
48
|
+
Key[Key["B"] = 66] = "B";
|
|
49
|
+
Key[Key["C"] = 67] = "C";
|
|
50
|
+
Key[Key["D"] = 68] = "D";
|
|
51
|
+
Key[Key["E"] = 69] = "E";
|
|
52
|
+
Key[Key["F"] = 70] = "F";
|
|
53
|
+
Key[Key["G"] = 71] = "G";
|
|
54
|
+
Key[Key["H"] = 72] = "H";
|
|
55
|
+
Key[Key["I"] = 73] = "I";
|
|
56
|
+
Key[Key["J"] = 74] = "J";
|
|
57
|
+
Key[Key["K"] = 75] = "K";
|
|
58
|
+
Key[Key["L"] = 76] = "L";
|
|
59
|
+
Key[Key["M"] = 77] = "M";
|
|
60
|
+
Key[Key["N"] = 78] = "N";
|
|
61
|
+
Key[Key["O"] = 79] = "O";
|
|
62
|
+
Key[Key["P"] = 80] = "P";
|
|
63
|
+
Key[Key["Q"] = 81] = "Q";
|
|
64
|
+
Key[Key["R"] = 82] = "R";
|
|
65
|
+
Key[Key["S"] = 83] = "S";
|
|
66
|
+
Key[Key["T"] = 84] = "T";
|
|
67
|
+
Key[Key["U"] = 85] = "U";
|
|
68
|
+
Key[Key["V"] = 86] = "V";
|
|
69
|
+
Key[Key["W"] = 87] = "W";
|
|
70
|
+
Key[Key["X"] = 88] = "X";
|
|
71
|
+
Key[Key["Y"] = 89] = "Y";
|
|
72
|
+
Key[Key["Z"] = 90] = "Z";
|
|
73
|
+
Key[Key["LeftWindowKey"] = 91] = "LeftWindowKey";
|
|
74
|
+
Key[Key["RightWindowKey"] = 92] = "RightWindowKey";
|
|
75
|
+
Key[Key["SelectKey"] = 93] = "SelectKey";
|
|
76
|
+
Key[Key["Numpad0"] = 96] = "Numpad0";
|
|
77
|
+
Key[Key["Numpad1"] = 97] = "Numpad1";
|
|
78
|
+
Key[Key["Numpad2"] = 98] = "Numpad2";
|
|
79
|
+
Key[Key["Numpad3"] = 99] = "Numpad3";
|
|
80
|
+
Key[Key["Numpad4"] = 100] = "Numpad4";
|
|
81
|
+
Key[Key["Numpad5"] = 101] = "Numpad5";
|
|
82
|
+
Key[Key["Numpad6"] = 102] = "Numpad6";
|
|
83
|
+
Key[Key["Numpad7"] = 103] = "Numpad7";
|
|
84
|
+
Key[Key["Numpad8"] = 104] = "Numpad8";
|
|
85
|
+
Key[Key["Numpad9"] = 105] = "Numpad9";
|
|
86
|
+
Key[Key["Multiply"] = 106] = "Multiply";
|
|
87
|
+
Key[Key["Add"] = 107] = "Add";
|
|
88
|
+
Key[Key["Subtract"] = 109] = "Subtract";
|
|
89
|
+
Key[Key["DecimalPoint"] = 110] = "DecimalPoint";
|
|
90
|
+
Key[Key["Divide"] = 111] = "Divide";
|
|
91
|
+
Key[Key["F1"] = 112] = "F1";
|
|
92
|
+
Key[Key["F2"] = 113] = "F2";
|
|
93
|
+
Key[Key["F3"] = 114] = "F3";
|
|
94
|
+
Key[Key["F4"] = 115] = "F4";
|
|
95
|
+
Key[Key["F5"] = 116] = "F5";
|
|
96
|
+
Key[Key["F6"] = 117] = "F6";
|
|
97
|
+
Key[Key["F7"] = 118] = "F7";
|
|
98
|
+
Key[Key["F8"] = 119] = "F8";
|
|
99
|
+
Key[Key["F9"] = 120] = "F9";
|
|
100
|
+
Key[Key["F10"] = 121] = "F10";
|
|
101
|
+
Key[Key["F11"] = 122] = "F11";
|
|
102
|
+
Key[Key["F12"] = 123] = "F12";
|
|
103
|
+
Key[Key["NumLock"] = 144] = "NumLock";
|
|
104
|
+
Key[Key["ScrollLock"] = 145] = "ScrollLock";
|
|
105
|
+
Key[Key["SemiColon"] = 186] = "SemiColon";
|
|
106
|
+
Key[Key["Equals"] = 187] = "Equals";
|
|
107
|
+
Key[Key["Comma"] = 188] = "Comma";
|
|
108
|
+
Key[Key["Dash"] = 189] = "Dash";
|
|
109
|
+
Key[Key["Period"] = 190] = "Period";
|
|
110
|
+
Key[Key["UnderScore"] = 189] = "UnderScore";
|
|
111
|
+
Key[Key["PlusSign"] = 187] = "PlusSign";
|
|
112
|
+
Key[Key["ForwardSlash"] = 191] = "ForwardSlash";
|
|
113
|
+
Key[Key["Tilde"] = 192] = "Tilde";
|
|
114
|
+
Key[Key["GraveAccent"] = 192] = "GraveAccent";
|
|
115
|
+
Key[Key["OpenBracket"] = 219] = "OpenBracket";
|
|
116
|
+
Key[Key["ClosedBracket"] = 221] = "ClosedBracket";
|
|
117
|
+
Key[Key["Quote"] = 222] = "Quote";
|
|
118
|
+
})(Key || (Key = {}));
|
|
119
|
+
export class Keyboard {
|
|
120
|
+
constructor(domNode) {
|
|
121
|
+
this.domNode = domNode;
|
|
122
|
+
this.mapCombosToHandlers = new Map();
|
|
123
|
+
this.pressedKeys = new Set();
|
|
124
|
+
this.keyEnum = Key;
|
|
125
|
+
this.handleKeyDown = (event) => {
|
|
126
|
+
this.pressedKeys.add(event.keyCode);
|
|
127
|
+
this.checkMatchingKeyboardSubjects(event);
|
|
128
|
+
};
|
|
129
|
+
this.handleKeyUp = (event) => {
|
|
130
|
+
this.pressedKeys.delete(event.keyCode);
|
|
131
|
+
};
|
|
132
|
+
this.startListening();
|
|
133
|
+
}
|
|
134
|
+
on(keys) {
|
|
135
|
+
const subject = new plugins.smartrx.rxjs.Subject();
|
|
136
|
+
this.registerKeys(keys, subject);
|
|
137
|
+
return subject;
|
|
138
|
+
}
|
|
139
|
+
triggerKeyPress(keysArg) {
|
|
140
|
+
for (const key of keysArg) {
|
|
141
|
+
this.pressedKeys.add(key);
|
|
142
|
+
}
|
|
143
|
+
this.checkMatchingKeyboardSubjects();
|
|
144
|
+
for (const key of keysArg) {
|
|
145
|
+
this.pressedKeys.delete(key);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
startListening() {
|
|
149
|
+
this.domNode.addEventListener('keydown', this.handleKeyDown);
|
|
150
|
+
this.domNode.addEventListener('keyup', this.handleKeyUp);
|
|
151
|
+
}
|
|
152
|
+
stopListening() {
|
|
153
|
+
this.domNode.removeEventListener('keydown', this.handleKeyDown);
|
|
154
|
+
this.domNode.removeEventListener('keyup', this.handleKeyUp);
|
|
155
|
+
}
|
|
156
|
+
clear() {
|
|
157
|
+
this.stopListening();
|
|
158
|
+
this.mapCombosToHandlers.clear();
|
|
159
|
+
this.pressedKeys.clear();
|
|
160
|
+
}
|
|
161
|
+
checkMatchingKeyboardSubjects(payloadArg) {
|
|
162
|
+
this.mapCombosToHandlers.forEach((subjectArg, keysArg) => {
|
|
163
|
+
if (this.areAllKeysPressed(keysArg)) {
|
|
164
|
+
subjectArg.next(payloadArg);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
areAllKeysPressed(keysArg) {
|
|
169
|
+
let result = true;
|
|
170
|
+
keysArg.forEach((key) => {
|
|
171
|
+
if (!this.pressedKeys.has(key)) {
|
|
172
|
+
result = false;
|
|
173
|
+
}
|
|
174
|
+
});
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
registerKeys(keysArg, subjectArg) {
|
|
178
|
+
if (!this.mapCombosToHandlers.has(keysArg)) {
|
|
179
|
+
this.mapCombosToHandlers.set(keysArg, subjectArg);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
const subject = this.mapCombosToHandlers.get(keysArg);
|
|
183
|
+
return subject;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy5rZXlib2FyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLmNsYXNzZXMua2V5Ym9hcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLE9BQU8sTUFBTSx1QkFBdUIsQ0FBQztBQUVqRCxNQUFNLENBQU4sSUFBWSxHQThIWDtBQTlIRCxXQUFZLEdBQUc7SUFDYix1Q0FBYSxDQUFBO0lBQ2IsMkJBQU8sQ0FBQTtJQUNQLGdDQUFVLENBQUE7SUFDVixnQ0FBVSxDQUFBO0lBQ1YsOEJBQVMsQ0FBQTtJQUNULDRCQUFRLENBQUE7SUFDUiwwQ0FBZSxDQUFBO0lBQ2Ysc0NBQWEsQ0FBQTtJQUNiLGtDQUFXLENBQUE7SUFDWCxnQ0FBVSxDQUFBO0lBQ1Ysa0NBQVcsQ0FBQTtJQUNYLHNDQUFhLENBQUE7SUFDYiw0QkFBUSxDQUFBO0lBQ1IsOEJBQVMsQ0FBQTtJQUVULHdDQUFjLENBQUE7SUFDZCxvQ0FBWSxDQUFBO0lBQ1osMENBQWUsQ0FBQTtJQUNmLHdDQUFjLENBQUE7SUFFZCxrQ0FBVyxDQUFBO0lBQ1gsa0NBQVcsQ0FBQTtJQUVYLDhCQUFTLENBQUE7SUFDVCw0Q0FBa0IsQ0FBQTtJQUNsQiw0QkFBUSxDQUFBO0lBQ1Isb0RBQXFCLENBQUE7SUFDckIsNEJBQVEsQ0FBQTtJQUNSLGtDQUFZLENBQUE7SUFDWixnQ0FBVSxDQUFBO0lBQ1Ysd0NBQWlCLENBQUE7SUFDakIsOEJBQWdCLENBQUE7SUFDaEIsOEJBQVMsQ0FBQTtJQUNULDBDQUFpQixDQUFBO0lBQ2pCLDhCQUFTLENBQUE7SUFDVCw0Q0FBa0IsQ0FBQTtJQUNsQiw0QkFBUSxDQUFBO0lBQ1IsZ0NBQVcsQ0FBQTtJQUNYLDRCQUFXLENBQUE7SUFDWCxnQ0FBVSxDQUFBO0lBQ1Ysd0NBQWlCLENBQUE7SUFDakIsZ0NBQVUsQ0FBQTtJQUNWLDhCQUFZLENBQUE7SUFDWixvQ0FBYyxDQUFBO0lBQ2QsOEJBQVMs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
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import './domtools.plugins.js';
|
|
2
|
+
export class Scroller {
|
|
3
|
+
}
|
|
4
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy5zY3JvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLmNsYXNzZXMuc2Nyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBeUIsdUJBQXVCLENBQUM7QUFFakQsTUFBTSxPQUFPLFFBQVE7Q0FFcEIifQ==
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DomTools } from './domtools.classes.domtools.js';
|
|
2
|
+
import * as plugins from './domtools.plugins.js';
|
|
3
|
+
export declare class ThemeManager {
|
|
4
|
+
domtoolsRef: DomTools;
|
|
5
|
+
goBrightBoolean: boolean;
|
|
6
|
+
preferredColorSchemeMediaMatch: MediaQueryList;
|
|
7
|
+
themeObservable: plugins.smartrx.rxjs.ReplaySubject<boolean>;
|
|
8
|
+
constructor(domtoolsRefArg: DomTools);
|
|
9
|
+
private updateAllConnectedElements;
|
|
10
|
+
/**
|
|
11
|
+
* set the theme of the website to bright
|
|
12
|
+
*/
|
|
13
|
+
goBright(): void;
|
|
14
|
+
/**
|
|
15
|
+
* set the theme of the website to dark
|
|
16
|
+
*/
|
|
17
|
+
goDark(): void;
|
|
18
|
+
/**
|
|
19
|
+
* simply toggle between bright and dark
|
|
20
|
+
*/
|
|
21
|
+
toggleDarkBright(): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import './domtools.classes.domtools.js';
|
|
2
|
+
import * as plugins from './domtools.plugins.js';
|
|
3
|
+
export class ThemeManager {
|
|
4
|
+
constructor(domtoolsRefArg) {
|
|
5
|
+
this.goBrightBoolean = false;
|
|
6
|
+
this.preferredColorSchemeMediaMatch = window.matchMedia('(prefers-color-scheme: light)');
|
|
7
|
+
this.themeObservable = new plugins.smartrx.rxjs.ReplaySubject(1);
|
|
8
|
+
this.domtoolsRef = domtoolsRefArg;
|
|
9
|
+
// lets care
|
|
10
|
+
this.goBrightBoolean = this.preferredColorSchemeMediaMatch.matches;
|
|
11
|
+
this.preferredColorSchemeMediaMatch.addEventListener('change', (eventArg) => {
|
|
12
|
+
this.goBrightBoolean = eventArg.matches;
|
|
13
|
+
this.updateAllConnectedElements();
|
|
14
|
+
});
|
|
15
|
+
this.updateAllConnectedElements();
|
|
16
|
+
}
|
|
17
|
+
async updateAllConnectedElements() {
|
|
18
|
+
if (document.body && document.body.style) {
|
|
19
|
+
document.body.style.background = this.goBrightBoolean ? '#fff' : '#000';
|
|
20
|
+
}
|
|
21
|
+
this.themeObservable.next(this.goBrightBoolean);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* set the theme of the website to bright
|
|
25
|
+
*/
|
|
26
|
+
goBright() {
|
|
27
|
+
this.goBrightBoolean = true;
|
|
28
|
+
this.updateAllConnectedElements();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* set the theme of the website to dark
|
|
32
|
+
*/
|
|
33
|
+
goDark() {
|
|
34
|
+
this.goBrightBoolean = false;
|
|
35
|
+
this.updateAllConnectedElements();
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* simply toggle between bright and dark
|
|
39
|
+
*/
|
|
40
|
+
toggleDarkBright() {
|
|
41
|
+
this.goBrightBoolean = !this.goBrightBoolean;
|
|
42
|
+
this.updateAllConnectedElements();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY2xhc3Nlcy50aGVtZW1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9kb210b29scy5jbGFzc2VzLnRoZW1lbWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUF5QixnQ0FBZ0MsQ0FBQztBQUMxRCxPQUFPLEtBQUssT0FBTyxNQUFNLHVCQUF1QixDQUFDO0FBRWpELE1BQU0sT0FBTyxZQUFZO0lBUXZCLFlBQVksY0FBd0I7UUFMN0Isb0JBQWUsR0FBRyxLQUFLLENBQUM7UUFDeEIsbUNBQThCLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBRXBGLG9CQUFlLEdBQUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQVUsQ0FBQyxDQUFDLENBQUM7UUFHMUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxjQUFjLENBQUM7UUFFbEMsWUFBWTtRQUNaLElBQUksQ0FBQyxlQUFlLEdBQUcsSUFBSSxDQUFDLDhCQUE4QixDQUFDLE9BQU8sQ0FBQztRQUNuRSxJQUFJLENBQUMsOEJBQThCLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7WUFDMUUsSUFBSSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDO1lBQ3hDLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1FBQ3BDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVPLEtBQUssQ0FBQywwQkFBMEI7UUFDdEMsSUFBSSxRQUFRLENBQUMsSUFBSSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ3hDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztTQUN6RTtRQUNELElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUNsRCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGVBQWUsR0FBRyxJQUFJLENBQUM7UUFDNUIsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLElBQUksQ0FBQyxlQUFlLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksQ0FBQywwQkFBMEIsRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFRDs7T0FFRztJQUNJLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsZUFBZSxHQUFHLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQztRQUM3QyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0NBQ0YifQ==
|