@dadan-mvp/record-sdk-angular 0.0.0-stage → 0.1.1
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/README.md +54 -3
- package/dist/index.cjs +76 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +22 -0
- package/dist/index.d.ts +22 -0
- package/dist/index.js +56 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -4
package/README.md
CHANGED
|
@@ -1,3 +1,54 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
# `@dadan-mvp/record-sdk-angular`
|
|
2
|
+
|
|
3
|
+
Angular service for the Dadan Record SDK (in-page UI, no iframe).
|
|
4
|
+
|
|
5
|
+
## Install
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npm install @dadan-mvp/record-sdk-angular
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Peer: `@angular/core` ≥ 15.
|
|
12
|
+
React is pulled in automatically via `@dadan-mvp/record-sdk-ui` — do **not** add `react` / `react-dom` yourself.
|
|
13
|
+
|
|
14
|
+
## `DadanRecorderService`
|
|
15
|
+
|
|
16
|
+
```ts
|
|
17
|
+
import { DadanRecorderService } from "@dadan-mvp/record-sdk-angular";
|
|
18
|
+
|
|
19
|
+
const svc = new DadanRecorderService();
|
|
20
|
+
await svc.init({
|
|
21
|
+
mode: "custom",
|
|
22
|
+
publicAppId,
|
|
23
|
+
uploadToken,
|
|
24
|
+
environment: "sandbox",
|
|
25
|
+
mount: "light", // or "shadow"
|
|
26
|
+
config: { theme: { primary: "#4A3CFA" } },
|
|
27
|
+
});
|
|
28
|
+
svc.configureButton(buttonElement, (video) => console.log(video));
|
|
29
|
+
// svc.open(); svc.close(); svc.teardown();
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Vanilla-style API from Angular
|
|
33
|
+
|
|
34
|
+
```ts
|
|
35
|
+
import { createInstance } from "@dadan-mvp/record-sdk-angular";
|
|
36
|
+
// re-exports @dadan-mvp/record-sdk-ui
|
|
37
|
+
|
|
38
|
+
const sdk = await createInstance({
|
|
39
|
+
mode: "custom",
|
|
40
|
+
publicAppId,
|
|
41
|
+
uploadToken,
|
|
42
|
+
mount: "shadow",
|
|
43
|
+
});
|
|
44
|
+
sdk.configureButton({ element: buttonElement });
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Web Component
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
svc.defineElement(); // registers <dadan-recorder>
|
|
51
|
+
// Use CUSTOM_ELEMENTS_SCHEMA in the Angular component if you put the tag in a template.
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
See also the sibling demo: `../../dadan-angular-demo` (service + light + shadow).
|
package/dist/index.cjs
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/index.ts
|
|
21
|
+
var index_exports = {};
|
|
22
|
+
__export(index_exports, {
|
|
23
|
+
DadanRecorderService: () => DadanRecorderService,
|
|
24
|
+
createInstance: () => import_record_sdk_ui2.createInstance,
|
|
25
|
+
createRecorder: () => import_record_sdk_ui2.createRecorder,
|
|
26
|
+
defineDadanRecorder: () => import_record_sdk_ui2.defineDadanRecorder,
|
|
27
|
+
isSupported: () => import_record_sdk_ui2.isSupported
|
|
28
|
+
});
|
|
29
|
+
module.exports = __toCommonJS(index_exports);
|
|
30
|
+
var import_record_sdk_ui = require("@dadan-mvp/record-sdk-ui");
|
|
31
|
+
var import_record_sdk_ui2 = require("@dadan-mvp/record-sdk-ui");
|
|
32
|
+
var DadanRecorderService = class {
|
|
33
|
+
constructor() {
|
|
34
|
+
this.instance = null;
|
|
35
|
+
}
|
|
36
|
+
async init(args) {
|
|
37
|
+
const support = await (0, import_record_sdk_ui.isSupported)();
|
|
38
|
+
if (!support.supported) {
|
|
39
|
+
throw new Error(support.error ?? "Dadan Record SDK unsupported");
|
|
40
|
+
}
|
|
41
|
+
this.teardown();
|
|
42
|
+
this.instance = await (0, import_record_sdk_ui.createInstance)(args);
|
|
43
|
+
return this.instance;
|
|
44
|
+
}
|
|
45
|
+
/** Ensure `<dadan-recorder>` is defined for template usage. */
|
|
46
|
+
defineElement() {
|
|
47
|
+
(0, import_record_sdk_ui.defineDadanRecorder)();
|
|
48
|
+
}
|
|
49
|
+
configureButton(element, onInsert) {
|
|
50
|
+
if (!this.instance) {
|
|
51
|
+
throw new Error("Call init() before configureButton()");
|
|
52
|
+
}
|
|
53
|
+
const button = this.instance.configureButton({ element });
|
|
54
|
+
if (onInsert) button.on("insert-click", onInsert);
|
|
55
|
+
return button;
|
|
56
|
+
}
|
|
57
|
+
open(options) {
|
|
58
|
+
this.instance?.open(options);
|
|
59
|
+
}
|
|
60
|
+
close() {
|
|
61
|
+
this.instance?.close();
|
|
62
|
+
}
|
|
63
|
+
teardown() {
|
|
64
|
+
this.instance?.teardown();
|
|
65
|
+
this.instance = null;
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
69
|
+
0 && (module.exports = {
|
|
70
|
+
DadanRecorderService,
|
|
71
|
+
createInstance,
|
|
72
|
+
createRecorder,
|
|
73
|
+
defineDadanRecorder,
|
|
74
|
+
isSupported
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\r\n createInstance,\r\n defineDadanRecorder,\r\n isSupported,\r\n type CreateInstanceArgs,\r\n type DadanVideo,\r\n type SDKResult,\r\n} from \"@dadan-mvp/record-sdk-ui\";\r\nimport type { SdkButton } from \"@dadan-mvp/record-sdk\";\r\n\r\nexport {\r\n createInstance,\r\n createRecorder,\r\n defineDadanRecorder,\r\n isSupported,\r\n type CreateInstanceArgs,\r\n type DadanVideo,\r\n type SDKResult,\r\n} from \"@dadan-mvp/record-sdk-ui\";\r\n\r\n/**\r\n * Angular-friendly service wrapper (in-page UI via createInstance).\r\n */\r\nexport class DadanRecorderService {\r\n private instance: SDKResult | null = null;\r\n\r\n async init(args: CreateInstanceArgs): Promise<SDKResult> {\r\n const support = await isSupported();\r\n if (!support.supported) {\r\n throw new Error(support.error ?? \"Dadan Record SDK unsupported\");\r\n }\r\n this.teardown();\r\n this.instance = await createInstance(args);\r\n return this.instance;\r\n }\r\n\r\n /** Ensure `<dadan-recorder>` is defined for template usage. */\r\n defineElement(): void {\r\n defineDadanRecorder();\r\n }\r\n\r\n configureButton(\r\n element: HTMLElement,\r\n onInsert?: (video: DadanVideo) => void\r\n ): SdkButton {\r\n if (!this.instance) {\r\n throw new Error(\"Call init() before configureButton()\");\r\n }\r\n const button = this.instance.configureButton({ element });\r\n if (onInsert) button.on(\"insert-click\", onInsert);\r\n return button;\r\n }\r\n\r\n open(options?: { mode?: import(\"@dadan-mvp/sdk-protocol\").RecordingMode }): void {\r\n this.instance?.open(options);\r\n }\r\n\r\n close(): void {\r\n this.instance?.close();\r\n }\r\n\r\n teardown(): void {\r\n this.instance?.teardown();\r\n this.instance = null;\r\n }\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAC,2BAOM;AAGP,IAAAA,wBAQO;AAKA,IAAM,uBAAN,MAA2B;AAAA,EAA3B;AACL,SAAQ,WAA6B;AAAA;AAAA,EAErC,MAAM,KAAK,MAA8C;AACvD,UAAM,UAAU,UAAM,kCAAY;AAClC,QAAI,CAAC,QAAQ,WAAW;AACtB,YAAM,IAAI,MAAM,QAAQ,SAAS,8BAA8B;AAAA,IACjE;AACA,SAAK,SAAS;AACd,SAAK,WAAW,UAAM,qCAAe,IAAI;AACzC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,gBAAsB;AACpB,kDAAoB;AAAA,EACtB;AAAA,EAEA,gBACE,SACA,UACW;AACX,QAAI,CAAC,KAAK,UAAU;AAClB,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AACA,UAAM,SAAS,KAAK,SAAS,gBAAgB,EAAE,QAAQ,CAAC;AACxD,QAAI,SAAU,QAAO,GAAG,gBAAgB,QAAQ;AAChD,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,SAA4E;AAC/E,SAAK,UAAU,KAAK,OAAO;AAAA,EAC7B;AAAA,EAEA,QAAc;AACZ,SAAK,UAAU,MAAM;AAAA,EACvB;AAAA,EAEA,WAAiB;AACf,SAAK,UAAU,SAAS;AACxB,SAAK,WAAW;AAAA,EAClB;AACF;","names":["import_record_sdk_ui"]}
|
package/dist/index.d.cts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as _dadan_mvp_sdk_protocol from '@dadan-mvp/sdk-protocol';
|
|
2
|
+
import { CreateInstanceArgs, SDKResult, DadanVideo } from '@dadan-mvp/record-sdk-ui';
|
|
3
|
+
export { CreateInstanceArgs, DadanVideo, SDKResult, createInstance, createRecorder, defineDadanRecorder, isSupported } from '@dadan-mvp/record-sdk-ui';
|
|
4
|
+
import { SdkButton } from '@dadan-mvp/record-sdk';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Angular-friendly service wrapper (in-page UI via createInstance).
|
|
8
|
+
*/
|
|
9
|
+
declare class DadanRecorderService {
|
|
10
|
+
private instance;
|
|
11
|
+
init(args: CreateInstanceArgs): Promise<SDKResult>;
|
|
12
|
+
/** Ensure `<dadan-recorder>` is defined for template usage. */
|
|
13
|
+
defineElement(): void;
|
|
14
|
+
configureButton(element: HTMLElement, onInsert?: (video: DadanVideo) => void): SdkButton;
|
|
15
|
+
open(options?: {
|
|
16
|
+
mode?: _dadan_mvp_sdk_protocol.RecordingMode;
|
|
17
|
+
}): void;
|
|
18
|
+
close(): void;
|
|
19
|
+
teardown(): void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { DadanRecorderService };
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import * as _dadan_mvp_sdk_protocol from '@dadan-mvp/sdk-protocol';
|
|
2
|
+
import { CreateInstanceArgs, SDKResult, DadanVideo } from '@dadan-mvp/record-sdk-ui';
|
|
3
|
+
export { CreateInstanceArgs, DadanVideo, SDKResult, createInstance, createRecorder, defineDadanRecorder, isSupported } from '@dadan-mvp/record-sdk-ui';
|
|
4
|
+
import { SdkButton } from '@dadan-mvp/record-sdk';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Angular-friendly service wrapper (in-page UI via createInstance).
|
|
8
|
+
*/
|
|
9
|
+
declare class DadanRecorderService {
|
|
10
|
+
private instance;
|
|
11
|
+
init(args: CreateInstanceArgs): Promise<SDKResult>;
|
|
12
|
+
/** Ensure `<dadan-recorder>` is defined for template usage. */
|
|
13
|
+
defineElement(): void;
|
|
14
|
+
configureButton(element: HTMLElement, onInsert?: (video: DadanVideo) => void): SdkButton;
|
|
15
|
+
open(options?: {
|
|
16
|
+
mode?: _dadan_mvp_sdk_protocol.RecordingMode;
|
|
17
|
+
}): void;
|
|
18
|
+
close(): void;
|
|
19
|
+
teardown(): void;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export { DadanRecorderService };
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// src/index.ts
|
|
2
|
+
import {
|
|
3
|
+
createInstance,
|
|
4
|
+
defineDadanRecorder,
|
|
5
|
+
isSupported
|
|
6
|
+
} from "@dadan-mvp/record-sdk-ui";
|
|
7
|
+
import {
|
|
8
|
+
createInstance as createInstance2,
|
|
9
|
+
createRecorder,
|
|
10
|
+
defineDadanRecorder as defineDadanRecorder2,
|
|
11
|
+
isSupported as isSupported2
|
|
12
|
+
} from "@dadan-mvp/record-sdk-ui";
|
|
13
|
+
var DadanRecorderService = class {
|
|
14
|
+
constructor() {
|
|
15
|
+
this.instance = null;
|
|
16
|
+
}
|
|
17
|
+
async init(args) {
|
|
18
|
+
const support = await isSupported();
|
|
19
|
+
if (!support.supported) {
|
|
20
|
+
throw new Error(support.error ?? "Dadan Record SDK unsupported");
|
|
21
|
+
}
|
|
22
|
+
this.teardown();
|
|
23
|
+
this.instance = await createInstance(args);
|
|
24
|
+
return this.instance;
|
|
25
|
+
}
|
|
26
|
+
/** Ensure `<dadan-recorder>` is defined for template usage. */
|
|
27
|
+
defineElement() {
|
|
28
|
+
defineDadanRecorder();
|
|
29
|
+
}
|
|
30
|
+
configureButton(element, onInsert) {
|
|
31
|
+
if (!this.instance) {
|
|
32
|
+
throw new Error("Call init() before configureButton()");
|
|
33
|
+
}
|
|
34
|
+
const button = this.instance.configureButton({ element });
|
|
35
|
+
if (onInsert) button.on("insert-click", onInsert);
|
|
36
|
+
return button;
|
|
37
|
+
}
|
|
38
|
+
open(options) {
|
|
39
|
+
this.instance?.open(options);
|
|
40
|
+
}
|
|
41
|
+
close() {
|
|
42
|
+
this.instance?.close();
|
|
43
|
+
}
|
|
44
|
+
teardown() {
|
|
45
|
+
this.instance?.teardown();
|
|
46
|
+
this.instance = null;
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
export {
|
|
50
|
+
DadanRecorderService,
|
|
51
|
+
createInstance2 as createInstance,
|
|
52
|
+
createRecorder,
|
|
53
|
+
defineDadanRecorder2 as defineDadanRecorder,
|
|
54
|
+
isSupported2 as isSupported
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import {\r\n createInstance,\r\n defineDadanRecorder,\r\n isSupported,\r\n type CreateInstanceArgs,\r\n type DadanVideo,\r\n type SDKResult,\r\n} from \"@dadan-mvp/record-sdk-ui\";\r\nimport type { SdkButton } from \"@dadan-mvp/record-sdk\";\r\n\r\nexport {\r\n createInstance,\r\n createRecorder,\r\n defineDadanRecorder,\r\n isSupported,\r\n type CreateInstanceArgs,\r\n type DadanVideo,\r\n type SDKResult,\r\n} from \"@dadan-mvp/record-sdk-ui\";\r\n\r\n/**\r\n * Angular-friendly service wrapper (in-page UI via createInstance).\r\n */\r\nexport class DadanRecorderService {\r\n private instance: SDKResult | null = null;\r\n\r\n async init(args: CreateInstanceArgs): Promise<SDKResult> {\r\n const support = await isSupported();\r\n if (!support.supported) {\r\n throw new Error(support.error ?? \"Dadan Record SDK unsupported\");\r\n }\r\n this.teardown();\r\n this.instance = await createInstance(args);\r\n return this.instance;\r\n }\r\n\r\n /** Ensure `<dadan-recorder>` is defined for template usage. */\r\n defineElement(): void {\r\n defineDadanRecorder();\r\n }\r\n\r\n configureButton(\r\n element: HTMLElement,\r\n onInsert?: (video: DadanVideo) => void\r\n ): SdkButton {\r\n if (!this.instance) {\r\n throw new Error(\"Call init() before configureButton()\");\r\n }\r\n const button = this.instance.configureButton({ element });\r\n if (onInsert) button.on(\"insert-click\", onInsert);\r\n return button;\r\n }\r\n\r\n open(options?: { mode?: import(\"@dadan-mvp/sdk-protocol\").RecordingMode }): void {\r\n this.instance?.open(options);\r\n }\r\n\r\n close(): void {\r\n this.instance?.close();\r\n }\r\n\r\n teardown(): void {\r\n this.instance?.teardown();\r\n this.instance = null;\r\n }\r\n}\r\n"],"mappings":";AAAC;AAAA,EACC;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAGP;AAAA,EACE,kBAAAA;AAAA,EACA;AAAA,EACA,uBAAAC;AAAA,EACA,eAAAC;AAAA,OAIK;AAKA,IAAM,uBAAN,MAA2B;AAAA,EAA3B;AACL,SAAQ,WAA6B;AAAA;AAAA,EAErC,MAAM,KAAK,MAA8C;AACvD,UAAM,UAAU,MAAM,YAAY;AAClC,QAAI,CAAC,QAAQ,WAAW;AACtB,YAAM,IAAI,MAAM,QAAQ,SAAS,8BAA8B;AAAA,IACjE;AACA,SAAK,SAAS;AACd,SAAK,WAAW,MAAM,eAAe,IAAI;AACzC,WAAO,KAAK;AAAA,EACd;AAAA;AAAA,EAGA,gBAAsB;AACpB,wBAAoB;AAAA,EACtB;AAAA,EAEA,gBACE,SACA,UACW;AACX,QAAI,CAAC,KAAK,UAAU;AAClB,YAAM,IAAI,MAAM,sCAAsC;AAAA,IACxD;AACA,UAAM,SAAS,KAAK,SAAS,gBAAgB,EAAE,QAAQ,CAAC;AACxD,QAAI,SAAU,QAAO,GAAG,gBAAgB,QAAQ;AAChD,WAAO;AAAA,EACT;AAAA,EAEA,KAAK,SAA4E;AAC/E,SAAK,UAAU,KAAK,OAAO;AAAA,EAC7B;AAAA,EAEA,QAAc;AACZ,SAAK,UAAU,MAAM;AAAA,EACvB;AAAA,EAEA,WAAiB;AACf,SAAK,UAAU,SAAS;AACxB,SAAK,WAAW;AAAA,EAClB;AACF;","names":["createInstance","defineDadanRecorder","isSupported"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,40 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dadan-mvp/record-sdk-angular",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "Dadan Record SDK Angular service (in-page UI)",
|
|
5
|
+
"license": "UNLICENSED",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"main": "./dist/index.cjs",
|
|
8
|
+
"module": "./dist/index.js",
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js",
|
|
14
|
+
"require": "./dist/index.cjs"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"dist",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"sideEffects": false,
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"registry": "https://registry.npmjs.org/",
|
|
24
|
+
"access": "public"
|
|
25
|
+
},
|
|
26
|
+
"scripts": {
|
|
27
|
+
"build": "tsup src/index.ts --format esm,cjs --dts --sourcemap --clean --external @angular/core"
|
|
28
|
+
},
|
|
29
|
+
"dependencies": {
|
|
30
|
+
"@dadan-mvp/record-sdk": "0.1.1",
|
|
31
|
+
"@dadan-mvp/record-sdk-ui": "0.1.1"
|
|
32
|
+
},
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"@angular/core": ">=15"
|
|
35
|
+
},
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"tsup": "^8.4.0",
|
|
38
|
+
"typescript": "^5.9.2"
|
|
39
|
+
}
|
|
40
|
+
}
|