@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,213 @@
1
+ import * as plugins from './domtools.plugins.js';
2
+
3
+ export enum Key {
4
+ Backspace = 8,
5
+ Tab = 9,
6
+ Enter = 13,
7
+ Shift = 16,
8
+ Ctrl = 17,
9
+ Alt = 18,
10
+ PauseBreak = 19,
11
+ CapsLock = 20,
12
+ Escape = 27,
13
+ Space = 32,
14
+ PageUp = 33,
15
+ PageDown = 34,
16
+ End = 35,
17
+ Home = 36,
18
+
19
+ LeftArrow = 37,
20
+ UpArrow = 38,
21
+ RightArrow = 39,
22
+ DownArrow = 40,
23
+
24
+ Insert = 45,
25
+ Delete = 46,
26
+
27
+ Zero = 48,
28
+ ClosedParen = Zero,
29
+ One = 49,
30
+ ExclamationMark = One,
31
+ Two = 50,
32
+ AtSign = Two,
33
+ Three = 51,
34
+ PoundSign = Three,
35
+ Hash = PoundSign,
36
+ Four = 52,
37
+ DollarSign = Four,
38
+ Five = 53,
39
+ PercentSign = Five,
40
+ Six = 54,
41
+ Caret = Six,
42
+ Hat = Caret,
43
+ Seven = 55,
44
+ Ampersand = Seven,
45
+ Eight = 56,
46
+ Star = Eight,
47
+ Asterik = Star,
48
+ Nine = 57,
49
+ OpenParen = Nine,
50
+
51
+ A = 65,
52
+ B = 66,
53
+ C = 67,
54
+ D = 68,
55
+ E = 69,
56
+ F = 70,
57
+ G = 71,
58
+ H = 72,
59
+ I = 73,
60
+ J = 74,
61
+ K = 75,
62
+ L = 76,
63
+ M = 77,
64
+ N = 78,
65
+ O = 79,
66
+ P = 80,
67
+ Q = 81,
68
+ R = 82,
69
+ S = 83,
70
+ T = 84,
71
+ U = 85,
72
+ V = 86,
73
+ W = 87,
74
+ X = 88,
75
+ Y = 89,
76
+ Z = 90,
77
+
78
+ LeftWindowKey = 91,
79
+ RightWindowKey = 92,
80
+ SelectKey = 93,
81
+
82
+ Numpad0 = 96,
83
+ Numpad1 = 97,
84
+ Numpad2 = 98,
85
+ Numpad3 = 99,
86
+ Numpad4 = 100,
87
+ Numpad5 = 101,
88
+ Numpad6 = 102,
89
+ Numpad7 = 103,
90
+ Numpad8 = 104,
91
+ Numpad9 = 105,
92
+
93
+ Multiply = 106,
94
+ Add = 107,
95
+ Subtract = 109,
96
+ DecimalPoint = 110,
97
+ Divide = 111,
98
+
99
+ F1 = 112,
100
+ F2 = 113,
101
+ F3 = 114,
102
+ F4 = 115,
103
+ F5 = 116,
104
+ F6 = 117,
105
+ F7 = 118,
106
+ F8 = 119,
107
+ F9 = 120,
108
+ F10 = 121,
109
+ F11 = 122,
110
+ F12 = 123,
111
+
112
+ NumLock = 144,
113
+ ScrollLock = 145,
114
+
115
+ SemiColon = 186,
116
+ Equals = 187,
117
+ Comma = 188,
118
+ Dash = 189,
119
+ Period = 190,
120
+ UnderScore = Dash,
121
+ PlusSign = Equals,
122
+ ForwardSlash = 191,
123
+ Tilde = 192,
124
+ GraveAccent = Tilde,
125
+
126
+ OpenBracket = 219,
127
+ ClosedBracket = 221,
128
+ Quote = 222,
129
+ }
130
+
131
+ export class Keyboard {
132
+ private mapCombosToHandlers = new Map<number[], plugins.smartrx.rxjs.Subject<KeyboardEvent>>();
133
+ private pressedKeys = new Set<Key>();
134
+
135
+ constructor(private domNode: Element | Document) {
136
+ this.startListening();
137
+ }
138
+
139
+ public keyEnum = Key;
140
+
141
+ public on(keys: Key[]) {
142
+ const subject = new plugins.smartrx.rxjs.Subject<KeyboardEvent>();
143
+ this.registerKeys(keys, subject);
144
+ return subject;
145
+ }
146
+
147
+ public triggerKeyPress(keysArg: Key[]) {
148
+ for (const key of keysArg) {
149
+ this.pressedKeys.add(key);
150
+ }
151
+ this.checkMatchingKeyboardSubjects();
152
+ for (const key of keysArg) {
153
+ this.pressedKeys.delete(key);
154
+ }
155
+ }
156
+
157
+ public startListening() {
158
+ this.domNode.addEventListener('keydown', this.handleKeyDown);
159
+ this.domNode.addEventListener('keyup', this.handleKeyUp);
160
+ }
161
+
162
+ public stopListening() {
163
+ this.domNode.removeEventListener('keydown', this.handleKeyDown);
164
+ this.domNode.removeEventListener('keyup', this.handleKeyUp);
165
+ }
166
+
167
+ public clear() {
168
+ this.stopListening();
169
+ this.mapCombosToHandlers.clear();
170
+ this.pressedKeys.clear();
171
+ }
172
+
173
+ private handleKeyDown = (event: KeyboardEvent) => {
174
+ this.pressedKeys.add(event.keyCode);
175
+ this.checkMatchingKeyboardSubjects(event);
176
+ };
177
+
178
+ private checkMatchingKeyboardSubjects(payloadArg?) {
179
+ this.mapCombosToHandlers.forEach((subjectArg, keysArg) => {
180
+ if (this.areAllKeysPressed(keysArg)) {
181
+ subjectArg.next(payloadArg);
182
+ }
183
+ });
184
+ }
185
+
186
+ private handleKeyUp = (event: KeyboardEvent) => {
187
+ this.pressedKeys.delete(event.keyCode);
188
+ };
189
+
190
+ private areAllKeysPressed(keysArg: Key[]) {
191
+ let result = true;
192
+
193
+ keysArg.forEach((key) => {
194
+ if (!this.pressedKeys.has(key)) {
195
+ result = false;
196
+ }
197
+ });
198
+
199
+ return result;
200
+ }
201
+
202
+ private registerKeys(
203
+ keysArg: Array<Key>,
204
+ subjectArg: plugins.smartrx.rxjs.Subject<KeyboardEvent>
205
+ ) {
206
+ if (!this.mapCombosToHandlers.has(keysArg)) {
207
+ this.mapCombosToHandlers.set(keysArg, subjectArg);
208
+ } else {
209
+ const subject = this.mapCombosToHandlers.get(keysArg);
210
+ return subject;
211
+ }
212
+ }
213
+ }
@@ -0,0 +1,5 @@
1
+ import * as plugins from './domtools.plugins.js';
2
+
3
+ export class Scroller {
4
+ // TODO: move sweet scroll over to here;
5
+ }
@@ -0,0 +1,54 @@
1
+ import { DomTools } from './domtools.classes.domtools.js';
2
+ import * as plugins from './domtools.plugins.js';
3
+
4
+ export class ThemeManager {
5
+ public domtoolsRef: DomTools;
6
+
7
+ public goBrightBoolean = false;
8
+ public preferredColorSchemeMediaMatch = window.matchMedia('(prefers-color-scheme: light)');
9
+
10
+ public themeObservable = new plugins.smartrx.rxjs.ReplaySubject<boolean>(1);
11
+
12
+ constructor(domtoolsRefArg: DomTools) {
13
+ this.domtoolsRef = domtoolsRefArg;
14
+
15
+ // lets care
16
+ this.goBrightBoolean = this.preferredColorSchemeMediaMatch.matches;
17
+ this.preferredColorSchemeMediaMatch.addEventListener('change', (eventArg) => {
18
+ this.goBrightBoolean = eventArg.matches;
19
+ this.updateAllConnectedElements();
20
+ });
21
+ this.updateAllConnectedElements();
22
+ }
23
+
24
+ private async updateAllConnectedElements() {
25
+ if (document.body && document.body.style) {
26
+ document.body.style.background = this.goBrightBoolean ? '#fff' : '#000';
27
+ }
28
+ this.themeObservable.next(this.goBrightBoolean);
29
+ }
30
+
31
+ /**
32
+ * set the theme of the website to bright
33
+ */
34
+ public goBright() {
35
+ this.goBrightBoolean = true;
36
+ this.updateAllConnectedElements();
37
+ }
38
+
39
+ /**
40
+ * set the theme of the website to dark
41
+ */
42
+ public goDark() {
43
+ this.goBrightBoolean = false;
44
+ this.updateAllConnectedElements();
45
+ }
46
+
47
+ /**
48
+ * simply toggle between bright and dark
49
+ */
50
+ public toggleDarkBright() {
51
+ this.goBrightBoolean = !this.goBrightBoolean;
52
+ this.updateAllConnectedElements();
53
+ }
54
+ }
@@ -0,0 +1,6 @@
1
+ export interface IDeesColorSet {
2
+ primaryAccent: string;
3
+ secondaryAccent: string;
4
+ primaryBackground: string;
5
+ secondaryBackground: string;
6
+ }
@@ -0,0 +1,41 @@
1
+ import { DomTools } from './domtools.classes.domtools.js';
2
+
3
+ import { css, unsafeCSS } from 'lit';
4
+
5
+ /**
6
+ * changes scrollbar styles to be consistent across OS borders
7
+ */
8
+ export const scrollBarStyles: string = (() => {
9
+ const returnStylesOld = navigator.userAgent.indexOf('Mac OS X') === -1 ? css``.cssText : ``;
10
+ const returnStyles = css`
11
+ /* width */
12
+ ::-webkit-scrollbar {
13
+ width: 0px;
14
+ }
15
+ body {
16
+ scrollbar-width: none;
17
+ }
18
+ `.cssText;
19
+ return returnStyles;
20
+ })();
21
+
22
+ export const globalBaseStyles: string = css`
23
+ /*
24
+ @font-face {
25
+ font-family: 'Material Icons';
26
+ font-style: normal;
27
+ font-weight: 400;
28
+ src: url(https://fonts.gstatic.com/s/materialicons/v42/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2)
29
+ format('woff2');
30
+ } */
31
+
32
+ /* global body styles */
33
+ body {
34
+ margin: 0px;
35
+ font-family: 'Inter', sans-serif;
36
+ box-sizing: border-box;
37
+ }
38
+
39
+ /* scroll bar styles */
40
+ ${unsafeCSS(scrollBarStyles)}
41
+ `.cssText;
@@ -0,0 +1,66 @@
1
+ import { DomTools } from './domtools.classes.domtools.js';
2
+
3
+ import { CSSResult, unsafeCSS } from 'lit';
4
+
5
+ export const desktop = 1600;
6
+ export const notebook = 1240;
7
+ export const tablet = 1024;
8
+ export const phablet = 600;
9
+ export const phone = 400;
10
+
11
+ export type TViewport = 'native' | 'desktop' | 'tablet' | 'phablet' | 'phone';
12
+
13
+ export const cssForDesktop = (cssArg: CSSResult) => {
14
+ return unsafeCSS(`
15
+ @container wccToolsViewport (min-width: ${desktop}px) {
16
+ ${cssArg.cssText}
17
+ }
18
+ @media (min-width: ${desktop}px) {
19
+ ${cssArg.cssText}
20
+ }
21
+ `);
22
+ };
23
+
24
+ export const cssForNotebook = (cssArg: CSSResult) => {
25
+ return unsafeCSS(`
26
+ @container wccToolsViewport (max-width: ${notebook}px) {
27
+ ${cssArg.cssText}
28
+ }
29
+ @media (max-width: ${notebook}px) {
30
+ ${cssArg.cssText}
31
+ }
32
+ `);
33
+ };
34
+
35
+ export const cssForTablet = (cssArg: CSSResult) => {
36
+ return unsafeCSS(`
37
+ @container wccToolsViewport (max-width: ${tablet}px) {
38
+ ${cssArg.cssText}
39
+ }
40
+ @media (max-width: ${tablet}px) {
41
+ ${cssArg.cssText}
42
+ }
43
+ `);
44
+ };
45
+
46
+ export const cssForPhablet = (cssArg: CSSResult) => {
47
+ return unsafeCSS(`
48
+ @container wccToolsViewport (max-width: ${phablet}px) {
49
+ ${cssArg.cssText}
50
+ }
51
+ @media (max-width: ${phablet}px) {
52
+ ${cssArg.cssText}
53
+ }
54
+ `);
55
+ };
56
+
57
+ export const cssForPhone = (cssArg: CSSResult) => {
58
+ return unsafeCSS(`
59
+ @container wccToolsViewport (max-width: ${phone}px) {
60
+ ${cssArg.cssText}
61
+ }
62
+ @media (max-width: ${phone}px) {
63
+ ${cssArg.cssText}
64
+ }
65
+ `);
66
+ };
@@ -0,0 +1,9 @@
1
+ export const cssGridColumns = (amountOfColumnsArg: number, gapSizeArg: number) => {
2
+ let returnString = ``;
3
+ for (let i = 0; i < amountOfColumnsArg; i++) {
4
+ returnString += ` calc((100%/${amountOfColumnsArg}) - (${
5
+ gapSizeArg * (amountOfColumnsArg - 1)
6
+ }px/${amountOfColumnsArg}))`;
7
+ }
8
+ return returnString;
9
+ };
@@ -0,0 +1,59 @@
1
+ import * as plugins from './domtools.plugins.js';
2
+ import { DomTools, IDomToolsContructorOptions } from './domtools.classes.domtools.js';
3
+ import { scrollBarStyles, globalBaseStyles } from './domtools.css.basestyles.js';
4
+
5
+ import { html, LitElement, css, unsafeCSS } from 'lit';
6
+
7
+ export const staticStyles = css`
8
+ * {
9
+ transition: background 0.1s, color 0.1s;
10
+ box-sizing: border-box;
11
+ }
12
+
13
+ :host {
14
+ box-sizing: border-box;
15
+ font-family: 'Inter', sans-serif;
16
+ }
17
+
18
+ ${unsafeCSS(scrollBarStyles)}
19
+ `;
20
+
21
+ /**
22
+ * styles to be included in every webcomponent
23
+ */
24
+ export const styles = html`
25
+ <style>
26
+ * {
27
+ transition: background 0.1s, color 0.1s;
28
+ box-sizing: border-box;
29
+ }
30
+
31
+ :host {
32
+ font-family: 'Inter', sans-serif;
33
+ }
34
+
35
+ ${scrollBarStyles}
36
+ </style>
37
+ `;
38
+
39
+ /**
40
+ * a basic setup for elements
41
+ * makes sure everything is in check
42
+ */
43
+ export const setup = async (
44
+ elementArg?: LitElement,
45
+ optionsArg: IDomToolsContructorOptions = {}
46
+ ): Promise<DomTools> => {
47
+ const domTools = await DomTools.setupDomTools(optionsArg);
48
+
49
+ if (elementArg) {
50
+ // lets do something with the element
51
+ // not used right now
52
+ }
53
+
54
+ domTools.runOnce('elementBasicSetup', async () => {
55
+ // bodyStyles
56
+ domTools.setGlobalStyles(globalBaseStyles);
57
+ });
58
+ return domTools;
59
+ };
@@ -0,0 +1,50 @@
1
+ // designestate scope
2
+ import * as deesComms from '@designestate/dees-comms';
3
+
4
+ export { deesComms };
5
+
6
+ // apiglobal scope
7
+ import * as typedrequest from '@apiglobal/typedrequest';
8
+
9
+ export { typedrequest };
10
+
11
+ // pushrocks scope
12
+ import * as smartdelay from '@pushrocks/smartdelay';
13
+ import * as smartjson from '@pushrocks/smartjson';
14
+ import * as smartpromise from '@pushrocks/smartpromise';
15
+ import * as smartrouter from '@pushrocks/smartrouter';
16
+ import * as smartrx from '@pushrocks/smartrx';
17
+ import * as smartstate from '@pushrocks/smartstate';
18
+ import * as smarturl from '@pushrocks/smarturl';
19
+ import * as webrequest from '@pushrocks/webrequest';
20
+ import * as websetup from '@pushrocks/websetup';
21
+ import * as webstore from '@pushrocks/webstore';
22
+
23
+ // subscope lik
24
+ import { ObjectMap } from '@pushrocks/lik/dist_ts/lik.objectmap.js';
25
+ import { Stringmap } from '@pushrocks/lik/dist_ts/lik.stringmap.js';
26
+ import { FastMap } from '@pushrocks/lik/dist_ts/lik.fastmap.js';
27
+ const lik = {
28
+ ObjectMap,
29
+ Stringmap,
30
+ FastMap,
31
+ };
32
+
33
+ export {
34
+ lik,
35
+ smartdelay,
36
+ smartjson,
37
+ smartpromise,
38
+ smartrouter,
39
+ smartrx,
40
+ smarturl,
41
+ smartstate,
42
+ webrequest,
43
+ websetup,
44
+ webstore,
45
+ };
46
+
47
+ // third party scope
48
+ import SweetScroll from 'sweet-scroll';
49
+
50
+ export { SweetScroll };
package/ts/index.ts ADDED
@@ -0,0 +1,20 @@
1
+ export * from './domtools.colors.js';
2
+
3
+ import * as elementBasic from './domtools.elementbasic.js';
4
+ import * as breakpoints from './domtools.css.breakpoints.js';
5
+ import * as css from './domtools.css.js';
6
+
7
+ export { css, breakpoints, elementBasic };
8
+ export { DomTools, IDomToolsContructorOptions } from './domtools.classes.domtools.js';
9
+ export { TypedRequest } from '@apiglobal/typedrequest';
10
+ export { IWebSetupConstructorOptions } from '@pushrocks/websetup';
11
+ export { rxjs } from '@pushrocks/smartrx';
12
+
13
+ import * as allPlugins from './domtools.plugins.js';
14
+
15
+ export const plugins = {
16
+ smartdelay: allPlugins.smartdelay,
17
+ smartpromise: allPlugins.smartpromise,
18
+ SweetScroll: allPlugins.SweetScroll,
19
+ smartstate: allPlugins.smartstate,
20
+ };