sales-frontend-bridge 0.0.10 → 0.0.12

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
@@ -220,9 +220,103 @@ var NativeBridge = class extends CommonBridge {
220
220
  async jumpSafari(options) {
221
221
  return this.core.callToNative("jumpSafari", options);
222
222
  }
223
+ /**
224
+ * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
225
+ * ```tsx
226
+ * // 사용 예시
227
+ * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
228
+ * ```
229
+ */
223
230
  async createReport(options) {
224
231
  return this.core.callToNative("createReport", options);
225
232
  }
233
+ /** @deprecated 샘플 테스트용 브릿지 */
234
+ async createReport_Sample() {
235
+ return this.core.callToNative("createReport_Sample");
236
+ }
237
+ /**
238
+ * 오즈 뷰어의 정보를 가져옵니다
239
+ * ```tsx
240
+ * // 사용 예시
241
+ * await Bridge.native.getInformation({ command: "INPUT_JSON" });
242
+ * ```
243
+ */
244
+ async getInformation(options) {
245
+ return this.core.callToNative("getInformation", options);
246
+ }
247
+ /**
248
+ * 전역 변수 값을 가져옵니다.
249
+ * ```tsx
250
+ * // 사용 예시
251
+ * await Bridge.native.getGlobal({ key: "AAA" })
252
+ * ```
253
+ */
254
+ async getGlobal(options) {
255
+ return this.core.callToNative("getGlobal", Object.assign({ docIndex: 0 }, options));
256
+ }
257
+ /**
258
+ * 전역 변수 값을 설정합니다.
259
+ * ```tsx
260
+ * // 사용 예시
261
+ * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
262
+ * ```
263
+ */
264
+ async setGlobal(options) {
265
+ return this.core.callToNative("setGlobal", Object.assign({ docIndex: 0 }, options));
266
+ }
267
+ /**
268
+ * 오즈 뷰어의 기능을 제어합니다.
269
+ * ```tsx
270
+ * // 사용 예시
271
+ * const command = `movepage=2`;
272
+ * await Bridge.native.script({ command });
273
+ * ```
274
+ */
275
+ async script(options) {
276
+ return this.core.callToNative("script", options);
277
+ }
278
+ /**
279
+ * 오즈 뷰어의 기능을 제어합니다.
280
+ * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
281
+ * ```tsx
282
+ * // 사용 예시
283
+ * const command = `movepage=2`;
284
+ * const param1 = `eform.show_prev_next_input=true`;
285
+ * const param2 = `eform.signpad_iconposition=sign_bottom`;
286
+ * // param이 여러개인경우 \n으로 묶는다
287
+ * const param = `${param1}\n${param2}`;
288
+ * await Bridge.native.scriptEX({ command, param });
289
+ * ```
290
+ */
291
+ async scriptEX(options) {
292
+ return this.core.callToNative("scriptEX", Object.assign({ delimiter: "\n" }, options));
293
+ }
294
+ /**
295
+ * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
296
+ * ```tsx
297
+ * // 사용 예시
298
+ * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
299
+ * ```
300
+ */
301
+ async triggerExternalEvent(options) {
302
+ return this.core.callToNative(
303
+ "triggerExternalEventByDocIndex",
304
+ Object.assign({ param1: "", param2: "", param3: "", param4: "" }, options)
305
+ );
306
+ }
307
+ /**
308
+ * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
309
+ * ```tsx
310
+ * // 사용 예시
311
+ * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
312
+ * ```
313
+ */
314
+ async triggerExternalEventByDocIndex(options) {
315
+ return this.core.callToNative(
316
+ "triggerExternalEventByDocIndex",
317
+ Object.assign({ param1: "", param2: "", param3: "", param4: "" }, options)
318
+ );
319
+ }
226
320
  // TODO: 필요 플러그인들 추가
227
321
  };
228
322
 
@@ -246,6 +340,18 @@ var Bridge = {
246
340
  core: new Core()
247
341
  };
248
342
 
343
+ // src/bridge/oz/oz-event.types.ts
344
+ var OZViewerEvent = /* @__PURE__ */ ((OZViewerEvent2) => {
345
+ OZViewerEvent2["OZProgressCommand"] = "OZProgressCommand";
346
+ OZViewerEvent2["OZErrorCommand"] = "OZErrorCommand";
347
+ OZViewerEvent2["OZPageChangeCommand"] = "OZPageChangeCommand";
348
+ OZViewerEvent2["OZReportChangeCommand"] = "OZReportChangeCommand";
349
+ OZViewerEvent2["OZUserEvent"] = "OZUserEvent";
350
+ OZViewerEvent2["OZPageBindCommand"] = "OZPageBindCommand";
351
+ return OZViewerEvent2;
352
+ })(OZViewerEvent || {});
353
+
249
354
  exports.Bridge = Bridge;
355
+ exports.OZViewerEvent = OZViewerEvent;
250
356
  //# sourceMappingURL=index.cjs.map
251
357
  //# sourceMappingURL=index.cjs.map
@@ -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"],"names":[],"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') {\nreturn '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') {\nreturn;\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 { ShowWebPopupOptions, CreateReportOptions } 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 async createReport<T = any>(options?: CreateReportOptions): Promise<T> {\n return this.core.callToNative<T>('createReport', 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"]}
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"]}
package/dist/index.d.cts CHANGED
@@ -22,11 +22,94 @@ interface CreateReportOptions {
22
22
  */
23
23
  param: string;
24
24
  }
25
+ /**
26
+ * 오즈 뷰어 함수 `CreateReport`를 호출할 때 사용하는 브릿지용 입력 옵션
27
+ */
28
+ interface GetInformationOptions {
29
+ /**
30
+ * 오즈 뷰어의 정보를 가져오는 명령어
31
+ * - `INPUT_JSON` 현재 보고서의 입력 값을 JSON 형식의 텍스트로 가져옴
32
+ * - `INPUT_JSON_ALL` 전체 보고서의 입력 값을 합쳐서 하나의 JSON 형식 텍스트로 가져옴
33
+ * - `CURRENT_PAGE` 현재 보고서의 페이지 번호. 페이지 번호는 one-based index로 리턴됨
34
+ * - `TOTAL_PAGE_OF_REPORT_FILE_AT=${number}` 보고서 파일별로 전체 페이지 수를 가져옴
35
+ */
36
+ command: string;
37
+ }
38
+ /**
39
+ * 오즈 뷰어 함수 `GetGlobal`을 호출할 때 사용하는 브릿지용 입력 옵션
40
+ */
41
+ interface GetGlobalOptions {
42
+ /** 전역변수 key */
43
+ key: string;
44
+ /** 보고서 인덱스. Zero-based index. 생략 가능 (기본 값 : 0) */
45
+ docIndex?: number;
46
+ }
47
+ /**
48
+ * 오즈 뷰어 함수 `SetGlobal`을 호출할 때 사용하는 브릿지용 입력 옵션
49
+ */
50
+ interface SetGlobalOptions extends GetGlobalOptions {
51
+ /** 전역변수 값 */
52
+ value: string;
53
+ }
54
+ /**
55
+ * 오즈 뷰어 함수 `Script`를 호출할 때 사용하는 브릿지용 입력 옵션
56
+ */
57
+ interface ScriptOptions {
58
+ /**
59
+ * 오즈 뷰어의 기능을 제어하는 명령어
60
+ * - `movepage=${number}` 지정된 페이지 번호로 이동
61
+ */
62
+ command: string;
63
+ }
64
+ /**
65
+ * 오즈 뷰어 함수 `ScriptEx`를 호출할 때 사용하는 브릿지용 입력 옵션
66
+ */
67
+ interface ScriptExOptions extends ScriptOptions {
68
+ /**
69
+ * 오즈 뷰어 파라미터와 파라미터 값.
70
+ * - "`파라미터이름1=파라미터값1delimiter`...delimiter`파라미터이름n=파라미터값n`" 형태로 설정
71
+ */
72
+ param: string;
73
+ /**
74
+ * 파라미터이름=파라미터값을 구분하는 구분자. 생략 가능
75
+ * - (기본 값 : `\n`)
76
+ */
77
+ delimiter?: string;
78
+ }
79
+ /**
80
+ * 오즈 뷰어 함수 `TriggerExternalEvent`를 호출할 때 사용하는 브릿지용 입력 옵션
81
+ */
82
+ interface TriggerExternalEventOptions {
83
+ /** OnExternalEvent로 전달할 첫 번째 값. 생략 가능 (기본 값 : "") */
84
+ param1?: string;
85
+ /** OnExternalEvent로 전달할 두 번째 값. 생략 가능 (기본 값 : "") */
86
+ param2?: string;
87
+ /** OnExternalEvent로 전달할 세 번째 값. 생략 가능 (기본 값 : "") */
88
+ param3?: string;
89
+ /** OnExternalEvent로 전달할 네 번째 값. 생략 가능 (기본 값 : "") */
90
+ param4?: string;
91
+ }
92
+ /**
93
+ * 오즈 뷰어 함수 `TriggerExternalEventByDocIndex`를 호출할 때 사용하는 브릿지용 입력 옵션
94
+ */
95
+ interface TriggerExternalEventByDocIndexOptions extends TriggerExternalEventOptions {
96
+ /** 보고서 인덱스. Zero-based index */
97
+ docIndex: number;
98
+ }
25
99
 
26
100
  interface INativeBridge {
27
101
  showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
28
102
  jumpSafari<T>(options: ShowWebPopupOptions): Promise<T>;
29
- createReport<T>(options?: CreateReportOptions): Promise<T>;
103
+ createReport<T>(options: CreateReportOptions): Promise<T>;
104
+ /** @deprecated 샘플 테스트용 브릿지 */
105
+ createReport_Sample<T>(): Promise<T>;
106
+ getInformation<T>(options: GetInformationOptions): Promise<T>;
107
+ getGlobal<T>(options: GetGlobalOptions): Promise<T>;
108
+ setGlobal<T>(options: SetGlobalOptions): Promise<T>;
109
+ script<T>(options: ScriptOptions): Promise<T>;
110
+ scriptEX<T>(options: ScriptExOptions): Promise<T>;
111
+ triggerExternalEvent<T>(options: TriggerExternalEventOptions): Promise<T>;
112
+ triggerExternalEventByDocIndex<T>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
30
113
  }
31
114
 
32
115
  type NativeAction = keyof INativeBridge;
@@ -121,7 +204,97 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
121
204
  * @returns
122
205
  */
123
206
  jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T>;
124
- createReport<T = any>(options?: CreateReportOptions): Promise<T>;
207
+ /**
208
+ * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
209
+ * ```tsx
210
+ * // 사용 예시
211
+ * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
212
+ * ```
213
+ */
214
+ createReport<T = {
215
+ response: string;
216
+ }>(options: CreateReportOptions): Promise<T>;
217
+ /** @deprecated 샘플 테스트용 브릿지 */
218
+ createReport_Sample<T = {
219
+ response: string;
220
+ }>(): Promise<T>;
221
+ /**
222
+ * 오즈 뷰어의 정보를 가져옵니다
223
+ * ```tsx
224
+ * // 사용 예시
225
+ * await Bridge.native.getInformation({ command: "INPUT_JSON" });
226
+ * ```
227
+ */
228
+ getInformation<T = {
229
+ response: string;
230
+ }>(options: GetInformationOptions): Promise<T>;
231
+ /**
232
+ * 전역 변수 값을 가져옵니다.
233
+ * ```tsx
234
+ * // 사용 예시
235
+ * await Bridge.native.getGlobal({ key: "AAA" })
236
+ * ```
237
+ */
238
+ getGlobal<T = {
239
+ response: string;
240
+ }>(options: GetGlobalOptions): Promise<T>;
241
+ /**
242
+ * 전역 변수 값을 설정합니다.
243
+ * ```tsx
244
+ * // 사용 예시
245
+ * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
246
+ * ```
247
+ */
248
+ setGlobal<T = {
249
+ response: string;
250
+ }>(options: SetGlobalOptions): Promise<T>;
251
+ /**
252
+ * 오즈 뷰어의 기능을 제어합니다.
253
+ * ```tsx
254
+ * // 사용 예시
255
+ * const command = `movepage=2`;
256
+ * await Bridge.native.script({ command });
257
+ * ```
258
+ */
259
+ script<T = {
260
+ response: string;
261
+ }>(options: ScriptOptions): Promise<T>;
262
+ /**
263
+ * 오즈 뷰어의 기능을 제어합니다.
264
+ * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
265
+ * ```tsx
266
+ * // 사용 예시
267
+ * const command = `movepage=2`;
268
+ * const param1 = `eform.show_prev_next_input=true`;
269
+ * const param2 = `eform.signpad_iconposition=sign_bottom`;
270
+ * // param이 여러개인경우 \n으로 묶는다
271
+ * const param = `${param1}\n${param2}`;
272
+ * await Bridge.native.scriptEX({ command, param });
273
+ * ```
274
+ */
275
+ scriptEX<T = {
276
+ response: string;
277
+ }>(options: ScriptExOptions): Promise<T>;
278
+ /**
279
+ * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
280
+ * ```tsx
281
+ * // 사용 예시
282
+ * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
283
+ * ```
284
+ */
285
+ triggerExternalEvent<T = {
286
+ response: string;
287
+ }>(options: TriggerExternalEventOptions): Promise<T>;
288
+ /**
289
+ * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
290
+ * ```tsx
291
+ * // 사용 예시
292
+ * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
293
+ * ```
294
+ */
295
+ triggerExternalEventByDocIndex<T = {
296
+ response: string;
297
+ }>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
125
298
  }
126
299
 
127
300
  /**
@@ -142,4 +315,146 @@ declare const Bridge: {
142
315
  core: Core;
143
316
  };
144
317
 
145
- export { Bridge };
318
+ /**
319
+ * OZ 뷰어에 관련된 이벤트 목록
320
+ */
321
+ declare enum OZViewerEvent {
322
+ /**
323
+ * 보고서 생성 단계별로 발생하는 이벤트
324
+ * - `OZViewerProgressEvent` 이벤트와 매칭된다
325
+ * - `viewer.progresscommand=true` 설정이 필요하다
326
+ * - `OZViewerProgressEvent`와 매칭된다
327
+ */
328
+ OZProgressCommand = "OZProgressCommand",
329
+ /**
330
+ * 에러 발생 시 발생하는 이벤트
331
+ * - `viewer.errorcommand=true` 설정이 필요하다
332
+ * - `OZViewerErrorEvent`와 매칭된다
333
+ */
334
+ OZErrorCommand = "OZErrorCommand",
335
+ /**
336
+ * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트
337
+ * - `viewer.pagechangecommand=true` 설정이 필요하다
338
+ * - `OZViewerChangeEvent`와 매칭된다
339
+ */
340
+ OZPageChangeCommand = "OZPageChangeCommand",
341
+ /**
342
+ * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트
343
+ * - `viewer.reportchangecommand=true` 설정이 필요하다
344
+ * - `OZViewerChangeEvent`와 매칭된다
345
+ */
346
+ OZReportChangeCommand = "OZReportChangeCommand",
347
+ /**
348
+ * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트
349
+ * - `OZViewerUserEvent`와 매칭된다
350
+ */
351
+ OZUserEvent = "OZUserEvent",
352
+ /**
353
+ * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트
354
+ * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작
355
+ * - ex) `viewer.pagebindcommandinterval=500`
356
+ * - `OZViewerPageBindEvent`와 매칭된다
357
+ */
358
+ OZPageBindCommand = "OZPageBindCommand"
359
+ }
360
+ /**
361
+ * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의
362
+ * ```tsx
363
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
364
+ * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });
365
+ * ```
366
+ *
367
+ * `step과` `state`는 step => state 방식으로 진행된다
368
+ *
369
+ * 예시
370
+ * ```bash
371
+ * # step0 뷰어실행
372
+ * [step=0][state=0] # 뷰어 실행 시작
373
+ * [step=0][state=1] # 뷰어 실행 완료
374
+ * # step2 보고서 템플릿 생성
375
+ * [step=1][state=0] # 보고서 템플릿 생성 시작
376
+ * [step=1][state=1] # 보고서 템플릿 생성 완료
377
+ * ```
378
+ */
379
+ type OZViewerProgressEvent = {
380
+ /**
381
+ * 보고서 생성 단계
382
+ * - 0 : 뷰어 실행 옵션 설정
383
+ * - 1 : 보고서 파일 다운로드
384
+ * - 2 : 보고서 템플릿 생성
385
+ * - 3 : 데이터 다운로드
386
+ * - 4 : 보고서 바인딩
387
+ */
388
+ step: '0' | '1' | '2' | '3' | '4';
389
+ /**
390
+ * 보고서 생성 상태
391
+ * - 1 : 시작
392
+ * - 2 : 완료
393
+ */
394
+ state: '1' | '2';
395
+ /** 보고서 이름 */
396
+ reportname: string;
397
+ };
398
+ /**
399
+ * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의
400
+ * ```tsx
401
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
402
+ * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });
403
+ * ```
404
+ */
405
+ type OZViewerErrorEvent = {
406
+ /** 에러 메시지 코드 */
407
+ code: string;
408
+ /** 에러 기본 메시지 */
409
+ message: string;
410
+ /** 에러 상세 메시지 */
411
+ detailmessage: string;
412
+ /** 보고서 이름 */
413
+ reportname: string;
414
+ };
415
+ /**
416
+ * 두 이벤트의 공용 타입
417
+ * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의
418
+ * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의
419
+ * ```tsx
420
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
421
+ * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });
422
+ * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });
423
+ * ```
424
+ */
425
+ type OZViewerChangeEvent = {
426
+ /** 보고서 인덱스(zero-based index) */
427
+ docindex: number;
428
+ };
429
+ /**
430
+ * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의
431
+ * ```tsx
432
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
433
+ * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });
434
+ * ```
435
+ */
436
+ type OZViewerUserEvent = {
437
+ /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */
438
+ param1: string;
439
+ /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */
440
+ param2: string;
441
+ /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */
442
+ param3: string;
443
+ /** 보고서 인덱스(zero-based index) */
444
+ docindex: string;
445
+ };
446
+ /**
447
+ * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의
448
+ * ```tsx
449
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
450
+ * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });
451
+ * ```
452
+ */
453
+ type OZViewerPageBindEvent = {
454
+ /** 보고서 인덱스(zero-based index) */
455
+ docindex: string;
456
+ /** 바인딩된 페이지 번호 */
457
+ pagecount: string;
458
+ };
459
+
460
+ export { Bridge, type OZViewerChangeEvent, type OZViewerErrorEvent, OZViewerEvent, type OZViewerPageBindEvent, type OZViewerProgressEvent, type OZViewerUserEvent };
package/dist/index.d.ts CHANGED
@@ -22,11 +22,94 @@ interface CreateReportOptions {
22
22
  */
23
23
  param: string;
24
24
  }
25
+ /**
26
+ * 오즈 뷰어 함수 `CreateReport`를 호출할 때 사용하는 브릿지용 입력 옵션
27
+ */
28
+ interface GetInformationOptions {
29
+ /**
30
+ * 오즈 뷰어의 정보를 가져오는 명령어
31
+ * - `INPUT_JSON` 현재 보고서의 입력 값을 JSON 형식의 텍스트로 가져옴
32
+ * - `INPUT_JSON_ALL` 전체 보고서의 입력 값을 합쳐서 하나의 JSON 형식 텍스트로 가져옴
33
+ * - `CURRENT_PAGE` 현재 보고서의 페이지 번호. 페이지 번호는 one-based index로 리턴됨
34
+ * - `TOTAL_PAGE_OF_REPORT_FILE_AT=${number}` 보고서 파일별로 전체 페이지 수를 가져옴
35
+ */
36
+ command: string;
37
+ }
38
+ /**
39
+ * 오즈 뷰어 함수 `GetGlobal`을 호출할 때 사용하는 브릿지용 입력 옵션
40
+ */
41
+ interface GetGlobalOptions {
42
+ /** 전역변수 key */
43
+ key: string;
44
+ /** 보고서 인덱스. Zero-based index. 생략 가능 (기본 값 : 0) */
45
+ docIndex?: number;
46
+ }
47
+ /**
48
+ * 오즈 뷰어 함수 `SetGlobal`을 호출할 때 사용하는 브릿지용 입력 옵션
49
+ */
50
+ interface SetGlobalOptions extends GetGlobalOptions {
51
+ /** 전역변수 값 */
52
+ value: string;
53
+ }
54
+ /**
55
+ * 오즈 뷰어 함수 `Script`를 호출할 때 사용하는 브릿지용 입력 옵션
56
+ */
57
+ interface ScriptOptions {
58
+ /**
59
+ * 오즈 뷰어의 기능을 제어하는 명령어
60
+ * - `movepage=${number}` 지정된 페이지 번호로 이동
61
+ */
62
+ command: string;
63
+ }
64
+ /**
65
+ * 오즈 뷰어 함수 `ScriptEx`를 호출할 때 사용하는 브릿지용 입력 옵션
66
+ */
67
+ interface ScriptExOptions extends ScriptOptions {
68
+ /**
69
+ * 오즈 뷰어 파라미터와 파라미터 값.
70
+ * - "`파라미터이름1=파라미터값1delimiter`...delimiter`파라미터이름n=파라미터값n`" 형태로 설정
71
+ */
72
+ param: string;
73
+ /**
74
+ * 파라미터이름=파라미터값을 구분하는 구분자. 생략 가능
75
+ * - (기본 값 : `\n`)
76
+ */
77
+ delimiter?: string;
78
+ }
79
+ /**
80
+ * 오즈 뷰어 함수 `TriggerExternalEvent`를 호출할 때 사용하는 브릿지용 입력 옵션
81
+ */
82
+ interface TriggerExternalEventOptions {
83
+ /** OnExternalEvent로 전달할 첫 번째 값. 생략 가능 (기본 값 : "") */
84
+ param1?: string;
85
+ /** OnExternalEvent로 전달할 두 번째 값. 생략 가능 (기본 값 : "") */
86
+ param2?: string;
87
+ /** OnExternalEvent로 전달할 세 번째 값. 생략 가능 (기본 값 : "") */
88
+ param3?: string;
89
+ /** OnExternalEvent로 전달할 네 번째 값. 생략 가능 (기본 값 : "") */
90
+ param4?: string;
91
+ }
92
+ /**
93
+ * 오즈 뷰어 함수 `TriggerExternalEventByDocIndex`를 호출할 때 사용하는 브릿지용 입력 옵션
94
+ */
95
+ interface TriggerExternalEventByDocIndexOptions extends TriggerExternalEventOptions {
96
+ /** 보고서 인덱스. Zero-based index */
97
+ docIndex: number;
98
+ }
25
99
 
26
100
  interface INativeBridge {
27
101
  showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
28
102
  jumpSafari<T>(options: ShowWebPopupOptions): Promise<T>;
29
- createReport<T>(options?: CreateReportOptions): Promise<T>;
103
+ createReport<T>(options: CreateReportOptions): Promise<T>;
104
+ /** @deprecated 샘플 테스트용 브릿지 */
105
+ createReport_Sample<T>(): Promise<T>;
106
+ getInformation<T>(options: GetInformationOptions): Promise<T>;
107
+ getGlobal<T>(options: GetGlobalOptions): Promise<T>;
108
+ setGlobal<T>(options: SetGlobalOptions): Promise<T>;
109
+ script<T>(options: ScriptOptions): Promise<T>;
110
+ scriptEX<T>(options: ScriptExOptions): Promise<T>;
111
+ triggerExternalEvent<T>(options: TriggerExternalEventOptions): Promise<T>;
112
+ triggerExternalEventByDocIndex<T>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
30
113
  }
31
114
 
32
115
  type NativeAction = keyof INativeBridge;
@@ -121,7 +204,97 @@ declare class NativeBridge extends CommonBridge implements INativeBridge {
121
204
  * @returns
122
205
  */
123
206
  jumpSafari<T = any>(options: ShowWebPopupOptions): Promise<T>;
124
- createReport<T = any>(options?: CreateReportOptions): Promise<T>;
207
+ /**
208
+ * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
209
+ * ```tsx
210
+ * // 사용 예시
211
+ * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
212
+ * ```
213
+ */
214
+ createReport<T = {
215
+ response: string;
216
+ }>(options: CreateReportOptions): Promise<T>;
217
+ /** @deprecated 샘플 테스트용 브릿지 */
218
+ createReport_Sample<T = {
219
+ response: string;
220
+ }>(): Promise<T>;
221
+ /**
222
+ * 오즈 뷰어의 정보를 가져옵니다
223
+ * ```tsx
224
+ * // 사용 예시
225
+ * await Bridge.native.getInformation({ command: "INPUT_JSON" });
226
+ * ```
227
+ */
228
+ getInformation<T = {
229
+ response: string;
230
+ }>(options: GetInformationOptions): Promise<T>;
231
+ /**
232
+ * 전역 변수 값을 가져옵니다.
233
+ * ```tsx
234
+ * // 사용 예시
235
+ * await Bridge.native.getGlobal({ key: "AAA" })
236
+ * ```
237
+ */
238
+ getGlobal<T = {
239
+ response: string;
240
+ }>(options: GetGlobalOptions): Promise<T>;
241
+ /**
242
+ * 전역 변수 값을 설정합니다.
243
+ * ```tsx
244
+ * // 사용 예시
245
+ * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
246
+ * ```
247
+ */
248
+ setGlobal<T = {
249
+ response: string;
250
+ }>(options: SetGlobalOptions): Promise<T>;
251
+ /**
252
+ * 오즈 뷰어의 기능을 제어합니다.
253
+ * ```tsx
254
+ * // 사용 예시
255
+ * const command = `movepage=2`;
256
+ * await Bridge.native.script({ command });
257
+ * ```
258
+ */
259
+ script<T = {
260
+ response: string;
261
+ }>(options: ScriptOptions): Promise<T>;
262
+ /**
263
+ * 오즈 뷰어의 기능을 제어합니다.
264
+ * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
265
+ * ```tsx
266
+ * // 사용 예시
267
+ * const command = `movepage=2`;
268
+ * const param1 = `eform.show_prev_next_input=true`;
269
+ * const param2 = `eform.signpad_iconposition=sign_bottom`;
270
+ * // param이 여러개인경우 \n으로 묶는다
271
+ * const param = `${param1}\n${param2}`;
272
+ * await Bridge.native.scriptEX({ command, param });
273
+ * ```
274
+ */
275
+ scriptEX<T = {
276
+ response: string;
277
+ }>(options: ScriptExOptions): Promise<T>;
278
+ /**
279
+ * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
280
+ * ```tsx
281
+ * // 사용 예시
282
+ * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
283
+ * ```
284
+ */
285
+ triggerExternalEvent<T = {
286
+ response: string;
287
+ }>(options: TriggerExternalEventOptions): Promise<T>;
288
+ /**
289
+ * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
290
+ * ```tsx
291
+ * // 사용 예시
292
+ * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
293
+ * ```
294
+ */
295
+ triggerExternalEventByDocIndex<T = {
296
+ response: string;
297
+ }>(options: TriggerExternalEventByDocIndexOptions): Promise<T>;
125
298
  }
126
299
 
127
300
  /**
@@ -142,4 +315,146 @@ declare const Bridge: {
142
315
  core: Core;
143
316
  };
144
317
 
145
- export { Bridge };
318
+ /**
319
+ * OZ 뷰어에 관련된 이벤트 목록
320
+ */
321
+ declare enum OZViewerEvent {
322
+ /**
323
+ * 보고서 생성 단계별로 발생하는 이벤트
324
+ * - `OZViewerProgressEvent` 이벤트와 매칭된다
325
+ * - `viewer.progresscommand=true` 설정이 필요하다
326
+ * - `OZViewerProgressEvent`와 매칭된다
327
+ */
328
+ OZProgressCommand = "OZProgressCommand",
329
+ /**
330
+ * 에러 발생 시 발생하는 이벤트
331
+ * - `viewer.errorcommand=true` 설정이 필요하다
332
+ * - `OZViewerErrorEvent`와 매칭된다
333
+ */
334
+ OZErrorCommand = "OZErrorCommand",
335
+ /**
336
+ * 화면에 표시되는 페이지가 변경된 후 발생하는 이벤트
337
+ * - `viewer.pagechangecommand=true` 설정이 필요하다
338
+ * - `OZViewerChangeEvent`와 매칭된다
339
+ */
340
+ OZPageChangeCommand = "OZPageChangeCommand",
341
+ /**
342
+ * 화면에 표시되는 보고서가 변경된 후 발생하는 이벤트
343
+ * - `viewer.reportchangecommand=true` 설정이 필요하다
344
+ * - `OZViewerChangeEvent`와 매칭된다
345
+ */
346
+ OZReportChangeCommand = "OZReportChangeCommand",
347
+ /**
348
+ * `OZUserEvent` _TriggerOCXUserEvent 함수 실행 시 발생하는 이벤트
349
+ * - `OZViewerUserEvent`와 매칭된다
350
+ */
351
+ OZUserEvent = "OZUserEvent",
352
+ /**
353
+ * `OZPageBindCommand` 페이지가 바인딩된 후 발생하는 이벤트
354
+ * - `viewer.pagebindcommandinterval` 파라미터에서 설정한 주기별로 동작
355
+ * - ex) `viewer.pagebindcommandinterval=500`
356
+ * - `OZViewerPageBindEvent`와 매칭된다
357
+ */
358
+ OZPageBindCommand = "OZPageBindCommand"
359
+ }
360
+ /**
361
+ * `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의
362
+ * ```tsx
363
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
364
+ * window.addEventListener(OZViewerEvent.OZProgressCommand, (e) => { console.log(e.detail); });
365
+ * ```
366
+ *
367
+ * `step과` `state`는 step => state 방식으로 진행된다
368
+ *
369
+ * 예시
370
+ * ```bash
371
+ * # step0 뷰어실행
372
+ * [step=0][state=0] # 뷰어 실행 시작
373
+ * [step=0][state=1] # 뷰어 실행 완료
374
+ * # step2 보고서 템플릿 생성
375
+ * [step=1][state=0] # 보고서 템플릿 생성 시작
376
+ * [step=1][state=1] # 보고서 템플릿 생성 완료
377
+ * ```
378
+ */
379
+ type OZViewerProgressEvent = {
380
+ /**
381
+ * 보고서 생성 단계
382
+ * - 0 : 뷰어 실행 옵션 설정
383
+ * - 1 : 보고서 파일 다운로드
384
+ * - 2 : 보고서 템플릿 생성
385
+ * - 3 : 데이터 다운로드
386
+ * - 4 : 보고서 바인딩
387
+ */
388
+ step: '0' | '1' | '2' | '3' | '4';
389
+ /**
390
+ * 보고서 생성 상태
391
+ * - 1 : 시작
392
+ * - 2 : 완료
393
+ */
394
+ state: '1' | '2';
395
+ /** 보고서 이름 */
396
+ reportname: string;
397
+ };
398
+ /**
399
+ * `OZViewerEvent.OZErrorCommand` 이벤트의 `e.detail` 타입 정의
400
+ * ```tsx
401
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
402
+ * window.addEventListener(OZViewerEvent.OZErrorCommand, (e) => { console.log(e.detail); });
403
+ * ```
404
+ */
405
+ type OZViewerErrorEvent = {
406
+ /** 에러 메시지 코드 */
407
+ code: string;
408
+ /** 에러 기본 메시지 */
409
+ message: string;
410
+ /** 에러 상세 메시지 */
411
+ detailmessage: string;
412
+ /** 보고서 이름 */
413
+ reportname: string;
414
+ };
415
+ /**
416
+ * 두 이벤트의 공용 타입
417
+ * - `OZViewerEvent.OZPageChangeCommand` 이벤트의 `e.detail` 타입 정의
418
+ * - `OZViewerEvent.OZReportChangeCommand` 이벤트의 `e.detail` 타입 정의
419
+ * ```tsx
420
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
421
+ * window.addEventListener(OZViewerEvent.OZPageChangeCommand, (e) => { console.log(e.detail); });
422
+ * window.addEventListener(OZViewerEvent.OZViewerChangeCommand, (e) => { console.log(e.detail); });
423
+ * ```
424
+ */
425
+ type OZViewerChangeEvent = {
426
+ /** 보고서 인덱스(zero-based index) */
427
+ docindex: number;
428
+ };
429
+ /**
430
+ * `OZViewerEvent.OZUserEvent` 이벤트의 `e.detail` 타입 정의
431
+ * ```tsx
432
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
433
+ * window.addEventListener(OZViewerEvent.OZUserEvent, (e) => { console.log(e.detail); });
434
+ * ```
435
+ */
436
+ type OZViewerUserEvent = {
437
+ /** _TriggerOCXUserEvent 함수에서 전달한 첫 번째 값 */
438
+ param1: string;
439
+ /** _TriggerOCXUserEvent 함수에서 전달한 두 번째 값 */
440
+ param2: string;
441
+ /** _TriggerOCXUserEvent 함수에서 전달한 세 번째 값 */
442
+ param3: string;
443
+ /** 보고서 인덱스(zero-based index) */
444
+ docindex: string;
445
+ };
446
+ /**
447
+ * `OZViewerEvent.OZPageBindCommand` 이벤트의 `e.detail` 타입 정의
448
+ * ```tsx
449
+ * import { OZViewerEvent } from 'sales-frontend-bridge';
450
+ * window.addEventListener(OZViewerEvent.OZPageBindCommand, (e) => { console.log(e.detail); });
451
+ * ```
452
+ */
453
+ type OZViewerPageBindEvent = {
454
+ /** 보고서 인덱스(zero-based index) */
455
+ docindex: string;
456
+ /** 바인딩된 페이지 번호 */
457
+ pagecount: string;
458
+ };
459
+
460
+ export { Bridge, type OZViewerChangeEvent, type OZViewerErrorEvent, OZViewerEvent, type OZViewerPageBindEvent, type OZViewerProgressEvent, type OZViewerUserEvent };
package/dist/index.js CHANGED
@@ -218,9 +218,103 @@ var NativeBridge = class extends CommonBridge {
218
218
  async jumpSafari(options) {
219
219
  return this.core.callToNative("jumpSafari", options);
220
220
  }
221
+ /**
222
+ * 설정한 뷰어 파라미터를 기준으로 뷰어에 새로운 보고서를 바인딩합니다.
223
+ * ```tsx
224
+ * // 사용 예시
225
+ * await Bridge.native.createReport({ param: "connection.openfile=sample.ozd" });
226
+ * ```
227
+ */
221
228
  async createReport(options) {
222
229
  return this.core.callToNative("createReport", options);
223
230
  }
231
+ /** @deprecated 샘플 테스트용 브릿지 */
232
+ async createReport_Sample() {
233
+ return this.core.callToNative("createReport_Sample");
234
+ }
235
+ /**
236
+ * 오즈 뷰어의 정보를 가져옵니다
237
+ * ```tsx
238
+ * // 사용 예시
239
+ * await Bridge.native.getInformation({ command: "INPUT_JSON" });
240
+ * ```
241
+ */
242
+ async getInformation(options) {
243
+ return this.core.callToNative("getInformation", options);
244
+ }
245
+ /**
246
+ * 전역 변수 값을 가져옵니다.
247
+ * ```tsx
248
+ * // 사용 예시
249
+ * await Bridge.native.getGlobal({ key: "AAA" })
250
+ * ```
251
+ */
252
+ async getGlobal(options) {
253
+ return this.core.callToNative("getGlobal", Object.assign({ docIndex: 0 }, options));
254
+ }
255
+ /**
256
+ * 전역 변수 값을 설정합니다.
257
+ * ```tsx
258
+ * // 사용 예시
259
+ * await Bridge.native.setGlobal({ key: "AAA", value: JSON.stringify({ aaa: 111 }) });
260
+ * ```
261
+ */
262
+ async setGlobal(options) {
263
+ return this.core.callToNative("setGlobal", Object.assign({ docIndex: 0 }, options));
264
+ }
265
+ /**
266
+ * 오즈 뷰어의 기능을 제어합니다.
267
+ * ```tsx
268
+ * // 사용 예시
269
+ * const command = `movepage=2`;
270
+ * await Bridge.native.script({ command });
271
+ * ```
272
+ */
273
+ async script(options) {
274
+ return this.core.callToNative("script", options);
275
+ }
276
+ /**
277
+ * 오즈 뷰어의 기능을 제어합니다.
278
+ * - `param`을 통해 오즈 뷰어의 parameter를 변경할수 있습니다
279
+ * ```tsx
280
+ * // 사용 예시
281
+ * const command = `movepage=2`;
282
+ * const param1 = `eform.show_prev_next_input=true`;
283
+ * const param2 = `eform.signpad_iconposition=sign_bottom`;
284
+ * // param이 여러개인경우 \n으로 묶는다
285
+ * const param = `${param1}\n${param2}`;
286
+ * await Bridge.native.scriptEX({ command, param });
287
+ * ```
288
+ */
289
+ async scriptEX(options) {
290
+ return this.core.callToNative("scriptEX", Object.assign({ delimiter: "\n" }, options));
291
+ }
292
+ /**
293
+ * 현재 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
294
+ * ```tsx
295
+ * // 사용 예시
296
+ * await Bridge.native.triggerExternalEvent({ param1: 'signer' });
297
+ * ```
298
+ */
299
+ async triggerExternalEvent(options) {
300
+ return this.core.callToNative(
301
+ "triggerExternalEventByDocIndex",
302
+ Object.assign({ param1: "", param2: "", param3: "", param4: "" }, options)
303
+ );
304
+ }
305
+ /**
306
+ * 지정한 보고서의 `OnExternalEvent` 이벤트를 실행하고, `OnExternalEvent` 이벤트에서 전달한 값을 string 형태로 리턴받습니다.
307
+ * ```tsx
308
+ * // 사용 예시
309
+ * await Bridge.native.triggerExternalEventByDocIndex({ docIndex: 0, param1: 'signer' });
310
+ * ```
311
+ */
312
+ async triggerExternalEventByDocIndex(options) {
313
+ return this.core.callToNative(
314
+ "triggerExternalEventByDocIndex",
315
+ Object.assign({ param1: "", param2: "", param3: "", param4: "" }, options)
316
+ );
317
+ }
224
318
  // TODO: 필요 플러그인들 추가
225
319
  };
226
320
 
@@ -244,6 +338,17 @@ var Bridge = {
244
338
  core: new Core()
245
339
  };
246
340
 
247
- export { Bridge };
341
+ // src/bridge/oz/oz-event.types.ts
342
+ var OZViewerEvent = /* @__PURE__ */ ((OZViewerEvent2) => {
343
+ OZViewerEvent2["OZProgressCommand"] = "OZProgressCommand";
344
+ OZViewerEvent2["OZErrorCommand"] = "OZErrorCommand";
345
+ OZViewerEvent2["OZPageChangeCommand"] = "OZPageChangeCommand";
346
+ OZViewerEvent2["OZReportChangeCommand"] = "OZReportChangeCommand";
347
+ OZViewerEvent2["OZUserEvent"] = "OZUserEvent";
348
+ OZViewerEvent2["OZPageBindCommand"] = "OZPageBindCommand";
349
+ return OZViewerEvent2;
350
+ })(OZViewerEvent || {});
351
+
352
+ export { Bridge, OZViewerEvent };
248
353
  //# sourceMappingURL=index.js.map
249
354
  //# sourceMappingURL=index.js.map
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"],"names":[],"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') {\nreturn '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') {\nreturn;\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 { ShowWebPopupOptions, CreateReportOptions } 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 async createReport<T = any>(options?: CreateReportOptions): Promise<T> {\n return this.core.callToNative<T>('createReport', 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"]}
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"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sales-frontend-bridge",
3
- "version": "0.0.10",
3
+ "version": "0.0.12",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",