@linzjs/windows 11.2.0 → 12.0.0
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/LuiModalAsync/useLuiModalPrefab.d.ts +2 -0
- package/dist/LuiModalAsync/useLuiModalPrefab.js +2 -2
- package/dist/LuiModalAsync/useLuiModalPrefab.js.map +1 -1
- package/dist/index.js +43 -14
- package/dist/index.js.map +1 -1
- package/dist/panel/PopoutWindow.js +9 -4
- package/dist/panel/PopoutWindow.js.map +1 -1
- package/dist/panel/handleStyleSheetsChanges.d.ts +4 -2
- package/dist/panel/handleStyleSheetsChanges.js +23 -8
- package/dist/panel/handleStyleSheetsChanges.js.map +1 -1
- package/dist/panel/openExternalWindow.js +12 -3
- package/dist/panel/openExternalWindow.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import createCache from '@emotion/cache';
|
|
3
3
|
import { CacheProvider } from '@emotion/react';
|
|
4
|
-
import { useContext, useEffect, useState } from 'react';
|
|
4
|
+
import { useContext, useEffect, useMemo, useState } from 'react';
|
|
5
5
|
import { createPortal } from 'react-dom';
|
|
6
6
|
import { makePopoutId } from './generateId';
|
|
7
7
|
import { openExternalWindow } from './openExternalWindow';
|
|
@@ -65,8 +65,13 @@ export const PopoutWindow = ({ name, title = name, size, popInPanelPosition, pop
|
|
|
65
65
|
// The `@emotion/react/CacheProvider`provides a cache derived from createCache for inline styles
|
|
66
66
|
// these will be generated into the `container` and prefixed with the `key` below, ensuring
|
|
67
67
|
// the styles are in the popout rather than the root window.
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
// Memoised so the cache (and its deduplication tracking) is stable across re-renders,
|
|
69
|
+
// and only created once headElement is defined — if container is undefined Emotion falls
|
|
70
|
+
// back to document.head, causing styles to be orphaned in the root window.
|
|
71
|
+
const myCache = useMemo(() => (headElement ? createCache({ key: makePopoutId(name), container: headElement }) : null), [headElement, name]);
|
|
72
|
+
if (!containerElement || !myCache) {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
return createPortal(_jsx(CacheProvider, { value: myCache, children: children }), containerElement);
|
|
71
76
|
};
|
|
72
77
|
//# sourceMappingURL=PopoutWindow.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PopoutWindow.js","sourceRoot":"","sources":["../../src/panel/PopoutWindow.tsx"],"names":[],"mappings":";AAAA,OAAO,WAAW,MAAM,gBAAgB,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAmC,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"PopoutWindow.js","sourceRoot":"","sources":["../../src/panel/PopoutWindow.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
export declare const addInsertRuleListener: (fn: () => void) => void;
|
|
2
|
+
export declare const removeInsertRuleListener: (fn: () => void) => void;
|
|
1
3
|
export declare const copyStyleSheets: (newHeadMountElement: HTMLDivElement) => void;
|
|
2
4
|
/**
|
|
3
5
|
* Add listener for dynamic style changes
|
|
4
6
|
* This works by listening to any changes to the head element
|
|
5
7
|
* If there are any changes it replaces all the styles in the floating window
|
|
6
8
|
* at most every 100ms
|
|
7
|
-
* @param
|
|
9
|
+
* @param onStyleChange throttled callback to trigger a style copy
|
|
8
10
|
*/
|
|
9
|
-
export declare const observeStyleSheetChanges: (
|
|
11
|
+
export declare const observeStyleSheetChanges: (onStyleChange: () => void) => MutationObserver | null;
|
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
|
|
1
|
+
// Shared patch for CSSStyleSheet.insertRule so multiple concurrent popouts don't stomp each other.
|
|
2
|
+
// Emotion (used by react-select) injects styles via insertRule, bypassing DOM mutations entirely.
|
|
3
|
+
const insertRuleListeners = new Set();
|
|
4
|
+
const originalInsertRule = CSSStyleSheet.prototype.insertRule;
|
|
5
|
+
export const addInsertRuleListener = (fn) => {
|
|
6
|
+
if (insertRuleListeners.size === 0) {
|
|
7
|
+
CSSStyleSheet.prototype.insertRule = function (rule, index) {
|
|
8
|
+
const result = originalInsertRule.call(this, rule, index);
|
|
9
|
+
insertRuleListeners.forEach((listener) => listener());
|
|
10
|
+
return result;
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
insertRuleListeners.add(fn);
|
|
14
|
+
};
|
|
15
|
+
export const removeInsertRuleListener = (fn) => {
|
|
16
|
+
insertRuleListeners.delete(fn);
|
|
17
|
+
if (insertRuleListeners.size === 0) {
|
|
18
|
+
CSSStyleSheet.prototype.insertRule = originalInsertRule;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
2
21
|
// Copy the app's styles into the new window
|
|
3
22
|
export const copyStyleSheets = (newHeadMountElement) => {
|
|
4
23
|
const stylesheets = Array.from(document.styleSheets);
|
|
@@ -26,19 +45,15 @@ export const copyStyleSheets = (newHeadMountElement) => {
|
|
|
26
45
|
* This works by listening to any changes to the head element
|
|
27
46
|
* If there are any changes it replaces all the styles in the floating window
|
|
28
47
|
* at most every 100ms
|
|
29
|
-
* @param
|
|
48
|
+
* @param onStyleChange throttled callback to trigger a style copy
|
|
30
49
|
*/
|
|
31
|
-
export const observeStyleSheetChanges = (
|
|
50
|
+
export const observeStyleSheetChanges = (onStyleChange) => {
|
|
32
51
|
const targetNode = document.querySelector('head');
|
|
33
52
|
if (!targetNode) {
|
|
34
53
|
return null;
|
|
35
54
|
}
|
|
36
55
|
// Options for the observer (which mutations to observe)
|
|
37
56
|
const config = { /*attributes: true,*/ childList: true /*, subtree: true */ };
|
|
38
|
-
//throttle the copying of the all the styles at most 100ms
|
|
39
|
-
const throttleCopyStyleSheets = throttle(() => {
|
|
40
|
-
copyStyleSheets(newHeadMountElement);
|
|
41
|
-
}, 100);
|
|
42
57
|
// Callback function to execute when mutations are observed
|
|
43
58
|
const callback = function (mutationList) {
|
|
44
59
|
for (const mutation of mutationList) {
|
|
@@ -49,7 +64,7 @@ export const observeStyleSheetChanges = (newHeadMountElement) => {
|
|
|
49
64
|
//floating window is complicated, so the easiest way is to just wait for modifications for finish
|
|
50
65
|
//updating, then replace them all
|
|
51
66
|
//we could probably just copy all style on every modification, by that might have a performance hit
|
|
52
|
-
|
|
67
|
+
onStyleChange();
|
|
53
68
|
} /*else if (mutation.type === "attributes") {
|
|
54
69
|
//Do we need to handle attribute modifications?
|
|
55
70
|
// console.log("The " + mutation.attributeName + " attribute was modified.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleStyleSheetsChanges.js","sourceRoot":"","sources":["../../src/panel/handleStyleSheetsChanges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"handleStyleSheetsChanges.js","sourceRoot":"","sources":["../../src/panel/handleStyleSheetsChanges.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { throttle } from 'lodash-es';
|
|
1
2
|
import { makePopoutId, popoutWindowDivId } from './generateId';
|
|
2
|
-
import { copyStyleSheets, observeStyleSheetChanges } from './handleStyleSheetsChanges';
|
|
3
|
+
import { addInsertRuleListener, copyStyleSheets, observeStyleSheetChanges, removeInsertRuleListener, } from './handleStyleSheetsChanges';
|
|
3
4
|
/**
|
|
4
5
|
* Open and scaffold the new external window.
|
|
5
6
|
*
|
|
@@ -47,11 +48,19 @@ export const openExternalWindow = ({ title, size, setContainerElement, setHeadEl
|
|
|
47
48
|
// so the modal shows up in the popped out window instead the main window
|
|
48
49
|
newMountElement.id = popoutWindowDivId(title);
|
|
49
50
|
copyStyleSheets(newHeadMountElement);
|
|
51
|
+
// Always intercept insertRule so styles injected after the initial copy (e.g. react-select
|
|
52
|
+
// rendering after the window opens) are synced to the popout. Uses a shared throttled
|
|
53
|
+
// callback so both this and the optional MutationObserver drive the same copy call.
|
|
54
|
+
const throttledCopy = throttle(() => copyStyleSheets(newHeadMountElement), 100);
|
|
55
|
+
addInsertRuleListener(throttledCopy);
|
|
50
56
|
let observer = null;
|
|
51
57
|
if (observeStyleChanges) {
|
|
52
|
-
observer = observeStyleSheetChanges(
|
|
58
|
+
observer = observeStyleSheetChanges(throttledCopy);
|
|
53
59
|
}
|
|
54
|
-
externalWindow.onbeforeunload = () =>
|
|
60
|
+
externalWindow.onbeforeunload = () => {
|
|
61
|
+
observer?.disconnect();
|
|
62
|
+
removeInsertRuleListener(throttledCopy);
|
|
63
|
+
};
|
|
55
64
|
response.onCloseExternalWindow = () => {
|
|
56
65
|
// Make sure the window closes when the component unmounts
|
|
57
66
|
externalWindow.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openExternalWindow.js","sourceRoot":"","sources":["../../src/panel/openExternalWindow.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"openExternalWindow.js","sourceRoot":"","sources":["../../src/panel/openExternalWindow.ts"],"names":[],"mappings":"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"}
|