@stemy/ngx-utils 19.4.11 → 19.4.13
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.
|
@@ -1907,57 +1907,58 @@ class JSONfn {
|
|
|
1907
1907
|
}
|
|
1908
1908
|
|
|
1909
1909
|
class LoaderUtils {
|
|
1910
|
-
static { this.
|
|
1911
|
-
static { this.stylePromises = {}; }
|
|
1910
|
+
static { this.promises = {}; }
|
|
1912
1911
|
static loadScript(src, async = false, type = "text/javascript", parent) {
|
|
1913
|
-
|
|
1914
|
-
|
|
1912
|
+
return LoaderUtils.loadElement(src, parent, () => {
|
|
1913
|
+
const time = new Date().getTime();
|
|
1915
1914
|
const script = document.createElement("script");
|
|
1916
1915
|
script.type = type;
|
|
1917
|
-
script.src = src
|
|
1916
|
+
script.src = src?.startsWith("data:") ? src : `${src}?time=${time}`;
|
|
1918
1917
|
script.async = async;
|
|
1919
|
-
|
|
1920
|
-
// Internet explorer
|
|
1921
|
-
script.onreadystatechange = () => {
|
|
1922
|
-
if (script.readyState === "loaded" || script.readyState === "complete") {
|
|
1923
|
-
script.onreadystatechange = null;
|
|
1924
|
-
resolve(script);
|
|
1925
|
-
}
|
|
1926
|
-
};
|
|
1927
|
-
}
|
|
1928
|
-
else {
|
|
1929
|
-
// Other browsers
|
|
1930
|
-
script.onload = () => resolve(script);
|
|
1931
|
-
}
|
|
1932
|
-
script.onerror = (error) => reject(error);
|
|
1933
|
-
(parent || document.body).appendChild(script);
|
|
1918
|
+
return script;
|
|
1934
1919
|
});
|
|
1935
|
-
return this.scriptPromises[src];
|
|
1936
1920
|
}
|
|
1937
1921
|
static loadStyle(src, parent) {
|
|
1938
|
-
|
|
1939
|
-
|
|
1922
|
+
return LoaderUtils.loadElement(src, parent, () => {
|
|
1923
|
+
const time = new Date().getTime();
|
|
1940
1924
|
const link = document.createElement("link");
|
|
1941
1925
|
link.rel = "stylesheet";
|
|
1942
1926
|
link.type = "text/css";
|
|
1943
|
-
link.href = src
|
|
1944
|
-
|
|
1927
|
+
link.href = src?.startsWith("data:") ? src : `${src}?time=${time}`;
|
|
1928
|
+
return link;
|
|
1929
|
+
});
|
|
1930
|
+
}
|
|
1931
|
+
static loadElement(src, parent, setup) {
|
|
1932
|
+
const promises = LoaderUtils.promises;
|
|
1933
|
+
parent = parent || document.body;
|
|
1934
|
+
let { elem, promise } = promises[src] || {};
|
|
1935
|
+
if (elem) {
|
|
1936
|
+
if (parent === elem.parentElement)
|
|
1937
|
+
return promise;
|
|
1938
|
+
if (elem.parentElement) {
|
|
1939
|
+
elem.remove();
|
|
1940
|
+
}
|
|
1941
|
+
}
|
|
1942
|
+
elem = setup();
|
|
1943
|
+
promise = new Promise((resolve, reject) => {
|
|
1944
|
+
if (elem.readyState) {
|
|
1945
1945
|
// Internet explorer
|
|
1946
|
-
|
|
1947
|
-
if (
|
|
1948
|
-
|
|
1949
|
-
resolve(
|
|
1946
|
+
elem.onreadystatechange = () => {
|
|
1947
|
+
if (elem.readyState === "loaded" || elem.readyState === "complete") {
|
|
1948
|
+
elem.onreadystatechange = null;
|
|
1949
|
+
resolve(elem);
|
|
1950
1950
|
}
|
|
1951
1951
|
};
|
|
1952
1952
|
}
|
|
1953
1953
|
else {
|
|
1954
1954
|
// Other browsers
|
|
1955
|
-
|
|
1955
|
+
elem.onload = () => resolve(elem);
|
|
1956
1956
|
}
|
|
1957
|
-
|
|
1958
|
-
(parent || document.body).appendChild(link);
|
|
1957
|
+
elem.onerror = (error) => reject(error);
|
|
1959
1958
|
});
|
|
1960
|
-
|
|
1959
|
+
parent.appendChild(elem);
|
|
1960
|
+
promises[src] = { elem, promise };
|
|
1961
|
+
return promise;
|
|
1961
1962
|
}
|
|
1962
1963
|
}
|
|
1963
1964
|
|