sales-frontend-bridge 0.0.18 → 0.0.19
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 +69 -9
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +34 -8
- package/dist/index.d.ts +34 -8
- package/dist/index.js +69 -9
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -119,7 +119,7 @@ var Core = class {
|
|
|
119
119
|
};
|
|
120
120
|
}
|
|
121
121
|
/**
|
|
122
|
-
*
|
|
122
|
+
* 네이티브 통신
|
|
123
123
|
* @param service
|
|
124
124
|
* @param action
|
|
125
125
|
* @param option
|
|
@@ -142,7 +142,6 @@ var Core = class {
|
|
|
142
142
|
try {
|
|
143
143
|
const command = {
|
|
144
144
|
action,
|
|
145
|
-
eventName: action,
|
|
146
145
|
promiseId,
|
|
147
146
|
option: commandOptions
|
|
148
147
|
};
|
|
@@ -156,15 +155,53 @@ var Core = class {
|
|
|
156
155
|
window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));
|
|
157
156
|
return;
|
|
158
157
|
}
|
|
158
|
+
console.warn(`[callToNative] \uD604\uC7AC \uD50C\uB7AB\uD3FC(${platform})\uC5D0\uC11C\uB294 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC11C\uBE44\uC2A4(${action})\uC785\uB2C8\uB2E4.`);
|
|
159
|
+
this.cleanupPromise(promiseId);
|
|
160
|
+
reject(new Error(`Unsupported platform: ${platform}`));
|
|
161
|
+
} catch (error) {
|
|
162
|
+
console.error("[callToNative] error::", error);
|
|
163
|
+
this.cleanupPromise(promiseId);
|
|
164
|
+
reject(error);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* iframe 통신(영업포털)
|
|
170
|
+
* @param eventName
|
|
171
|
+
* @param options
|
|
172
|
+
* @returns
|
|
173
|
+
*/
|
|
174
|
+
async callToIframeParent(eventName, options) {
|
|
175
|
+
const { retainCallback: retain, ...commandOptions } = options || {};
|
|
176
|
+
return new Promise((resolve, reject) => {
|
|
177
|
+
const promiseId = `${eventName}_${this.generatePromiseId()}`;
|
|
178
|
+
console.log("[callToIframe] promiseId::", promiseId);
|
|
179
|
+
window.n2bridge.promises[promiseId] = {
|
|
180
|
+
resolve: (value) => {
|
|
181
|
+
resolve(value);
|
|
182
|
+
},
|
|
183
|
+
reject: (reason) => {
|
|
184
|
+
reject(reason);
|
|
185
|
+
},
|
|
186
|
+
retain
|
|
187
|
+
};
|
|
188
|
+
try {
|
|
189
|
+
const command = {
|
|
190
|
+
eventName,
|
|
191
|
+
promiseId,
|
|
192
|
+
option: commandOptions
|
|
193
|
+
};
|
|
194
|
+
console.log("[callToIframe] command::", command);
|
|
195
|
+
const platform = salesFrontendUtils.getDspExecutionEnvironment();
|
|
159
196
|
if (platform === "iframe") {
|
|
160
197
|
window.parent.postMessage(command, "*");
|
|
161
198
|
return;
|
|
162
199
|
}
|
|
163
|
-
console.warn(`[
|
|
200
|
+
console.warn(`[callToIframe] \uD604\uC7AC \uD50C\uB7AB\uD3FC(${platform})\uC5D0\uC11C\uB294 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC11C\uBE44\uC2A4(${eventName})\uC785\uB2C8\uB2E4.`);
|
|
164
201
|
this.cleanupPromise(promiseId);
|
|
165
202
|
reject(new Error(`Unsupported platform: ${platform}`));
|
|
166
203
|
} catch (error) {
|
|
167
|
-
console.error("[
|
|
204
|
+
console.error("[callToIframe] error::", error);
|
|
168
205
|
this.cleanupPromise(promiseId);
|
|
169
206
|
reject(error);
|
|
170
207
|
}
|
|
@@ -195,13 +232,23 @@ var IframeBridge = class extends CommonBridge {
|
|
|
195
232
|
* @returns
|
|
196
233
|
*/
|
|
197
234
|
async openUrlWindow(options) {
|
|
198
|
-
return this.core.
|
|
235
|
+
return this.core.callToIframeParent("openUrlWindow", options);
|
|
199
236
|
}
|
|
200
237
|
// TODO: 필요 플러그인들 추가
|
|
201
238
|
};
|
|
202
239
|
|
|
203
240
|
// src/bridge/native-bridge.ts
|
|
204
241
|
var NativeBridge = class extends CommonBridge {
|
|
242
|
+
/**
|
|
243
|
+
* getParameterMap
|
|
244
|
+
* @returns
|
|
245
|
+
*/
|
|
246
|
+
async getParameterMap() {
|
|
247
|
+
return this.core.callToNative("getParameterMap");
|
|
248
|
+
}
|
|
249
|
+
async dismissPopup(options) {
|
|
250
|
+
return this.core.callToNative("dismissPopup", options);
|
|
251
|
+
}
|
|
205
252
|
/**
|
|
206
253
|
*
|
|
207
254
|
* @param options
|
|
@@ -228,7 +275,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
228
275
|
* ```
|
|
229
276
|
*/
|
|
230
277
|
createReportEx(options) {
|
|
231
|
-
return this.core.callToNative(
|
|
278
|
+
return this.core.callToNative(
|
|
279
|
+
"createReportEx",
|
|
280
|
+
Object.assign({ delimiter: "\n" }, options)
|
|
281
|
+
);
|
|
232
282
|
}
|
|
233
283
|
/**
|
|
234
284
|
* ### Bridge for Oz
|
|
@@ -307,7 +357,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
307
357
|
* ```
|
|
308
358
|
*/
|
|
309
359
|
scriptEx(options) {
|
|
310
|
-
return this.core.callToNative(
|
|
360
|
+
return this.core.callToNative(
|
|
361
|
+
"scriptEx",
|
|
362
|
+
Object.assign({ delimiter: "\n" }, options)
|
|
363
|
+
);
|
|
311
364
|
}
|
|
312
365
|
/**
|
|
313
366
|
* ### Bridge for Oz
|
|
@@ -406,7 +459,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
406
459
|
* ```
|
|
407
460
|
*/
|
|
408
461
|
async savePdf(options) {
|
|
409
|
-
return this.core.callToNative(
|
|
462
|
+
return this.core.callToNative(
|
|
463
|
+
"savePdf",
|
|
464
|
+
Object.assign({ delimiter: "\n" }, options)
|
|
465
|
+
);
|
|
410
466
|
}
|
|
411
467
|
/**
|
|
412
468
|
* ### Bridge for Oz
|
|
@@ -430,7 +486,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
430
486
|
* ```
|
|
431
487
|
*/
|
|
432
488
|
async createOzPdfViewer(options) {
|
|
433
|
-
return this.core.callToNative(
|
|
489
|
+
return this.core.callToNative(
|
|
490
|
+
"createOzPdfViewer",
|
|
491
|
+
Object.assign({ password: "" }, options)
|
|
492
|
+
);
|
|
434
493
|
}
|
|
435
494
|
/**
|
|
436
495
|
* ### Bridge for Oz
|
|
@@ -464,6 +523,7 @@ var OZViewerEvent = /* @__PURE__ */ ((OZViewerEvent2) => {
|
|
|
464
523
|
OZViewerEvent2["OZPageBindCommand"] = "OZPageBindCommand";
|
|
465
524
|
OZViewerEvent2["OZEFormInputEventCommand"] = "OZEFormInputEventCommand";
|
|
466
525
|
OZViewerEvent2["OZExportCommand"] = "OZExportCommand";
|
|
526
|
+
OZViewerEvent2["OZBtnTouchEvent"] = "btnTouchEvent";
|
|
467
527
|
return OZViewerEvent2;
|
|
468
528
|
})(OZViewerEvent || {});
|
|
469
529
|
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/iframe-bridge.ts","../src/bridge/native-bridge.ts","../src/bridge/bridge.ts","../src/bridge/oz/oz-event.types.ts"],"names":["isClient","isStorybookEnv","getDspExecutionEnvironment","OZViewerEvent"],"mappings":"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","file":"index.cjs","sourcesContent":["import { getDspExecutionEnvironment, isClient, isStorybookEnv } from 'sales-frontend-utils';\n\nimport { BridgeAction } from '../types/common.types';\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 (!isClient()) {\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 if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n window.parent.n2bridge = window.n2bridge;\n window.parent.dispatchEvent = (...args) => (window.dispatchEvent.apply(null, args))\n }\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 = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'iframe') {\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';\nimport { IIframeBridge } from './types/iframe/iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\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 { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportExOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n DownloadOzdOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n CommonOzBridgetResponseType,\n UpdateOzdOptions,\n createOzPdfViewerOptions\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 * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createReportEx<T = any>(options: CreateReportExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('createReportEx', Object.assign({ delimiter: '\\n' }, options));\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideViewer<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideViewer');\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 = any>(options: GetInformationOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 = any>(options: GetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n setGlobal<T = any>(options: SetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.native.script({ command });\n * ```\n */\n script<T = any>(options: ScriptOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * Bridge.native.scriptEX({ command, param });\n * ```\n */\n scriptEx<T = any>(options: ScriptExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 = any>(options: TriggerExternalEventOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEvent',\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 = any>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * returnData는 file 경로가 절대경로로 매핑되어 돌아온다\n * ```json\n * {\n * \"action\":\"downloadDocument\",\n * \"data\":[\n * {\n * \"name\":\"aaa\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A0010.ozd\",\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/C0401.ozd\"\n * ],\n * \"complete\":false\n * },\n * {\n * \"name\":\"bbb\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A1500.ozd\"\n * ],\n * \"complete\":false\n * }\n * ]\n * }\n * ```\n */\n async downloadDocument<T = any>(options: DownloadOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n */\n async updateOzDocumentStatus<T = any>(options: UpdateOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('updateOzDocumentStatus', 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 = any>(options: SavePdfOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('savePdf', Object.assign({ delimiter: '\\n' }, 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 = string>(options: SaveSignImgOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createOzPdfViewer({ filename: \"total.pdf\", filepaths: \"/data/0/app/total.pdf\", password: \"\" })\n * ```\n */\n async createOzPdfViewer<T>(options: createOzPdfViewerOptions): Promise<CommonOzBridgetResponseType<T>> {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('createOzPdfViewer', Object.assign({ password: '' }, options));\n\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer<T>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideOzPdfViewer');\n\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { IframeBridge } from './iframe-bridge';\nimport { NativeBridge } from './native-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n iframe: new IframeBridge(),\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 * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged` \n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\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\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/iframe-bridge.ts","../src/bridge/native-bridge.ts","../src/bridge/bridge.ts","../src/bridge/oz/oz-event.types.ts"],"names":["isClient","isStorybookEnv","getDspExecutionEnvironment","OZViewerEvent"],"mappings":"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","file":"index.cjs","sourcesContent":["import { getDspExecutionEnvironment, isClient, isStorybookEnv } from 'sales-frontend-utils';\n\nimport { IframeEventName } from '../types/iframe/iframe-action.types';\nimport { NativeAction } from '../types/native/native-action.types';\n\nimport { NativeBridgeCommand, IframeBridgeCommand, 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 (!isClient()) {\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 if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n window.parent.n2bridge = window.n2bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\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: NativeAction, 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: NativeBridgeCommand = {\n action,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(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 * iframe 통신(영업포털)\n * @param eventName\n * @param options\n * @returns\n */\n async callToIframeParent<T = any>(eventName: IframeEventName, options?: BridgeOptions): Promise<T> {\n const { retainCallback: retain, ...commandOptions } = options || {};\n\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n console.log('[callToIframe] 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: IframeBridgeCommand = {\n eventName,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToIframe] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'iframe') {\n window.parent.postMessage(command, '*');\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(`[callToIframe] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${eventName})입니다.`);\n this.cleanupPromise(promiseId);\n reject(new Error(`Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[callToIframe] 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';\nimport { IIframeBridge } from './types/iframe/iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openUrlWindow<T = any>(options: any): Promise<T> {\n return this.core.callToIframeParent('openUrlWindow', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportExOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n DownloadOzdOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n CommonOzBridgetResponseType,\n UpdateOzdOptions,\n createOzPdfViewerOptions\n} from './types/native/native-options.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToNative<T>('getParameterMap');\n }\n\n async dismissPopup<T = any>(options?: any): Promise<T> {\n return this.core.callToNative<T>('dismissPopup', options);\n }\n\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 * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createReportEx<T = any>(options: CreateReportExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'createReportEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideViewer<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideViewer');\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 = any>(options: GetInformationOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 = any>(options: GetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n setGlobal<T = any>(options: SetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * Bridge.native.script({ command });\n * ```\n */\n script<T = any>(options: ScriptOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * Bridge.native.scriptEX({ command, param });\n * ```\n */\n scriptEx<T = any>(options: ScriptExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\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 = any>(options: TriggerExternalEventOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEvent',\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 = any>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * returnData는 file 경로가 절대경로로 매핑되어 돌아온다\n * ```json\n * {\n * \"action\":\"downloadDocument\",\n * \"data\":[\n * {\n * \"name\":\"aaa\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A0010.ozd\",\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/C0401.ozd\"\n * ],\n * \"complete\":false\n * },\n * {\n * \"name\":\"bbb\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A1500.ozd\"\n * ],\n * \"complete\":false\n * }\n * ]\n * }\n * ```\n */\n async downloadDocument<T = any>(options: DownloadOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n */\n async updateOzDocumentStatus<T = any>(options: UpdateOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('updateOzDocumentStatus', 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 = any>(options: SavePdfOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\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 = string>(options: SaveSignImgOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createOzPdfViewer({ filename: \"total.pdf\", filepaths: \"/data/0/app/total.pdf\", password: \"\" })\n * ```\n */\n async createOzPdfViewer<T>(options: createOzPdfViewerOptions): Promise<CommonOzBridgetResponseType<T>> {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'createOzPdfViewer',\n Object.assign({ password: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer<T>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideOzPdfViewer');\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { IframeBridge } from './iframe-bridge';\nimport { NativeBridge } from './native-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n iframe: new IframeBridge(),\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 * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged` \n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\n\n /**\n * 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트\n * - `OZBtnTouchEvent`와 매칭된다\n */\n OZBtnTouchEvent = 'btnTouchEvent'\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\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}\n\nexport type OZBtnTouchEvent = {\n /** 버튼의 아이디 혹은 텍스트 */\n btnID: string;\n /**\n * 어떤 패널의 버튼을 눌렀는지 구분\n * - `category` 서식 전체목록의 버튼\n */\n type: \"category\"\n}"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -6,7 +6,7 @@ interface IIframeBridge {
|
|
|
6
6
|
openUrlWindow(options: OpenUrlWindowOptions): Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
type
|
|
9
|
+
type IframeEventName = keyof IIframeBridge;
|
|
10
10
|
|
|
11
11
|
interface ShowWebPopupOptions {
|
|
12
12
|
/** 0: fullscreen, 1: title bar, 2: size 지정 가능 팝업, 3: wk webview */
|
|
@@ -157,7 +157,6 @@ type SavePdfOptions = Omit<ScriptExOptions, "command">;
|
|
|
157
157
|
* 특정 OZD 내부에 포함된 서명 필드만 이미지로 뽑아낸다
|
|
158
158
|
*/
|
|
159
159
|
interface SaveSignImgOptions {
|
|
160
|
-
exportType: "IMG";
|
|
161
160
|
/** 저장할 파일이름 */
|
|
162
161
|
fileName: string;
|
|
163
162
|
/** 추출할 서명의 FORM ID */
|
|
@@ -183,6 +182,8 @@ interface createOzPdfViewerOptions {
|
|
|
183
182
|
}
|
|
184
183
|
|
|
185
184
|
interface INativeBridge {
|
|
185
|
+
getParameterMap<T>(): Promise<T>;
|
|
186
|
+
dismissPopup<T>(option: any): Promise<T>;
|
|
186
187
|
showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
|
|
187
188
|
jumpSafari<T>(options: ShowWebPopupOptions): Promise<T>;
|
|
188
189
|
createReportEx<T>(options: CreateReportExOptions): Promise<CommonOzBridgetResponseType<T>>;
|
|
@@ -205,8 +206,6 @@ interface INativeBridge {
|
|
|
205
206
|
|
|
206
207
|
type NativeAction = keyof INativeBridge;
|
|
207
208
|
|
|
208
|
-
type BridgeAction = NativeAction | IframeAction;
|
|
209
|
-
|
|
210
209
|
type RetainCallback<T = any> = (params: T) => void;
|
|
211
210
|
/**
|
|
212
211
|
* Command의 옵션
|
|
@@ -247,13 +246,20 @@ declare class Core {
|
|
|
247
246
|
*/
|
|
248
247
|
private createCallFromNativeHandler;
|
|
249
248
|
/**
|
|
250
|
-
*
|
|
249
|
+
* 네이티브 통신
|
|
251
250
|
* @param service
|
|
252
251
|
* @param action
|
|
253
252
|
* @param option
|
|
254
253
|
* @returns
|
|
255
254
|
*/
|
|
256
|
-
callToNative<T = any>(action:
|
|
255
|
+
callToNative<T = any>(action: NativeAction, options?: BridgeOptions): Promise<T>;
|
|
256
|
+
/**
|
|
257
|
+
* iframe 통신(영업포털)
|
|
258
|
+
* @param eventName
|
|
259
|
+
* @param options
|
|
260
|
+
* @returns
|
|
261
|
+
*/
|
|
262
|
+
callToIframeParent<T = any>(eventName: IframeEventName, options?: BridgeOptions): Promise<T>;
|
|
257
263
|
/**
|
|
258
264
|
* promiseId를 초기화 해줍니다.
|
|
259
265
|
* @param promiseId
|
|
@@ -285,6 +291,12 @@ declare class IframeBridge extends CommonBridge implements IIframeBridge {
|
|
|
285
291
|
* App - Web Bridge
|
|
286
292
|
*/
|
|
287
293
|
declare class NativeBridge extends CommonBridge implements INativeBridge {
|
|
294
|
+
/**
|
|
295
|
+
* getParameterMap
|
|
296
|
+
* @returns
|
|
297
|
+
*/
|
|
298
|
+
getParameterMap<T = any>(): Promise<T>;
|
|
299
|
+
dismissPopup<T = any>(options?: any): Promise<T>;
|
|
288
300
|
/**
|
|
289
301
|
*
|
|
290
302
|
* @param options
|
|
@@ -553,7 +565,12 @@ declare enum OZViewerEvent {
|
|
|
553
565
|
* 보고서 저장 시 발생하는 이벤트
|
|
554
566
|
* - `OZExportEvent`와 매칭된다
|
|
555
567
|
*/
|
|
556
|
-
OZExportCommand = "OZExportCommand"
|
|
568
|
+
OZExportCommand = "OZExportCommand",
|
|
569
|
+
/**
|
|
570
|
+
* 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트
|
|
571
|
+
* - `OZBtnTouchEvent`와 매칭된다
|
|
572
|
+
*/
|
|
573
|
+
OZBtnTouchEvent = "btnTouchEvent"
|
|
557
574
|
}
|
|
558
575
|
/**
|
|
559
576
|
* `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의
|
|
@@ -682,5 +699,14 @@ type OZExportEvent = {
|
|
|
682
699
|
*/
|
|
683
700
|
filepaths: string;
|
|
684
701
|
};
|
|
702
|
+
type OZBtnTouchEvent = {
|
|
703
|
+
/** 버튼의 아이디 혹은 텍스트 */
|
|
704
|
+
btnID: string;
|
|
705
|
+
/**
|
|
706
|
+
* 어떤 패널의 버튼을 눌렀는지 구분
|
|
707
|
+
* - `category` 서식 전체목록의 버튼
|
|
708
|
+
*/
|
|
709
|
+
type: "category";
|
|
710
|
+
};
|
|
685
711
|
|
|
686
|
-
export { Bridge, type OZEFormInputEvent, type OZExportEvent, type OZViewerChangeEvent, type OZViewerErrorEvent, OZViewerEvent, type OZViewerPageBindEvent, type OZViewerProgressEvent, type OZViewerUserEvent };
|
|
712
|
+
export { Bridge, type OZBtnTouchEvent, type OZEFormInputEvent, type OZExportEvent, type OZViewerChangeEvent, type OZViewerErrorEvent, OZViewerEvent, type OZViewerPageBindEvent, type OZViewerProgressEvent, type OZViewerUserEvent };
|
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ interface IIframeBridge {
|
|
|
6
6
|
openUrlWindow(options: OpenUrlWindowOptions): Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
type
|
|
9
|
+
type IframeEventName = keyof IIframeBridge;
|
|
10
10
|
|
|
11
11
|
interface ShowWebPopupOptions {
|
|
12
12
|
/** 0: fullscreen, 1: title bar, 2: size 지정 가능 팝업, 3: wk webview */
|
|
@@ -157,7 +157,6 @@ type SavePdfOptions = Omit<ScriptExOptions, "command">;
|
|
|
157
157
|
* 특정 OZD 내부에 포함된 서명 필드만 이미지로 뽑아낸다
|
|
158
158
|
*/
|
|
159
159
|
interface SaveSignImgOptions {
|
|
160
|
-
exportType: "IMG";
|
|
161
160
|
/** 저장할 파일이름 */
|
|
162
161
|
fileName: string;
|
|
163
162
|
/** 추출할 서명의 FORM ID */
|
|
@@ -183,6 +182,8 @@ interface createOzPdfViewerOptions {
|
|
|
183
182
|
}
|
|
184
183
|
|
|
185
184
|
interface INativeBridge {
|
|
185
|
+
getParameterMap<T>(): Promise<T>;
|
|
186
|
+
dismissPopup<T>(option: any): Promise<T>;
|
|
186
187
|
showWebPopup<T>(options: ShowWebPopupOptions): Promise<T>;
|
|
187
188
|
jumpSafari<T>(options: ShowWebPopupOptions): Promise<T>;
|
|
188
189
|
createReportEx<T>(options: CreateReportExOptions): Promise<CommonOzBridgetResponseType<T>>;
|
|
@@ -205,8 +206,6 @@ interface INativeBridge {
|
|
|
205
206
|
|
|
206
207
|
type NativeAction = keyof INativeBridge;
|
|
207
208
|
|
|
208
|
-
type BridgeAction = NativeAction | IframeAction;
|
|
209
|
-
|
|
210
209
|
type RetainCallback<T = any> = (params: T) => void;
|
|
211
210
|
/**
|
|
212
211
|
* Command의 옵션
|
|
@@ -247,13 +246,20 @@ declare class Core {
|
|
|
247
246
|
*/
|
|
248
247
|
private createCallFromNativeHandler;
|
|
249
248
|
/**
|
|
250
|
-
*
|
|
249
|
+
* 네이티브 통신
|
|
251
250
|
* @param service
|
|
252
251
|
* @param action
|
|
253
252
|
* @param option
|
|
254
253
|
* @returns
|
|
255
254
|
*/
|
|
256
|
-
callToNative<T = any>(action:
|
|
255
|
+
callToNative<T = any>(action: NativeAction, options?: BridgeOptions): Promise<T>;
|
|
256
|
+
/**
|
|
257
|
+
* iframe 통신(영업포털)
|
|
258
|
+
* @param eventName
|
|
259
|
+
* @param options
|
|
260
|
+
* @returns
|
|
261
|
+
*/
|
|
262
|
+
callToIframeParent<T = any>(eventName: IframeEventName, options?: BridgeOptions): Promise<T>;
|
|
257
263
|
/**
|
|
258
264
|
* promiseId를 초기화 해줍니다.
|
|
259
265
|
* @param promiseId
|
|
@@ -285,6 +291,12 @@ declare class IframeBridge extends CommonBridge implements IIframeBridge {
|
|
|
285
291
|
* App - Web Bridge
|
|
286
292
|
*/
|
|
287
293
|
declare class NativeBridge extends CommonBridge implements INativeBridge {
|
|
294
|
+
/**
|
|
295
|
+
* getParameterMap
|
|
296
|
+
* @returns
|
|
297
|
+
*/
|
|
298
|
+
getParameterMap<T = any>(): Promise<T>;
|
|
299
|
+
dismissPopup<T = any>(options?: any): Promise<T>;
|
|
288
300
|
/**
|
|
289
301
|
*
|
|
290
302
|
* @param options
|
|
@@ -553,7 +565,12 @@ declare enum OZViewerEvent {
|
|
|
553
565
|
* 보고서 저장 시 발생하는 이벤트
|
|
554
566
|
* - `OZExportEvent`와 매칭된다
|
|
555
567
|
*/
|
|
556
|
-
OZExportCommand = "OZExportCommand"
|
|
568
|
+
OZExportCommand = "OZExportCommand",
|
|
569
|
+
/**
|
|
570
|
+
* 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트
|
|
571
|
+
* - `OZBtnTouchEvent`와 매칭된다
|
|
572
|
+
*/
|
|
573
|
+
OZBtnTouchEvent = "btnTouchEvent"
|
|
557
574
|
}
|
|
558
575
|
/**
|
|
559
576
|
* `OZViewerEvent.OZProgressCommand` 이벤트의 `e.detail` 타입 정의
|
|
@@ -682,5 +699,14 @@ type OZExportEvent = {
|
|
|
682
699
|
*/
|
|
683
700
|
filepaths: string;
|
|
684
701
|
};
|
|
702
|
+
type OZBtnTouchEvent = {
|
|
703
|
+
/** 버튼의 아이디 혹은 텍스트 */
|
|
704
|
+
btnID: string;
|
|
705
|
+
/**
|
|
706
|
+
* 어떤 패널의 버튼을 눌렀는지 구분
|
|
707
|
+
* - `category` 서식 전체목록의 버튼
|
|
708
|
+
*/
|
|
709
|
+
type: "category";
|
|
710
|
+
};
|
|
685
711
|
|
|
686
|
-
export { Bridge, type OZEFormInputEvent, type OZExportEvent, type OZViewerChangeEvent, type OZViewerErrorEvent, OZViewerEvent, type OZViewerPageBindEvent, type OZViewerProgressEvent, type OZViewerUserEvent };
|
|
712
|
+
export { Bridge, type OZBtnTouchEvent, type OZEFormInputEvent, type OZExportEvent, type OZViewerChangeEvent, type OZViewerErrorEvent, OZViewerEvent, type OZViewerPageBindEvent, type OZViewerProgressEvent, type OZViewerUserEvent };
|
package/dist/index.js
CHANGED
|
@@ -117,7 +117,7 @@ var Core = class {
|
|
|
117
117
|
};
|
|
118
118
|
}
|
|
119
119
|
/**
|
|
120
|
-
*
|
|
120
|
+
* 네이티브 통신
|
|
121
121
|
* @param service
|
|
122
122
|
* @param action
|
|
123
123
|
* @param option
|
|
@@ -140,7 +140,6 @@ var Core = class {
|
|
|
140
140
|
try {
|
|
141
141
|
const command = {
|
|
142
142
|
action,
|
|
143
|
-
eventName: action,
|
|
144
143
|
promiseId,
|
|
145
144
|
option: commandOptions
|
|
146
145
|
};
|
|
@@ -154,15 +153,53 @@ var Core = class {
|
|
|
154
153
|
window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));
|
|
155
154
|
return;
|
|
156
155
|
}
|
|
156
|
+
console.warn(`[callToNative] \uD604\uC7AC \uD50C\uB7AB\uD3FC(${platform})\uC5D0\uC11C\uB294 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC11C\uBE44\uC2A4(${action})\uC785\uB2C8\uB2E4.`);
|
|
157
|
+
this.cleanupPromise(promiseId);
|
|
158
|
+
reject(new Error(`Unsupported platform: ${platform}`));
|
|
159
|
+
} catch (error) {
|
|
160
|
+
console.error("[callToNative] error::", error);
|
|
161
|
+
this.cleanupPromise(promiseId);
|
|
162
|
+
reject(error);
|
|
163
|
+
}
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* iframe 통신(영업포털)
|
|
168
|
+
* @param eventName
|
|
169
|
+
* @param options
|
|
170
|
+
* @returns
|
|
171
|
+
*/
|
|
172
|
+
async callToIframeParent(eventName, options) {
|
|
173
|
+
const { retainCallback: retain, ...commandOptions } = options || {};
|
|
174
|
+
return new Promise((resolve, reject) => {
|
|
175
|
+
const promiseId = `${eventName}_${this.generatePromiseId()}`;
|
|
176
|
+
console.log("[callToIframe] promiseId::", promiseId);
|
|
177
|
+
window.n2bridge.promises[promiseId] = {
|
|
178
|
+
resolve: (value) => {
|
|
179
|
+
resolve(value);
|
|
180
|
+
},
|
|
181
|
+
reject: (reason) => {
|
|
182
|
+
reject(reason);
|
|
183
|
+
},
|
|
184
|
+
retain
|
|
185
|
+
};
|
|
186
|
+
try {
|
|
187
|
+
const command = {
|
|
188
|
+
eventName,
|
|
189
|
+
promiseId,
|
|
190
|
+
option: commandOptions
|
|
191
|
+
};
|
|
192
|
+
console.log("[callToIframe] command::", command);
|
|
193
|
+
const platform = getDspExecutionEnvironment();
|
|
157
194
|
if (platform === "iframe") {
|
|
158
195
|
window.parent.postMessage(command, "*");
|
|
159
196
|
return;
|
|
160
197
|
}
|
|
161
|
-
console.warn(`[
|
|
198
|
+
console.warn(`[callToIframe] \uD604\uC7AC \uD50C\uB7AB\uD3FC(${platform})\uC5D0\uC11C\uB294 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uB294 \uC11C\uBE44\uC2A4(${eventName})\uC785\uB2C8\uB2E4.`);
|
|
162
199
|
this.cleanupPromise(promiseId);
|
|
163
200
|
reject(new Error(`Unsupported platform: ${platform}`));
|
|
164
201
|
} catch (error) {
|
|
165
|
-
console.error("[
|
|
202
|
+
console.error("[callToIframe] error::", error);
|
|
166
203
|
this.cleanupPromise(promiseId);
|
|
167
204
|
reject(error);
|
|
168
205
|
}
|
|
@@ -193,13 +230,23 @@ var IframeBridge = class extends CommonBridge {
|
|
|
193
230
|
* @returns
|
|
194
231
|
*/
|
|
195
232
|
async openUrlWindow(options) {
|
|
196
|
-
return this.core.
|
|
233
|
+
return this.core.callToIframeParent("openUrlWindow", options);
|
|
197
234
|
}
|
|
198
235
|
// TODO: 필요 플러그인들 추가
|
|
199
236
|
};
|
|
200
237
|
|
|
201
238
|
// src/bridge/native-bridge.ts
|
|
202
239
|
var NativeBridge = class extends CommonBridge {
|
|
240
|
+
/**
|
|
241
|
+
* getParameterMap
|
|
242
|
+
* @returns
|
|
243
|
+
*/
|
|
244
|
+
async getParameterMap() {
|
|
245
|
+
return this.core.callToNative("getParameterMap");
|
|
246
|
+
}
|
|
247
|
+
async dismissPopup(options) {
|
|
248
|
+
return this.core.callToNative("dismissPopup", options);
|
|
249
|
+
}
|
|
203
250
|
/**
|
|
204
251
|
*
|
|
205
252
|
* @param options
|
|
@@ -226,7 +273,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
226
273
|
* ```
|
|
227
274
|
*/
|
|
228
275
|
createReportEx(options) {
|
|
229
|
-
return this.core.callToNative(
|
|
276
|
+
return this.core.callToNative(
|
|
277
|
+
"createReportEx",
|
|
278
|
+
Object.assign({ delimiter: "\n" }, options)
|
|
279
|
+
);
|
|
230
280
|
}
|
|
231
281
|
/**
|
|
232
282
|
* ### Bridge for Oz
|
|
@@ -305,7 +355,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
305
355
|
* ```
|
|
306
356
|
*/
|
|
307
357
|
scriptEx(options) {
|
|
308
|
-
return this.core.callToNative(
|
|
358
|
+
return this.core.callToNative(
|
|
359
|
+
"scriptEx",
|
|
360
|
+
Object.assign({ delimiter: "\n" }, options)
|
|
361
|
+
);
|
|
309
362
|
}
|
|
310
363
|
/**
|
|
311
364
|
* ### Bridge for Oz
|
|
@@ -404,7 +457,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
404
457
|
* ```
|
|
405
458
|
*/
|
|
406
459
|
async savePdf(options) {
|
|
407
|
-
return this.core.callToNative(
|
|
460
|
+
return this.core.callToNative(
|
|
461
|
+
"savePdf",
|
|
462
|
+
Object.assign({ delimiter: "\n" }, options)
|
|
463
|
+
);
|
|
408
464
|
}
|
|
409
465
|
/**
|
|
410
466
|
* ### Bridge for Oz
|
|
@@ -428,7 +484,10 @@ var NativeBridge = class extends CommonBridge {
|
|
|
428
484
|
* ```
|
|
429
485
|
*/
|
|
430
486
|
async createOzPdfViewer(options) {
|
|
431
|
-
return this.core.callToNative(
|
|
487
|
+
return this.core.callToNative(
|
|
488
|
+
"createOzPdfViewer",
|
|
489
|
+
Object.assign({ password: "" }, options)
|
|
490
|
+
);
|
|
432
491
|
}
|
|
433
492
|
/**
|
|
434
493
|
* ### Bridge for Oz
|
|
@@ -462,6 +521,7 @@ var OZViewerEvent = /* @__PURE__ */ ((OZViewerEvent2) => {
|
|
|
462
521
|
OZViewerEvent2["OZPageBindCommand"] = "OZPageBindCommand";
|
|
463
522
|
OZViewerEvent2["OZEFormInputEventCommand"] = "OZEFormInputEventCommand";
|
|
464
523
|
OZViewerEvent2["OZExportCommand"] = "OZExportCommand";
|
|
524
|
+
OZViewerEvent2["OZBtnTouchEvent"] = "btnTouchEvent";
|
|
465
525
|
return OZViewerEvent2;
|
|
466
526
|
})(OZViewerEvent || {});
|
|
467
527
|
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/iframe-bridge.ts","../src/bridge/native-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 { getDspExecutionEnvironment, isClient, isStorybookEnv } from 'sales-frontend-utils';\n\nimport { BridgeAction } from '../types/common.types';\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 (!isClient()) {\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 if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n window.parent.n2bridge = window.n2bridge;\n window.parent.dispatchEvent = (...args) => (window.dispatchEvent.apply(null, args))\n }\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 = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'iframe') {\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';\nimport { IIframeBridge } from './types/iframe/iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\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 { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportExOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n DownloadOzdOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n CommonOzBridgetResponseType,\n UpdateOzdOptions,\n createOzPdfViewerOptions\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 * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createReportEx<T = any>(options: CreateReportExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('createReportEx', Object.assign({ delimiter: '\\n' }, options));\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideViewer<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideViewer');\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 = any>(options: GetInformationOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 = any>(options: GetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n setGlobal<T = any>(options: SetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('setGlobal', Object.assign({ docIndex: 0 }, options));\n\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 뷰어의 기능을 제어합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * const command = `movepage=2`;\n * Bridge.native.script({ command });\n * ```\n */\n script<T = any>(options: ScriptOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * Bridge.native.scriptEX({ command, param });\n * ```\n */\n scriptEx<T = any>(options: ScriptExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 = any>(options: TriggerExternalEventOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEvent',\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 = any>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * returnData는 file 경로가 절대경로로 매핑되어 돌아온다\n * ```json\n * {\n * \"action\":\"downloadDocument\",\n * \"data\":[\n * {\n * \"name\":\"aaa\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A0010.ozd\",\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/C0401.ozd\"\n * ],\n * \"complete\":false\n * },\n * {\n * \"name\":\"bbb\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A1500.ozd\"\n * ],\n * \"complete\":false\n * }\n * ]\n * }\n * ```\n */\n async downloadDocument<T = any>(options: DownloadOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n */\n async updateOzDocumentStatus<T = any>(options: UpdateOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('updateOzDocumentStatus', 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 = any>(options: SavePdfOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('savePdf', Object.assign({ delimiter: '\\n' }, 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 = string>(options: SaveSignImgOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createOzPdfViewer({ filename: \"total.pdf\", filepaths: \"/data/0/app/total.pdf\", password: \"\" })\n * ```\n */\n async createOzPdfViewer<T>(options: createOzPdfViewerOptions): Promise<CommonOzBridgetResponseType<T>> {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('createOzPdfViewer', Object.assign({ password: '' }, options));\n\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer<T>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideOzPdfViewer');\n\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { IframeBridge } from './iframe-bridge';\nimport { NativeBridge } from './native-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n iframe: new IframeBridge(),\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 * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged` \n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\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\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}"]}
|
|
1
|
+
{"version":3,"sources":["../src/bridge/core/core.ts","../src/bridge/common-bridge.ts","../src/bridge/iframe-bridge.ts","../src/bridge/native-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 { getDspExecutionEnvironment, isClient, isStorybookEnv } from 'sales-frontend-utils';\n\nimport { IframeEventName } from '../types/iframe/iframe-action.types';\nimport { NativeAction } from '../types/native/native-action.types';\n\nimport { NativeBridgeCommand, IframeBridgeCommand, 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 (!isClient()) {\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 if (isStorybookEnv() && window.parent) {\n // 스토리북에서는 현재 스토리가 iframe으로 로드되므로 앱에서 부모 프레임에 브릿지를 리턴해도 자식으로 전달되도록 보정하는 코드\n window.parent.n2bridge = window.n2bridge;\n window.parent.dispatchEvent = (...args) => window.dispatchEvent.apply(null, args);\n }\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: NativeAction, 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: NativeBridgeCommand = {\n action,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToNative] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'android-webview') {\n window.n2Bridge?.callFromWeb?.(JSON.stringify(command));\n\n return;\n }\n\n if (platform === 'ios-webview') {\n window.webkit?.messageHandlers?.n2Bridge?.postMessage(JSON.stringify(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 * iframe 통신(영업포털)\n * @param eventName\n * @param options\n * @returns\n */\n async callToIframeParent<T = any>(eventName: IframeEventName, options?: BridgeOptions): Promise<T> {\n const { retainCallback: retain, ...commandOptions } = options || {};\n\n return new Promise<T>((resolve, reject) => {\n const promiseId = `${eventName}_${this.generatePromiseId()}`;\n console.log('[callToIframe] 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: IframeBridgeCommand = {\n eventName,\n promiseId,\n option: commandOptions\n };\n\n console.log('[callToIframe] command::', command);\n\n const platform = getDspExecutionEnvironment();\n\n if (platform === 'iframe') {\n window.parent.postMessage(command, '*');\n\n return;\n }\n\n // 지원하지 않는 플랫폼\n console.warn(`[callToIframe] 현재 플랫폼(${platform})에서는 지원하지 않는 서비스(${eventName})입니다.`);\n this.cleanupPromise(promiseId);\n reject(new Error(`Unsupported platform: ${platform}`));\n } catch (error) {\n console.error('[callToIframe] 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';\nimport { IIframeBridge } from './types/iframe/iframe-bridge.types';\n\n/**\n * iframe(영업포탈) 전용 Bridge\n */\nexport class IframeBridge extends CommonBridge implements IIframeBridge {\n /**\n * 영업포탈 tab open\n * @param options\n * @returns\n */\n async openUrlWindow<T = any>(options: any): Promise<T> {\n return this.core.callToIframeParent('openUrlWindow', options);\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { CommonBridge } from './common-bridge';\n\nimport type { INativeBridge } from './types/native/native-bridge.types';\nimport type {\n ShowWebPopupOptions,\n CreateReportExOptions,\n GetInformationOptions,\n GetGlobalOptions,\n SetGlobalOptions,\n ScriptExOptions,\n ScriptOptions,\n TriggerExternalEventByDocIndexOptions,\n TriggerExternalEventOptions,\n DownloadOzdOptions,\n SavePdfOptions,\n SaveSignImgOptions,\n CommonOzBridgetResponseType,\n UpdateOzdOptions,\n createOzPdfViewerOptions\n} from './types/native/native-options.types';\n\n/**\n * App - Web Bridge\n */\nexport class NativeBridge extends CommonBridge implements INativeBridge {\n /**\n * getParameterMap\n * @returns\n */\n async getParameterMap<T = any>(): Promise<T> {\n return this.core.callToNative<T>('getParameterMap');\n }\n\n async dismissPopup<T = any>(options?: any): Promise<T> {\n return this.core.callToNative<T>('dismissPopup', options);\n }\n\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 * Bridge.native.createReportEx({ param: \"connection.openfile=sample.ozd\" });\n * ```\n */\n createReportEx<T = any>(options: CreateReportExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'createReportEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * OZ 뷰어를 닫습니다\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.hideViewer();\n * ```\n */\n hideViewer<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideViewer');\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 = any>(options: GetInformationOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 = any>(options: GetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('getGlobal', Object.assign({ docIndex: 0 }, options));\n }\n\n /**\n * ### Bridge for Oz\n * 전역 변수 값을 설정합니다.\n * @example\n * ```tsx\n * // 사용 예시\n * Bridge.native.setGlobal({ key: \"AAA\", value: JSON.stringify({ aaa: 111 }) });\n * ```\n */\n setGlobal<T = any>(options: SetGlobalOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * Bridge.native.script({ command });\n * ```\n */\n script<T = any>(options: ScriptOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * Bridge.native.scriptEX({ command, param });\n * ```\n */\n scriptEx<T = any>(options: ScriptExOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'scriptEx',\n Object.assign({ delimiter: '\\n' }, options)\n );\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 = any>(options: TriggerExternalEventOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEvent',\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 = any>(\n options: TriggerExternalEventByDocIndexOptions\n ): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'triggerExternalEventByDocIndex',\n Object.assign({ param1: '', param2: '', param3: '', param4: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * 오즈 파라미터에서 사용할 폰트 설정들을 조회하는 브릿지입니다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.getOzFontParam()\n * ```\n */\n async getOzFontParam<T = any>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<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 * returnData는 file 경로가 절대경로로 매핑되어 돌아온다\n * ```json\n * {\n * \"action\":\"downloadDocument\",\n * \"data\":[\n * {\n * \"name\":\"aaa\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A0010.ozd\",\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/C0401.ozd\"\n * ],\n * \"complete\":false\n * },\n * {\n * \"name\":\"bbb\",\n * \"file\":[\n * \"/data/user/0/com.hanwhalife.ssp.stg/files/A1500.ozd\"\n * ],\n * \"complete\":false\n * }\n * ]\n * }\n * ```\n */\n async downloadDocument<T = any>(options: DownloadOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('downloadDocument', options);\n }\n\n /**\n * ### Bridge for Oz\n * 서식의 진행중/완료 상태를 업데이트하는 브릿지\n */\n async updateOzDocumentStatus<T = any>(options: UpdateOzdOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('updateOzDocumentStatus', 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 = any>(options: SavePdfOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'savePdf',\n Object.assign({ delimiter: '\\n' }, options)\n );\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 = string>(options: SaveSignImgOptions): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('saveSignImg', options);\n }\n\n /**\n * ### Bridge for Oz\n * 오즈뷰어에서 생성한 PDF를 보여주는 뷰어를 연다\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.createOzPdfViewer({ filename: \"total.pdf\", filepaths: \"/data/0/app/total.pdf\", password: \"\" })\n * ```\n */\n async createOzPdfViewer<T>(options: createOzPdfViewerOptions): Promise<CommonOzBridgetResponseType<T>> {\n // 비밀번호는 입력안하면 빈값으로 보낸다\n return this.core.callToNative<CommonOzBridgetResponseType<T>>(\n 'createOzPdfViewer',\n Object.assign({ password: '' }, options)\n );\n }\n\n /**\n * ### Bridge for Oz\n * PDF뷰어 닫기\n * @example\n * ```tsx\n * // 사용 예시\n * await Bridge.native.hideOzPdfViewer()\n * ```\n */\n async hideOzPdfViewer<T>(): Promise<CommonOzBridgetResponseType<T>> {\n return this.core.callToNative<CommonOzBridgetResponseType<T>>('hideOzPdfViewer');\n }\n\n // TODO: 필요 플러그인들 추가\n}\n","import { Core } from './core/core';\nimport { IframeBridge } from './iframe-bridge';\nimport { NativeBridge } from './native-bridge';\n\nexport const Bridge = {\n native: new NativeBridge(),\n iframe: new IframeBridge(),\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 * - `OnClick`\n * - `OnFinish`\n * - `OnFocus`\n * - `OnKillFocus`\n * - `OnPause`\n * - `OnPlay`\n * - `OnStop`\n * - `OnValueChanged` \n * - `eform.inputeventcommand=true` 설정이 필요하다\n * - `OZEFormInputEvent`와 매칭된다\n */\n OZEFormInputEventCommand = 'OZEFormInputEventCommand',\n /**\n * 보고서 저장 시 발생하는 이벤트\n * - `OZExportEvent`와 매칭된다\n */\n OZExportCommand = 'OZExportCommand',\n\n /**\n * 오즈뷰어, (오즈전용)PDF 뷰어 내 버튼 클릭시 발생하는 이벤트\n * - `OZBtnTouchEvent`와 매칭된다\n */\n OZBtnTouchEvent = 'btnTouchEvent'\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\nexport type OZEFormInputEvent = {\n /** 보고서 인덱스(zero-based index) */\n docindex: string;\n /** 이벤트가 발생한 컴포넌트의 FormID. FormID가 설정되지 않은 경우 컴포넌트의 이름이 리턴됨 */\n formid: string;\n eventname: string;\n mainscreen: boolean;\n}\n\nexport type OZExportEvent = {\n /**\n * 저장 성공 여부\n * - `0` 실패\n * - `1` 성공\n */\n code: \"0\" | \"1\"\n /** 파일 경로 */\n path: string;\n /** 파일 이름 */\n filename: string;\n /** 저장된 페이지 수. 여러 페이지의 보고서를 한 페이지로 저장한 경우에는 1이 리턴됨 */\n pagecount: string;\n /**\n * 뷰어가 실제 저장한 모든 파일의 경로와 이름.\n * \n * 파일이 여러 개일 경우 `|`를 구분자로 하여 리턴됨\n */\n filepaths: string;\n}\n\nexport type OZBtnTouchEvent = {\n /** 버튼의 아이디 혹은 텍스트 */\n btnID: string;\n /**\n * 어떤 패널의 버튼을 눌렀는지 구분\n * - `category` 서식 전체목록의 버튼\n */\n type: \"category\"\n}"]}
|