@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,39 @@
|
|
|
1
|
+
import './domtools.classes.domtools.js';
|
|
2
|
+
import { css, unsafeCSS } from 'lit';
|
|
3
|
+
/**
|
|
4
|
+
* changes scrollbar styles to be consistent across OS borders
|
|
5
|
+
*/
|
|
6
|
+
export const scrollBarStyles = (() => {
|
|
7
|
+
const returnStylesOld = navigator.userAgent.indexOf('Mac OS X') === -1 ? css ``.cssText : ``;
|
|
8
|
+
const returnStyles = css `
|
|
9
|
+
/* width */
|
|
10
|
+
::-webkit-scrollbar {
|
|
11
|
+
width: 0px;
|
|
12
|
+
}
|
|
13
|
+
body {
|
|
14
|
+
scrollbar-width: none;
|
|
15
|
+
}
|
|
16
|
+
`.cssText;
|
|
17
|
+
return returnStyles;
|
|
18
|
+
})();
|
|
19
|
+
export const globalBaseStyles = css `
|
|
20
|
+
/*
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: 'Material Icons';
|
|
23
|
+
font-style: normal;
|
|
24
|
+
font-weight: 400;
|
|
25
|
+
src: url(https://fonts.gstatic.com/s/materialicons/v42/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ.woff2)
|
|
26
|
+
format('woff2');
|
|
27
|
+
} */
|
|
28
|
+
|
|
29
|
+
/* global body styles */
|
|
30
|
+
body {
|
|
31
|
+
margin: 0px;
|
|
32
|
+
font-family: 'Inter', sans-serif;
|
|
33
|
+
box-sizing: border-box;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/* scroll bar styles */
|
|
37
|
+
${unsafeCSS(scrollBarStyles)}
|
|
38
|
+
`.cssText;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY3NzLmJhc2VzdHlsZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9kb210b29scy5jc3MuYmFzZXN0eWxlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUF5QixnQ0FBZ0MsQ0FBQztBQUUxRCxPQUFPLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUVyQzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGVBQWUsR0FBVyxDQUFDLEdBQUcsRUFBRTtJQUMzQyxNQUFNLGVBQWUsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFBLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1RixNQUFNLFlBQVksR0FBRyxHQUFHLENBQUE7Ozs7Ozs7O0dBUXZCLENBQUMsT0FBTyxDQUFDO0lBQ1YsT0FBTyxZQUFZLENBQUM7QUFDdEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUVMLE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFXLEdBQUcsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBa0J2QyxTQUFTLENBQUMsZUFBZSxDQUFDO0NBQzdCLENBQUMsT0FBTyxDQUFDIn0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { CSSResult } from 'lit';
|
|
2
|
+
export declare const desktop = 1600;
|
|
3
|
+
export declare const notebook = 1240;
|
|
4
|
+
export declare const tablet = 1024;
|
|
5
|
+
export declare const phablet = 600;
|
|
6
|
+
export declare const phone = 400;
|
|
7
|
+
export type TViewport = 'native' | 'desktop' | 'tablet' | 'phablet' | 'phone';
|
|
8
|
+
export declare const cssForDesktop: (cssArg: CSSResult) => CSSResult;
|
|
9
|
+
export declare const cssForNotebook: (cssArg: CSSResult) => CSSResult;
|
|
10
|
+
export declare const cssForTablet: (cssArg: CSSResult) => CSSResult;
|
|
11
|
+
export declare const cssForPhablet: (cssArg: CSSResult) => CSSResult;
|
|
12
|
+
export declare const cssForPhone: (cssArg: CSSResult) => CSSResult;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import './domtools.classes.domtools.js';
|
|
2
|
+
import { unsafeCSS } from 'lit';
|
|
3
|
+
export const desktop = 1600;
|
|
4
|
+
export const notebook = 1240;
|
|
5
|
+
export const tablet = 1024;
|
|
6
|
+
export const phablet = 600;
|
|
7
|
+
export const phone = 400;
|
|
8
|
+
export const cssForDesktop = (cssArg) => {
|
|
9
|
+
return unsafeCSS(`
|
|
10
|
+
@container wccToolsViewport (min-width: ${desktop}px) {
|
|
11
|
+
${cssArg.cssText}
|
|
12
|
+
}
|
|
13
|
+
@media (min-width: ${desktop}px) {
|
|
14
|
+
${cssArg.cssText}
|
|
15
|
+
}
|
|
16
|
+
`);
|
|
17
|
+
};
|
|
18
|
+
export const cssForNotebook = (cssArg) => {
|
|
19
|
+
return unsafeCSS(`
|
|
20
|
+
@container wccToolsViewport (max-width: ${notebook}px) {
|
|
21
|
+
${cssArg.cssText}
|
|
22
|
+
}
|
|
23
|
+
@media (max-width: ${notebook}px) {
|
|
24
|
+
${cssArg.cssText}
|
|
25
|
+
}
|
|
26
|
+
`);
|
|
27
|
+
};
|
|
28
|
+
export const cssForTablet = (cssArg) => {
|
|
29
|
+
return unsafeCSS(`
|
|
30
|
+
@container wccToolsViewport (max-width: ${tablet}px) {
|
|
31
|
+
${cssArg.cssText}
|
|
32
|
+
}
|
|
33
|
+
@media (max-width: ${tablet}px) {
|
|
34
|
+
${cssArg.cssText}
|
|
35
|
+
}
|
|
36
|
+
`);
|
|
37
|
+
};
|
|
38
|
+
export const cssForPhablet = (cssArg) => {
|
|
39
|
+
return unsafeCSS(`
|
|
40
|
+
@container wccToolsViewport (max-width: ${phablet}px) {
|
|
41
|
+
${cssArg.cssText}
|
|
42
|
+
}
|
|
43
|
+
@media (max-width: ${phablet}px) {
|
|
44
|
+
${cssArg.cssText}
|
|
45
|
+
}
|
|
46
|
+
`);
|
|
47
|
+
};
|
|
48
|
+
export const cssForPhone = (cssArg) => {
|
|
49
|
+
return unsafeCSS(`
|
|
50
|
+
@container wccToolsViewport (max-width: ${phone}px) {
|
|
51
|
+
${cssArg.cssText}
|
|
52
|
+
}
|
|
53
|
+
@media (max-width: ${phone}px) {
|
|
54
|
+
${cssArg.cssText}
|
|
55
|
+
}
|
|
56
|
+
`);
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY3NzLmJyZWFrcG9pbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9tdG9vbHMuY3NzLmJyZWFrcG9pbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQXlCLGdDQUFnQyxDQUFDO0FBRTFELE9BQU8sRUFBYSxTQUFTLEVBQUUsTUFBTSxLQUFLLENBQUM7QUFFM0MsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQztBQUM1QixNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzdCLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUM7QUFDM0IsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQztBQUMzQixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBSXpCLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtJQUNqRCxPQUFPLFNBQVMsQ0FBQzs4Q0FDMkIsT0FBTztRQUM3QyxNQUFNLENBQUMsT0FBTzs7eUJBRUcsT0FBTztRQUN4QixNQUFNLENBQUMsT0FBTzs7R0FFbkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFO0lBQ2xELE9BQU8sU0FBUyxDQUFDOzhDQUMyQixRQUFRO1FBQzlDLE1BQU0sQ0FBQyxPQUFPOzt5QkFFRyxRQUFRO1FBQ3pCLE1BQU0sQ0FBQyxPQUFPOztHQUVuQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsQ0FBQyxNQUFpQixFQUFFLEVBQUU7SUFDaEQsT0FBTyxTQUFTLENBQUM7OENBQzJCLE1BQU07UUFDNUMsTUFBTSxDQUFDLE9BQU87O3lCQUVHLE1BQU07UUFDdkIsTUFBTSxDQUFDLE9BQU87O0dBRW5CLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxDQUFDLE1BQWlCLEVBQUUsRUFBRTtJQUNqRCxPQUFPLFNBQVMsQ0FBQzs4Q0FDMkIsT0FBTztRQUM3QyxNQUFNLENBQUMsT0FBTzs7eUJBRUcsT0FBTztRQUN4QixNQUFNLENBQUMsT0FBTzs7R0FFbkIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQUMsTUFBaUIsRUFBRSxFQUFFO0lBQy9DLE9BQU8sU0FBUyxDQUFDOzhDQUMyQixLQUFLO1FBQzNDLE1BQU0sQ0FBQyxPQUFPOzt5QkFFRyxLQUFLO1FBQ3RCLE1BQU0sQ0FBQyxPQUFPOztHQUVuQixDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const cssGridColumns: (amountOfColumnsArg: number, gapSizeArg: number) => string;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const cssGridColumns = (amountOfColumnsArg, gapSizeArg) => {
|
|
2
|
+
let returnString = ``;
|
|
3
|
+
for (let i = 0; i < amountOfColumnsArg; i++) {
|
|
4
|
+
returnString += ` calc((100%/${amountOfColumnsArg}) - (${gapSizeArg * (amountOfColumnsArg - 1)}px/${amountOfColumnsArg}))`;
|
|
5
|
+
}
|
|
6
|
+
return returnString;
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuY3NzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9tdG9vbHMuY3NzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLGtCQUEwQixFQUFFLFVBQWtCLEVBQUUsRUFBRTtJQUMvRSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7SUFDdEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLGtCQUFrQixFQUFFLENBQUMsRUFBRSxFQUFFO1FBQzNDLFlBQVksSUFBSSxlQUFlLGtCQUFrQixRQUMvQyxVQUFVLEdBQUcsQ0FBQyxrQkFBa0IsR0FBRyxDQUFDLENBQ3RDLE1BQU0sa0JBQWtCLElBQUksQ0FBQztLQUM5QjtJQUNELE9BQU8sWUFBWSxDQUFDO0FBQ3RCLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { DomTools, IDomToolsContructorOptions } from './domtools.classes.domtools.js';
|
|
2
|
+
import { LitElement } from 'lit';
|
|
3
|
+
export declare const staticStyles: import("lit").CSSResult;
|
|
4
|
+
/**
|
|
5
|
+
* styles to be included in every webcomponent
|
|
6
|
+
*/
|
|
7
|
+
export declare const styles: import("lit-html").TemplateResult<1>;
|
|
8
|
+
/**
|
|
9
|
+
* a basic setup for elements
|
|
10
|
+
* makes sure everything is in check
|
|
11
|
+
*/
|
|
12
|
+
export declare const setup: (elementArg?: LitElement, optionsArg?: IDomToolsContructorOptions) => Promise<DomTools>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import './domtools.plugins.js';
|
|
2
|
+
import { DomTools } from './domtools.classes.domtools.js';
|
|
3
|
+
import { scrollBarStyles, globalBaseStyles } from './domtools.css.basestyles.js';
|
|
4
|
+
import { html, css, unsafeCSS } from 'lit';
|
|
5
|
+
export const staticStyles = css `
|
|
6
|
+
* {
|
|
7
|
+
transition: background 0.1s, color 0.1s;
|
|
8
|
+
box-sizing: border-box;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:host {
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
font-family: 'Inter', sans-serif;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
${unsafeCSS(scrollBarStyles)}
|
|
17
|
+
`;
|
|
18
|
+
/**
|
|
19
|
+
* styles to be included in every webcomponent
|
|
20
|
+
*/
|
|
21
|
+
export const styles = html `
|
|
22
|
+
<style>
|
|
23
|
+
* {
|
|
24
|
+
transition: background 0.1s, color 0.1s;
|
|
25
|
+
box-sizing: border-box;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
:host {
|
|
29
|
+
font-family: 'Inter', sans-serif;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
${scrollBarStyles}
|
|
33
|
+
</style>
|
|
34
|
+
`;
|
|
35
|
+
/**
|
|
36
|
+
* a basic setup for elements
|
|
37
|
+
* makes sure everything is in check
|
|
38
|
+
*/
|
|
39
|
+
export const setup = async (elementArg, optionsArg = {}) => {
|
|
40
|
+
const domTools = await DomTools.setupDomTools(optionsArg);
|
|
41
|
+
if (elementArg) {
|
|
42
|
+
// lets do something with the element
|
|
43
|
+
// not used right now
|
|
44
|
+
}
|
|
45
|
+
domTools.runOnce('elementBasicSetup', async () => {
|
|
46
|
+
// bodyStyles
|
|
47
|
+
domTools.setGlobalStyles(globalBaseStyles);
|
|
48
|
+
});
|
|
49
|
+
return domTools;
|
|
50
|
+
};
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMuZWxlbWVudGJhc2ljLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvZG9tdG9vbHMuZWxlbWVudGJhc2ljLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQXlCLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQThCLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBRWpGLE9BQU8sRUFBRSxJQUFJLEVBQWMsR0FBRyxFQUFFLFNBQVMsRUFBRSxNQUFNLEtBQUssQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsR0FBRyxDQUFBOzs7Ozs7Ozs7OztJQVczQixTQUFTLENBQUMsZUFBZSxDQUFDO0NBQzdCLENBQUM7QUFFRjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUE7Ozs7Ozs7Ozs7O01BV3BCLGVBQWU7O0NBRXBCLENBQUM7QUFFRjs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsS0FBSyxFQUN4QixVQUF1QixFQUN2QixhQUF5QyxFQUFFLEVBQ3hCLEVBQUU7SUFDckIsTUFBTSxRQUFRLEdBQUcsTUFBTSxRQUFRLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRTFELElBQUksVUFBVSxFQUFFO1FBQ2QscUNBQXFDO1FBQ3JDLHFCQUFxQjtLQUN0QjtJQUVELFFBQVEsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsS0FBSyxJQUFJLEVBQUU7UUFDL0MsYUFBYTtRQUNiLFFBQVEsQ0FBQyxlQUFlLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM3QyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import * as deesComms from '@designestate/dees-comms';
|
|
2
|
+
export { deesComms };
|
|
3
|
+
import * as typedrequest from '@apiglobal/typedrequest';
|
|
4
|
+
export { typedrequest };
|
|
5
|
+
import * as smartdelay from '@pushrocks/smartdelay';
|
|
6
|
+
import * as smartjson from '@pushrocks/smartjson';
|
|
7
|
+
import * as smartpromise from '@pushrocks/smartpromise';
|
|
8
|
+
import * as smartrouter from '@pushrocks/smartrouter';
|
|
9
|
+
import * as smartrx from '@pushrocks/smartrx';
|
|
10
|
+
import * as smartstate from '@pushrocks/smartstate';
|
|
11
|
+
import * as smarturl from '@pushrocks/smarturl';
|
|
12
|
+
import * as webrequest from '@pushrocks/webrequest';
|
|
13
|
+
import * as websetup from '@pushrocks/websetup';
|
|
14
|
+
import * as webstore from '@pushrocks/webstore';
|
|
15
|
+
import { ObjectMap } from '@pushrocks/lik/dist_ts/lik.objectmap.js';
|
|
16
|
+
import { Stringmap } from '@pushrocks/lik/dist_ts/lik.stringmap.js';
|
|
17
|
+
import { FastMap } from '@pushrocks/lik/dist_ts/lik.fastmap.js';
|
|
18
|
+
declare const lik: {
|
|
19
|
+
ObjectMap: typeof ObjectMap;
|
|
20
|
+
Stringmap: typeof Stringmap;
|
|
21
|
+
FastMap: typeof FastMap;
|
|
22
|
+
};
|
|
23
|
+
export { lik, smartdelay, smartjson, smartpromise, smartrouter, smartrx, smarturl, smartstate, webrequest, websetup, webstore, };
|
|
24
|
+
import SweetScroll from 'sweet-scroll';
|
|
25
|
+
export { SweetScroll };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// designestate scope
|
|
2
|
+
import * as deesComms from '@designestate/dees-comms';
|
|
3
|
+
export { deesComms };
|
|
4
|
+
// apiglobal scope
|
|
5
|
+
import * as typedrequest from '@apiglobal/typedrequest';
|
|
6
|
+
export { typedrequest };
|
|
7
|
+
// pushrocks scope
|
|
8
|
+
import * as smartdelay from '@pushrocks/smartdelay';
|
|
9
|
+
import * as smartjson from '@pushrocks/smartjson';
|
|
10
|
+
import * as smartpromise from '@pushrocks/smartpromise';
|
|
11
|
+
import * as smartrouter from '@pushrocks/smartrouter';
|
|
12
|
+
import * as smartrx from '@pushrocks/smartrx';
|
|
13
|
+
import * as smartstate from '@pushrocks/smartstate';
|
|
14
|
+
import * as smarturl from '@pushrocks/smarturl';
|
|
15
|
+
import * as webrequest from '@pushrocks/webrequest';
|
|
16
|
+
import * as websetup from '@pushrocks/websetup';
|
|
17
|
+
import * as webstore from '@pushrocks/webstore';
|
|
18
|
+
// subscope lik
|
|
19
|
+
import { ObjectMap } from '@pushrocks/lik/dist_ts/lik.objectmap.js';
|
|
20
|
+
import { Stringmap } from '@pushrocks/lik/dist_ts/lik.stringmap.js';
|
|
21
|
+
import { FastMap } from '@pushrocks/lik/dist_ts/lik.fastmap.js';
|
|
22
|
+
const lik = {
|
|
23
|
+
ObjectMap,
|
|
24
|
+
Stringmap,
|
|
25
|
+
FastMap,
|
|
26
|
+
};
|
|
27
|
+
export { lik, smartdelay, smartjson, smartpromise, smartrouter, smartrx, smarturl, smartstate, webrequest, websetup, webstore, };
|
|
28
|
+
// third party scope
|
|
29
|
+
import SweetScroll from 'sweet-scroll';
|
|
30
|
+
export { SweetScroll };
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tdG9vbHMucGx1Z2lucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3RzL2RvbXRvb2xzLnBsdWdpbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEscUJBQXFCO0FBQ3JCLE9BQU8sS0FBSyxTQUFTLE1BQU0sMEJBQTBCLENBQUM7QUFFdEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBRXJCLGtCQUFrQjtBQUNsQixPQUFPLEtBQUssWUFBWSxNQUFNLHlCQUF5QixDQUFDO0FBRXhELE9BQU8sRUFBRSxZQUFZLEVBQUUsQ0FBQztBQUV4QixrQkFBa0I7QUFDbEIsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUNwRCxPQUFPLEtBQUssU0FBUyxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sS0FBSyxZQUFZLE1BQU0seUJBQXlCLENBQUM7QUFDeEQsT0FBTyxLQUFLLFdBQVcsTUFBTSx3QkFBd0IsQ0FBQztBQUN0RCxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFDO0FBQzlDLE9BQU8sS0FBSyxVQUFVLE1BQU0sdUJBQXVCLENBQUM7QUFDcEQsT0FBTyxLQUFLLFFBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUNoRCxPQUFPLEtBQUssVUFBVSxNQUFNLHVCQUF1QixDQUFDO0FBQ3BELE9BQU8sS0FBSyxRQUFRLE1BQU0scUJBQXFCLENBQUM7QUFDaEQsT0FBTyxLQUFLLFFBQVEsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRCxlQUFlO0FBQ2YsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3BFLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUNwRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUNBQXVDLENBQUM7QUFDaEUsTUFBTSxHQUFHLEdBQUc7SUFDVixTQUFTO0lBQ1QsU0FBUztJQUNULE9BQU87Q0FDUixDQUFDO0FBRUYsT0FBTyxFQUNMLEdBQUcsRUFDSCxVQUFVLEVBQ1YsU0FBUyxFQUNULFlBQVksRUFDWixXQUFXLEVBQ1gsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsVUFBVSxFQUNWLFFBQVEsRUFDUixRQUFRLEdBQ1QsQ0FBQztBQUVGLG9CQUFvQjtBQUNwQixPQUFPLFdBQVcsTUFBTSxjQUFjLENBQUM7QUFFdkMsT0FBTyxFQUFFLFdBQVcsRUFBRSxDQUFDIn0=
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export * from './domtools.colors.js';
|
|
2
|
+
import * as elementBasic from './domtools.elementbasic.js';
|
|
3
|
+
import * as breakpoints from './domtools.css.breakpoints.js';
|
|
4
|
+
import * as css from './domtools.css.js';
|
|
5
|
+
export { css, breakpoints, elementBasic };
|
|
6
|
+
export { DomTools, IDomToolsContructorOptions } from './domtools.classes.domtools.js';
|
|
7
|
+
export { TypedRequest } from '@apiglobal/typedrequest';
|
|
8
|
+
export { IWebSetupConstructorOptions } from '@pushrocks/websetup';
|
|
9
|
+
export { rxjs } from '@pushrocks/smartrx';
|
|
10
|
+
import * as allPlugins from './domtools.plugins.js';
|
|
11
|
+
export declare const plugins: {
|
|
12
|
+
smartdelay: typeof allPlugins.smartdelay;
|
|
13
|
+
smartpromise: typeof allPlugins.smartpromise;
|
|
14
|
+
SweetScroll: typeof allPlugins.SweetScroll;
|
|
15
|
+
smartstate: typeof allPlugins.smartstate;
|
|
16
|
+
};
|
package/dist_ts/index.js
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export * from './domtools.colors.js';
|
|
2
|
+
import * as elementBasic from './domtools.elementbasic.js';
|
|
3
|
+
import * as breakpoints from './domtools.css.breakpoints.js';
|
|
4
|
+
import * as css from './domtools.css.js';
|
|
5
|
+
export { css, breakpoints, elementBasic };
|
|
6
|
+
export { DomTools } from './domtools.classes.domtools.js';
|
|
7
|
+
export { TypedRequest } from '@apiglobal/typedrequest';
|
|
8
|
+
export {} from '@pushrocks/websetup';
|
|
9
|
+
export { rxjs } from '@pushrocks/smartrx';
|
|
10
|
+
import * as allPlugins from './domtools.plugins.js';
|
|
11
|
+
export const plugins = {
|
|
12
|
+
smartdelay: allPlugins.smartdelay,
|
|
13
|
+
smartpromise: allPlugins.smartpromise,
|
|
14
|
+
SweetScroll: allPlugins.SweetScroll,
|
|
15
|
+
smartstate: allPlugins.smartstate,
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLHNCQUFzQixDQUFDO0FBRXJDLE9BQU8sS0FBSyxZQUFZLE1BQU0sNEJBQTRCLENBQUM7QUFDM0QsT0FBTyxLQUFLLFdBQVcsTUFBTSwrQkFBK0IsQ0FBQztBQUM3RCxPQUFPLEtBQUssR0FBRyxNQUFNLG1CQUFtQixDQUFDO0FBRXpDLE9BQU8sRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLFlBQVksRUFBRSxDQUFDO0FBQzFDLE9BQU8sRUFBRSxRQUFRLEVBQThCLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEYsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3ZELE9BQU8sRUFBK0IsTUFBTSxxQkFBcUIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFMUMsT0FBTyxLQUFLLFVBQVUsTUFBTSx1QkFBdUIsQ0FBQztBQUVwRCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUc7SUFDckIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO0lBQ2pDLFlBQVksRUFBRSxVQUFVLENBQUMsWUFBWTtJQUNyQyxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVc7SUFDbkMsVUFBVSxFQUFFLFVBQVUsQ0FBQyxVQUFVO0NBQ2xDLENBQUMifQ==
|
package/license
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2020 Lossless GmbH (hello@lossless.com)
|
|
2
|
+
Copyright (c) 2017 Nathan Friend (ts-keycode-enum)
|
|
3
|
+
|
|
4
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
5
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
6
|
+
in the Software without restriction, including without limitation the rights
|
|
7
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
8
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
9
|
+
furnished to do so, subject to the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be included in all
|
|
12
|
+
copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
15
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
16
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
17
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
18
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
19
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
20
|
+
SOFTWARE.
|
package/npmextra.json
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"gitzone": {
|
|
3
|
+
"projectType": "npm",
|
|
4
|
+
"module": {
|
|
5
|
+
"githost": "gitlab.com",
|
|
6
|
+
"gitscope": "design.estate",
|
|
7
|
+
"gitrepo": "dees-domtools",
|
|
8
|
+
"description": "tools to simplify complex css structures",
|
|
9
|
+
"npmPackagename": "@design.estate/dees-domtools",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"projectDomain": "design.estate"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"npmci": {
|
|
15
|
+
"npmGlobalTools": [],
|
|
16
|
+
"npmAccessLevel": "public"
|
|
17
|
+
}
|
|
18
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@design.estate/dees-domtools",
|
|
3
|
+
"version": "2.0.36",
|
|
4
|
+
"private": false,
|
|
5
|
+
"description": "tools to simplify complex css structures",
|
|
6
|
+
"main": "dist_ts/index.js",
|
|
7
|
+
"typings": "dist_ts/index.d.ts",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"author": "Lossless GmbH",
|
|
10
|
+
"license": "MIT",
|
|
11
|
+
"scripts": {
|
|
12
|
+
"test": "(tstest test/ --web)",
|
|
13
|
+
"build": "(tsbuild --web --allowimplicitany && tsbundle npm)",
|
|
14
|
+
"format": "(gitzone format)",
|
|
15
|
+
"buildDocs": "tsdoc"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@gitzone/tsbuild": "^2.1.63",
|
|
19
|
+
"@gitzone/tsbundle": "^2.0.6",
|
|
20
|
+
"@gitzone/tstest": "^1.0.72",
|
|
21
|
+
"@pushrocks/tapbundle": "^5.0.4",
|
|
22
|
+
"@types/node": "^20.1.0"
|
|
23
|
+
},
|
|
24
|
+
"dependencies": {
|
|
25
|
+
"@apiglobal/typedrequest": "^2.0.8",
|
|
26
|
+
"@designestate/dees-comms": "^1.0.22",
|
|
27
|
+
"@pushrocks/lik": "^6.0.2",
|
|
28
|
+
"@pushrocks/smartdelay": "^3.0.1",
|
|
29
|
+
"@pushrocks/smartjson": "^5.0.5",
|
|
30
|
+
"@pushrocks/smartpromise": "^4.0.2",
|
|
31
|
+
"@pushrocks/smartrouter": "^1.0.16",
|
|
32
|
+
"@pushrocks/smartrx": "^3.0.0",
|
|
33
|
+
"@pushrocks/smartstate": "^2.0.6",
|
|
34
|
+
"@pushrocks/smarturl": "^3.0.6",
|
|
35
|
+
"@pushrocks/webrequest": "^3.0.23",
|
|
36
|
+
"@pushrocks/websetup": "^3.0.19",
|
|
37
|
+
"@pushrocks/webstore": "^2.0.8",
|
|
38
|
+
"lit": "^2.7.4",
|
|
39
|
+
"sweet-scroll": "^4.0.0"
|
|
40
|
+
},
|
|
41
|
+
"files": [
|
|
42
|
+
"ts/**/*",
|
|
43
|
+
"ts_web/**/*",
|
|
44
|
+
"dist/**/*",
|
|
45
|
+
"dist_*/**/*",
|
|
46
|
+
"dist_ts/**/*",
|
|
47
|
+
"dist_ts_web/**/*",
|
|
48
|
+
"assets/**/*",
|
|
49
|
+
"cli.js",
|
|
50
|
+
"npmextra.json",
|
|
51
|
+
"readme.md"
|
|
52
|
+
],
|
|
53
|
+
"browserslist": [
|
|
54
|
+
"last 1 chrome versions"
|
|
55
|
+
]
|
|
56
|
+
}
|
package/readme.md
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# @designestate/dees-domtools
|
|
2
|
+
tools to simplify complex css structures
|
|
3
|
+
|
|
4
|
+
## Availabililty and Links
|
|
5
|
+
* [npmjs.org (npm package)](https://www.npmjs.com/package/@designestate/dees-domtools)
|
|
6
|
+
* [gitlab.com (source)](https://gitlab.com/designestate/dees-domtools)
|
|
7
|
+
* [github.com (source mirror)](https://github.com/designestate/dees-domtools)
|
|
8
|
+
* [docs (typedoc)](https://designestate.gitlab.io/dees-domtools/)
|
|
9
|
+
|
|
10
|
+
## Status for master
|
|
11
|
+
|
|
12
|
+
Status Category | Status Badge
|
|
13
|
+
-- | --
|
|
14
|
+
GitLab Pipelines | [](https://lossless.cloud)
|
|
15
|
+
GitLab Pipline Test Coverage | [](https://lossless.cloud)
|
|
16
|
+
npm | [](https://lossless.cloud)
|
|
17
|
+
Snyk | [](https://lossless.cloud)
|
|
18
|
+
TypeScript Support | [](https://lossless.cloud)
|
|
19
|
+
node Support | [](https://nodejs.org/dist/latest-v10.x/docs/api/)
|
|
20
|
+
Code Style | [](https://lossless.cloud)
|
|
21
|
+
PackagePhobia (total standalone install weight) | [](https://lossless.cloud)
|
|
22
|
+
PackagePhobia (package size on registry) | [](https://lossless.cloud)
|
|
23
|
+
BundlePhobia (total size when bundled) | [](https://lossless.cloud)
|
|
24
|
+
|
|
25
|
+
## Usage
|
|
26
|
+
|
|
27
|
+
Use TypeScript for best in class intellisense
|
|
28
|
+
|
|
29
|
+
## Contribution
|
|
30
|
+
|
|
31
|
+
We are always happy for code contributions. If you are not the code contributing type that is ok. Still, maintaining Open Source repositories takes considerable time and thought. If you like the quality of what we do and our modules are useful to you we would appreciate a little monthly contribution: You can [contribute one time](https://lossless.link/contribute-onetime) or [contribute monthly](https://lossless.link/contribute). :)
|
|
32
|
+
|
|
33
|
+
For further information read the linked docs at the top of this readme.
|
|
34
|
+
|
|
35
|
+
## Legal
|
|
36
|
+
> MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc)
|
|
37
|
+
| By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy)
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
import * as plugins from './domtools.plugins.js';
|
|
2
|
+
import { TViewport } from './domtools.css.breakpoints.js';
|
|
3
|
+
import { Scroller } from './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
|
+
|
|
8
|
+
export interface IDomToolsState {
|
|
9
|
+
virtualViewport: TViewport;
|
|
10
|
+
jwt: string;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface IDomToolsContructorOptions {
|
|
14
|
+
ignoreGlobal?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export class DomTools {
|
|
18
|
+
// ======
|
|
19
|
+
// STATIC
|
|
20
|
+
// ======
|
|
21
|
+
/**
|
|
22
|
+
* setups domtools
|
|
23
|
+
*/
|
|
24
|
+
public static async setupDomTools(optionsArg: IDomToolsContructorOptions = {}) {
|
|
25
|
+
let domToolsInstance: DomTools;
|
|
26
|
+
if (!globalThis.deesDomTools && !optionsArg.ignoreGlobal) {
|
|
27
|
+
globalThis.deesDomTools = new DomTools(optionsArg);
|
|
28
|
+
domToolsInstance = globalThis.deesDomTools;
|
|
29
|
+
|
|
30
|
+
// lets make sure the dom is ready
|
|
31
|
+
const readyStateChangedFunc = () => {
|
|
32
|
+
if (document.readyState === 'interactive' || document.readyState === 'complete') {
|
|
33
|
+
domToolsInstance.elements.headElement = document.querySelector('head');
|
|
34
|
+
domToolsInstance.elements.bodyElement = document.querySelector('body');
|
|
35
|
+
domToolsInstance.domReady.resolve();
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
document.addEventListener('readystatechange', readyStateChangedFunc);
|
|
39
|
+
domToolsInstance.domToolsReady.resolve();
|
|
40
|
+
} else if (optionsArg.ignoreGlobal) {
|
|
41
|
+
domToolsInstance = new DomTools(optionsArg);
|
|
42
|
+
} else {
|
|
43
|
+
domToolsInstance = globalThis.deesDomTools;
|
|
44
|
+
}
|
|
45
|
+
await domToolsInstance.domToolsReady.promise;
|
|
46
|
+
return domToolsInstance;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* if you can, use the static asysnc .setupDomTools() function instead since it is safer to use.
|
|
51
|
+
*/
|
|
52
|
+
public static getGlobalDomToolsSync(): DomTools {
|
|
53
|
+
const globalDomTools: DomTools = globalThis.deesDomTools;
|
|
54
|
+
if (!globalDomTools) {
|
|
55
|
+
throw new Error('You tried to access domtools synchronously too early');
|
|
56
|
+
}
|
|
57
|
+
return globalThis.deesDomTools;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
// ========
|
|
61
|
+
// INSTANCE
|
|
62
|
+
// ========
|
|
63
|
+
// elements
|
|
64
|
+
public elements: {
|
|
65
|
+
headElement: HTMLElement;
|
|
66
|
+
bodyElement: HTMLElement;
|
|
67
|
+
} = {
|
|
68
|
+
headElement: null,
|
|
69
|
+
bodyElement: null,
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
public websetup: WebSetup = new WebSetup({
|
|
73
|
+
metaObject: {
|
|
74
|
+
title: 'loading...',
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
|
|
78
|
+
public smartstate = new plugins.smartstate.Smartstate();
|
|
79
|
+
public domToolsStatePart = this.smartstate.getStatePart<IDomToolsState>('domtools', {
|
|
80
|
+
virtualViewport: 'native',
|
|
81
|
+
jwt: null,
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
public router = new plugins.smartrouter.SmartRouter({
|
|
85
|
+
debug: false,
|
|
86
|
+
});
|
|
87
|
+
|
|
88
|
+
public convenience = {
|
|
89
|
+
typedrequest: plugins.typedrequest,
|
|
90
|
+
smartdelay: plugins.smartdelay,
|
|
91
|
+
smartjson: plugins.smartjson,
|
|
92
|
+
smarturl: plugins.smarturl,
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
public deesComms = new plugins.deesComms.DeesComms();
|
|
96
|
+
public scroller = new plugins.SweetScroll({
|
|
97
|
+
/* some options */
|
|
98
|
+
}); // TODO: switch to scroller class
|
|
99
|
+
public themeManager = new ThemeManager(this);
|
|
100
|
+
public keyboard = new Keyboard(document.body);
|
|
101
|
+
|
|
102
|
+
public domToolsReady = plugins.smartpromise.defer();
|
|
103
|
+
public domReady = plugins.smartpromise.defer();
|
|
104
|
+
public globalStylesReady = plugins.smartpromise.defer();
|
|
105
|
+
|
|
106
|
+
constructor(optionsArg: IDomToolsContructorOptions) {}
|
|
107
|
+
|
|
108
|
+
private runOnceTrackerStringMap = new plugins.lik.Stringmap();
|
|
109
|
+
private runOnceResultMap = new plugins.lik.FastMap();
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* run a function once and always get the Promise of the first execution
|
|
113
|
+
* @param identifierArg the indentifier arg identifies functions. functions with the same identifier are considered equal
|
|
114
|
+
* @param funcArg the actual func arg to run
|
|
115
|
+
*/
|
|
116
|
+
public async runOnce<T>(identifierArg: string, funcArg: () => Promise<T>) {
|
|
117
|
+
const runningId = `${identifierArg}+runningCheck`;
|
|
118
|
+
if (!this.runOnceTrackerStringMap.checkString(identifierArg)) {
|
|
119
|
+
this.runOnceTrackerStringMap.addString(identifierArg);
|
|
120
|
+
this.runOnceTrackerStringMap.addString(runningId);
|
|
121
|
+
const result = await funcArg();
|
|
122
|
+
this.runOnceResultMap.addToMap(identifierArg, result);
|
|
123
|
+
this.runOnceTrackerStringMap.removeString(runningId);
|
|
124
|
+
}
|
|
125
|
+
return await this.runOnceTrackerStringMap.registerUntilTrue(
|
|
126
|
+
(stringMap) => {
|
|
127
|
+
return !stringMap.includes(runningId);
|
|
128
|
+
},
|
|
129
|
+
() => {
|
|
130
|
+
return this.runOnceResultMap.getByKey(identifierArg);
|
|
131
|
+
}
|
|
132
|
+
);
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
// setStuff
|
|
136
|
+
/**
|
|
137
|
+
* allows to set global styles
|
|
138
|
+
* @param stylesText the css text you want to set
|
|
139
|
+
*/
|
|
140
|
+
public async setGlobalStyles(stylesText: string) {
|
|
141
|
+
await this.domReady.promise;
|
|
142
|
+
const styleElement = document.createElement('style');
|
|
143
|
+
styleElement.type = 'text/css';
|
|
144
|
+
styleElement.appendChild(document.createTextNode(stylesText));
|
|
145
|
+
this.elements.headElement.appendChild(styleElement);
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/**
|
|
149
|
+
* allows to set global styles
|
|
150
|
+
* @param stylesText the css text you want to set
|
|
151
|
+
*/
|
|
152
|
+
public async setExternalScript(scriptLinkArg: string) {
|
|
153
|
+
await this.domReady.promise;
|
|
154
|
+
const done = plugins.smartpromise.defer();
|
|
155
|
+
const script = document.createElement('script');
|
|
156
|
+
script.src = scriptLinkArg;
|
|
157
|
+
script.addEventListener('load', function () {
|
|
158
|
+
done.resolve();
|
|
159
|
+
});
|
|
160
|
+
const parentNode = document.head || document.body;
|
|
161
|
+
parentNode.append(script);
|
|
162
|
+
await done.promise;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* allows setting external css files
|
|
167
|
+
* @param cssLinkArg a url to an external stylesheet
|
|
168
|
+
*/
|
|
169
|
+
public async setExternalCss(cssLinkArg: string) {
|
|
170
|
+
const cssTag = document.createElement('link');
|
|
171
|
+
cssTag.rel = 'stylesheet';
|
|
172
|
+
cssTag.crossOrigin = 'anonymous';
|
|
173
|
+
cssTag.href = cssLinkArg;
|
|
174
|
+
document.head.append(cssTag);
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* allows setting of website infos
|
|
179
|
+
* @param optionsArg the website info
|
|
180
|
+
*/
|
|
181
|
+
public async setWebsiteInfo(optionsArg: plugins.websetup.IWebSetupConstructorOptions) {
|
|
182
|
+
await this.websetup.setup(optionsArg);
|
|
183
|
+
await this.websetup.readyPromise;
|
|
184
|
+
}
|
|
185
|
+
}
|