plotboilerplate 1.23.0 → 1.23.2
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/README.md +1 -1
- package/dist/index.esm.js +32 -11
- package/dist/index.esm.js.map +1 -1
- package/dist/index.esm.min.js +1 -1
- package/dist/index.esm.min.js.map +1 -1
- package/dist/plotboilerplate.browser.min.js +1 -1
- package/dist/plotboilerplate.browser.min.js.map +1 -1
- package/dist/plotboilerplate.js +32 -11
- package/dist/plotboilerplate.min.js +1 -1
- package/package.json +3 -1
- package/src/cjs/PlotBoilerplate.d.ts +17 -3
- package/src/cjs/PlotBoilerplate.js +22 -5
- package/src/cjs/PlotBoilerplate.js.map +1 -1
- package/src/cjs/drawutilssvg.d.ts +6 -1
- package/src/cjs/drawutilssvg.js +10 -6
- package/src/cjs/drawutilssvg.js.map +1 -1
- package/src/cjs/interfaces/core.d.ts +4 -2
- package/src/cjs/interfaces/core.js +1 -0
- package/src/cjs/interfaces/core.js.map +1 -1
- package/src/cjs/interfaces/externals.d.ts +42 -0
- package/src/cjs/utils/InitializationObserver.d.ts +18 -0
- package/src/cjs/utils/InitializationObserver.js +63 -0
- package/src/cjs/utils/InitializationObserver.js.map +1 -0
- package/src/cjs/utils/Params.d.ts +5 -3
- package/src/cjs/utils/Params.js +7 -3
- package/src/cjs/utils/Params.js.map +1 -1
- package/src/cjs/utils/creategui.js +386 -250
- package/src/cjs/utils/dat.gui.arrowbounce.polyfill.js +74 -73
- package/src/cjs/utils/dat.gui.title.polyfill.js +9 -7
- package/src/cjs/utils/dom/guiSizeToggler.d.ts +17 -0
- package/src/cjs/utils/dom/guiSizeToggler.js +42 -0
- package/src/cjs/utils/dom/guiSizeToggler.js.map +1 -0
- package/src/cjs/utils/gup.d.ts +1 -0
- package/src/cjs/utils/gup.js +3 -1
- package/src/cjs/utils/gup.js.map +1 -1
- package/src/cjs/utils/lil.gui.arrowbounce.polyfill.js +133 -0
- package/src/cjs/utils/lil.gui.title.polyfill.js +32 -0
- package/src/esm/PlotBoilerplate.d.ts +17 -3
- package/src/esm/PlotBoilerplate.js +22 -5
- package/src/esm/PlotBoilerplate.js.map +1 -1
- package/src/esm/drawutilssvg.d.ts +6 -1
- package/src/esm/drawutilssvg.js +10 -6
- package/src/esm/drawutilssvg.js.map +1 -1
- package/src/esm/interfaces/core.d.ts +4 -2
- package/src/esm/interfaces/core.js +1 -0
- package/src/esm/interfaces/core.js.map +1 -1
- package/src/esm/interfaces/externals.d.ts +42 -0
- package/src/esm/utils/InitializationObserver.d.ts +18 -0
- package/src/esm/utils/InitializationObserver.js +57 -0
- package/src/esm/utils/InitializationObserver.js.map +1 -0
- package/src/esm/utils/Params.d.ts +5 -3
- package/src/esm/utils/Params.js +7 -3
- package/src/esm/utils/Params.js.map +1 -1
- package/src/esm/utils/dom/guiSizeToggler.d.ts +17 -0
- package/src/esm/utils/dom/guiSizeToggler.js +38 -0
- package/src/esm/utils/dom/guiSizeToggler.js.map +1 -0
- package/src/esm/utils/gup.d.ts +1 -0
- package/src/esm/utils/gup.js +3 -1
- package/src/esm/utils/gup.js.map +1 -1
- package/src/index-gl.js +3 -1
- package/src/index.js +2 -1
- package/src/ts/PlotBoilerplate.ts +42 -11
- package/src/ts/drawutilssvg.ts +17 -6
- package/src/ts/interfaces/core.ts +5 -2
- package/src/ts/interfaces/externals.ts +50 -0
- package/src/ts/utils/InitializationObserver.ts +70 -0
- package/src/ts/utils/Params.ts +8 -3
- package/src/ts/utils/dom/guiSizeToggler.ts +45 -0
- package/src/ts/utils/gup.ts +3 -1
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Approach to observe objects from other scripts to be initialized.
|
|
3
|
+
*
|
|
4
|
+
* @author Ikaros Kappler
|
|
5
|
+
* @date 2024-07-08
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
interface IAccepptRejectPair<T, E> {
|
|
10
|
+
accept: (value: T) => void;
|
|
11
|
+
reject: (error: E | null) => void;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export class InitializationObserver<T, E> {
|
|
15
|
+
private _acceptRejectPairs: Array<IAccepptRejectPair<T, E | null>>;
|
|
16
|
+
private _timeoutMessage: E | null;
|
|
17
|
+
private _initializedValue: T;
|
|
18
|
+
private _isInitialized: boolean;
|
|
19
|
+
|
|
20
|
+
constructor(timeout: number, timeoutMessage?: E) {
|
|
21
|
+
this._acceptRejectPairs = [];
|
|
22
|
+
this._timeoutMessage = timeoutMessage ?? null;
|
|
23
|
+
|
|
24
|
+
globalThis.setTimeout(() => {
|
|
25
|
+
if (this._isInitialized) {
|
|
26
|
+
return; // NOOP
|
|
27
|
+
}
|
|
28
|
+
// else
|
|
29
|
+
if (!this._timeoutMessage) {
|
|
30
|
+
console.warn("Failed to initialize object. Reason unknown.");
|
|
31
|
+
}
|
|
32
|
+
this._fireReject(this._timeoutMessage ?? null);
|
|
33
|
+
}, timeout);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public accept(value: T): void {
|
|
37
|
+
if (this._isInitialized) {
|
|
38
|
+
return;
|
|
39
|
+
}
|
|
40
|
+
this._isInitialized = true;
|
|
41
|
+
this._initializedValue = value;
|
|
42
|
+
this._fireAccept(value);
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
private _fireAccept(value: T) {
|
|
46
|
+
this._acceptRejectPairs.forEach(pair => {
|
|
47
|
+
pair.accept(value);
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
private _fireReject(error: E | null) {
|
|
52
|
+
this._acceptRejectPairs.forEach(pair => {
|
|
53
|
+
pair.reject(error);
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
waitForInitialized(): Promise<T> {
|
|
58
|
+
const _self = this;
|
|
59
|
+
// If the value is already present, then accept immediately
|
|
60
|
+
if (_self._isInitialized) {
|
|
61
|
+
return new Promise<T>((accept: (value: T) => void, reject: (error: E | null) => void) => {
|
|
62
|
+
accept(_self._initializedValue);
|
|
63
|
+
});
|
|
64
|
+
} else {
|
|
65
|
+
return new Promise<T>((accept: (value: T) => void, reject: (error: E | null) => void) => {
|
|
66
|
+
_self._acceptRejectPairs.push({ accept, reject });
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
package/src/ts/utils/Params.ts
CHANGED
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
* Wraps a Record<string,string> and adds type conversion methods (developed this in
|
|
3
3
|
* some other project) and added this here (2023-10-28).
|
|
4
4
|
*
|
|
5
|
-
* @author
|
|
6
|
-
* @version
|
|
7
|
-
* @date
|
|
5
|
+
* @author Ikars Kappler
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @date 2023-03-13
|
|
8
|
+
* @modified 2024-08-26 Added the `hasParam` method.
|
|
8
9
|
*/
|
|
9
10
|
|
|
10
11
|
export class Params {
|
|
@@ -14,6 +15,10 @@ export class Params {
|
|
|
14
15
|
this.baseParams = baseParams;
|
|
15
16
|
}
|
|
16
17
|
|
|
18
|
+
hasParam(name: string): boolean {
|
|
19
|
+
return this.baseParams.hasOwnProperty(name);
|
|
20
|
+
}
|
|
21
|
+
|
|
17
22
|
getString(name: string, fallback: string): string {
|
|
18
23
|
let value = this.baseParams[name];
|
|
19
24
|
if (typeof value === "undefined" || !value || (value = value.trim()).length === 0) {
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @requires lil-gui
|
|
3
|
+
*
|
|
4
|
+
* @author Ikaros Kappler
|
|
5
|
+
* @date 2021-12-13
|
|
6
|
+
* @modified 2022-01-10
|
|
7
|
+
* @modified 2024-06-25 Ported to typescript and moved to utils/dom (was located inside demos before).
|
|
8
|
+
* @version 1.1.0
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { GUI } from "../../interfaces/externals";
|
|
12
|
+
|
|
13
|
+
interface ITogglerConfig {
|
|
14
|
+
guiDoubleSize?: boolean;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/**
|
|
18
|
+
* @param {GUI} gui - The GUI (compatible with dat.gui and lil-gui).
|
|
19
|
+
* @param {boolean} guiDoubleSize - True or false.
|
|
20
|
+
* @param {Record<string,string>} cssProps - The CSS props to use.
|
|
21
|
+
*/
|
|
22
|
+
const applyGuiSize = (gui: GUI, guiDoubleSize: boolean, cssProps: Record<string, string>) => {
|
|
23
|
+
if (cssProps && cssProps.hasOwnProperty("transformOrigin")) {
|
|
24
|
+
gui.domElement.style["transform-origin"] = cssProps["transformOrigin"];
|
|
25
|
+
} else {
|
|
26
|
+
gui.domElement.style["transform-origin"] = "100% 0%";
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const transform = cssProps && cssProps.hasOwnProperty("transform") ? cssProps["transform"] + " " : "";
|
|
30
|
+
|
|
31
|
+
console.log("transform", transform);
|
|
32
|
+
if (guiDoubleSize) {
|
|
33
|
+
gui.domElement.style["transform"] = transform + "scale(2.0)";
|
|
34
|
+
} else {
|
|
35
|
+
gui.domElement.style["transform"] = transform + "scale(1.0)";
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export const guiSizeToggler /* gst */ = (gui: GUI, config: ITogglerConfig, cssProps: Record<string, string>) => {
|
|
40
|
+
return {
|
|
41
|
+
update: function () {
|
|
42
|
+
applyGuiSize(gui, Boolean(config.guiDoubleSize), cssProps);
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
};
|
package/src/ts/utils/gup.ts
CHANGED
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* Ported to typescript.
|
|
10
10
|
* @date 2021-05-21
|
|
11
11
|
* @modified 2024-03-10 Fixed some type for Typescript 5 compatibility.
|
|
12
|
+
* @modified 2024-08-26 Decoding URI components in GET params.
|
|
12
13
|
*/
|
|
13
14
|
|
|
14
15
|
// Get the URI GET params as an assoc.
|
|
@@ -19,7 +20,8 @@
|
|
|
19
20
|
export const gup = (): Record<string, string> => {
|
|
20
21
|
const vars: Record<string, string> = {};
|
|
21
22
|
globalThis.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, (_m: string, key: string, value: string): string => {
|
|
22
|
-
|
|
23
|
+
const keyName: string = key as keyof Object;
|
|
24
|
+
return (vars[decodeURIComponent(keyName)] = value);
|
|
23
25
|
});
|
|
24
26
|
return vars;
|
|
25
27
|
};
|