sales-frontend-bridge 0.0.12 → 0.0.14

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/index.cjs CHANGED
@@ -221,7 +221,9 @@ var NativeBridge = class extends CommonBridge {
221
221
  return this.core.callToNative("jumpSafari", options);
222
222
  }
223
223
  /**
224
+ * ### Bridge for Oz
224
225
  * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
226
+ * @example
225
227
  * ```tsx
226
228
  * // 사용 예시
227
229
  * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
@@ -235,7 +237,9 @@ var NativeBridge = class extends CommonBridge {
235
237
  return this.core.callToNative("createReport_Sample");
236
238
  }
237
239
  /**
240
+ * ### Bridge for Oz
238
241
  * 오즈 뷰어의 정보를 가져옵니다
242
+ * @example
239
243
  * ```tsx
240
244
  * // 사용 예시
241
245
  * await Bridge.native.getInformation({ command: "INPUT_JSON" });
@@ -245,7 +249,9 @@ var NativeBridge = class extends CommonBridge {
245
249
  return this.core.callToNative("getInformation", options);
246
250
  }
247
251
  /**
252
+ * ### Bridge for Oz
248
253
  * 전역 변수 값을 가져옵니다.
254
+ * @example
249
255
  * ```tsx
250
256
  * // 사용 예시
251
257
  * await Bridge.native.getGlobal({ key: "AAA" })
@@ -255,7 +261,9 @@ var NativeBridge = class extends CommonBridge {
255
261
  return this.core.callToNative("getGlobal", Object.assign({ docIndex: 0 }, options));
256
262
  }
257
263
  /**
264
+ * ### Bridge for Oz
258
265
  * 전역 변수 값을 설정합니다.
266
+ * @example
259
267
  * ```tsx
260
268
  * // 사용 예시
261
269
  * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
@@ -265,7 +273,9 @@ var NativeBridge = class extends CommonBridge {
265
273
  return this.core.callToNative("setGlobal", Object.assign({ docIndex: 0 }, options));
266
274
  }
267
275
  /**
276
+ * ### Bridge for Oz
268
277
  * 오즈 뷰어의 기능을 제어합니다.
278
+ * @example
269
279
  * ```tsx
270
280
  * // 사용 예시
271
281
  * const command = `movepage=2`;
@@ -276,8 +286,10 @@ var NativeBridge = class extends CommonBridge {
276
286
  return this.core.callToNative("script", options);
277
287
  }
278
288
  /**
289
+ * ### Bridge for Oz
279
290
  * 오즈 뷰어의 기능을 제어합니다.
280
291
  * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
292
+ * @example
281
293
  * ```tsx
282
294
  * // 사용 예시
283
295
  * const command = `movepage=2`;
@@ -292,7 +304,9 @@ var NativeBridge = class extends CommonBridge {
292
304
  return this.core.callToNative("scriptEX", Object.assign({ delimiter: "\n" }, options));
293
305
  }
294
306
  /**
307
+ * ### Bridge for Oz
295
308
  * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
309
+ * @example
296
310
  * ```tsx
297
311
  * // 사용 예시
298
312
  * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
@@ -305,7 +319,9 @@ var NativeBridge = class extends CommonBridge {
305
319
  );
306
320
  }
307
321
  /**
322
+ * ### Bridge for Oz
308
323
  * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
324
+ * @example
309
325
  * ```tsx
310
326
  * // 사용 예시
311
327
  * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
@@ -317,6 +333,81 @@ var NativeBridge = class extends CommonBridge {
317
333
  Object.assign({ param1: "", param2: "", param3: "", param4: "" }, options)
318
334
  );
319
335
  }
336
+ /**
337
+ * ### Bridge for Oz
338
+ * 앱 파일시스템의 RootPath를 조회하는 기능입니다
339
+ * @example
340
+ * ```tsx
341
+ * // 사용 예시
342
+ * await Bridge.native.getFileRootPath()
343
+ * ```
344
+ */
345
+ async getFileRootPath() {
346
+ return this.core.callToNative("getFileRootPath");
347
+ }
348
+ /**
349
+ * ### Bridge for Oz
350
+ * 앱 파일시스템의 DocumentPath 조회하는 기능입니다
351
+ * @example
352
+ * ```tsx
353
+ * // 사용 예시
354
+ * await Bridge.native.getFileDocumentPath()
355
+ * ```
356
+ */
357
+ async getFileDocumentPath() {
358
+ return this.core.callToNative("getFileDocumentPath");
359
+ }
360
+ /**
361
+ * ### Bridge for Oz
362
+ * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다
363
+ * @example
364
+ * ```tsx
365
+ * // 사용 예시
366
+ * await Bridge.native.getOzFontParam()
367
+ * ```
368
+ */
369
+ async getOzFontParam() {
370
+ return this.core.callToNative("getOzFontParam");
371
+ }
372
+ /**
373
+ * ### Bridge for Oz
374
+ * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다
375
+ * @example
376
+ * ```tsx
377
+ * const data = [
378
+ * { name: "문서1", file: ["doc1.ozd"], complete: true },
379
+ * { name: "문서2", file: ["doc2.ozd", "doc3.ozd"], complete: true }
380
+ * ]
381
+ * await Bridge.native.downloadDocument(data)
382
+ * ```
383
+ */
384
+ async downloadDocument(options) {
385
+ return this.core.callToNative("downloadDocument", options);
386
+ }
387
+ /**
388
+ * ### Bridge for Oz
389
+ * 오즈뷰어에 출력되고있는 서식을 PDF로 export
390
+ * @example
391
+ * ```tsx
392
+ * // 사용 예시
393
+ * await Bridge.native.savePdf({ exportType: "PDF", fileName: "test.pdf", startPage: 1, endPage: 1 })
394
+ * ```
395
+ */
396
+ async savePdf(options) {
397
+ return this.core.callToNative("savePdf", options);
398
+ }
399
+ /**
400
+ * ### Bridge for Oz
401
+ * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export
402
+ * @example
403
+ * ```tsx
404
+ * // 사용 예시
405
+ * await Bridge.native.saveSignImg({ exportType: "IMG", fileName: "sign.png", signImageKey: "SIGN_IMG" })
406
+ * ```
407
+ */
408
+ async saveSignImg(options) {
409
+ return this.core.callToNative("saveSignImg", options);
410
+ }
320
411
  // TODO: 필요 플러그인들 추가
321
412
  };
322
413
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bridge/utils/platform-detector-utils.ts","../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/native-bridge.ts","../src/bridge/portal-bridge.ts","../src/bridge/bridge.ts","../src/bridge/oz/oz-event.types.ts"],"names":["OZViewerEvent"],"mappings":"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","file":"index.cjs","sourcesContent":["import { Platform } from '../types/common.types';\n\nexport const platformDetectorUtils = {\n getPlatform(): Platform {\n if (typeof window === 'undefined') {\n return 'web';\n } // SSR 환경에서는 기본값 반환\n // TODO: platform 탐지는 좀 더 세밀하게 할 수 있도록 네이티브에 요청\n if (window.n2Bridge) {\n return 'android';\n }\n\n if (window.webkit) {\n return 'ios';\n }\n\n if (window.self !== window.top) {\n return 'portal';\n }\n\n return 'web';\n }\n};\n","import { BridgeAction } from '../types/common.types';\nimport { platformDetectorUtils } from '../utils/platform-detector-utils';\n\nimport { BridgeCommand, BridgeOptions, BridgePromise } from './core.types';\n\n/**\n * Bridge 통신 위한 핵심 클래스\n */\nexport class Core {\n constructor() {\n this.initializeWindowBridge();\n }\n\n /**\n * Promise를 처리하기 위한 고유 ID 생성\n * @returns\n */\n private generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeWindowBridge(): void {\n if (typeof window === 'undefined') {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!window.n2bridge) {\n window.n2bridge = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n // 항상 최신 함수로 업데이트\n window.n2bridge.resolvePromise = this.createResolvePromiseHandler();\n window.n2bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n window.n2bridge.callFromNative = this.createCallFromNativeHandler();\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[resolvePromise]::', promiseId, data, error);\n\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Native 에서 웹으로 호출하는 함수\n * TODO: 필요시 추가 코딩\n * @returns\n */\n private createCallFromNativeHandler() {\n return (jsonStr: string) => {\n try {\n const command = JSON.parse(jsonStr);\n console.log('[callFromNative]::', command);\n } catch (error) {\n console.error('[callFromNative] parse error::', error);\n }\n };\n }\n\n /**\n * 부모 통신\n * @param service\n * @param action\n * @param option\n * @returns\n */\n async callToNative<T = any>(action: BridgeAction, options?: BridgeOptions): Promise<T> {\n const { retainCallback: retain, ...commandOptions } = options || {};\n\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[callToNative] promiseId::', promiseId);\n\n // 바로 window.n2bridge.promises에 저장\n window.n2bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n },\n retain\n };\n\n try {\n const command: BridgeCommand = {\n action,\n eventName: action,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToNative] command::', command);\n\n const platform = platformDetectorUtils.getPlatform();\n\n if (platform === 'android') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'portal') {\n window.parent.postMessage(command, '*');\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(`[callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`);\n this.cleanupPromise(promiseId);\n reject(new Error(`Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n delete window.n2bridge.promises[promiseId];\n }\n}\n","import { Core } from './core/core';\n\n/**\n * App, 영업포털과 동일하게 사용가능한 기능 정의 클래스\n */\nexport class CommonBridge {\n protected core: Core;\n\n constructor() {\n this.core = new Core();\n }\n}\n","import { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions\n} from './types/native/native-options.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('jumpSafari', options);\n }\n\n /**\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createReport({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n async createReport<T = { response: string }>(options: CreateReportOptions): Promise<T> {\n return this.core.callToNative<T>('createReport', options);\n }\n\n /** @deprecated 샘플 테스트용 브릿지 */\n async createReport_Sample<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('createReport_Sample');\n }\n\n /**\n * 오즈 뷰어의 정보를 가져옵니다\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getInformation({ command: \"INPUT_JSON\" });\n * ```\n */\n async getInformation<T = { response: string }>(options: GetInformationOptions): Promise<T> {\n return this.core.callToNative<T>('getInformation', options);\n }\n\n /**\n * 전역 변수 값을 가져옵니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal<T = { response: string }>(options: GetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * 전역 변수 값을 설정합니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n async setGlobal<T = { response: string }>(options: SetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * 오즈 뷰어의 기능을 제어합니다.\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * await Bridge.native.script({ command });\n * ```\n */\n async script<T = { response: string }>(options: ScriptOptions): Promise<T> {\n return this.core.callToNative<T>('script', options);\n }\n /**\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * await Bridge.native.scriptEX({ command, param });\n * ```\n */\n async scriptEX<T = { response: string }>(options: ScriptExOptions): Promise<T> {\n return this.core.callToNative<T>('scriptEX', Object.assign({ delimiter: '\\n' }, options));\n }\n\n /**\n * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEvent({ param1: 'signer' });\n * ```\n */\n async triggerExternalEvent<T = { response: string }>(options: TriggerExternalEventOptions): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex<T = { response: string }>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from './common-bridge';\nimport { IPortalBridge } from './types/portal/portal-bridge.types';\n\n/**\n * 영업포탈 전용 Bridge\n */\nexport class PortalBridge extends CommonBridge implements IPortalBridge {\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openUrlWindow<T = any>(options: any): Promise<T> {\n return this.core.callToNative<T>('openUrlWindow', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { NativeBridge } from './native-bridge';\nimport { PortalBridge } from './portal-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n portal: new PortalBridge(),\n core: new Core()\n};\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n"]}
1
+ {"version":3,"sources":["../src/bridge/utils/platform-detector-utils.ts","../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/native-bridge.ts","../src/bridge/portal-bridge.ts","../src/bridge/bridge.ts","../src/bridge/oz/oz-event.types.ts"],"names":["OZViewerEvent"],"mappings":";;;;;;;AAEO,IAAM,qBAAwB,GAAA;AAAA,EACnC,WAAwB,GAAA;AACtB,IAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,MAAO,OAAA,KAAA;AAAA;AAGT,IAAA,IAAI,OAAO,QAAU,EAAA;AACnB,MAAO,OAAA,SAAA;AAAA;AAGT,IAAA,IAAI,OAAO,MAAQ,EAAA;AACjB,MAAO,OAAA,KAAA;AAAA;AAGT,IAAI,IAAA,MAAA,CAAO,IAAS,KAAA,MAAA,CAAO,GAAK,EAAA;AAC9B,MAAO,OAAA,QAAA;AAAA;AAGT,IAAO,OAAA,KAAA;AAAA;AAEX,CAAA;;;ACdO,IAAM,OAAN,MAAW;AAAA,EAChB,WAAc,GAAA;AACZ,IAAA,IAAA,CAAK,sBAAuB,EAAA;AAAA;AAC9B;AAAA;AAAA;AAAA;AAAA,EAMQ,iBAA4B,GAAA;AAClC,IAAM,MAAA,SAAA,GAAY,KAAK,GAAI,EAAA;AAC3B,IAAM,MAAA,MAAA,GAAS,KAAK,MAAO,EAAA,CAAE,SAAS,EAAE,CAAA,CAAE,KAAM,CAAA,CAAA,EAAG,EAAE,CAAA;AAErD,IAAO,OAAA,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA;AAAA;AAC/B;AAAA;AAAA;AAAA,EAKQ,sBAA+B,GAAA;AACrC,IAAI,IAAA,OAAO,WAAW,WAAa,EAAA;AACjC,MAAA;AAAA;AAEF,IAAI,IAAA,CAAC,OAAO,QAAU,EAAA;AACpB,MAAA,MAAA,CAAO,QAAW,GAAA;AAAA,QAChB,UAAU,EAAC;AAAA,QACX,gBAAgB,MAAM;AAAA,SAAC;AAAA,QACvB,uBAAuB,MAAM;AAAA,SAAC;AAAA,QAC9B,gBAAgB,MAAM;AAAA;AAAC,OACzB;AAAA;AAIF,IAAO,MAAA,CAAA,QAAA,CAAS,cAAiB,GAAA,IAAA,CAAK,2BAA4B,EAAA;AAClE,IAAO,MAAA,CAAA,QAAA,CAAS,qBAAwB,GAAA,IAAA,CAAK,kCAAmC,EAAA;AAChF,IAAO,MAAA,CAAA,QAAA,CAAS,cAAiB,GAAA,IAAA,CAAK,2BAA4B,EAAA;AAAA;AACpE;AAAA;AAAA;AAAA;AAAA,EAMQ,2BAA8B,GAAA;AACpC,IAAO,OAAA,CAAC,SAAmB,EAAA,IAAA,EAAY,KAAgB,KAAA;AACrD,MAAA,OAAA,CAAQ,GAAI,CAAA,oBAAA,EAAsB,SAAW,EAAA,IAAA,EAAM,KAAK,CAAA;AAExD,MAAA,MAAM,OAAqC,GAAA,MAAA,CAAO,QAAS,CAAA,QAAA,CAAS,SAAS,CAAA;AAC7E,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,wCAAwC,SAAS,CAAA;AAE/D,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,UAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAE7B,UAAA;AAAA;AAGF,QAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,UAAA,OAAA,CAAQ,OAAO,IAAI,CAAA;AAEnB,UAAA;AAAA;AAGF,QAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACpB,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA,eACtB,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,6CAA6C,GAAG,CAAA;AAC9D,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA;AAC/B,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA,EAMQ,kCAAqC,GAAA;AAC3C,IAAO,OAAA,CAAC,SAAmB,EAAA,IAAA,EAAY,KAAgB,KAAA;AACrD,MAAA,MAAM,OAAqC,GAAA,MAAA,CAAO,QAAS,CAAA,QAAA,CAAS,SAAS,CAAA;AAC7E,MAAA,IAAI,CAAC,OAAS,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,wCAAwC,SAAS,CAAA;AAE/D,QAAA;AAAA;AAGF,MAAI,IAAA;AACF,QAAA,IAAI,KAAO,EAAA;AACT,UAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AACpB,UAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAE7B,UAAA;AAAA;AAGF,QAAA,IAAI,QAAQ,MAAQ,EAAA;AAClB,UAAA,OAAA,CAAQ,OAAO,IAAI,CAAA;AAEnB,UAAA;AAAA;AAGF,QAAA,OAAA,CAAQ,QAAQ,IAAI,CAAA;AACpB,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA,eACtB,GAAK,EAAA;AACZ,QAAQ,OAAA,CAAA,KAAA,CAAM,6CAA6C,GAAG,CAAA;AAC9D,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAAA;AAC/B,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA,EAOQ,2BAA8B,GAAA;AACpC,IAAA,OAAO,CAAC,OAAoB,KAAA;AAC1B,MAAI,IAAA;AACF,QAAM,MAAA,OAAA,GAAU,IAAK,CAAA,KAAA,CAAM,OAAO,CAAA;AAClC,QAAQ,OAAA,CAAA,GAAA,CAAI,sBAAsB,OAAO,CAAA;AAAA,eAClC,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,kCAAkC,KAAK,CAAA;AAAA;AACvD,KACF;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,MAAM,YAAsB,CAAA,MAAA,EAAsB,OAAqC,EAAA;AACrF,IAAA,MAAM,EAAE,cAAgB,EAAA,MAAA,EAAQ,GAAG,cAAe,EAAA,GAAI,WAAW,EAAC;AAElE,IAAA,OAAO,IAAI,OAAA,CAAW,CAAC,OAAA,EAAS,MAAW,KAAA;AACzC,MAAA,MAAM,YAAY,CAAG,EAAA,MAAM,CAAI,CAAA,EAAA,IAAA,CAAK,mBAAmB,CAAA,CAAA;AACvD,MAAQ,OAAA,CAAA,GAAA,CAAI,8BAA8B,SAAS,CAAA;AAGnD,MAAO,MAAA,CAAA,QAAA,CAAS,QAAS,CAAA,SAAS,CAAI,GAAA;AAAA,QACpC,OAAA,EAAS,CAAC,KAAa,KAAA;AACrB,UAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,SACf;AAAA,QACA,MAAA,EAAQ,CAAC,MAAiB,KAAA;AACxB,UAAA,MAAA,CAAO,MAAM,CAAA;AAAA,SACf;AAAA,QACA;AAAA,OACF;AAEA,MAAI,IAAA;AACF,QAAA,MAAM,OAAyB,GAAA;AAAA,UAC7B,MAAA;AAAA,UACA,SAAW,EAAA,MAAA;AAAA,UACX,SAAA;AAAA,UACA,MAAQ,EAAA;AAAA,SACV;AAEA,QAAQ,OAAA,CAAA,GAAA,CAAI,4BAA4B,OAAO,CAAA;AAE/C,QAAM,MAAA,QAAA,GAAW,sBAAsB,WAAY,EAAA;AAEnD,QAAA,IAAI,aAAa,SAAW,EAAA;AAC1B,UAAA,MAAA,CAAO,QAAU,EAAA,WAAA,GAAc,IAAK,CAAA,SAAA,CAAU,OAAO,CAAC,CAAA;AAEtD,UAAA;AAAA;AAGF,QAAA,IAAI,aAAa,KAAO,EAAA;AACtB,UAAA,MAAA,CAAO,QAAQ,eAAiB,EAAA,QAAA,EAAU,YAAY,IAAK,CAAA,SAAA,CAAU,OAAO,CAAC,CAAA;AAE7E,UAAA;AAAA;AAGF,QAAA,IAAI,aAAa,QAAU,EAAA;AACzB,UAAO,MAAA,CAAA,MAAA,CAAO,WAAY,CAAA,OAAA,EAAS,GAAG,CAAA;AAEtC,UAAA;AAAA;AAIF,QAAA,OAAA,CAAQ,IAAK,CAAA,CAAA,+CAAA,EAAyB,QAAQ,CAAA,6EAAA,EAAoB,MAAM,CAAO,oBAAA,CAAA,CAAA;AAC/E,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAC7B,QAAA,MAAA,CAAO,IAAI,KAAA,CAAM,CAAyB,sBAAA,EAAA,QAAQ,EAAE,CAAC,CAAA;AAAA,eAC9C,KAAO,EAAA;AACd,QAAQ,OAAA,CAAA,KAAA,CAAM,0BAA0B,KAAK,CAAA;AAC7C,QAAA,IAAA,CAAK,eAAe,SAAS,CAAA;AAC7B,QAAA,MAAA,CAAO,KAAK,CAAA;AAAA;AACd,KACD,CAAA;AAAA;AACH;AAAA;AAAA;AAAA;AAAA,EAMQ,eAAe,SAAyB,EAAA;AAC9C,IAAO,OAAA,MAAA,CAAO,QAAS,CAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAE7C,CAAA;;;AC7MO,IAAM,eAAN,MAAmB;AAAA,EAGxB,WAAc,GAAA;AAFd,IAAU,aAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGR,IAAK,IAAA,CAAA,IAAA,GAAO,IAAI,IAAK,EAAA;AAAA;AAEzB,CAAA;;;ACUO,IAAM,YAAA,GAAN,cAA2B,YAAsC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtE,MAAM,aAAsB,OAA0C,EAAA;AACpE,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,cAAA,EAAgB,OAAO,CAAA;AAAA;AAC1D;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,WAAoB,OAA0C,EAAA;AAClE,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,YAAA,EAAc,OAAO,CAAA;AAAA;AACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,aAAuC,OAA0C,EAAA;AACrF,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,cAAA,EAAgB,OAAO,CAAA;AAAA;AAC1D;AAAA,EAGA,MAAM,mBAA4D,GAAA;AAChE,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,qBAAqB,CAAA;AAAA;AACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,eAAyC,OAA4C,EAAA;AACzF,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,gBAAA,EAAkB,OAAO,CAAA;AAAA;AAC5D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UAAoC,OAAuC,EAAA;AAC/E,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,WAAa,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,QAAU,EAAA,CAAA,EAAK,EAAA,OAAO,CAAC,CAAA;AAAA;AACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,UAAoC,OAAuC,EAAA;AAC/E,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,WAAa,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,QAAU,EAAA,CAAA,EAAK,EAAA,OAAO,CAAC,CAAA;AAAA;AACvF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAM,OAAiC,OAAoC,EAAA;AACzE,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,QAAA,EAAU,OAAO,CAAA;AAAA;AACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBA,MAAM,SAAmC,OAAsC,EAAA;AAC7E,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,UAAY,EAAA,MAAA,CAAO,MAAO,CAAA,EAAE,SAAW,EAAA,IAAA,EAAQ,EAAA,OAAO,CAAC,CAAA;AAAA;AAC1F;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,qBAA+C,OAAkD,EAAA;AACrG,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,gCAAA;AAAA,MACA,MAAO,CAAA,MAAA,CAAO,EAAE,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAG,EAAA,EAAG,OAAO;AAAA,KAC3E;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,+BACJ,OACY,EAAA;AACZ,IAAA,OAAO,KAAK,IAAK,CAAA,YAAA;AAAA,MACf,gCAAA;AAAA,MACA,MAAO,CAAA,MAAA,CAAO,EAAE,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAI,EAAA,MAAA,EAAQ,EAAG,EAAA,EAAG,OAAO;AAAA,KAC3E;AAAA;AACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,eAAwD,GAAA;AAC5D,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,iBAAiB,CAAA;AAAA;AACpD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,mBAA4D,GAAA;AAChE,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,qBAAqB,CAAA;AAAA;AACxD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,cAAuD,GAAA;AAC3D,IAAO,OAAA,IAAA,CAAK,IAAK,CAAA,YAAA,CAAgB,gBAAgB,CAAA;AAAA;AACnD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAcA,MAAM,iBAA2C,OAAyC,EAAA;AACxF,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,kBAAA,EAAoB,OAAO,CAAA;AAAA;AAC9D;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,QAAkC,OAAqC,EAAA;AAC3E,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,SAAA,EAAW,OAAO,CAAA;AAAA;AACrD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,YAAsC,OAAyC,EAAA;AACnF,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,aAAA,EAAe,OAAO,CAAA;AAAA;AACzD;AAGF,CAAA;;;AC9OO,IAAM,YAAA,GAAN,cAA2B,YAAsC,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMtE,MAAM,cAAuB,OAA0B,EAAA;AACrD,IAAA,OAAO,IAAK,CAAA,IAAA,CAAK,YAAgB,CAAA,eAAA,EAAiB,OAAO,CAAA;AAAA;AAC3D;AAGF,CAAA;;;ACbO,IAAM,MAAS,GAAA;AAAA,EACpB,MAAA,EAAQ,IAAI,YAAa,EAAA;AAAA,EACzB,MAAA,EAAQ,IAAI,YAAa,EAAA;AAAA,EACzB,IAAA,EAAM,IAAI,IAAK;AACjB;;;ACLY,IAAA,aAAA,qBAAAA,cAAL,KAAA;AAOL,EAAAA,eAAA,mBAAoB,CAAA,GAAA,mBAAA;AAMpB,EAAAA,eAAA,gBAAiB,CAAA,GAAA,gBAAA;AAMjB,EAAAA,eAAA,qBAAsB,CAAA,GAAA,qBAAA;AAMtB,EAAAA,eAAA,uBAAwB,CAAA,GAAA,uBAAA;AAKxB,EAAAA,eAAA,aAAc,CAAA,GAAA,aAAA;AAOd,EAAAA,eAAA,mBAAoB,CAAA,GAAA,mBAAA;AArCV,EAAAA,OAAAA,cAAAA;AAAA,CAAA,EAAA,aAAA,IAAA,EAAA","file":"index.cjs","sourcesContent":["import { Platform } from '../types/common.types';\n\nexport const platformDetectorUtils = {\n getPlatform(): Platform {\n if (typeof window === 'undefined') {\n return 'web';\n } // SSR 환경에서는 기본값 반환\n // TODO: platform 탐지는 좀 더 세밀하게 할 수 있도록 네이티브에 요청\n if (window.n2Bridge) {\n return 'android';\n }\n\n if (window.webkit) {\n return 'ios';\n }\n\n if (window.self !== window.top) {\n return 'portal';\n }\n\n return 'web';\n }\n};\n","import { BridgeAction } from '../types/common.types';\nimport { platformDetectorUtils } from '../utils/platform-detector-utils';\n\nimport { BridgeCommand, BridgeOptions, BridgePromise } from './core.types';\n\n/**\n * Bridge 통신 위한 핵심 클래스\n */\nexport class Core {\n constructor() {\n this.initializeWindowBridge();\n }\n\n /**\n * Promise를 처리하기 위한 고유 ID 생성\n * @returns\n */\n private generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeWindowBridge(): void {\n if (typeof window === 'undefined') {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!window.n2bridge) {\n window.n2bridge = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n // 항상 최신 함수로 업데이트\n window.n2bridge.resolvePromise = this.createResolvePromiseHandler();\n window.n2bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n window.n2bridge.callFromNative = this.createCallFromNativeHandler();\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[resolvePromise]::', promiseId, data, error);\n\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Native 에서 웹으로 호출하는 함수\n * TODO: 필요시 추가 코딩\n * @returns\n */\n private createCallFromNativeHandler() {\n return (jsonStr: string) => {\n try {\n const command = JSON.parse(jsonStr);\n console.log('[callFromNative]::', command);\n } catch (error) {\n console.error('[callFromNative] parse error::', error);\n }\n };\n }\n\n /**\n * 부모 통신\n * @param service\n * @param action\n * @param option\n * @returns\n */\n async callToNative<T = any>(action: BridgeAction, options?: BridgeOptions): Promise<T> {\n const { retainCallback: retain, ...commandOptions } = options || {};\n\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[callToNative] promiseId::', promiseId);\n\n // 바로 window.n2bridge.promises에 저장\n window.n2bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n },\n retain\n };\n\n try {\n const command: BridgeCommand = {\n action,\n eventName: action,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToNative] command::', command);\n\n const platform = platformDetectorUtils.getPlatform();\n\n if (platform === 'android') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'portal') {\n window.parent.postMessage(command, '*');\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(`[callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`);\n this.cleanupPromise(promiseId);\n reject(new Error(`Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n delete window.n2bridge.promises[promiseId];\n }\n}\n","import { Core } from './core/core';\n\n/**\n * App, 영업포털과 동일하게 사용가능한 기능 정의 클래스\n */\nexport class CommonBridge {\n protected core: Core;\n\n constructor() {\n this.core = new Core();\n }\n}\n","import { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n DownloadOzdOptions,\n SavePdfOptions,\n SaveSignImgOptions\n} from './types/native/native-options.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('jumpSafari', options);\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createReport({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n async createReport<T = { response: string }>(options: CreateReportOptions): Promise<T> {\n return this.core.callToNative<T>('createReport', options);\n }\n\n /** @deprecated 샘플 테스트용 브릿지 */\n async createReport_Sample<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('createReport_Sample');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getInformation({ command: \"INPUT_JSON\" });\n * ```\n */\n async getInformation<T = { response: string }>(options: GetInformationOptions): Promise<T> {\n return this.core.callToNative<T>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal<T = { response: string }>(options: GetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n async setGlobal<T = { response: string }>(options: SetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * await Bridge.native.script({ command });\n * ```\n */\n async script<T = { response: string }>(options: ScriptOptions): Promise<T> {\n return this.core.callToNative<T>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * await Bridge.native.scriptEX({ command, param });\n * ```\n */\n async scriptEX<T = { response: string }>(options: ScriptExOptions): Promise<T> {\n return this.core.callToNative<T>('scriptEX', Object.assign({ delimiter: '\\n' }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEvent({ param1: 'signer' });\n * ```\n */\n async triggerExternalEvent<T = { response: string }>(options: TriggerExternalEventOptions): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex<T = { response: string }>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n /**\n * ### Bridge for Oz\n * 앱 파일시스템의 RootPath를 조회하는 기능입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getFileRootPath()\n * ```\n */\n async getFileRootPath<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('getFileRootPath');\n }\n\n /**\n * ### Bridge for Oz\n * 앱 파일시스템의 DocumentPath 조회하는 기능입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getFileDocumentPath()\n * ```\n */\n async getFileDocumentPath<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('getFileDocumentPath');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const data = [\n * { name: \"문서1\", file: [\"doc1.ozd\"], complete: true },\n * { name: \"문서2\", file: [\"doc2.ozd\", \"doc3.ozd\"], complete: true }\n * ]\n * await Bridge.native.downloadDocument(data)\n * ```\n */\n async downloadDocument<T = { response: string }>(options: DownloadOzdOptions): Promise<T> {\n return this.core.callToNative<T>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf<T = { response: string }>(options: SavePdfOptions): Promise<T> {\n return this.core.callToNative<T>('savePdf', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.saveSignImg({ exportType: \"IMG\", fileName: \"sign.png\", signImageKey: \"SIGN_IMG\" })\n * ```\n */\n async saveSignImg<T = { response: string }>(options: SaveSignImgOptions): Promise<T> {\n return this.core.callToNative<T>('saveSignImg', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from './common-bridge';\nimport { IPortalBridge } from './types/portal/portal-bridge.types';\n\n/**\n * 영업포탈 전용 Bridge\n */\nexport class PortalBridge extends CommonBridge implements IPortalBridge {\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openUrlWindow<T = any>(options: any): Promise<T> {\n return this.core.callToNative<T>('openUrlWindow', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { NativeBridge } from './native-bridge';\nimport { PortalBridge } from './portal-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n portal: new PortalBridge(),\n core: new Core()\n};\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n"]}
package/dist/index.d.cts CHANGED
@@ -96,6 +96,54 @@ interface TriggerExternalEventByDocIndexOptions extends TriggerExternalEventOpti
96
96
  /** 보고서 인덱스. Zero-based index */
97
97
  docIndex: number;
98
98
  }
99
+ type NonEmptyArray<T> = [T, ...T[]];
100
+ /**
101
+ * 전자청약에서 관리할 문서 데이터 구조
102
+ * ```tsx
103
+ * [
104
+ * { name: "문서1", file: ["doc1.ozd"], complete: true },
105
+ * { name: "문서2", file: ["doc2.ozd", "doc3.ozd"], complete: true }
106
+ * ]
107
+ * ```
108
+ */
109
+ type DocumentInfo = {
110
+ /** 서식이름(복수의 OZD) */
111
+ name: string;
112
+ /** 서식에 매핑된 OZD 목록 */
113
+ file: NonEmptyArray<string>;
114
+ /** 서식 입력완료 여부 */
115
+ complete: boolean;
116
+ };
117
+ /**
118
+ * OZD를 다운받을때 사용하는 브릿지의 옵션
119
+ */
120
+ type DownloadOzdOptions = NonEmptyArray<DocumentInfo>;
121
+ /**
122
+ * 브릿지 `savePdf`를 호출할 때 사용하는 브릿지용 입력 옵션
123
+ */
124
+ interface SavePdfOptions {
125
+ exportType: "PDF";
126
+ /** 저장할 파일이름 */
127
+ fileName: string;
128
+ /** 추출 범위 시작페이지 */
129
+ startPage: number;
130
+ /** 추출 범위 끝페이지 */
131
+ endPage: number;
132
+ /** PDF 비밀번호 */
133
+ pdfPassword?: string;
134
+ }
135
+ /**
136
+ * 브릿지 `saveSignImg`를 호출할 때 사용하는 브릿지용 입력 옵션
137
+ *
138
+ * 특정 OZD 내부에 포함된 서명 필드만 이미지로 뽑아낸다
139
+ */
140
+ interface SaveSignImgOptions {
141
+ exportType: "IMG";
142
+ /** 저장할 파일이름 */
143
+ fileName: string;
144
+ /** 추출할 서명의 FORM ID */
145
+ signImageKey: string;
146
+ }
99
147
 
100
148
  interface INativeBridge {
101
149
  showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
@@ -110,6 +158,12 @@ interface INativeBridge {
110
158
  scriptEX<T>(options: ScriptExOptions): Promise<T>;
111
159
  triggerExternalEvent<T>(options: TriggerExternalEventOptions): Promise<T>;
112
160
  triggerExternalEventByDocIndex<T>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
161
+ getFileRootPath<T>(): Promise<T>;
162
+ getFileDocumentPath<T>(): Promise<T>;
163
+ getOzFontParam<T>(): Promise<T>;
164
+ downloadDocument<T>(options: DownloadOzdOptions): Promise<T>;
165
+ savePdf<T>(options: SavePdfOptions): Promise<T>;
166
+ saveSignImg<T>(options: SaveSignImgOptions): Promise<T>;
113
167
  }
114
168
 
115
169
  type NativeAction = keyof INativeBridge;
@@ -205,7 +259,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
205
259
  */
206
260
  jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T>;
207
261
  /**
262
+ * ### Bridge for Oz
208
263
  * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
264
+ * @example
209
265
  * ```tsx
210
266
  * // 사용 예시
211
267
  * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
@@ -219,7 +275,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
219
275
  response: string;
220
276
  }>(): Promise<T>;
221
277
  /**
278
+ * ### Bridge for Oz
222
279
  * 오즈 뷰어의 정보를 가져옵니다
280
+ * @example
223
281
  * ```tsx
224
282
  * // 사용 예시
225
283
  * await Bridge.native.getInformation({ command: "INPUT_JSON" });
@@ -229,7 +287,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
229
287
  response: string;
230
288
  }>(options: GetInformationOptions): Promise<T>;
231
289
  /**
290
+ * ### Bridge for Oz
232
291
  * 전역 변수 값을 가져옵니다.
292
+ * @example
233
293
  * ```tsx
234
294
  * // 사용 예시
235
295
  * await Bridge.native.getGlobal({ key: "AAA" })
@@ -239,7 +299,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
239
299
  response: string;
240
300
  }>(options: GetGlobalOptions): Promise<T>;
241
301
  /**
302
+ * ### Bridge for Oz
242
303
  * 전역 변수 값을 설정합니다.
304
+ * @example
243
305
  * ```tsx
244
306
  * // 사용 예시
245
307
  * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
@@ -249,7 +311,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
249
311
  response: string;
250
312
  }>(options: SetGlobalOptions): Promise<T>;
251
313
  /**
314
+ * ### Bridge for Oz
252
315
  * 오즈 뷰어의 기능을 제어합니다.
316
+ * @example
253
317
  * ```tsx
254
318
  * // 사용 예시
255
319
  * const command = `movepage=2`;
@@ -260,8 +324,10 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
260
324
  response: string;
261
325
  }>(options: ScriptOptions): Promise<T>;
262
326
  /**
327
+ * ### Bridge for Oz
263
328
  * 오즈 뷰어의 기능을 제어합니다.
264
329
  * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
330
+ * @example
265
331
  * ```tsx
266
332
  * // 사용 예시
267
333
  * const command = `movepage=2`;
@@ -276,7 +342,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
276
342
  response: string;
277
343
  }>(options: ScriptExOptions): Promise<T>;
278
344
  /**
345
+ * ### Bridge for Oz
279
346
  * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
347
+ * @example
280
348
  * ```tsx
281
349
  * // 사용 예시
282
350
  * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
@@ -286,7 +354,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
286
354
  response: string;
287
355
  }>(options: TriggerExternalEventOptions): Promise<T>;
288
356
  /**
357
+ * ### Bridge for Oz
289
358
  * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
359
+ * @example
290
360
  * ```tsx
291
361
  * // 사용 예시
292
362
  * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
@@ -295,6 +365,81 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
295
365
  triggerExternalEventByDocIndex<T = {
296
366
  response: string;
297
367
  }>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
368
+ /**
369
+ * ### Bridge for Oz
370
+ * 앱 파일시스템의 RootPath를 조회하는 기능입니다
371
+ * @example
372
+ * ```tsx
373
+ * // 사용 예시
374
+ * await Bridge.native.getFileRootPath()
375
+ * ```
376
+ */
377
+ getFileRootPath<T = {
378
+ response: string;
379
+ }>(): Promise<T>;
380
+ /**
381
+ * ### Bridge for Oz
382
+ * 앱 파일시스템의 DocumentPath 조회하는 기능입니다
383
+ * @example
384
+ * ```tsx
385
+ * // 사용 예시
386
+ * await Bridge.native.getFileDocumentPath()
387
+ * ```
388
+ */
389
+ getFileDocumentPath<T = {
390
+ response: string;
391
+ }>(): Promise<T>;
392
+ /**
393
+ * ### Bridge for Oz
394
+ * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다
395
+ * @example
396
+ * ```tsx
397
+ * // 사용 예시
398
+ * await Bridge.native.getOzFontParam()
399
+ * ```
400
+ */
401
+ getOzFontParam<T = {
402
+ response: string;
403
+ }>(): Promise<T>;
404
+ /**
405
+ * ### Bridge for Oz
406
+ * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다
407
+ * @example
408
+ * ```tsx
409
+ * const data = [
410
+ * { name: "문서1", file: ["doc1.ozd"], complete: true },
411
+ * { name: "문서2", file: ["doc2.ozd", "doc3.ozd"], complete: true }
412
+ * ]
413
+ * await Bridge.native.downloadDocument(data)
414
+ * ```
415
+ */
416
+ downloadDocument<T = {
417
+ response: string;
418
+ }>(options: DownloadOzdOptions): Promise<T>;
419
+ /**
420
+ * ### Bridge for Oz
421
+ * 오즈뷰어에 출력되고있는 서식을 PDF로 export
422
+ * @example
423
+ * ```tsx
424
+ * // 사용 예시
425
+ * await Bridge.native.savePdf({ exportType: "PDF", fileName: "test.pdf", startPage: 1, endPage: 1 })
426
+ * ```
427
+ */
428
+ savePdf<T = {
429
+ response: string;
430
+ }>(options: SavePdfOptions): Promise<T>;
431
+ /**
432
+ * ### Bridge for Oz
433
+ * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export
434
+ * @example
435
+ * ```tsx
436
+ * // 사용 예시
437
+ * await Bridge.native.saveSignImg({ exportType: "IMG", fileName: "sign.png", signImageKey: "SIGN_IMG" })
438
+ * ```
439
+ */
440
+ saveSignImg<T = {
441
+ response: string;
442
+ }>(options: SaveSignImgOptions): Promise<T>;
298
443
  }
299
444
 
300
445
  /**
package/dist/index.d.ts CHANGED
@@ -96,6 +96,54 @@ interface TriggerExternalEventByDocIndexOptions extends TriggerExternalEventOpti
96
96
  /** 보고서 인덱스. Zero-based index */
97
97
  docIndex: number;
98
98
  }
99
+ type NonEmptyArray<T> = [T, ...T[]];
100
+ /**
101
+ * 전자청약에서 관리할 문서 데이터 구조
102
+ * ```tsx
103
+ * [
104
+ * { name: "문서1", file: ["doc1.ozd"], complete: true },
105
+ * { name: "문서2", file: ["doc2.ozd", "doc3.ozd"], complete: true }
106
+ * ]
107
+ * ```
108
+ */
109
+ type DocumentInfo = {
110
+ /** 서식이름(복수의 OZD) */
111
+ name: string;
112
+ /** 서식에 매핑된 OZD 목록 */
113
+ file: NonEmptyArray<string>;
114
+ /** 서식 입력완료 여부 */
115
+ complete: boolean;
116
+ };
117
+ /**
118
+ * OZD를 다운받을때 사용하는 브릿지의 옵션
119
+ */
120
+ type DownloadOzdOptions = NonEmptyArray<DocumentInfo>;
121
+ /**
122
+ * 브릿지 `savePdf`를 호출할 때 사용하는 브릿지용 입력 옵션
123
+ */
124
+ interface SavePdfOptions {
125
+ exportType: "PDF";
126
+ /** 저장할 파일이름 */
127
+ fileName: string;
128
+ /** 추출 범위 시작페이지 */
129
+ startPage: number;
130
+ /** 추출 범위 끝페이지 */
131
+ endPage: number;
132
+ /** PDF 비밀번호 */
133
+ pdfPassword?: string;
134
+ }
135
+ /**
136
+ * 브릿지 `saveSignImg`를 호출할 때 사용하는 브릿지용 입력 옵션
137
+ *
138
+ * 특정 OZD 내부에 포함된 서명 필드만 이미지로 뽑아낸다
139
+ */
140
+ interface SaveSignImgOptions {
141
+ exportType: "IMG";
142
+ /** 저장할 파일이름 */
143
+ fileName: string;
144
+ /** 추출할 서명의 FORM ID */
145
+ signImageKey: string;
146
+ }
99
147
 
100
148
  interface INativeBridge {
101
149
  showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
@@ -110,6 +158,12 @@ interface INativeBridge {
110
158
  scriptEX<T>(options: ScriptExOptions): Promise<T>;
111
159
  triggerExternalEvent<T>(options: TriggerExternalEventOptions): Promise<T>;
112
160
  triggerExternalEventByDocIndex<T>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
161
+ getFileRootPath<T>(): Promise<T>;
162
+ getFileDocumentPath<T>(): Promise<T>;
163
+ getOzFontParam<T>(): Promise<T>;
164
+ downloadDocument<T>(options: DownloadOzdOptions): Promise<T>;
165
+ savePdf<T>(options: SavePdfOptions): Promise<T>;
166
+ saveSignImg<T>(options: SaveSignImgOptions): Promise<T>;
113
167
  }
114
168
 
115
169
  type NativeAction = keyof INativeBridge;
@@ -205,7 +259,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
205
259
  */
206
260
  jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T>;
207
261
  /**
262
+ * ### Bridge for Oz
208
263
  * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
264
+ * @example
209
265
  * ```tsx
210
266
  * // 사용 예시
211
267
  * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
@@ -219,7 +275,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
219
275
  response: string;
220
276
  }>(): Promise<T>;
221
277
  /**
278
+ * ### Bridge for Oz
222
279
  * 오즈 뷰어의 정보를 가져옵니다
280
+ * @example
223
281
  * ```tsx
224
282
  * // 사용 예시
225
283
  * await Bridge.native.getInformation({ command: "INPUT_JSON" });
@@ -229,7 +287,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
229
287
  response: string;
230
288
  }>(options: GetInformationOptions): Promise<T>;
231
289
  /**
290
+ * ### Bridge for Oz
232
291
  * 전역 변수 값을 가져옵니다.
292
+ * @example
233
293
  * ```tsx
234
294
  * // 사용 예시
235
295
  * await Bridge.native.getGlobal({ key: "AAA" })
@@ -239,7 +299,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
239
299
  response: string;
240
300
  }>(options: GetGlobalOptions): Promise<T>;
241
301
  /**
302
+ * ### Bridge for Oz
242
303
  * 전역 변수 값을 설정합니다.
304
+ * @example
243
305
  * ```tsx
244
306
  * // 사용 예시
245
307
  * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
@@ -249,7 +311,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
249
311
  response: string;
250
312
  }>(options: SetGlobalOptions): Promise<T>;
251
313
  /**
314
+ * ### Bridge for Oz
252
315
  * 오즈 뷰어의 기능을 제어합니다.
316
+ * @example
253
317
  * ```tsx
254
318
  * // 사용 예시
255
319
  * const command = `movepage=2`;
@@ -260,8 +324,10 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
260
324
  response: string;
261
325
  }>(options: ScriptOptions): Promise<T>;
262
326
  /**
327
+ * ### Bridge for Oz
263
328
  * 오즈 뷰어의 기능을 제어합니다.
264
329
  * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
330
+ * @example
265
331
  * ```tsx
266
332
  * // 사용 예시
267
333
  * const command = `movepage=2`;
@@ -276,7 +342,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
276
342
  response: string;
277
343
  }>(options: ScriptExOptions): Promise<T>;
278
344
  /**
345
+ * ### Bridge for Oz
279
346
  * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
347
+ * @example
280
348
  * ```tsx
281
349
  * // 사용 예시
282
350
  * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
@@ -286,7 +354,9 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
286
354
  response: string;
287
355
  }>(options: TriggerExternalEventOptions): Promise<T>;
288
356
  /**
357
+ * ### Bridge for Oz
289
358
  * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
359
+ * @example
290
360
  * ```tsx
291
361
  * // 사용 예시
292
362
  * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
@@ -295,6 +365,81 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
295
365
  triggerExternalEventByDocIndex<T = {
296
366
  response: string;
297
367
  }>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
368
+ /**
369
+ * ### Bridge for Oz
370
+ * 앱 파일시스템의 RootPath를 조회하는 기능입니다
371
+ * @example
372
+ * ```tsx
373
+ * // 사용 예시
374
+ * await Bridge.native.getFileRootPath()
375
+ * ```
376
+ */
377
+ getFileRootPath<T = {
378
+ response: string;
379
+ }>(): Promise<T>;
380
+ /**
381
+ * ### Bridge for Oz
382
+ * 앱 파일시스템의 DocumentPath 조회하는 기능입니다
383
+ * @example
384
+ * ```tsx
385
+ * // 사용 예시
386
+ * await Bridge.native.getFileDocumentPath()
387
+ * ```
388
+ */
389
+ getFileDocumentPath<T = {
390
+ response: string;
391
+ }>(): Promise<T>;
392
+ /**
393
+ * ### Bridge for Oz
394
+ * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다
395
+ * @example
396
+ * ```tsx
397
+ * // 사용 예시
398
+ * await Bridge.native.getOzFontParam()
399
+ * ```
400
+ */
401
+ getOzFontParam<T = {
402
+ response: string;
403
+ }>(): Promise<T>;
404
+ /**
405
+ * ### Bridge for Oz
406
+ * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다
407
+ * @example
408
+ * ```tsx
409
+ * const data = [
410
+ * { name: "문서1", file: ["doc1.ozd"], complete: true },
411
+ * { name: "문서2", file: ["doc2.ozd", "doc3.ozd"], complete: true }
412
+ * ]
413
+ * await Bridge.native.downloadDocument(data)
414
+ * ```
415
+ */
416
+ downloadDocument<T = {
417
+ response: string;
418
+ }>(options: DownloadOzdOptions): Promise<T>;
419
+ /**
420
+ * ### Bridge for Oz
421
+ * 오즈뷰어에 출력되고있는 서식을 PDF로 export
422
+ * @example
423
+ * ```tsx
424
+ * // 사용 예시
425
+ * await Bridge.native.savePdf({ exportType: "PDF", fileName: "test.pdf", startPage: 1, endPage: 1 })
426
+ * ```
427
+ */
428
+ savePdf<T = {
429
+ response: string;
430
+ }>(options: SavePdfOptions): Promise<T>;
431
+ /**
432
+ * ### Bridge for Oz
433
+ * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export
434
+ * @example
435
+ * ```tsx
436
+ * // 사용 예시
437
+ * await Bridge.native.saveSignImg({ exportType: "IMG", fileName: "sign.png", signImageKey: "SIGN_IMG" })
438
+ * ```
439
+ */
440
+ saveSignImg<T = {
441
+ response: string;
442
+ }>(options: SaveSignImgOptions): Promise<T>;
298
443
  }
299
444
 
300
445
  /**
package/dist/index.js CHANGED
@@ -219,7 +219,9 @@ var NativeBridge = class extends CommonBridge {
219
219
  return this.core.callToNative("jumpSafari", options);
220
220
  }
221
221
  /**
222
+ * ### Bridge for Oz
222
223
  * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
224
+ * @example
223
225
  * ```tsx
224
226
  * // 사용 예시
225
227
  * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
@@ -233,7 +235,9 @@ var NativeBridge = class extends CommonBridge {
233
235
  return this.core.callToNative("createReport_Sample");
234
236
  }
235
237
  /**
238
+ * ### Bridge for Oz
236
239
  * 오즈 뷰어의 정보를 가져옵니다
240
+ * @example
237
241
  * ```tsx
238
242
  * // 사용 예시
239
243
  * await Bridge.native.getInformation({ command: "INPUT_JSON" });
@@ -243,7 +247,9 @@ var NativeBridge = class extends CommonBridge {
243
247
  return this.core.callToNative("getInformation", options);
244
248
  }
245
249
  /**
250
+ * ### Bridge for Oz
246
251
  * 전역 변수 값을 가져옵니다.
252
+ * @example
247
253
  * ```tsx
248
254
  * // 사용 예시
249
255
  * await Bridge.native.getGlobal({ key: "AAA" })
@@ -253,7 +259,9 @@ var NativeBridge = class extends CommonBridge {
253
259
  return this.core.callToNative("getGlobal", Object.assign({ docIndex: 0 }, options));
254
260
  }
255
261
  /**
262
+ * ### Bridge for Oz
256
263
  * 전역 변수 값을 설정합니다.
264
+ * @example
257
265
  * ```tsx
258
266
  * // 사용 예시
259
267
  * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
@@ -263,7 +271,9 @@ var NativeBridge = class extends CommonBridge {
263
271
  return this.core.callToNative("setGlobal", Object.assign({ docIndex: 0 }, options));
264
272
  }
265
273
  /**
274
+ * ### Bridge for Oz
266
275
  * 오즈 뷰어의 기능을 제어합니다.
276
+ * @example
267
277
  * ```tsx
268
278
  * // 사용 예시
269
279
  * const command = `movepage=2`;
@@ -274,8 +284,10 @@ var NativeBridge = class extends CommonBridge {
274
284
  return this.core.callToNative("script", options);
275
285
  }
276
286
  /**
287
+ * ### Bridge for Oz
277
288
  * 오즈 뷰어의 기능을 제어합니다.
278
289
  * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
290
+ * @example
279
291
  * ```tsx
280
292
  * // 사용 예시
281
293
  * const command = `movepage=2`;
@@ -290,7 +302,9 @@ var NativeBridge = class extends CommonBridge {
290
302
  return this.core.callToNative("scriptEX", Object.assign({ delimiter: "\n" }, options));
291
303
  }
292
304
  /**
305
+ * ### Bridge for Oz
293
306
  * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
307
+ * @example
294
308
  * ```tsx
295
309
  * // 사용 예시
296
310
  * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
@@ -303,7 +317,9 @@ var NativeBridge = class extends CommonBridge {
303
317
  );
304
318
  }
305
319
  /**
320
+ * ### Bridge for Oz
306
321
  * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
322
+ * @example
307
323
  * ```tsx
308
324
  * // 사용 예시
309
325
  * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
@@ -315,6 +331,81 @@ var NativeBridge = class extends CommonBridge {
315
331
  Object.assign({ param1: "", param2: "", param3: "", param4: "" }, options)
316
332
  );
317
333
  }
334
+ /**
335
+ * ### Bridge for Oz
336
+ * 앱 파일시스템의 RootPath를 조회하는 기능입니다
337
+ * @example
338
+ * ```tsx
339
+ * // 사용 예시
340
+ * await Bridge.native.getFileRootPath()
341
+ * ```
342
+ */
343
+ async getFileRootPath() {
344
+ return this.core.callToNative("getFileRootPath");
345
+ }
346
+ /**
347
+ * ### Bridge for Oz
348
+ * 앱 파일시스템의 DocumentPath 조회하는 기능입니다
349
+ * @example
350
+ * ```tsx
351
+ * // 사용 예시
352
+ * await Bridge.native.getFileDocumentPath()
353
+ * ```
354
+ */
355
+ async getFileDocumentPath() {
356
+ return this.core.callToNative("getFileDocumentPath");
357
+ }
358
+ /**
359
+ * ### Bridge for Oz
360
+ * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다
361
+ * @example
362
+ * ```tsx
363
+ * // 사용 예시
364
+ * await Bridge.native.getOzFontParam()
365
+ * ```
366
+ */
367
+ async getOzFontParam() {
368
+ return this.core.callToNative("getOzFontParam");
369
+ }
370
+ /**
371
+ * ### Bridge for Oz
372
+ * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다
373
+ * @example
374
+ * ```tsx
375
+ * const data = [
376
+ * { name: "문서1", file: ["doc1.ozd"], complete: true },
377
+ * { name: "문서2", file: ["doc2.ozd", "doc3.ozd"], complete: true }
378
+ * ]
379
+ * await Bridge.native.downloadDocument(data)
380
+ * ```
381
+ */
382
+ async downloadDocument(options) {
383
+ return this.core.callToNative("downloadDocument", options);
384
+ }
385
+ /**
386
+ * ### Bridge for Oz
387
+ * 오즈뷰어에 출력되고있는 서식을 PDF로 export
388
+ * @example
389
+ * ```tsx
390
+ * // 사용 예시
391
+ * await Bridge.native.savePdf({ exportType: "PDF", fileName: "test.pdf", startPage: 1, endPage: 1 })
392
+ * ```
393
+ */
394
+ async savePdf(options) {
395
+ return this.core.callToNative("savePdf", options);
396
+ }
397
+ /**
398
+ * ### Bridge for Oz
399
+ * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export
400
+ * @example
401
+ * ```tsx
402
+ * // 사용 예시
403
+ * await Bridge.native.saveSignImg({ exportType: "IMG", fileName: "sign.png", signImageKey: "SIGN_IMG" })
404
+ * ```
405
+ */
406
+ async saveSignImg(options) {
407
+ return this.core.callToNative("saveSignImg", options);
408
+ }
318
409
  // TODO: 필요 플러그인들 추가
319
410
  };
320
411
 
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/bridge/utils/platform-detector-utils.ts","../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/native-bridge.ts","../src/bridge/portal-bridge.ts","../src/bridge/bridge.ts","../src/bridge/oz/oz-event.types.ts"],"names":["OZViewerEvent"],"mappings":"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","file":"index.js","sourcesContent":["import { Platform } from '../types/common.types';\n\nexport const platformDetectorUtils = {\n getPlatform(): Platform {\n if (typeof window === 'undefined') {\n return 'web';\n } // SSR 환경에서는 기본값 반환\n // TODO: platform 탐지는 좀 더 세밀하게 할 수 있도록 네이티브에 요청\n if (window.n2Bridge) {\n return 'android';\n }\n\n if (window.webkit) {\n return 'ios';\n }\n\n if (window.self !== window.top) {\n return 'portal';\n }\n\n return 'web';\n }\n};\n","import { BridgeAction } from '../types/common.types';\nimport { platformDetectorUtils } from '../utils/platform-detector-utils';\n\nimport { BridgeCommand, BridgeOptions, BridgePromise } from './core.types';\n\n/**\n * Bridge 통신 위한 핵심 클래스\n */\nexport class Core {\n constructor() {\n this.initializeWindowBridge();\n }\n\n /**\n * Promise를 처리하기 위한 고유 ID 생성\n * @returns\n */\n private generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeWindowBridge(): void {\n if (typeof window === 'undefined') {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!window.n2bridge) {\n window.n2bridge = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n // 항상 최신 함수로 업데이트\n window.n2bridge.resolvePromise = this.createResolvePromiseHandler();\n window.n2bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n window.n2bridge.callFromNative = this.createCallFromNativeHandler();\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[resolvePromise]::', promiseId, data, error);\n\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Native 에서 웹으로 호출하는 함수\n * TODO: 필요시 추가 코딩\n * @returns\n */\n private createCallFromNativeHandler() {\n return (jsonStr: string) => {\n try {\n const command = JSON.parse(jsonStr);\n console.log('[callFromNative]::', command);\n } catch (error) {\n console.error('[callFromNative] parse error::', error);\n }\n };\n }\n\n /**\n * 부모 통신\n * @param service\n * @param action\n * @param option\n * @returns\n */\n async callToNative<T = any>(action: BridgeAction, options?: BridgeOptions): Promise<T> {\n const { retainCallback: retain, ...commandOptions } = options || {};\n\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[callToNative] promiseId::', promiseId);\n\n // 바로 window.n2bridge.promises에 저장\n window.n2bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n },\n retain\n };\n\n try {\n const command: BridgeCommand = {\n action,\n eventName: action,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToNative] command::', command);\n\n const platform = platformDetectorUtils.getPlatform();\n\n if (platform === 'android') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'portal') {\n window.parent.postMessage(command, '*');\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(`[callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`);\n this.cleanupPromise(promiseId);\n reject(new Error(`Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n delete window.n2bridge.promises[promiseId];\n }\n}\n","import { Core } from './core/core';\n\n/**\n * App, 영업포털과 동일하게 사용가능한 기능 정의 클래스\n */\nexport class CommonBridge {\n protected core: Core;\n\n constructor() {\n this.core = new Core();\n }\n}\n","import { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions\n} from './types/native/native-options.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('jumpSafari', options);\n }\n\n /**\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createReport({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n async createReport<T = { response: string }>(options: CreateReportOptions): Promise<T> {\n return this.core.callToNative<T>('createReport', options);\n }\n\n /** @deprecated 샘플 테스트용 브릿지 */\n async createReport_Sample<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('createReport_Sample');\n }\n\n /**\n * 오즈 뷰어의 정보를 가져옵니다\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getInformation({ command: \"INPUT_JSON\" });\n * ```\n */\n async getInformation<T = { response: string }>(options: GetInformationOptions): Promise<T> {\n return this.core.callToNative<T>('getInformation', options);\n }\n\n /**\n * 전역 변수 값을 가져옵니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal<T = { response: string }>(options: GetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * 전역 변수 값을 설정합니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n async setGlobal<T = { response: string }>(options: SetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * 오즈 뷰어의 기능을 제어합니다.\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * await Bridge.native.script({ command });\n * ```\n */\n async script<T = { response: string }>(options: ScriptOptions): Promise<T> {\n return this.core.callToNative<T>('script', options);\n }\n /**\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * await Bridge.native.scriptEX({ command, param });\n * ```\n */\n async scriptEX<T = { response: string }>(options: ScriptExOptions): Promise<T> {\n return this.core.callToNative<T>('scriptEX', Object.assign({ delimiter: '\\n' }, options));\n }\n\n /**\n * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEvent({ param1: 'signer' });\n * ```\n */\n async triggerExternalEvent<T = { response: string }>(options: TriggerExternalEventOptions): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex<T = { response: string }>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from './common-bridge';\nimport { IPortalBridge } from './types/portal/portal-bridge.types';\n\n/**\n * 영업포탈 전용 Bridge\n */\nexport class PortalBridge extends CommonBridge implements IPortalBridge {\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openUrlWindow<T = any>(options: any): Promise<T> {\n return this.core.callToNative<T>('openUrlWindow', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { NativeBridge } from './native-bridge';\nimport { PortalBridge } from './portal-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n portal: new PortalBridge(),\n core: new Core()\n};\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n"]}
1
+ {"version":3,"sources":["../src/bridge/utils/platform-detector-utils.ts","../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/native-bridge.ts","../src/bridge/portal-bridge.ts","../src/bridge/bridge.ts","../src/bridge/oz/oz-event.types.ts"],"names":["OZViewerEvent"],"mappings":"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","file":"index.js","sourcesContent":["import { Platform } from '../types/common.types';\n\nexport const platformDetectorUtils = {\n getPlatform(): Platform {\n if (typeof window === 'undefined') {\n return 'web';\n } // SSR 환경에서는 기본값 반환\n // TODO: platform 탐지는 좀 더 세밀하게 할 수 있도록 네이티브에 요청\n if (window.n2Bridge) {\n return 'android';\n }\n\n if (window.webkit) {\n return 'ios';\n }\n\n if (window.self !== window.top) {\n return 'portal';\n }\n\n return 'web';\n }\n};\n","import { BridgeAction } from '../types/common.types';\nimport { platformDetectorUtils } from '../utils/platform-detector-utils';\n\nimport { BridgeCommand, BridgeOptions, BridgePromise } from './core.types';\n\n/**\n * Bridge 통신 위한 핵심 클래스\n */\nexport class Core {\n constructor() {\n this.initializeWindowBridge();\n }\n\n /**\n * Promise를 처리하기 위한 고유 ID 생성\n * @returns\n */\n private generatePromiseId(): string {\n const timestamp = Date.now();\n const random = Math.random().toString(36).slice(2, 11);\n\n return `${timestamp}_${random}`;\n }\n\n /**\n * 네이티브 통신을 위해 window.n2bridge 객체 초기화\n */\n private initializeWindowBridge(): void {\n if (typeof window === 'undefined') {\n return;\n } // SSR 환경에서는 아무것도 하지 않음\n if (!window.n2bridge) {\n window.n2bridge = {\n promises: {},\n resolvePromise: () => {},\n finallyResolvePromise: () => {},\n callFromNative: () => {}\n };\n }\n\n // 항상 최신 함수로 업데이트\n window.n2bridge.resolvePromise = this.createResolvePromiseHandler();\n window.n2bridge.finallyResolvePromise = this.createFinallyResolvePromiseHandler();\n window.n2bridge.callFromNative = this.createCallFromNativeHandler();\n }\n\n /**\n * Promise 처리 함수(Native에서 호출)\n * @returns\n */\n private createResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n console.log('[resolvePromise]::', promiseId, data, error);\n\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Promise 최종 처리 함수\n * @returns\n */\n private createFinallyResolvePromiseHandler() {\n return (promiseId: string, data?: any, error?: any) => {\n const promise: BridgePromise | undefined = window.n2bridge.promises[promiseId];\n if (!promise) {\n console.error('[resolvePromise] Promise not found::', promiseId);\n\n return;\n }\n\n try {\n if (error) {\n promise.reject(error);\n this.cleanupPromise(promiseId);\n\n return;\n }\n\n if (promise.retain) {\n promise.retain(data);\n\n return;\n }\n\n promise.resolve(data);\n this.cleanupPromise(promiseId);\n } catch (err) {\n console.error('[resolvePromise] Error handling promise::', err);\n this.cleanupPromise(promiseId);\n }\n };\n }\n\n /**\n * Native 에서 웹으로 호출하는 함수\n * TODO: 필요시 추가 코딩\n * @returns\n */\n private createCallFromNativeHandler() {\n return (jsonStr: string) => {\n try {\n const command = JSON.parse(jsonStr);\n console.log('[callFromNative]::', command);\n } catch (error) {\n console.error('[callFromNative] parse error::', error);\n }\n };\n }\n\n /**\n * 부모 통신\n * @param service\n * @param action\n * @param option\n * @returns\n */\n async callToNative<T = any>(action: BridgeAction, options?: BridgeOptions): Promise<T> {\n const { retainCallback: retain, ...commandOptions } = options || {};\n\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${action}_${this.generatePromiseId()}`;\n console.log('[callToNative] promiseId::', promiseId);\n\n // 바로 window.n2bridge.promises에 저장\n window.n2bridge.promises[promiseId] = {\n resolve: (value: T) => {\n resolve(value);\n },\n reject: (reason?: any) => {\n reject(reason);\n },\n retain\n };\n\n try {\n const command: BridgeCommand = {\n action,\n eventName: action,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToNative] command::', command);\n\n const platform = platformDetectorUtils.getPlatform();\n\n if (platform === 'android') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'portal') {\n window.parent.postMessage(command, '*');\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(`[callToNative] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${action})입니다.`);\n this.cleanupPromise(promiseId);\n reject(new Error(`Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[callToNative] error::', error);\n this.cleanupPromise(promiseId);\n reject(error);\n }\n });\n }\n\n /**\n * promiseId를 초기화 해줍니다.\n * @param promiseId\n */\n private cleanupPromise(promiseId: string): void {\n delete window.n2bridge.promises[promiseId];\n }\n}\n","import { Core } from './core/core';\n\n/**\n * App, 영업포털과 동일하게 사용가능한 기능 정의 클래스\n */\nexport class CommonBridge {\n protected core: Core;\n\n constructor() {\n this.core = new Core();\n }\n}\n","import { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n DownloadOzdOptions,\n SavePdfOptions,\n SaveSignImgOptions\n} from './types/native/native-options.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n /**\n *\n * @param options\n * @returns\n */\n async showWebPopup<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('showWebPopup', options);\n }\n\n /**\n *\n * @param options\n * @returns\n */\n async jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T> {\n return this.core.callToNative<T>('jumpSafari', options);\n }\n\n /**\n * ### Bridge for Oz\n * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createReport({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n async createReport<T = { response: string }>(options: CreateReportOptions): Promise<T> {\n return this.core.callToNative<T>('createReport', options);\n }\n\n /** @deprecated 샘플 테스트용 브릿지 */\n async createReport_Sample<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('createReport_Sample');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 정보를 가져옵니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getInformation({ command: \"INPUT_JSON\" });\n * ```\n */\n async getInformation<T = { response: string }>(options: GetInformationOptions): Promise<T> {\n return this.core.callToNative<T>('getInformation', options);\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 가져옵니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getGlobal({ key: \"AAA\" })\n * ```\n */\n async getGlobal<T = { response: string }>(options: GetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n async setGlobal<T = { response: string }>(options: SetGlobalOptions): Promise<T> {\n return this.core.callToNative<T>('setGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * await Bridge.native.script({ command });\n * ```\n */\n async script<T = { response: string }>(options: ScriptOptions): Promise<T> {\n return this.core.callToNative<T>('script', options);\n }\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * const param1 = `eform.show_prev_next_input=true`;\n * const param2 = `eform.signpad_iconposition=sign_bottom`;\n * // param이 여러개인경우 \\n으로 묶는다\n * const param = `${param1}\\n${param2}`;\n * await Bridge.native.scriptEX({ command, param });\n * ```\n */\n async scriptEX<T = { response: string }>(options: ScriptExOptions): Promise<T> {\n return this.core.callToNative<T>('scriptEX', Object.assign({ delimiter: '\\n' }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEvent({ param1: 'signer' });\n * ```\n */\n async triggerExternalEvent<T = { response: string }>(options: TriggerExternalEventOptions): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });\n * ```\n */\n async triggerExternalEventByDocIndex<T = { response: string }>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<T> {\n return this.core.callToNative<T>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n /**\n * ### Bridge for Oz\n * 앱 파일시스템의 RootPath를 조회하는 기능입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getFileRootPath()\n * ```\n */\n async getFileRootPath<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('getFileRootPath');\n }\n\n /**\n * ### Bridge for Oz\n * 앱 파일시스템의 DocumentPath 조회하는 기능입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getFileDocumentPath()\n * ```\n */\n async getFileDocumentPath<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('getFileDocumentPath');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam<T = { response: string }>(): Promise<T> {\n return this.core.callToNative<T>('getOzFontParam');\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 OZD를 다운받는 브릿지입니다\n * @example\n * ```tsx\n * const data = [\n * { name: \"문서1\", file: [\"doc1.ozd\"], complete: true },\n * { name: \"문서2\", file: [\"doc2.ozd\", \"doc3.ozd\"], complete: true }\n * ]\n * await Bridge.native.downloadDocument(data)\n * ```\n */\n async downloadDocument<T = { response: string }>(options: DownloadOzdOptions): Promise<T> {\n return this.core.callToNative<T>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식을 PDF로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.savePdf({ exportType: \"PDF\", fileName: \"test.pdf\", startPage: 1, endPage: 1 })\n * ```\n */\n async savePdf<T = { response: string }>(options: SavePdfOptions): Promise<T> {\n return this.core.callToNative<T>('savePdf', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에 출력되고있는 서식 중 서명부분을 이미지로 export\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.saveSignImg({ exportType: \"IMG\", fileName: \"sign.png\", signImageKey: \"SIGN_IMG\" })\n * ```\n */\n async saveSignImg<T = { response: string }>(options: SaveSignImgOptions): Promise<T> {\n return this.core.callToNative<T>('saveSignImg', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from './common-bridge';\nimport { IPortalBridge } from './types/portal/portal-bridge.types';\n\n/**\n * 영업포탈 전용 Bridge\n */\nexport class PortalBridge extends CommonBridge implements IPortalBridge {\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openUrlWindow<T = any>(options: any): Promise<T> {\n return this.core.callToNative<T>('openUrlWindow', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { NativeBridge } from './native-bridge';\nimport { PortalBridge } from './portal-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n portal: new PortalBridge(),\n core: new Core()\n};\n","/**\n * OZ 뷰어에 관련된 이벤트 목록\n */\nexport enum OZViewerEvent {\n /**\n * 보고서 생성 단계별로 발생하는 이벤트\n * - `OZViewerProgressEvent` 이벤트와 매칭된다\n * - `viewer.progresscommand=true` 설정이 필요하다\n * - `OZViewerProgressEvent`와 매칭된다\n */\n OZProgressCommand = 'OZProgressCommand',\n /**\n * 에러 발생 시 발생하는 이벤트\n * - `viewer.errorcommand=true` 설정이 필요하다\n * - `OZViewerErrorEvent`와 매칭된다\n */\n OZErrorCommand = 'OZErrorCommand',\n /**\n * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트\n * - `viewer.pagechangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZPageChangeCommand = 'OZPageChangeCommand',\n /**\n * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트\n * - `viewer.reportchangecommand=true` 설정이 필요하다\n * - `OZViewerChangeEvent`와 매칭된다\n */\n OZReportChangeCommand = 'OZReportChangeCommand',\n /**\n * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트\n * - `OZViewerUserEvent`와 매칭된다\n */\n OZUserEvent = 'OZUserEvent',\n /**\n * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트\n * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작\n * - ex) `viewer.pagebindcommandinterval=500`\n * - `OZViewerPageBindEvent`와 매칭된다\n */\n OZPageBindCommand = 'OZPageBindCommand'\n}\n\n/**\n * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });\n * ```\n *\n * `step과` `state`는 step => state 방식으로 진행된다\n *\n * 예시\n * ```bash\n * # step0 뷰어실행\n * [step=0][state=0] # 뷰어 실행 시작\n * [step=0][state=1] # 뷰어 실행 완료\n * # step2 보고서 템플릿 생성\n * [step=1][state=0] # 보고서 템플릿 생성 시작\n * [step=1][state=1] # 보고서 템플릿 생성 완료\n * ```\n */\nexport type OZViewerProgressEvent = {\n /**\n * 보고서 생성 단계\n * - 0 : 뷰어 실행 옵션 설정\n * - 1 : 보고서 파일 다운로드\n * - 2 : 보고서 템플릿 생성\n * - 3 : 데이터 다운로드\n * - 4 : 보고서 바인딩\n */\n step: '0' | '1' | '2' | '3' | '4';\n /**\n * 보고서 생성 상태\n * - 1 : 시작\n * - 2 : 완료\n */\n state: '1' | '2';\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerErrorEvent = {\n /** 에러 메시지 코드 */\n code: string;\n /** 에러 기본 메시지 */\n message: string;\n /** 에러 상세 메시지 */\n detailmessage: string;\n /** 보고서 이름 */\n reportname: string;\n};\n\n/**\n * 두 이벤트의 공용 타입\n * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의\n * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });\n * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerChangeEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: number;\n};\n\n/**\n * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerUserEvent = {\n /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */\n param1: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */\n param2: string;\n /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */\n param3: string;\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n};\n\n/**\n * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의\n * ```tsx\n * import { OZViewerEvent } from 'sales-frontend-bridge';\n * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });\n * ```\n */\nexport type OZViewerPageBindEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 바인딩된 페이지 번호 */\n pagecount: string;\n};\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sales-frontend-bridge",
3
- "version": "0.0.12",
3
+ "version": "0.0.14",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -22,6 +22,9 @@
22
22
  },
23
23
  "devDependencies": {
24
24
  "@types/node": "^22.14.0",
25
+ "@types/react": "19.1.0",
26
+ "@types/react-dom": "19.1.1",
27
+ "react": "^19.1.0",
25
28
  "tsup": "^8.4.0",
26
29
  "typescript": "5.8.2",
27
30
  "eslint-config-sales-frontend-eslint-config-v8": "^0.0.6",