@nine-lab/nine-mu 0.1.382 → 0.1.384

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/nine-mu.js CHANGED
@@ -17539,7 +17539,7 @@ render_fn = function() {
17539
17539
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
17540
17540
  this.shadowRoot.innerHTML = `
17541
17541
  <style>
17542
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.381"}/dist/css/nine-mu.css";
17542
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.383"}/dist/css/nine-mu.css";
17543
17543
  ${customImport}
17544
17544
  </style>
17545
17545
  <div class="wrapper">
@@ -43789,7 +43789,7 @@ class NineDiff extends HTMLElement {
43789
43789
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
43790
43790
  this.shadowRoot.innerHTML = `
43791
43791
  <style>
43792
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.381"}/dist/css/nine-mu.css";
43792
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.383"}/dist/css/nine-mu.css";
43793
43793
  ${customImport}
43794
43794
  </style>
43795
43795
 
@@ -43929,7 +43929,7 @@ renderScaffolding_fn = function() {
43929
43929
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
43930
43930
  this.shadowRoot.innerHTML = `
43931
43931
  <style>
43932
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.381"}/dist/css/nine-mu.css";
43932
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.383"}/dist/css/nine-mu.css";
43933
43933
  ${customImport}
43934
43934
  </style>
43935
43935
 
@@ -44038,7 +44038,7 @@ render_fn2 = function() {
44038
44038
  const customImport = nine$1.cssPath ? `@import "${nine$1.cssPath}/nine-mu.css";` : "";
44039
44039
  this.shadowRoot.innerHTML = `
44040
44040
  <style>
44041
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.381"}/dist/css/nine-mu.css";
44041
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.383"}/dist/css/nine-mu.css";
44042
44042
  ${customImport}
44043
44043
  </style>
44044
44044
 
@@ -44368,7 +44368,7 @@ class ChatMessageBody extends HTMLElement {
44368
44368
  const customImport = nine.cssPath ? `@import "${nine.cssPath}/nine-mu.css";` : "";
44369
44369
  this.shadowRoot.innerHTML = `
44370
44370
  <style>
44371
- @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.381"}/dist/css/nine-mu.css";
44371
+ @import "https://cdn.jsdelivr.net/npm/@nine-lab/nine-mu@${"0.1.383"}/dist/css/nine-mu.css";
44372
44372
  ${customImport}
44373
44373
  </style>
44374
44374
 
@@ -44652,30 +44652,45 @@ class NineExceptionHook extends React.Component {
44652
44652
  return this.props.children;
44653
44653
  }
44654
44654
  }
44655
- function NineHook({ menuUrl, views, error404, onCatch, fallback, styles, containerStyle }) {
44655
+ function NineHook({ children, menuUrl, views, error404, onCatch, fallback, styles, containerStyle }) {
44656
44656
  const [menuData, setMenuData] = useState([]);
44657
- useEffect(() => {
44657
+ const fetchRoutes = async () => {
44658
44658
  if (!menuUrl) return;
44659
- const fetchRoutes = async () => {
44660
- try {
44661
- const response = await fetch(`${menuUrl}?t=${Date.now()}`);
44662
- if (response.ok) {
44663
- const data = await response.json();
44664
- setMenuData(data);
44665
- }
44666
- } catch (e) {
44667
- console.error("[Nine-Library] 런타임 메뉴 동기화 실패:", e);
44659
+ try {
44660
+ const response = await fetch(`${menuUrl}?t=${Date.now()}`);
44661
+ if (response.ok) {
44662
+ const data = await response.json();
44663
+ setMenuData((prev) => {
44664
+ if (JSON.stringify(prev) === JSON.stringify(data)) return prev;
44665
+ console.log("🔥 [Nine-Library] routes.json 변경 감지 -> 전체 시스템 동기화");
44666
+ return data;
44667
+ });
44668
44668
  }
44669
- };
44669
+ } catch (e) {
44670
+ console.error("[Nine-Library] 런타임 메뉴 동기화 실패:", e);
44671
+ }
44672
+ };
44673
+ useEffect(() => {
44670
44674
  fetchRoutes();
44675
+ window.addEventListener("popstate", fetchRoutes);
44676
+ document.addEventListener("click", fetchRoutes, true);
44677
+ const intervalId = setInterval(fetchRoutes, 3e3);
44678
+ return () => {
44679
+ window.removeEventListener("popstate", fetchRoutes);
44680
+ document.removeEventListener("click", fetchRoutes, true);
44681
+ clearInterval(intervalId);
44682
+ };
44671
44683
  }, [menuUrl]);
44672
44684
  const dynamicRoutes = createDynamicRoutes(menuData, views, error404);
44673
44685
  return React.createElement(
44674
44686
  ScreenProvider,
44675
44687
  { menuData },
44688
+ // 🎯 이 전역 컨텍스트 공급자가 감싸는 범위를 대폭 넓힙니다.
44676
44689
  React.createElement(
44677
44690
  NineExceptionHook,
44678
44691
  { onCatch, fallback, styles, containerStyle },
44692
+ // 💡 [레이아웃 유연성 확보]: Routes 바깥의 컴포넌트(예: LeftMenu)가 있다면 여기에 먼저 뿌려줍니다.
44693
+ children,
44679
44694
  React.createElement(
44680
44695
  Suspense,
44681
44696
  { fallback: React.createElement("div", { style: { padding: "25px", color: "#666", fontFamily: "monospace" } }, ">> Loading component matrix...") },
@@ -44695,7 +44710,7 @@ function NineHook({ menuUrl, views, error404, onCatch, fallback, styles, contain
44695
44710
  );
44696
44711
  }
44697
44712
  const NineMu = {
44698
- version: "0.1.381",
44713
+ version: "0.1.383",
44699
44714
  init: (config2) => {
44700
44715
  trace$1.log("🛠️ Nine-Mu Engine initialized", config2);
44701
44716
  }