@bwg-ui/core 1.1.2 → 1.1.3

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.
Files changed (48) hide show
  1. package/dist/chunks/{BwgLargeUploader-CwaZ2WwY.js → BwgLargeUploader-CZllyq7K.js} +515 -506
  2. package/dist/chunks/BwgLargeUploader-CZllyq7K.js.map +1 -0
  3. package/dist/chunks/BwgLargeUploader-xAjj4TQ1.cjs +3 -0
  4. package/dist/chunks/BwgLargeUploader-xAjj4TQ1.cjs.map +1 -0
  5. package/dist/chunks/{SSOHandler-CvYiloZ5.js → SSOHandler-BFys-2Zz.js} +1645 -1640
  6. package/dist/chunks/SSOHandler-BFys-2Zz.js.map +1 -0
  7. package/dist/chunks/SSOHandler-De8MPtGZ.cjs +184 -0
  8. package/dist/chunks/SSOHandler-De8MPtGZ.cjs.map +1 -0
  9. package/dist/chunks/{UtilsContext-B6P_aohP.cjs → UtilsContext-5l7yFRQI.cjs} +2 -2
  10. package/dist/chunks/{UtilsContext-B6P_aohP.cjs.map → UtilsContext-5l7yFRQI.cjs.map} +1 -1
  11. package/dist/chunks/{UtilsContext-B9uAvAVF.js → UtilsContext-CSgz9o2Z.js} +2 -2
  12. package/dist/chunks/{UtilsContext-B9uAvAVF.js.map → UtilsContext-CSgz9o2Z.js.map} +1 -1
  13. package/dist/chunks/popupStore-BGubYHZh.cjs +2 -0
  14. package/dist/chunks/popupStore-BGubYHZh.cjs.map +1 -0
  15. package/dist/chunks/{popupStore-BFIHOcoZ.js → popupStore-BJ_IYrdY.js} +2 -2
  16. package/dist/chunks/popupStore-BJ_IYrdY.js.map +1 -0
  17. package/dist/components/common/BwgGrid.d.ts +2 -0
  18. package/dist/components/common/BwgGrid.d.ts.map +1 -1
  19. package/dist/components/common/index.cjs +1 -1
  20. package/dist/components/common/index.js +1 -1
  21. package/dist/components/core/BwgFormItem.d.ts +1 -1
  22. package/dist/components/core/BwgFormItem.d.ts.map +1 -1
  23. package/dist/components/core/index.cjs +1 -1
  24. package/dist/components/core/index.js +1 -1
  25. package/dist/index.cjs +1 -1
  26. package/dist/index.js +4 -4
  27. package/dist/provider/index.cjs +1 -1
  28. package/dist/provider/index.js +1 -1
  29. package/dist/stores/index.cjs +1 -1
  30. package/dist/stores/index.cjs.map +1 -1
  31. package/dist/stores/index.d.ts +1 -1
  32. package/dist/stores/index.d.ts.map +1 -1
  33. package/dist/stores/index.js +1 -1
  34. package/dist/stores/index.js.map +1 -1
  35. package/dist/styles/components.css +50 -17
  36. package/dist/styles/layout.css +7 -0
  37. package/dist/styles/popup.css +4 -0
  38. package/dist/styles/variables.css +7 -1
  39. package/package.json +1 -1
  40. package/dist/chunks/BwgLargeUploader-CaH2F8x6.cjs +0 -3
  41. package/dist/chunks/BwgLargeUploader-CaH2F8x6.cjs.map +0 -1
  42. package/dist/chunks/BwgLargeUploader-CwaZ2WwY.js.map +0 -1
  43. package/dist/chunks/SSOHandler-CpCGcq5k.cjs +0 -184
  44. package/dist/chunks/SSOHandler-CpCGcq5k.cjs.map +0 -1
  45. package/dist/chunks/SSOHandler-CvYiloZ5.js.map +0 -1
  46. package/dist/chunks/popupStore--hKZUZcO.cjs +0 -2
  47. package/dist/chunks/popupStore--hKZUZcO.cjs.map +0 -1
  48. package/dist/chunks/popupStore-BFIHOcoZ.js.map +0 -1
@@ -1,2 +0,0 @@
1
- "use strict";const g=require("zustand"),a=require("./serviceConfig-Cc8jfw_Y.cjs"),P=g.create((r,i)=>({popups:[],activePopupId:null,isLoading:!1,error:null,openPopup:async(p,s,u)=>{console.log("팝업 열기 요청:",{popupCode:p,data:s,config:u}),r({isLoading:!0,error:null});try{console.log("팝업 열기 시작:",p);let o=null;const n=await a.callService(a.getServiceCode("SRCH_POPU"),{crprCd:a.getUserInfo().crprCd,popuCd:p});console.log("팝업 정보 조회 결과:",n),o=n?.mstr;const t=n?.dtls||[];if(console.info("popupInfo:",o),!o||!o.popuUrl){const e=`팝업 정보를 찾을 수 없습니다: ${p}`;throw console.error(e),new Error(e)}console.log("파싱된 팝업 정보:",o),console.log("버튼 목록:",t);const d=(e=>`/src/pages/views/popup/${e}`)(o.popuUrl);console.log("변환된 팝업 URL:",d);const l={popupId:`popup_${Date.now()}_${Math.random().toString(36).substr(2,9)}`,popupCode:p,popupTitle:o.popuNm||"팝업",popupUrl:d,popupParams:s,width:o.popuWdth||800,height:o.popuHght||600,resizable:!0,draggable:!0,buttonList:t,config:u};console.log("생성된 팝업 아이템:",l);const c=i().popups.find(e=>e.popupCode===p);if(c){console.log("기존 팝업 업데이트:",c.popupId),r({activePopupId:c.popupId,popups:i().popups.map(e=>e.popupId===c.popupId?{...e,config:u}:e),isLoading:!1});return}console.log("새 팝업 추가:",l.popupId),r(e=>({popups:[...e.popups,l],activePopupId:l.popupId,isLoading:!1})),console.log("팝업 열기 완료:",l)}catch(o){console.error("팝업 열기 실패:",o),r({error:o instanceof Error?o.message:"팝업 열기 실패",isLoading:!1})}},closePopup:p=>{const{popups:s,activePopupId:u}=i(),o=s.filter(t=>t.popupId!==p);let n=u;u===p&&(n=o.length>0?o[o.length-1].popupId:null),r({popups:o,activePopupId:n})},closeAllPopups:()=>{r({popups:[],activePopupId:null})},setActivePopup:p=>{r({activePopupId:p})},updatePopupConfig:(p,s)=>{r(u=>({popups:u.popups.map(o=>o.popupId===p?{...o,config:{...o.config,...s}}:o)}))}}));exports.usePopupStore=P;
2
- //# sourceMappingURL=popupStore--hKZUZcO.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popupStore--hKZUZcO.cjs","sources":["../../src/stores/popupStore.ts"],"sourcesContent":["import { create } from \"zustand\";\r\nimport { callService } from \"../utils/apiUtils\";\r\nimport { getServiceCode } from \"../utils/serviceConfig\";\r\nimport { getUserInfo } from \"@/utils\";\r\n\r\n// 팝업 아이템 타입 정의\r\nexport interface PopupItem {\r\n popupId: string; // 팝업 ID\r\n popupCode: string; // 팝업 코드\r\n popupTitle: string; // 팝업 제목\r\n popupUrl: string; // 팝업 프로그램 URL\r\n popupParams?: any; // 팝업 파라미터\r\n buttonList?: any[]; // 버튼 목록\r\n width?: number; // 팝업 너비\r\n height?: number; // 팝업 높이\r\n resizable?: boolean; // 크기 조절 가능 여부\r\n draggable?: boolean; // 드래그 가능 여부\r\n config?: PopupConfig; // 팝업 설정\r\n close?: () => void; // 팝업 닫기 함수\r\n}\r\n\r\n// 팝업 스토어 타입 정의\r\nexport interface PopupStore {\r\n popups: PopupItem[]; // 열린 팝업 목록\r\n activePopupId: string | null; // 현재 활성 팝업 ID\r\n isLoading: boolean; // 로딩 상태\r\n error: string | null; // 에러 상태\r\n\r\n // 팝업 관련 액션들\r\n openPopup: (\r\n popupCode: string,\r\n data?: any,\r\n config?: PopupConfig\r\n ) => Promise<void>;\r\n closePopup: (popupId: string) => void;\r\n closeAllPopups: () => void;\r\n setActivePopup: (popupId: string) => void;\r\n\r\n updatePopupConfig: (popupId: string, config: Partial<PopupConfig>) => void;\r\n}\r\n\r\nexport interface PopupButton {\r\n key: string; // 버튼 고유 키\r\n text: string; // 버튼 텍스트\r\n type?: \"primary\" | \"default\" | \"dashed\" | \"link\" | \"text\"; // 버튼 타입\r\n danger?: boolean; // 위험 버튼 여부\r\n disabled?: boolean; // 비활성화 여부\r\n icon?: string; // 아이콘 (Ant Design 아이콘명)\r\n onClick?: (popupData?: any) => void | Promise<void>; // 클릭 이벤트\r\n}\r\n\r\n/**\r\n * 팝업 설정 타입 정의\r\n */\r\nexport interface PopupConfig {\r\n width?: number; // 팝업 너비\r\n height?: number; // 팝업 높이\r\n title?: string; // 팝업 제목\r\n buttons?: PopupButton[]; // 팝업 버튼들\r\n resizable?: boolean; // 크기 조절 가능 여부\r\n draggable?: boolean; // 드래그 가능 여부\r\n closable?: boolean; // 닫기 버튼 표시 여부\r\n maskClosable?: boolean; // 마스크 클릭 시 닫기 여부\r\n destroyOnClose?: boolean; // 닫을 때 컴포넌트 파괴 여부\r\n searchBox?: {\r\n reqArea: any;\r\n subArea?: any;\r\n style?: any;\r\n };\r\n /**\r\n * 팝업 콜백\r\n * 팝업 콜백은 팝업이 닫힐 때 호출되는 함수입니다.\r\n */\r\n callback?: (callbackParams?: any) => void;\r\n}\r\n\r\n/**\r\n * 팝업 내부 뷰 컴포넌트 타입\r\n */\r\nexport interface PopupViewProps {\r\n /**\r\n * 팝업정보\r\n */\r\n popup?: PopupItem;\r\n /** 팝업 이벤트 전달 프로퍼티 */\r\n popupEvent?: any;\r\n /** 팝업 닫기 이벤트 전달 프로퍼티 */\r\n onClose?: () => void;\r\n}\r\n\r\n// 팝업 스토어 생성\r\nexport const usePopupStore = create<PopupStore>((set, get) => ({\r\n popups: [],\r\n activePopupId: null,\r\n isLoading: false,\r\n error: null,\r\n\r\n // 팝업 열기\r\n openPopup: async (popupCode: string, data?: any, config?: PopupConfig) => {\r\n console.log(\"팝업 열기 요청:\", { popupCode, data, config });\r\n set({ isLoading: true, error: null });\r\n\r\n try {\r\n console.log(\"팝업 열기 시작:\", popupCode);\r\n\r\n // 개발 환경에서는 모의 데이터 사용\r\n let popupInfo: any = null;\r\n\r\n const response = await callService(getServiceCode(\"SRCH_POPU\"), {\r\n crprCd: getUserInfo().crprCd,\r\n popuCd: popupCode,\r\n });\r\n console.log(\"팝업 정보 조회 결과:\", response);\r\n\r\n // 응답 구조 파싱: { mstr: {...}, dtls: [...] }\r\n popupInfo = response?.mstr;\r\n const buttonList = response?.dtls || [];\r\n\r\n console.info(\"popupInfo:\", popupInfo);\r\n\r\n if (!popupInfo || !popupInfo.popuUrl) {\r\n const errorMsg = `팝업 정보를 찾을 수 없습니다: ${popupCode}`;\r\n console.error(errorMsg);\r\n throw new Error(errorMsg);\r\n }\r\n\r\n console.log(\"파싱된 팝업 정보:\", popupInfo);\r\n console.log(\"버튼 목록:\", buttonList);\r\n\r\n // 팝업 URL 경로 변환: 서버 경로 -> 클라이언트 경로\r\n const convertPopupUrl = (serverUrl: string): string => {\r\n // 서버에서 받은 경로: \"cm/CMAuthMstrP01\"\r\n // 클라이언트에서 사용할 경로: \"/src/pages/views/popup/cm/CMAuthMstrP01\"\r\n return `/src/pages/views/popup/${serverUrl}`;\r\n };\r\n\r\n const convertedPopupUrl = convertPopupUrl(popupInfo.popuUrl);\r\n console.log(\"변환된 팝업 URL:\", convertedPopupUrl);\r\n\r\n // 팝업 아이템 생성\r\n const popupItem: PopupItem = {\r\n popupId: `popup_${Date.now()}_${Math.random()\r\n .toString(36)\r\n .substr(2, 9)}`,\r\n popupCode: popupCode,\r\n popupTitle: popupInfo.popuNm || \"팝업\",\r\n popupUrl: convertedPopupUrl,\r\n popupParams: data,\r\n width: popupInfo.popuWdth || 800,\r\n height: popupInfo.popuHght || 600,\r\n resizable: true,\r\n draggable: true,\r\n buttonList: buttonList, // 버튼 목록 추가\r\n config: config,\r\n };\r\n\r\n console.log(\"생성된 팝업 아이템:\", popupItem);\r\n\r\n // 이미 같은 팝업이 열려있는지 확인\r\n const existingPopup = get().popups.find((p) => p.popupCode === popupCode);\r\n if (existingPopup) {\r\n console.log(\"기존 팝업 업데이트:\", existingPopup.popupId);\r\n // 기존 팝업을 활성화하고 데이터 업데이트\r\n set({\r\n activePopupId: existingPopup.popupId,\r\n popups: get().popups.map((p) =>\r\n p.popupId === existingPopup.popupId ? { ...p, config: config } : p\r\n ),\r\n isLoading: false,\r\n });\r\n return;\r\n }\r\n\r\n // 새 팝업 추가\r\n console.log(\"새 팝업 추가:\", popupItem.popupId);\r\n set((state) => ({\r\n popups: [...state.popups, popupItem],\r\n activePopupId: popupItem.popupId,\r\n isLoading: false,\r\n }));\r\n\r\n console.log(\"팝업 열기 완료:\", popupItem);\r\n } catch (error) {\r\n console.error(\"팝업 열기 실패:\", error);\r\n set({\r\n error: error instanceof Error ? error.message : \"팝업 열기 실패\",\r\n isLoading: false,\r\n });\r\n }\r\n },\r\n\r\n // 팝업 닫기\r\n closePopup: (popupId: string) => {\r\n const { popups, activePopupId } = get();\r\n const newPopups = popups.filter((p) => p.popupId !== popupId);\r\n\r\n // 닫힌 팝업이 현재 활성 팝업이었다면 다른 팝업을 활성화\r\n let newActivePopupId = activePopupId;\r\n if (activePopupId === popupId) {\r\n newActivePopupId =\r\n newPopups.length > 0 ? newPopups[newPopups.length - 1].popupId : null;\r\n }\r\n\r\n set({\r\n popups: newPopups,\r\n activePopupId: newActivePopupId,\r\n });\r\n },\r\n\r\n // 모든 팝업 닫기\r\n closeAllPopups: () => {\r\n set({\r\n popups: [],\r\n activePopupId: null,\r\n });\r\n },\r\n\r\n // 활성 팝업 설정\r\n setActivePopup: (popupId: string) => {\r\n set({ activePopupId: popupId });\r\n },\r\n\r\n // 팝업 설정 업데이트\r\n updatePopupConfig: (popupId: string, config: Partial<PopupConfig>) => {\r\n set((state) => ({\r\n popups: state.popups.map((p) =>\r\n p.popupId === popupId ? { ...p, config: { ...p.config, ...config } } : p\r\n ),\r\n }));\r\n },\r\n}));\r\n"],"names":["usePopupStore","create","set","get","popupCode","data","config","popupInfo","response","callService","getServiceCode","getUserInfo","buttonList","errorMsg","convertedPopupUrl","serverUrl","popupItem","existingPopup","p","state","error","popupId","popups","activePopupId","newPopups","newActivePopupId"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"popupStore-BFIHOcoZ.js","sources":["../../src/stores/popupStore.ts"],"sourcesContent":["import { create } from \"zustand\";\r\nimport { callService } from \"../utils/apiUtils\";\r\nimport { getServiceCode } from \"../utils/serviceConfig\";\r\nimport { getUserInfo } from \"@/utils\";\r\n\r\n// 팝업 아이템 타입 정의\r\nexport interface PopupItem {\r\n popupId: string; // 팝업 ID\r\n popupCode: string; // 팝업 코드\r\n popupTitle: string; // 팝업 제목\r\n popupUrl: string; // 팝업 프로그램 URL\r\n popupParams?: any; // 팝업 파라미터\r\n buttonList?: any[]; // 버튼 목록\r\n width?: number; // 팝업 너비\r\n height?: number; // 팝업 높이\r\n resizable?: boolean; // 크기 조절 가능 여부\r\n draggable?: boolean; // 드래그 가능 여부\r\n config?: PopupConfig; // 팝업 설정\r\n close?: () => void; // 팝업 닫기 함수\r\n}\r\n\r\n// 팝업 스토어 타입 정의\r\nexport interface PopupStore {\r\n popups: PopupItem[]; // 열린 팝업 목록\r\n activePopupId: string | null; // 현재 활성 팝업 ID\r\n isLoading: boolean; // 로딩 상태\r\n error: string | null; // 에러 상태\r\n\r\n // 팝업 관련 액션들\r\n openPopup: (\r\n popupCode: string,\r\n data?: any,\r\n config?: PopupConfig\r\n ) => Promise<void>;\r\n closePopup: (popupId: string) => void;\r\n closeAllPopups: () => void;\r\n setActivePopup: (popupId: string) => void;\r\n\r\n updatePopupConfig: (popupId: string, config: Partial<PopupConfig>) => void;\r\n}\r\n\r\nexport interface PopupButton {\r\n key: string; // 버튼 고유 키\r\n text: string; // 버튼 텍스트\r\n type?: \"primary\" | \"default\" | \"dashed\" | \"link\" | \"text\"; // 버튼 타입\r\n danger?: boolean; // 위험 버튼 여부\r\n disabled?: boolean; // 비활성화 여부\r\n icon?: string; // 아이콘 (Ant Design 아이콘명)\r\n onClick?: (popupData?: any) => void | Promise<void>; // 클릭 이벤트\r\n}\r\n\r\n/**\r\n * 팝업 설정 타입 정의\r\n */\r\nexport interface PopupConfig {\r\n width?: number; // 팝업 너비\r\n height?: number; // 팝업 높이\r\n title?: string; // 팝업 제목\r\n buttons?: PopupButton[]; // 팝업 버튼들\r\n resizable?: boolean; // 크기 조절 가능 여부\r\n draggable?: boolean; // 드래그 가능 여부\r\n closable?: boolean; // 닫기 버튼 표시 여부\r\n maskClosable?: boolean; // 마스크 클릭 시 닫기 여부\r\n destroyOnClose?: boolean; // 닫을 때 컴포넌트 파괴 여부\r\n searchBox?: {\r\n reqArea: any;\r\n subArea?: any;\r\n style?: any;\r\n };\r\n /**\r\n * 팝업 콜백\r\n * 팝업 콜백은 팝업이 닫힐 때 호출되는 함수입니다.\r\n */\r\n callback?: (callbackParams?: any) => void;\r\n}\r\n\r\n/**\r\n * 팝업 내부 뷰 컴포넌트 타입\r\n */\r\nexport interface PopupViewProps {\r\n /**\r\n * 팝업정보\r\n */\r\n popup?: PopupItem;\r\n /** 팝업 이벤트 전달 프로퍼티 */\r\n popupEvent?: any;\r\n /** 팝업 닫기 이벤트 전달 프로퍼티 */\r\n onClose?: () => void;\r\n}\r\n\r\n// 팝업 스토어 생성\r\nexport const usePopupStore = create<PopupStore>((set, get) => ({\r\n popups: [],\r\n activePopupId: null,\r\n isLoading: false,\r\n error: null,\r\n\r\n // 팝업 열기\r\n openPopup: async (popupCode: string, data?: any, config?: PopupConfig) => {\r\n console.log(\"팝업 열기 요청:\", { popupCode, data, config });\r\n set({ isLoading: true, error: null });\r\n\r\n try {\r\n console.log(\"팝업 열기 시작:\", popupCode);\r\n\r\n // 개발 환경에서는 모의 데이터 사용\r\n let popupInfo: any = null;\r\n\r\n const response = await callService(getServiceCode(\"SRCH_POPU\"), {\r\n crprCd: getUserInfo().crprCd,\r\n popuCd: popupCode,\r\n });\r\n console.log(\"팝업 정보 조회 결과:\", response);\r\n\r\n // 응답 구조 파싱: { mstr: {...}, dtls: [...] }\r\n popupInfo = response?.mstr;\r\n const buttonList = response?.dtls || [];\r\n\r\n console.info(\"popupInfo:\", popupInfo);\r\n\r\n if (!popupInfo || !popupInfo.popuUrl) {\r\n const errorMsg = `팝업 정보를 찾을 수 없습니다: ${popupCode}`;\r\n console.error(errorMsg);\r\n throw new Error(errorMsg);\r\n }\r\n\r\n console.log(\"파싱된 팝업 정보:\", popupInfo);\r\n console.log(\"버튼 목록:\", buttonList);\r\n\r\n // 팝업 URL 경로 변환: 서버 경로 -> 클라이언트 경로\r\n const convertPopupUrl = (serverUrl: string): string => {\r\n // 서버에서 받은 경로: \"cm/CMAuthMstrP01\"\r\n // 클라이언트에서 사용할 경로: \"/src/pages/views/popup/cm/CMAuthMstrP01\"\r\n return `/src/pages/views/popup/${serverUrl}`;\r\n };\r\n\r\n const convertedPopupUrl = convertPopupUrl(popupInfo.popuUrl);\r\n console.log(\"변환된 팝업 URL:\", convertedPopupUrl);\r\n\r\n // 팝업 아이템 생성\r\n const popupItem: PopupItem = {\r\n popupId: `popup_${Date.now()}_${Math.random()\r\n .toString(36)\r\n .substr(2, 9)}`,\r\n popupCode: popupCode,\r\n popupTitle: popupInfo.popuNm || \"팝업\",\r\n popupUrl: convertedPopupUrl,\r\n popupParams: data,\r\n width: popupInfo.popuWdth || 800,\r\n height: popupInfo.popuHght || 600,\r\n resizable: true,\r\n draggable: true,\r\n buttonList: buttonList, // 버튼 목록 추가\r\n config: config,\r\n };\r\n\r\n console.log(\"생성된 팝업 아이템:\", popupItem);\r\n\r\n // 이미 같은 팝업이 열려있는지 확인\r\n const existingPopup = get().popups.find((p) => p.popupCode === popupCode);\r\n if (existingPopup) {\r\n console.log(\"기존 팝업 업데이트:\", existingPopup.popupId);\r\n // 기존 팝업을 활성화하고 데이터 업데이트\r\n set({\r\n activePopupId: existingPopup.popupId,\r\n popups: get().popups.map((p) =>\r\n p.popupId === existingPopup.popupId ? { ...p, config: config } : p\r\n ),\r\n isLoading: false,\r\n });\r\n return;\r\n }\r\n\r\n // 새 팝업 추가\r\n console.log(\"새 팝업 추가:\", popupItem.popupId);\r\n set((state) => ({\r\n popups: [...state.popups, popupItem],\r\n activePopupId: popupItem.popupId,\r\n isLoading: false,\r\n }));\r\n\r\n console.log(\"팝업 열기 완료:\", popupItem);\r\n } catch (error) {\r\n console.error(\"팝업 열기 실패:\", error);\r\n set({\r\n error: error instanceof Error ? error.message : \"팝업 열기 실패\",\r\n isLoading: false,\r\n });\r\n }\r\n },\r\n\r\n // 팝업 닫기\r\n closePopup: (popupId: string) => {\r\n const { popups, activePopupId } = get();\r\n const newPopups = popups.filter((p) => p.popupId !== popupId);\r\n\r\n // 닫힌 팝업이 현재 활성 팝업이었다면 다른 팝업을 활성화\r\n let newActivePopupId = activePopupId;\r\n if (activePopupId === popupId) {\r\n newActivePopupId =\r\n newPopups.length > 0 ? newPopups[newPopups.length - 1].popupId : null;\r\n }\r\n\r\n set({\r\n popups: newPopups,\r\n activePopupId: newActivePopupId,\r\n });\r\n },\r\n\r\n // 모든 팝업 닫기\r\n closeAllPopups: () => {\r\n set({\r\n popups: [],\r\n activePopupId: null,\r\n });\r\n },\r\n\r\n // 활성 팝업 설정\r\n setActivePopup: (popupId: string) => {\r\n set({ activePopupId: popupId });\r\n },\r\n\r\n // 팝업 설정 업데이트\r\n updatePopupConfig: (popupId: string, config: Partial<PopupConfig>) => {\r\n set((state) => ({\r\n popups: state.popups.map((p) =>\r\n p.popupId === popupId ? { ...p, config: { ...p.config, ...config } } : p\r\n ),\r\n }));\r\n },\r\n}));\r\n"],"names":["usePopupStore","create","set","get","popupCode","data","config","popupInfo","response","callService","getServiceCode","getUserInfo","buttonList","errorMsg","convertedPopupUrl","serverUrl","popupItem","existingPopup","p","state","error","popupId","popups","activePopupId","newPopups","newActivePopupId"],"mappings":"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"}