@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.
Files changed (42) hide show
  1. package/dist_bundle/bundle.js +14073 -0
  2. package/dist_bundle/bundle.js.map +7 -0
  3. package/dist_ts/00_commitinfo_data.d.ts +8 -0
  4. package/dist_ts/00_commitinfo_data.js +9 -0
  5. package/dist_ts/domtools.classes.domtools.d.ts +72 -0
  6. package/dist_ts/domtools.classes.domtools.js +157 -0
  7. package/dist_ts/domtools.classes.keyboard.d.ts +134 -0
  8. package/dist_ts/domtools.classes.keyboard.js +187 -0
  9. package/dist_ts/domtools.classes.scroller.d.ts +2 -0
  10. package/dist_ts/domtools.classes.scroller.js +4 -0
  11. package/dist_ts/domtools.classes.thememanager.d.ts +22 -0
  12. package/dist_ts/domtools.classes.thememanager.js +45 -0
  13. package/dist_ts/domtools.colors.d.ts +6 -0
  14. package/dist_ts/domtools.colors.js +2 -0
  15. package/dist_ts/domtools.css.basestyles.d.ts +5 -0
  16. package/dist_ts/domtools.css.basestyles.js +39 -0
  17. package/dist_ts/domtools.css.breakpoints.d.ts +12 -0
  18. package/dist_ts/domtools.css.breakpoints.js +58 -0
  19. package/dist_ts/domtools.css.d.ts +1 -0
  20. package/dist_ts/domtools.css.js +8 -0
  21. package/dist_ts/domtools.elementbasic.d.ts +12 -0
  22. package/dist_ts/domtools.elementbasic.js +51 -0
  23. package/dist_ts/domtools.plugins.d.ts +25 -0
  24. package/dist_ts/domtools.plugins.js +31 -0
  25. package/dist_ts/index.d.ts +16 -0
  26. package/dist_ts/index.js +17 -0
  27. package/license +20 -0
  28. package/npmextra.json +18 -0
  29. package/package.json +56 -0
  30. package/readme.md +37 -0
  31. package/ts/00_commitinfo_data.ts +8 -0
  32. package/ts/domtools.classes.domtools.ts +185 -0
  33. package/ts/domtools.classes.keyboard.ts +213 -0
  34. package/ts/domtools.classes.scroller.ts +5 -0
  35. package/ts/domtools.classes.thememanager.ts +54 -0
  36. package/ts/domtools.colors.ts +6 -0
  37. package/ts/domtools.css.basestyles.ts +41 -0
  38. package/ts/domtools.css.breakpoints.ts +66 -0
  39. package/ts/domtools.css.ts +9 -0
  40. package/ts/domtools.elementbasic.ts +59 -0
  41. package/ts/domtools.plugins.ts +50 -0
  42. package/ts/index.ts +20 -0
@@ -0,0 +1,8 @@
1
+ /**
2
+ * autocreated commitinfo by @pushrocks/commitinfo
3
+ */
4
+ export declare const commitinfo: {
5
+ name: string;
6
+ version: string;
7
+ description: string;
8
+ };
@@ -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,2 @@
1
+ export declare class Scroller {
2
+ }
@@ -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==
@@ -0,0 +1,6 @@
1
+ export interface IDeesColorSet {
2
+ primaryAccent: string;
3
+ secondaryAccent: string;
4
+ primaryBackground: string;
5
+ secondaryBackground: string;
6
+ }