@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 CHANGED
@@ -1,3 +1,54 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
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"]}
@@ -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 };
@@ -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.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
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
+ }