|
|
|
@@ -2,12 +2,19 @@ import * as plugins from './domtools.plugins';
|
|
|
|
|
import { Stringmap } from '@pushrocks/lik/dist_ts/lik.stringmap';
|
|
|
|
|
import { FastMap } from '@pushrocks/lik/dist_ts/lik.fastmap';
|
|
|
|
|
import { TViewport } from './domtools.breakpoints';
|
|
|
|
|
import { DomToolsRouter } from './domtools.classes.router';
|
|
|
|
|
|
|
|
|
|
export interface IDomToolsState {
|
|
|
|
|
virtualViewport: TViewport;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export class DomTools {
|
|
|
|
|
// ======
|
|
|
|
|
// STATIC
|
|
|
|
|
// ======
|
|
|
|
|
/**
|
|
|
|
|
* setups domtools
|
|
|
|
|
*/
|
|
|
|
|
public static async setupDomTools() {
|
|
|
|
|
let domToolsInstance: DomTools;
|
|
|
|
|
if (!globalThis.deesDomTools) {
|
|
|
|
@@ -30,17 +37,26 @@ export class DomTools {
|
|
|
|
|
return domToolsInstance;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ========
|
|
|
|
|
// INSTANCE
|
|
|
|
|
// ========
|
|
|
|
|
public smartstate = new plugins.smartstate.Smartstate();
|
|
|
|
|
public domToolsStatePart = this.smartstate.getStatePart<IDomToolsState>('domtools', {
|
|
|
|
|
virtualViewport: 'native'
|
|
|
|
|
virtualViewport: 'native',
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
public actionSetVirtualViewport = this.domToolsStatePart.createAction<TViewport>(async (statePart, payload) => {
|
|
|
|
|
const currentState = statePart.getState();
|
|
|
|
|
currentState.virtualViewport = payload;
|
|
|
|
|
return currentState;
|
|
|
|
|
public router = new DomToolsRouter({
|
|
|
|
|
debug: false
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
private actionSetVirtualViewport = this.domToolsStatePart.createAction<TViewport>(
|
|
|
|
|
async (statePart, payload) => {
|
|
|
|
|
const currentState = statePart.getState();
|
|
|
|
|
currentState.virtualViewport = payload;
|
|
|
|
|
return currentState;
|
|
|
|
|
}
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
public domToolsReady = plugins.smartpromise.defer();
|
|
|
|
|
public domReady = plugins.smartpromise.defer();
|
|
|
|
|
public globalStylesReady = plugins.smartpromise.defer();
|
|
|
|
@@ -51,12 +67,10 @@ export class DomTools {
|
|
|
|
|
bodyElement: HTMLElement;
|
|
|
|
|
} = {
|
|
|
|
|
headElement: null,
|
|
|
|
|
bodyElement: null
|
|
|
|
|
bodyElement: null,
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
constructor() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
constructor() {}
|
|
|
|
|
|
|
|
|
|
public async setGlobalStyles(stylesText: string) {
|
|
|
|
|
await this.domReady.promise;
|
|
|
|
@@ -83,7 +97,7 @@ export class DomTools {
|
|
|
|
|
this.runOnceTrackerStringMap.removeString(runningId);
|
|
|
|
|
}
|
|
|
|
|
return await this.runOnceTrackerStringMap.registerUntilTrue(
|
|
|
|
|
stringMap => {
|
|
|
|
|
(stringMap) => {
|
|
|
|
|
return !stringMap.includes(runningId);
|
|
|
|
|
},
|
|
|
|
|
() => {
|
|
|
|
|