@kittl/sdk 0.0.9 → 1.0.0-alpha.2
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/creativeAgentPanel/sdk.d.ts +8667 -0
- package/dist/{kittl-sdk.esm.js → creativeAgentPanel/sdk.esm.js} +199 -301
- package/dist/{kittl-sdk.js → creativeAgentPanel/sdk.js} +199 -301
- package/dist/dashboardStandalonePage/sdk.d.ts +8656 -0
- package/dist/dashboardStandalonePage/sdk.esm.js +1184 -0
- package/dist/dashboardStandalonePage/sdk.js +1184 -0
- package/dist/editorContentPanel/sdk.d.ts +6318 -103
- package/dist/editorContentPanel/sdk.esm.js +214 -30
- package/dist/editorContentPanel/sdk.js +214 -30
- package/dist/editorScriptRunner/sdk.d.ts +5732 -146
- package/dist/editorScriptRunner/sdk.esm.js +212 -30
- package/dist/editorScriptRunner/sdk.js +212 -30
- package/dist/sharedFileBrowser/sdk.d.ts +188 -2609
- package/dist/sharedFileBrowser/sdk.esm.js +200 -16
- package/dist/sharedFileBrowser/sdk.js +200 -16
- package/package.json +14 -7
- package/dist/sdk.d.ts +0 -2756
|
@@ -2,6 +2,10 @@
|
|
|
2
2
|
/*! Kittl SDK - https://kittl.com - see license for terms */
|
|
3
3
|
|
|
4
4
|
var FROM_EXTENSION_COMMANDS = {
|
|
5
|
+
/** Capability-owned AI callback registration. */
|
|
6
|
+
AI_GENERATOR_SUBSCRIBE: "ai-generator-subscribe",
|
|
7
|
+
/** Capability-owned AI callback teardown. */
|
|
8
|
+
AI_GENERATOR_UNSUBSCRIBE: "ai-generator-unsubscribe",
|
|
5
9
|
/** SDK API call */
|
|
6
10
|
SDK_CALL: "sdk-call",
|
|
7
11
|
/** AI handler registration */
|
|
@@ -50,6 +54,8 @@ var FROM_EXTENSION_COMMANDS = {
|
|
|
50
54
|
LOADED: "loaded"
|
|
51
55
|
};
|
|
52
56
|
var TO_EXTENSION_COMMANDS = {
|
|
57
|
+
/** Callback payload for generator or pending-set subscriptions. */
|
|
58
|
+
AI_GENERATOR_UPDATE: "ai-generator-update",
|
|
53
59
|
/** SDK API response */
|
|
54
60
|
SDK_RESPONSE: "sdk-response",
|
|
55
61
|
/** File browser fetch content request */
|
|
@@ -66,6 +72,10 @@ var TO_EXTENSION_COMMANDS = {
|
|
|
66
72
|
APP_STATE_UPDATE: "app-state-update"
|
|
67
73
|
};
|
|
68
74
|
|
|
75
|
+
function isAIGeneratorUpdateMessage(data) {
|
|
76
|
+
return !!data && typeof data === "object" && "command" in data && data.command === "ai-generator-update" && "subscriptionId" in data && typeof data.subscriptionId === "string";
|
|
77
|
+
}
|
|
78
|
+
|
|
69
79
|
var isSDKResponseMessage = (data) => {
|
|
70
80
|
return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.SDK_RESPONSE && "messageId" in data && typeof data.messageId === "string";
|
|
71
81
|
};
|
|
@@ -135,7 +145,10 @@ var APPROVED_EXTENSION_COMMUNICATION_DOMAINS = [
|
|
|
135
145
|
"https://app.stagingdesigner.com",
|
|
136
146
|
"https://*.stagingdesigner.com",
|
|
137
147
|
"http://localhost:3000",
|
|
138
|
-
"https://app.kittl.com"
|
|
148
|
+
"https://app.kittl.com",
|
|
149
|
+
// website, for sandboxed standalone dashboard pages
|
|
150
|
+
"http://localhost:3003",
|
|
151
|
+
"https://www.kittl.com"
|
|
139
152
|
];
|
|
140
153
|
var toOrigin = (value) => {
|
|
141
154
|
if (!value) {
|
|
@@ -190,8 +203,15 @@ var getParentDomain = () => {
|
|
|
190
203
|
};
|
|
191
204
|
|
|
192
205
|
var pendingRequests = /* @__PURE__ */ new Map();
|
|
206
|
+
var sdkVersion;
|
|
207
|
+
function setSDKVersion(version2) {
|
|
208
|
+
sdkVersion = version2;
|
|
209
|
+
}
|
|
193
210
|
var postMessageToParent = (message) => {
|
|
194
|
-
window.parent.postMessage(
|
|
211
|
+
window.parent.postMessage(
|
|
212
|
+
sdkVersion === void 0 ? message : { ...message, sdkVersion },
|
|
213
|
+
getParentDomain()
|
|
214
|
+
);
|
|
195
215
|
};
|
|
196
216
|
var sendMessage = (message) => {
|
|
197
217
|
postMessageToParent(message);
|
|
@@ -214,6 +234,27 @@ var sendLoaded = () => {
|
|
|
214
234
|
};
|
|
215
235
|
|
|
216
236
|
var createSDKCallMessage = {
|
|
237
|
+
aiGenerator: (dots, args, messageId) => ({
|
|
238
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
239
|
+
dots,
|
|
240
|
+
args,
|
|
241
|
+
messageId,
|
|
242
|
+
apiType: "aiGenerator"
|
|
243
|
+
}),
|
|
244
|
+
mockup: (dots, args, messageId) => ({
|
|
245
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
246
|
+
dots,
|
|
247
|
+
args,
|
|
248
|
+
messageId,
|
|
249
|
+
apiType: "mockup"
|
|
250
|
+
}),
|
|
251
|
+
fileBrowser: (dots, args, messageId) => ({
|
|
252
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
253
|
+
dots,
|
|
254
|
+
args,
|
|
255
|
+
messageId,
|
|
256
|
+
apiType: "fileBrowser"
|
|
257
|
+
}),
|
|
217
258
|
ai: (dots, args, messageId) => ({
|
|
218
259
|
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
219
260
|
dots,
|
|
@@ -249,6 +290,13 @@ var createSDKCallMessage = {
|
|
|
249
290
|
messageId,
|
|
250
291
|
apiType: "font"
|
|
251
292
|
}),
|
|
293
|
+
project: (dots, args, messageId) => ({
|
|
294
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
295
|
+
dots,
|
|
296
|
+
args,
|
|
297
|
+
messageId,
|
|
298
|
+
apiType: "project"
|
|
299
|
+
}),
|
|
252
300
|
state: (dots, args, messageId) => ({
|
|
253
301
|
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
254
302
|
dots,
|
|
@@ -269,6 +317,34 @@ var createSDKCallMessage = {
|
|
|
269
317
|
args,
|
|
270
318
|
messageId,
|
|
271
319
|
apiType: "data"
|
|
320
|
+
}),
|
|
321
|
+
brandKit: (dots, args, messageId) => ({
|
|
322
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
323
|
+
dots,
|
|
324
|
+
args,
|
|
325
|
+
messageId,
|
|
326
|
+
apiType: "brandKit"
|
|
327
|
+
}),
|
|
328
|
+
openMicroEditor: (dots, args, messageId) => ({
|
|
329
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
330
|
+
dots,
|
|
331
|
+
args,
|
|
332
|
+
messageId,
|
|
333
|
+
apiType: "openMicroEditor"
|
|
334
|
+
}),
|
|
335
|
+
openMainEditor: (dots, args, messageId) => ({
|
|
336
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
337
|
+
dots,
|
|
338
|
+
args,
|
|
339
|
+
messageId,
|
|
340
|
+
apiType: "openMainEditor"
|
|
341
|
+
}),
|
|
342
|
+
agent: (dots, args, messageId) => ({
|
|
343
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
344
|
+
dots,
|
|
345
|
+
args,
|
|
346
|
+
messageId,
|
|
347
|
+
apiType: "agent"
|
|
272
348
|
})
|
|
273
349
|
};
|
|
274
350
|
function createApiProxy(apiType) {
|
|
@@ -285,6 +361,64 @@ function createApiProxy(apiType) {
|
|
|
285
361
|
});
|
|
286
362
|
}
|
|
287
363
|
|
|
364
|
+
function createAIGeneratorBridgeApi() {
|
|
365
|
+
const callbacks = /* @__PURE__ */ new Map();
|
|
366
|
+
const proxy = createApiProxy("aiGenerator");
|
|
367
|
+
async function subscribe(request, callback) {
|
|
368
|
+
const subscriptionId = generateMessageId();
|
|
369
|
+
callbacks.set(subscriptionId, callback);
|
|
370
|
+
let response;
|
|
371
|
+
try {
|
|
372
|
+
response = await sendMessage({
|
|
373
|
+
command: "ai-generator-subscribe",
|
|
374
|
+
...request,
|
|
375
|
+
subscriptionId,
|
|
376
|
+
messageId: generateMessageId()
|
|
377
|
+
});
|
|
378
|
+
} catch (error) {
|
|
379
|
+
callbacks.delete(subscriptionId);
|
|
380
|
+
throw error;
|
|
381
|
+
}
|
|
382
|
+
if (!response.isOk) {
|
|
383
|
+
callbacks.delete(subscriptionId);
|
|
384
|
+
throw new Error(response.error.message);
|
|
385
|
+
}
|
|
386
|
+
return () => {
|
|
387
|
+
callbacks.delete(subscriptionId);
|
|
388
|
+
postMessageToParent({
|
|
389
|
+
command: "ai-generator-unsubscribe",
|
|
390
|
+
subscriptionId
|
|
391
|
+
});
|
|
392
|
+
};
|
|
393
|
+
}
|
|
394
|
+
const methods = {
|
|
395
|
+
registerGenerator: (id, callback) => subscribe({ method: "registerGenerator", args: [id] }, (update) => {
|
|
396
|
+
if (update) callback(update);
|
|
397
|
+
}),
|
|
398
|
+
subscribeToGenerationUpdates: (ids, callback) => subscribe(
|
|
399
|
+
{ method: "subscribeToGenerationUpdates", args: [ids] },
|
|
400
|
+
(update) => {
|
|
401
|
+
if (update) callback(update);
|
|
402
|
+
}
|
|
403
|
+
),
|
|
404
|
+
subscribeToPendingGenerations: (callback) => subscribe(
|
|
405
|
+
{ method: "subscribeToPendingGenerations", args: [] },
|
|
406
|
+
() => callback()
|
|
407
|
+
),
|
|
408
|
+
/** Callers may reuse richer internal submission objects; never send their local abort callbacks. */
|
|
409
|
+
cancelGenerations: (submission) => proxy.cancelGenerations({
|
|
410
|
+
generationIds: submission.generationIds,
|
|
411
|
+
until: submission.until
|
|
412
|
+
})
|
|
413
|
+
};
|
|
414
|
+
return {
|
|
415
|
+
api: new Proxy(proxy, {
|
|
416
|
+
get: (target, property, receiver) => property in methods ? methods[property] : Reflect.get(target, property, receiver)
|
|
417
|
+
}),
|
|
418
|
+
dispatch: (message) => callbacks.get(message.subscriptionId)?.(message.update)
|
|
419
|
+
};
|
|
420
|
+
}
|
|
421
|
+
|
|
288
422
|
var generationHandlers = /* @__PURE__ */ new Map();
|
|
289
423
|
var generationSubscriptions = /* @__PURE__ */ new Map();
|
|
290
424
|
var dispatchAIGenerationUpdate = (subscriptionId, update) => {
|
|
@@ -652,7 +786,7 @@ var SandboxedAuthClient = class {
|
|
|
652
786
|
}
|
|
653
787
|
};
|
|
654
788
|
|
|
655
|
-
var
|
|
789
|
+
var createBatchFor = async (apiType) => {
|
|
656
790
|
const response = await sendMessage({
|
|
657
791
|
command: FROM_EXTENSION_COMMANDS.BATCH_CREATE,
|
|
658
792
|
messageId: generateMessageId()
|
|
@@ -661,14 +795,17 @@ var createBatch = async () => {
|
|
|
661
795
|
throw response.error;
|
|
662
796
|
}
|
|
663
797
|
const { batchKey } = response.result;
|
|
664
|
-
const sendDesignCall = (dots, args) =>
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
798
|
+
const sendDesignCall = (dots, args) => {
|
|
799
|
+
const message = {
|
|
800
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
801
|
+
dots: apiType === "project" ? ["design", "api", ...dots] : dots,
|
|
802
|
+
args,
|
|
803
|
+
messageId: generateMessageId(),
|
|
804
|
+
apiType,
|
|
805
|
+
batchKey
|
|
806
|
+
};
|
|
807
|
+
return sendMessage(message);
|
|
808
|
+
};
|
|
672
809
|
const commit = async () => {
|
|
673
810
|
const res = await sendMessage({
|
|
674
811
|
command: FROM_EXTENSION_COMMANDS.BATCH_COMMIT,
|
|
@@ -695,6 +832,8 @@ var createBatch = async () => {
|
|
|
695
832
|
};
|
|
696
833
|
return buildNode([]);
|
|
697
834
|
};
|
|
835
|
+
var createBatch = () => createBatchFor("design");
|
|
836
|
+
var createProjectBatch = () => createBatchFor("project");
|
|
698
837
|
|
|
699
838
|
var createContextBridgeApi = () => {
|
|
700
839
|
const contextProxy = createApiProxy("context");
|
|
@@ -862,6 +1001,7 @@ var designStateApi = createDesignStateBridgeApi();
|
|
|
862
1001
|
var appStateApi = createAppStateBridgeApi();
|
|
863
1002
|
var { api: contextApi, dispatch: dispatchContextUpdate } = createContextBridgeApi();
|
|
864
1003
|
var authClient = new SandboxedAuthClient();
|
|
1004
|
+
var aiGeneratorBridge = createAIGeneratorBridgeApi();
|
|
865
1005
|
var handleIncomingMessage = (event) => {
|
|
866
1006
|
const parent = window.parent;
|
|
867
1007
|
if (!parent || parent === window) {
|
|
@@ -884,6 +1024,10 @@ var handleIncomingMessage = (event) => {
|
|
|
884
1024
|
statelessApi.dispatch(data.type, data.payload);
|
|
885
1025
|
return;
|
|
886
1026
|
}
|
|
1027
|
+
if (isAIGeneratorUpdateMessage(data)) {
|
|
1028
|
+
aiGeneratorBridge.dispatch(data);
|
|
1029
|
+
return;
|
|
1030
|
+
}
|
|
887
1031
|
if (isAIGenerationUpdatePushMessage(data)) {
|
|
888
1032
|
dispatchAIGenerationUpdate(data.subscriptionId, data.update);
|
|
889
1033
|
return;
|
|
@@ -908,7 +1052,29 @@ var handleIncomingMessage = (event) => {
|
|
|
908
1052
|
);
|
|
909
1053
|
}
|
|
910
1054
|
};
|
|
1055
|
+
var projectProxy = createApiProxy("project");
|
|
1056
|
+
var projectApi = {
|
|
1057
|
+
design: {
|
|
1058
|
+
state: {
|
|
1059
|
+
getState: projectProxy.design.state.getState,
|
|
1060
|
+
subscribe: designStateApi.subscribe
|
|
1061
|
+
},
|
|
1062
|
+
api: projectProxy.design.api,
|
|
1063
|
+
createBatch: createProjectBatch
|
|
1064
|
+
},
|
|
1065
|
+
app: {
|
|
1066
|
+
state: {
|
|
1067
|
+
getState: projectProxy.app.state.getState,
|
|
1068
|
+
subscribe: appStateApi.subscribe
|
|
1069
|
+
},
|
|
1070
|
+
api: projectProxy.app.api
|
|
1071
|
+
}
|
|
1072
|
+
};
|
|
911
1073
|
var bridgeHandlers = {
|
|
1074
|
+
agent: createApiProxy("agent"),
|
|
1075
|
+
aiGenerator: aiGeneratorBridge.api,
|
|
1076
|
+
brandKit: createApiProxy("brandKit"),
|
|
1077
|
+
mockup: createApiProxy("mockup"),
|
|
912
1078
|
ai: createAIApiProxy(),
|
|
913
1079
|
context: contextApi,
|
|
914
1080
|
data: createApiProxy("data"),
|
|
@@ -917,12 +1083,17 @@ var bridgeHandlers = {
|
|
|
917
1083
|
appStore: appStateApi,
|
|
918
1084
|
export: createApiProxy("export"),
|
|
919
1085
|
font: createApiProxy("font"),
|
|
1086
|
+
project: projectApi,
|
|
920
1087
|
state: createApiProxy("state"),
|
|
921
1088
|
upload: createApiProxy("upload"),
|
|
922
|
-
fileBrowser:
|
|
1089
|
+
fileBrowser: { getFiles: createApiProxy("fileBrowser").getFiles },
|
|
1090
|
+
fileBrowserRegistration: createFileBrowserApiProxy(),
|
|
1091
|
+
openMicroEditor: createApiProxy("openMicroEditor"),
|
|
1092
|
+
openMainEditor: createApiProxy("openMainEditor"),
|
|
923
1093
|
auth: authClient,
|
|
924
1094
|
stateless: statelessApi,
|
|
925
|
-
createBatch
|
|
1095
|
+
createBatch,
|
|
1096
|
+
createProjectBatch
|
|
926
1097
|
};
|
|
927
1098
|
|
|
928
1099
|
// src/api/utils.ts
|
|
@@ -933,6 +1104,9 @@ function unwrapResult(result) {
|
|
|
933
1104
|
throw result.error;
|
|
934
1105
|
}
|
|
935
1106
|
|
|
1107
|
+
// package.json
|
|
1108
|
+
var version = "1.0.0";
|
|
1109
|
+
|
|
936
1110
|
// src/utils/syncHtmlDataThemeFromHostContext.ts
|
|
937
1111
|
async function syncHtmlDataThemeFromHostContext(kittl2) {
|
|
938
1112
|
if (typeof document === "undefined") {
|
|
@@ -973,12 +1147,17 @@ function createKittlSDK(apis) {
|
|
|
973
1147
|
handleIncomingMessage(event);
|
|
974
1148
|
}
|
|
975
1149
|
);
|
|
976
|
-
|
|
1150
|
+
const { context } = apis;
|
|
1151
|
+
const themeSynced = context?.get && context.subscribe ? syncHtmlDataThemeFromHostContext({
|
|
1152
|
+
context
|
|
1153
|
+
}) : Promise.resolve();
|
|
1154
|
+
void themeSynced.catch(() => void 0).then(() => {
|
|
977
1155
|
kittl2.onLoadedCallback?.();
|
|
978
1156
|
sendLoaded();
|
|
979
1157
|
});
|
|
980
1158
|
};
|
|
981
1159
|
if (typeof document !== "undefined" && typeof window !== "undefined") {
|
|
1160
|
+
setSDKVersion(version);
|
|
982
1161
|
window.kittl = kittl2;
|
|
983
1162
|
if (document.readyState === "loading") {
|
|
984
1163
|
document.addEventListener("DOMContentLoaded", initSdk);
|
|
@@ -992,8 +1171,13 @@ function createKittlSDK(apis) {
|
|
|
992
1171
|
// src/sharedFileBrowser.ts
|
|
993
1172
|
var kittl = createKittlSDK({
|
|
994
1173
|
auth: bridgeHandlers.auth,
|
|
995
|
-
context:
|
|
996
|
-
|
|
1174
|
+
// context only carries tab registration here: the file browser is hidden, so
|
|
1175
|
+
// it has no theme to follow and nothing to drag
|
|
1176
|
+
context: {
|
|
1177
|
+
registerUploadBrowser: bridgeHandlers.fileBrowserRegistration.registerUploadBrowser
|
|
1178
|
+
},
|
|
1179
|
+
// Both locations share callback tracking so existing file-browser extensions work unchanged.
|
|
1180
|
+
fileBrowser: bridgeHandlers.fileBrowserRegistration
|
|
997
1181
|
});
|
|
998
1182
|
export {
|
|
999
1183
|
kittl,
|
|
@@ -5,6 +5,10 @@
|
|
|
5
5
|
(() => {
|
|
6
6
|
|
|
7
7
|
var FROM_EXTENSION_COMMANDS = {
|
|
8
|
+
/** Capability-owned AI callback registration. */
|
|
9
|
+
AI_GENERATOR_SUBSCRIBE: "ai-generator-subscribe",
|
|
10
|
+
/** Capability-owned AI callback teardown. */
|
|
11
|
+
AI_GENERATOR_UNSUBSCRIBE: "ai-generator-unsubscribe",
|
|
8
12
|
/** SDK API call */
|
|
9
13
|
SDK_CALL: "sdk-call",
|
|
10
14
|
/** AI handler registration */
|
|
@@ -53,6 +57,8 @@
|
|
|
53
57
|
LOADED: "loaded"
|
|
54
58
|
};
|
|
55
59
|
var TO_EXTENSION_COMMANDS = {
|
|
60
|
+
/** Callback payload for generator or pending-set subscriptions. */
|
|
61
|
+
AI_GENERATOR_UPDATE: "ai-generator-update",
|
|
56
62
|
/** SDK API response */
|
|
57
63
|
SDK_RESPONSE: "sdk-response",
|
|
58
64
|
/** File browser fetch content request */
|
|
@@ -69,6 +75,10 @@
|
|
|
69
75
|
APP_STATE_UPDATE: "app-state-update"
|
|
70
76
|
};
|
|
71
77
|
|
|
78
|
+
function isAIGeneratorUpdateMessage(data) {
|
|
79
|
+
return !!data && typeof data === "object" && "command" in data && data.command === "ai-generator-update" && "subscriptionId" in data && typeof data.subscriptionId === "string";
|
|
80
|
+
}
|
|
81
|
+
|
|
72
82
|
var isSDKResponseMessage = (data) => {
|
|
73
83
|
return typeof data === "object" && data !== null && "command" in data && data.command === TO_EXTENSION_COMMANDS.SDK_RESPONSE && "messageId" in data && typeof data.messageId === "string";
|
|
74
84
|
};
|
|
@@ -138,7 +148,10 @@
|
|
|
138
148
|
"https://app.stagingdesigner.com",
|
|
139
149
|
"https://*.stagingdesigner.com",
|
|
140
150
|
"http://localhost:3000",
|
|
141
|
-
"https://app.kittl.com"
|
|
151
|
+
"https://app.kittl.com",
|
|
152
|
+
// website, for sandboxed standalone dashboard pages
|
|
153
|
+
"http://localhost:3003",
|
|
154
|
+
"https://www.kittl.com"
|
|
142
155
|
];
|
|
143
156
|
var toOrigin = (value) => {
|
|
144
157
|
if (!value) {
|
|
@@ -193,8 +206,15 @@
|
|
|
193
206
|
};
|
|
194
207
|
|
|
195
208
|
var pendingRequests = /* @__PURE__ */ new Map();
|
|
209
|
+
var sdkVersion;
|
|
210
|
+
function setSDKVersion(version2) {
|
|
211
|
+
sdkVersion = version2;
|
|
212
|
+
}
|
|
196
213
|
var postMessageToParent = (message) => {
|
|
197
|
-
window.parent.postMessage(
|
|
214
|
+
window.parent.postMessage(
|
|
215
|
+
sdkVersion === void 0 ? message : { ...message, sdkVersion },
|
|
216
|
+
getParentDomain()
|
|
217
|
+
);
|
|
198
218
|
};
|
|
199
219
|
var sendMessage = (message) => {
|
|
200
220
|
postMessageToParent(message);
|
|
@@ -217,6 +237,27 @@
|
|
|
217
237
|
};
|
|
218
238
|
|
|
219
239
|
var createSDKCallMessage = {
|
|
240
|
+
aiGenerator: (dots, args, messageId) => ({
|
|
241
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
242
|
+
dots,
|
|
243
|
+
args,
|
|
244
|
+
messageId,
|
|
245
|
+
apiType: "aiGenerator"
|
|
246
|
+
}),
|
|
247
|
+
mockup: (dots, args, messageId) => ({
|
|
248
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
249
|
+
dots,
|
|
250
|
+
args,
|
|
251
|
+
messageId,
|
|
252
|
+
apiType: "mockup"
|
|
253
|
+
}),
|
|
254
|
+
fileBrowser: (dots, args, messageId) => ({
|
|
255
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
256
|
+
dots,
|
|
257
|
+
args,
|
|
258
|
+
messageId,
|
|
259
|
+
apiType: "fileBrowser"
|
|
260
|
+
}),
|
|
220
261
|
ai: (dots, args, messageId) => ({
|
|
221
262
|
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
222
263
|
dots,
|
|
@@ -252,6 +293,13 @@
|
|
|
252
293
|
messageId,
|
|
253
294
|
apiType: "font"
|
|
254
295
|
}),
|
|
296
|
+
project: (dots, args, messageId) => ({
|
|
297
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
298
|
+
dots,
|
|
299
|
+
args,
|
|
300
|
+
messageId,
|
|
301
|
+
apiType: "project"
|
|
302
|
+
}),
|
|
255
303
|
state: (dots, args, messageId) => ({
|
|
256
304
|
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
257
305
|
dots,
|
|
@@ -272,6 +320,34 @@
|
|
|
272
320
|
args,
|
|
273
321
|
messageId,
|
|
274
322
|
apiType: "data"
|
|
323
|
+
}),
|
|
324
|
+
brandKit: (dots, args, messageId) => ({
|
|
325
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
326
|
+
dots,
|
|
327
|
+
args,
|
|
328
|
+
messageId,
|
|
329
|
+
apiType: "brandKit"
|
|
330
|
+
}),
|
|
331
|
+
openMicroEditor: (dots, args, messageId) => ({
|
|
332
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
333
|
+
dots,
|
|
334
|
+
args,
|
|
335
|
+
messageId,
|
|
336
|
+
apiType: "openMicroEditor"
|
|
337
|
+
}),
|
|
338
|
+
openMainEditor: (dots, args, messageId) => ({
|
|
339
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
340
|
+
dots,
|
|
341
|
+
args,
|
|
342
|
+
messageId,
|
|
343
|
+
apiType: "openMainEditor"
|
|
344
|
+
}),
|
|
345
|
+
agent: (dots, args, messageId) => ({
|
|
346
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
347
|
+
dots,
|
|
348
|
+
args,
|
|
349
|
+
messageId,
|
|
350
|
+
apiType: "agent"
|
|
275
351
|
})
|
|
276
352
|
};
|
|
277
353
|
function createApiProxy(apiType) {
|
|
@@ -288,6 +364,64 @@
|
|
|
288
364
|
});
|
|
289
365
|
}
|
|
290
366
|
|
|
367
|
+
function createAIGeneratorBridgeApi() {
|
|
368
|
+
const callbacks = /* @__PURE__ */ new Map();
|
|
369
|
+
const proxy = createApiProxy("aiGenerator");
|
|
370
|
+
async function subscribe(request, callback) {
|
|
371
|
+
const subscriptionId = generateMessageId();
|
|
372
|
+
callbacks.set(subscriptionId, callback);
|
|
373
|
+
let response;
|
|
374
|
+
try {
|
|
375
|
+
response = await sendMessage({
|
|
376
|
+
command: "ai-generator-subscribe",
|
|
377
|
+
...request,
|
|
378
|
+
subscriptionId,
|
|
379
|
+
messageId: generateMessageId()
|
|
380
|
+
});
|
|
381
|
+
} catch (error) {
|
|
382
|
+
callbacks.delete(subscriptionId);
|
|
383
|
+
throw error;
|
|
384
|
+
}
|
|
385
|
+
if (!response.isOk) {
|
|
386
|
+
callbacks.delete(subscriptionId);
|
|
387
|
+
throw new Error(response.error.message);
|
|
388
|
+
}
|
|
389
|
+
return () => {
|
|
390
|
+
callbacks.delete(subscriptionId);
|
|
391
|
+
postMessageToParent({
|
|
392
|
+
command: "ai-generator-unsubscribe",
|
|
393
|
+
subscriptionId
|
|
394
|
+
});
|
|
395
|
+
};
|
|
396
|
+
}
|
|
397
|
+
const methods = {
|
|
398
|
+
registerGenerator: (id, callback) => subscribe({ method: "registerGenerator", args: [id] }, (update) => {
|
|
399
|
+
if (update) callback(update);
|
|
400
|
+
}),
|
|
401
|
+
subscribeToGenerationUpdates: (ids, callback) => subscribe(
|
|
402
|
+
{ method: "subscribeToGenerationUpdates", args: [ids] },
|
|
403
|
+
(update) => {
|
|
404
|
+
if (update) callback(update);
|
|
405
|
+
}
|
|
406
|
+
),
|
|
407
|
+
subscribeToPendingGenerations: (callback) => subscribe(
|
|
408
|
+
{ method: "subscribeToPendingGenerations", args: [] },
|
|
409
|
+
() => callback()
|
|
410
|
+
),
|
|
411
|
+
/** Callers may reuse richer internal submission objects; never send their local abort callbacks. */
|
|
412
|
+
cancelGenerations: (submission) => proxy.cancelGenerations({
|
|
413
|
+
generationIds: submission.generationIds,
|
|
414
|
+
until: submission.until
|
|
415
|
+
})
|
|
416
|
+
};
|
|
417
|
+
return {
|
|
418
|
+
api: new Proxy(proxy, {
|
|
419
|
+
get: (target, property, receiver) => property in methods ? methods[property] : Reflect.get(target, property, receiver)
|
|
420
|
+
}),
|
|
421
|
+
dispatch: (message) => callbacks.get(message.subscriptionId)?.(message.update)
|
|
422
|
+
};
|
|
423
|
+
}
|
|
424
|
+
|
|
291
425
|
var generationHandlers = /* @__PURE__ */ new Map();
|
|
292
426
|
var generationSubscriptions = /* @__PURE__ */ new Map();
|
|
293
427
|
var dispatchAIGenerationUpdate = (subscriptionId, update) => {
|
|
@@ -655,7 +789,7 @@
|
|
|
655
789
|
}
|
|
656
790
|
};
|
|
657
791
|
|
|
658
|
-
var
|
|
792
|
+
var createBatchFor = async (apiType) => {
|
|
659
793
|
const response = await sendMessage({
|
|
660
794
|
command: FROM_EXTENSION_COMMANDS.BATCH_CREATE,
|
|
661
795
|
messageId: generateMessageId()
|
|
@@ -664,14 +798,17 @@
|
|
|
664
798
|
throw response.error;
|
|
665
799
|
}
|
|
666
800
|
const { batchKey } = response.result;
|
|
667
|
-
const sendDesignCall = (dots, args) =>
|
|
668
|
-
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
801
|
+
const sendDesignCall = (dots, args) => {
|
|
802
|
+
const message = {
|
|
803
|
+
command: FROM_EXTENSION_COMMANDS.SDK_CALL,
|
|
804
|
+
dots: apiType === "project" ? ["design", "api", ...dots] : dots,
|
|
805
|
+
args,
|
|
806
|
+
messageId: generateMessageId(),
|
|
807
|
+
apiType,
|
|
808
|
+
batchKey
|
|
809
|
+
};
|
|
810
|
+
return sendMessage(message);
|
|
811
|
+
};
|
|
675
812
|
const commit = async () => {
|
|
676
813
|
const res = await sendMessage({
|
|
677
814
|
command: FROM_EXTENSION_COMMANDS.BATCH_COMMIT,
|
|
@@ -698,6 +835,8 @@
|
|
|
698
835
|
};
|
|
699
836
|
return buildNode([]);
|
|
700
837
|
};
|
|
838
|
+
var createBatch = () => createBatchFor("design");
|
|
839
|
+
var createProjectBatch = () => createBatchFor("project");
|
|
701
840
|
|
|
702
841
|
var createContextBridgeApi = () => {
|
|
703
842
|
const contextProxy = createApiProxy("context");
|
|
@@ -865,6 +1004,7 @@
|
|
|
865
1004
|
var appStateApi = createAppStateBridgeApi();
|
|
866
1005
|
var { api: contextApi, dispatch: dispatchContextUpdate } = createContextBridgeApi();
|
|
867
1006
|
var authClient = new SandboxedAuthClient();
|
|
1007
|
+
var aiGeneratorBridge = createAIGeneratorBridgeApi();
|
|
868
1008
|
var handleIncomingMessage = (event) => {
|
|
869
1009
|
const parent = window.parent;
|
|
870
1010
|
if (!parent || parent === window) {
|
|
@@ -887,6 +1027,10 @@
|
|
|
887
1027
|
statelessApi.dispatch(data.type, data.payload);
|
|
888
1028
|
return;
|
|
889
1029
|
}
|
|
1030
|
+
if (isAIGeneratorUpdateMessage(data)) {
|
|
1031
|
+
aiGeneratorBridge.dispatch(data);
|
|
1032
|
+
return;
|
|
1033
|
+
}
|
|
890
1034
|
if (isAIGenerationUpdatePushMessage(data)) {
|
|
891
1035
|
dispatchAIGenerationUpdate(data.subscriptionId, data.update);
|
|
892
1036
|
return;
|
|
@@ -911,7 +1055,29 @@
|
|
|
911
1055
|
);
|
|
912
1056
|
}
|
|
913
1057
|
};
|
|
1058
|
+
var projectProxy = createApiProxy("project");
|
|
1059
|
+
var projectApi = {
|
|
1060
|
+
design: {
|
|
1061
|
+
state: {
|
|
1062
|
+
getState: projectProxy.design.state.getState,
|
|
1063
|
+
subscribe: designStateApi.subscribe
|
|
1064
|
+
},
|
|
1065
|
+
api: projectProxy.design.api,
|
|
1066
|
+
createBatch: createProjectBatch
|
|
1067
|
+
},
|
|
1068
|
+
app: {
|
|
1069
|
+
state: {
|
|
1070
|
+
getState: projectProxy.app.state.getState,
|
|
1071
|
+
subscribe: appStateApi.subscribe
|
|
1072
|
+
},
|
|
1073
|
+
api: projectProxy.app.api
|
|
1074
|
+
}
|
|
1075
|
+
};
|
|
914
1076
|
var bridgeHandlers = {
|
|
1077
|
+
agent: createApiProxy("agent"),
|
|
1078
|
+
aiGenerator: aiGeneratorBridge.api,
|
|
1079
|
+
brandKit: createApiProxy("brandKit"),
|
|
1080
|
+
mockup: createApiProxy("mockup"),
|
|
915
1081
|
ai: createAIApiProxy(),
|
|
916
1082
|
context: contextApi,
|
|
917
1083
|
data: createApiProxy("data"),
|
|
@@ -920,12 +1086,17 @@
|
|
|
920
1086
|
appStore: appStateApi,
|
|
921
1087
|
export: createApiProxy("export"),
|
|
922
1088
|
font: createApiProxy("font"),
|
|
1089
|
+
project: projectApi,
|
|
923
1090
|
state: createApiProxy("state"),
|
|
924
1091
|
upload: createApiProxy("upload"),
|
|
925
|
-
fileBrowser:
|
|
1092
|
+
fileBrowser: { getFiles: createApiProxy("fileBrowser").getFiles },
|
|
1093
|
+
fileBrowserRegistration: createFileBrowserApiProxy(),
|
|
1094
|
+
openMicroEditor: createApiProxy("openMicroEditor"),
|
|
1095
|
+
openMainEditor: createApiProxy("openMainEditor"),
|
|
926
1096
|
auth: authClient,
|
|
927
1097
|
stateless: statelessApi,
|
|
928
|
-
createBatch
|
|
1098
|
+
createBatch,
|
|
1099
|
+
createProjectBatch
|
|
929
1100
|
};
|
|
930
1101
|
|
|
931
1102
|
// src/api/utils.ts
|
|
@@ -936,6 +1107,9 @@
|
|
|
936
1107
|
throw result.error;
|
|
937
1108
|
}
|
|
938
1109
|
|
|
1110
|
+
// package.json
|
|
1111
|
+
var version = "1.0.0";
|
|
1112
|
+
|
|
939
1113
|
// src/utils/syncHtmlDataThemeFromHostContext.ts
|
|
940
1114
|
async function syncHtmlDataThemeFromHostContext(kittl2) {
|
|
941
1115
|
if (typeof document === "undefined") {
|
|
@@ -976,12 +1150,17 @@
|
|
|
976
1150
|
handleIncomingMessage(event);
|
|
977
1151
|
}
|
|
978
1152
|
);
|
|
979
|
-
|
|
1153
|
+
const { context } = apis;
|
|
1154
|
+
const themeSynced = context?.get && context.subscribe ? syncHtmlDataThemeFromHostContext({
|
|
1155
|
+
context
|
|
1156
|
+
}) : Promise.resolve();
|
|
1157
|
+
void themeSynced.catch(() => void 0).then(() => {
|
|
980
1158
|
kittl2.onLoadedCallback?.();
|
|
981
1159
|
sendLoaded();
|
|
982
1160
|
});
|
|
983
1161
|
};
|
|
984
1162
|
if (typeof document !== "undefined" && typeof window !== "undefined") {
|
|
1163
|
+
setSDKVersion(version);
|
|
985
1164
|
window.kittl = kittl2;
|
|
986
1165
|
if (document.readyState === "loading") {
|
|
987
1166
|
document.addEventListener("DOMContentLoaded", initSdk);
|
|
@@ -995,7 +1174,12 @@
|
|
|
995
1174
|
// src/sharedFileBrowser.ts
|
|
996
1175
|
var kittl = createKittlSDK({
|
|
997
1176
|
auth: bridgeHandlers.auth,
|
|
998
|
-
context:
|
|
999
|
-
|
|
1177
|
+
// context only carries tab registration here: the file browser is hidden, so
|
|
1178
|
+
// it has no theme to follow and nothing to drag
|
|
1179
|
+
context: {
|
|
1180
|
+
registerUploadBrowser: bridgeHandlers.fileBrowserRegistration.registerUploadBrowser
|
|
1181
|
+
},
|
|
1182
|
+
// Both locations share callback tracking so existing file-browser extensions work unchanged.
|
|
1183
|
+
fileBrowser: bridgeHandlers.fileBrowserRegistration
|
|
1000
1184
|
});
|
|
1001
1185
|
})();
|