@kosdev-code/kos-ui-sdk 3.0.5 → 3.0.7
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/.kos.json +286 -0
- package/common/events/async-event-bus.d.ts +1 -1
- package/common/events/async-event-bus.d.ts.map +1 -1
- package/core/core/kos-registration.d.ts.map +1 -1
- package/core/core/kosCore.d.ts.map +1 -1
- package/core/core/model/kos-http-route-manager.d.ts.map +1 -1
- package/core/core/model/kos-subscription-manager.d.ts.map +1 -1
- package/core/core/model/service-response-store.d.ts.map +1 -1
- package/core/core/model-instantiator.d.ts.map +1 -1
- package/core/core/registration/registration-manager.d.ts.map +1 -1
- package/core/core/transport/webSocketTransport.d.ts.map +1 -1
- package/core/util/index.d.ts +0 -1
- package/core/util/index.d.ts.map +1 -1
- package/index.cjs +108 -83
- package/index.cjs.map +1 -1
- package/index.js +108 -83
- package/index.js.map +1 -1
- package/models/models/canvas-dispatcher/canvas-dispatcher-model.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/color-utils.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/looping-video-renderer.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/matrix-renderer.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/overlay-renderer.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/scrolling-image-renderer.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/scrolling-text-renderer.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/sequence-renderer.d.ts.map +1 -1
- package/models/models/canvas-dispatcher/utils/renderers/solid-color-renderer.d.ts.map +1 -1
- package/models/models/canvas-renderer/canvas-renderer-model.d.ts.map +1 -1
- package/models/models/future/future-model.d.ts.map +1 -1
- package/models/models/future/future-types.d.ts +7 -7
- package/models/models/gpio-chip/gpio-chip-container-model.d.ts.map +1 -1
- package/models/models/gpio-chip/services/gpio-chip-services.d.ts +8 -8
- package/models/models/gpio-chip/services/gpio-chip-services.d.ts.map +1 -1
- package/models/models/kos-expression-evaluator/kos-expression-evaluator-model.d.ts +1 -1
- package/models/models/kos-expression-evaluator/kos-expression-evaluator-model.d.ts.map +1 -1
- package/models/models/kos-expression-evaluator/types/index.d.ts +8 -1
- package/models/models/kos-time/services/kos-time-services.d.ts.map +1 -1
- package/models/models/log-block/types/index.d.ts +20 -20
- package/models/models/log-stream/types/index.d.ts +9 -9
- package/models/models/studio-properties/services/studio-properties-services.d.ts.map +1 -1
- package/models/models/studio-properties/types/index.d.ts +2 -2
- package/models/utils/conversion-utils.d.ts +26 -0
- package/models/utils/conversion-utils.d.ts.map +1 -1
- package/package.json +3 -3
- package/ui/contexts/kos-core-context.d.ts.map +1 -1
- package/ui/features/canvas/hooks/use-solid-color-renderer.d.ts.map +1 -1
- package/ui/features/canvas/utils/preview-decoder.d.ts.map +1 -1
- package/ui/hooks/translation-container/trans.d.ts.map +1 -1
- package/ui/policies/reload-on-disconnect-policy.d.ts.map +1 -1
- package/core/util/kos-org-utils.d.ts +0 -3
- package/core/util/kos-org-utils.d.ts.map +0 -1
package/index.cjs
CHANGED
|
@@ -1548,7 +1548,7 @@ function kosServiceRequest$9(params2) {
|
|
|
1548
1548
|
throw new Error("Service request metadata not found for method");
|
|
1549
1549
|
}
|
|
1550
1550
|
try {
|
|
1551
|
-
const { default: API } = await Promise.resolve().then(() => service$
|
|
1551
|
+
const { default: API } = await Promise.resolve().then(() => service$8);
|
|
1552
1552
|
const { resolvedPath, apiParams, finalBody, finalRequestOptions } = resolveServiceRequestParameters(
|
|
1553
1553
|
currentMetadata,
|
|
1554
1554
|
this,
|
|
@@ -3006,7 +3006,7 @@ const RegistrationManager = {
|
|
|
3006
3006
|
}
|
|
3007
3007
|
if (KosCore.getInstance().isReady) {
|
|
3008
3008
|
if (!KosCore.getInstance().modelManager.registry.models[register.type]) {
|
|
3009
|
-
|
|
3009
|
+
KosLog.info(
|
|
3010
3010
|
`Model with type ${register.type} doesn't exist. Adding new registration`
|
|
3011
3011
|
);
|
|
3012
3012
|
KosCore.getInstance().modelManager.registry.models[register.type] = register.registration[register.type];
|
|
@@ -5635,7 +5635,9 @@ class KosHttpRouteManager {
|
|
|
5635
5635
|
*/
|
|
5636
5636
|
dispose() {
|
|
5637
5637
|
if (this.router && this.registeredRoutes.length > 0) {
|
|
5638
|
-
this.logger.debug(
|
|
5638
|
+
this.logger.debug(
|
|
5639
|
+
`Removing ${this.registeredRoutes.length} HTTP routes for model ${this.model.id || "unknown"}`
|
|
5640
|
+
);
|
|
5639
5641
|
let totalRemoved = 0;
|
|
5640
5642
|
for (const route of this.registeredRoutes) {
|
|
5641
5643
|
const removed = this.router.remove(route.method, route.path);
|
|
@@ -5643,10 +5645,14 @@ class KosHttpRouteManager {
|
|
|
5643
5645
|
if (removed > 0) {
|
|
5644
5646
|
this.logger.debug(`Removed route: ${route.method} ${route.path}`);
|
|
5645
5647
|
} else {
|
|
5646
|
-
this.logger.warn(
|
|
5648
|
+
this.logger.warn(
|
|
5649
|
+
`Failed to remove route: ${route.method} ${route.path} (not found)`
|
|
5650
|
+
);
|
|
5647
5651
|
}
|
|
5648
5652
|
}
|
|
5649
|
-
this.logger.debug(
|
|
5653
|
+
this.logger.debug(
|
|
5654
|
+
`Successfully removed ${totalRemoved} routes from browser router`
|
|
5655
|
+
);
|
|
5650
5656
|
}
|
|
5651
5657
|
this.registered = false;
|
|
5652
5658
|
this.registeredRoutes = [];
|
|
@@ -6700,7 +6706,7 @@ const api$9 = createClient();
|
|
|
6700
6706
|
function kosServiceRequest$8(params2) {
|
|
6701
6707
|
return kosServiceRequest$9(params2);
|
|
6702
6708
|
}
|
|
6703
|
-
const service$
|
|
6709
|
+
const service$8 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
6704
6710
|
__proto__: null,
|
|
6705
6711
|
default: api$9,
|
|
6706
6712
|
kosServiceRequest: kosServiceRequest$8
|
|
@@ -8156,15 +8162,11 @@ class KosSubscriptionManager {
|
|
|
8156
8162
|
if (lifecycle && lifecycle !== topicLifecycle) return;
|
|
8157
8163
|
const resolvedTopic = this.resolvePropKey(topic);
|
|
8158
8164
|
if (this.onceTopics.has(resolvedTopic)) {
|
|
8159
|
-
this.log.debug(
|
|
8160
|
-
`Skipping once topic (already fired): ${resolvedTopic}`
|
|
8161
|
-
);
|
|
8165
|
+
this.log.debug(`Skipping once topic (already fired): ${resolvedTopic}`);
|
|
8162
8166
|
return;
|
|
8163
8167
|
}
|
|
8164
8168
|
if (this.registeredTopics.has(resolvedTopic)) {
|
|
8165
|
-
this.log.debug(
|
|
8166
|
-
`Skipping duplicate subscription for ${resolvedTopic}`
|
|
8167
|
-
);
|
|
8169
|
+
this.log.debug(`Skipping duplicate subscription for ${resolvedTopic}`);
|
|
8168
8170
|
return;
|
|
8169
8171
|
}
|
|
8170
8172
|
this.registeredTopics.add(resolvedTopic);
|
|
@@ -8214,7 +8216,7 @@ class KosSubscriptionManager {
|
|
|
8214
8216
|
this.log.debug(
|
|
8215
8217
|
`Disposing ${allDisposers.length} subscriptions for ${this.modelId}`
|
|
8216
8218
|
);
|
|
8217
|
-
for (const [topic,
|
|
8219
|
+
for (const [topic, _controller] of this.flowControllers) {
|
|
8218
8220
|
this.log.debug(`Disposing flow controller for ${topic}`);
|
|
8219
8221
|
}
|
|
8220
8222
|
this.flowControllers.clear();
|
|
@@ -8286,6 +8288,7 @@ class KosSubscriptionManager {
|
|
|
8286
8288
|
payload
|
|
8287
8289
|
);
|
|
8288
8290
|
}
|
|
8291
|
+
return void 0;
|
|
8289
8292
|
};
|
|
8290
8293
|
this.offlineQueue.enqueue(offlineHandler, resolvedTopic, payload);
|
|
8291
8294
|
} else {
|
|
@@ -8303,6 +8306,7 @@ class KosSubscriptionManager {
|
|
|
8303
8306
|
} catch (e) {
|
|
8304
8307
|
this.log.error(`Error handling subscription for ${resolvedTopic}`, e);
|
|
8305
8308
|
}
|
|
8309
|
+
return void 0;
|
|
8306
8310
|
};
|
|
8307
8311
|
}
|
|
8308
8312
|
extractWildcardCapture(resolvedTopic, payload, subscription) {
|
|
@@ -8419,20 +8423,18 @@ class KosSubscriptionManager {
|
|
|
8419
8423
|
return async (processedData) => {
|
|
8420
8424
|
try {
|
|
8421
8425
|
if (config2.condition && !config2.condition(processedData, this.modelData, processedData)) {
|
|
8422
|
-
return;
|
|
8426
|
+
return void 0;
|
|
8423
8427
|
}
|
|
8424
8428
|
if (!this.model.isReady()) {
|
|
8425
8429
|
this.log.warn(
|
|
8426
8430
|
`Model ${this.modelId} not ready. Queuing flow-controlled message for ${resolvedTopic}`
|
|
8427
8431
|
);
|
|
8428
|
-
const offlineHandler = () =>
|
|
8429
|
-
|
|
8430
|
-
|
|
8431
|
-
|
|
8432
|
-
|
|
8433
|
-
|
|
8434
|
-
);
|
|
8435
|
-
};
|
|
8432
|
+
const offlineHandler = () => config2.handler.call(
|
|
8433
|
+
this.modelData,
|
|
8434
|
+
processedData,
|
|
8435
|
+
processedData,
|
|
8436
|
+
this.modelData
|
|
8437
|
+
);
|
|
8436
8438
|
this.offlineQueue.enqueue(
|
|
8437
8439
|
offlineHandler,
|
|
8438
8440
|
resolvedTopic,
|
|
@@ -8457,6 +8459,7 @@ class KosSubscriptionManager {
|
|
|
8457
8459
|
throw error;
|
|
8458
8460
|
}
|
|
8459
8461
|
}
|
|
8462
|
+
return void 0;
|
|
8460
8463
|
};
|
|
8461
8464
|
}
|
|
8462
8465
|
async retryHandler(config2, data, originalError) {
|
|
@@ -11491,16 +11494,6 @@ const syncPublish = async ({
|
|
|
11491
11494
|
}
|
|
11492
11495
|
return response;
|
|
11493
11496
|
};
|
|
11494
|
-
const WHITELISTED_ORGS = new Set(
|
|
11495
|
-
process.env.KOS_TOOL_ACCESS_WHITELIST?.split(",") || []
|
|
11496
|
-
);
|
|
11497
|
-
const getWhitelistedOrgs = () => {
|
|
11498
|
-
return WHITELISTED_ORGS;
|
|
11499
|
-
};
|
|
11500
|
-
const checkOrgAuthorization = (userOrgIds = []) => {
|
|
11501
|
-
const ids = Array.isArray(userOrgIds) ? userOrgIds : [userOrgIds];
|
|
11502
|
-
return ids.some((id) => WHITELISTED_ORGS.has(id));
|
|
11503
|
-
};
|
|
11504
11497
|
const contextMap = /* @__PURE__ */ new Map();
|
|
11505
11498
|
class KosContextBean {
|
|
11506
11499
|
_context;
|
|
@@ -12360,7 +12353,7 @@ async function waitForAppsToStart(appIds, options = {}) {
|
|
|
12360
12353
|
const startedApps = await waitForAllWithState(eventTopics, {
|
|
12361
12354
|
getCurrentState: async () => {
|
|
12362
12355
|
try {
|
|
12363
|
-
const { default: api2 } = await Promise.resolve().then(() => service$
|
|
12356
|
+
const { default: api2 } = await Promise.resolve().then(() => service$8);
|
|
12364
12357
|
const [error, data] = await api2.get("/api/kos/apps/started");
|
|
12365
12358
|
if (error) {
|
|
12366
12359
|
log$q.error("Error fetching started apps:", error);
|
|
@@ -14813,7 +14806,11 @@ let FutureModel$1 = class FutureModel {
|
|
|
14813
14806
|
await kosWhen(() => this.futureId !== FUTURE_NOT_ASSIGNED);
|
|
14814
14807
|
const response = await this._cancelFuture(this.futureId, path);
|
|
14815
14808
|
if (response?.status !== 200) {
|
|
14816
|
-
log$i.error(
|
|
14809
|
+
log$i.error(
|
|
14810
|
+
`Failed to cancel Future ${this.id}. Response: ${JSON.stringify(
|
|
14811
|
+
response
|
|
14812
|
+
)}`
|
|
14813
|
+
);
|
|
14817
14814
|
}
|
|
14818
14815
|
}
|
|
14819
14816
|
/**
|
|
@@ -16880,7 +16877,7 @@ let KosExpressionEvaluatorModelImpl = class {
|
|
|
16880
16877
|
// Use ObservableData for results to handle dynamic properties properly
|
|
16881
16878
|
_results;
|
|
16882
16879
|
_contextRevision = 0;
|
|
16883
|
-
constructor(modelId,
|
|
16880
|
+
constructor(modelId, options, context) {
|
|
16884
16881
|
this.id = modelId;
|
|
16885
16882
|
this.logger = context.logger;
|
|
16886
16883
|
this._data = ObservableData();
|
|
@@ -16894,6 +16891,15 @@ let KosExpressionEvaluatorModelImpl = class {
|
|
|
16894
16891
|
if (typeof value === "object") return Object.keys(value).length === 0;
|
|
16895
16892
|
return false;
|
|
16896
16893
|
};
|
|
16894
|
+
for (const [name, fn] of Object.entries(options?.customFunctions ?? {})) {
|
|
16895
|
+
if (name in this.parser.functions) {
|
|
16896
|
+
this.logger.warn(
|
|
16897
|
+
`customFunctions.${name} ignored: a built-in with that name exists`
|
|
16898
|
+
);
|
|
16899
|
+
continue;
|
|
16900
|
+
}
|
|
16901
|
+
this.parser.functions[name] = fn;
|
|
16902
|
+
}
|
|
16897
16903
|
}
|
|
16898
16904
|
/**
|
|
16899
16905
|
* Get the current context data that expressions are evaluated against.
|
|
@@ -17331,7 +17337,6 @@ let KosLogManagerModelImpl = class {
|
|
|
17331
17337
|
*/
|
|
17332
17338
|
async load() {
|
|
17333
17339
|
this.logger.debug(`loading kos-log-manager ${this.id}`);
|
|
17334
|
-
this.resolveLoggers();
|
|
17335
17340
|
const [error, overrides] = await getLogOverrides();
|
|
17336
17341
|
if (error) {
|
|
17337
17342
|
this.logger.error("Failed to load log overrides", error);
|
|
@@ -17379,10 +17384,6 @@ const { URL: URL$8 } = resolveServiceUrl();
|
|
|
17379
17384
|
const { postModel: postModel$2, getOne: getOne$2 } = ServiceFactory.build({
|
|
17380
17385
|
basePath: `${URL$8}/api/kos-time`
|
|
17381
17386
|
});
|
|
17382
|
-
KosLog.createLogger({
|
|
17383
|
-
name: "kos-time-service",
|
|
17384
|
-
group: "Services"
|
|
17385
|
-
});
|
|
17386
17387
|
const setTime = async (time) => {
|
|
17387
17388
|
const response = await postModel$2({
|
|
17388
17389
|
model: time,
|
|
@@ -19626,7 +19627,10 @@ class LoopingVideoRenderer extends VideoRendererBase {
|
|
|
19626
19627
|
this.video.currentTime = this.startTime;
|
|
19627
19628
|
}
|
|
19628
19629
|
if (this.endTime !== null) {
|
|
19629
|
-
this.video.addEventListener(
|
|
19630
|
+
this.video.addEventListener(
|
|
19631
|
+
"timeupdate",
|
|
19632
|
+
this.handleTimeUpdate.bind(this)
|
|
19633
|
+
);
|
|
19630
19634
|
}
|
|
19631
19635
|
}
|
|
19632
19636
|
handleTimeUpdate() {
|
|
@@ -19805,7 +19809,10 @@ class OverlayRenderer {
|
|
|
19805
19809
|
completionCallback = null;
|
|
19806
19810
|
hasSignaledCompletion = false;
|
|
19807
19811
|
constructor(data, rendererFactory) {
|
|
19808
|
-
this.baseRenderer = rendererFactory(
|
|
19812
|
+
this.baseRenderer = rendererFactory(
|
|
19813
|
+
data.baseRenderer.type,
|
|
19814
|
+
data.baseRenderer.data
|
|
19815
|
+
);
|
|
19809
19816
|
this.overlayConfigs = data.overlays;
|
|
19810
19817
|
this.persistOverlaysOnComplete = data.persistOverlaysOnComplete !== false;
|
|
19811
19818
|
this.canvas = document.createElement("canvas");
|
|
@@ -19906,7 +19913,11 @@ class OverlayRenderer {
|
|
|
19906
19913
|
this.baseRenderer.renderFrame(width, height);
|
|
19907
19914
|
const basePixels = this.baseRenderer.readPixels(width, height);
|
|
19908
19915
|
if (basePixels && basePixels.length > 0) {
|
|
19909
|
-
const imageData = new ImageData(
|
|
19916
|
+
const imageData = new ImageData(
|
|
19917
|
+
basePixels,
|
|
19918
|
+
width,
|
|
19919
|
+
height
|
|
19920
|
+
);
|
|
19910
19921
|
this.ctx.putImageData(imageData, 0, 0);
|
|
19911
19922
|
}
|
|
19912
19923
|
this.renderOverlays(width, height);
|
|
@@ -19921,7 +19932,11 @@ class OverlayRenderer {
|
|
|
19921
19932
|
if (!img || !this.loadedIcons.has(overlay.src)) {
|
|
19922
19933
|
continue;
|
|
19923
19934
|
}
|
|
19924
|
-
const position = this.calculateOverlayPosition(
|
|
19935
|
+
const position = this.calculateOverlayPosition(
|
|
19936
|
+
overlay,
|
|
19937
|
+
canvasWidth,
|
|
19938
|
+
canvasHeight
|
|
19939
|
+
);
|
|
19925
19940
|
this.ctx.save();
|
|
19926
19941
|
if (overlay.opacity !== void 0) {
|
|
19927
19942
|
this.ctx.globalAlpha = Math.max(0, Math.min(1, overlay.opacity));
|
|
@@ -20253,22 +20268,26 @@ class ScrollingImageRenderer extends Canvas2DRendererBase {
|
|
|
20253
20268
|
let isOffScreen = false;
|
|
20254
20269
|
const buffer2 = 1;
|
|
20255
20270
|
switch (direction) {
|
|
20256
|
-
case "left":
|
|
20271
|
+
case "left": {
|
|
20257
20272
|
const xPosLeft = width - this.position;
|
|
20258
20273
|
isOffScreen = xPosLeft < -drawWidth - buffer2;
|
|
20259
20274
|
break;
|
|
20260
|
-
|
|
20275
|
+
}
|
|
20276
|
+
case "right": {
|
|
20261
20277
|
const xPosRight = -drawWidth + this.position;
|
|
20262
20278
|
isOffScreen = xPosRight > width + buffer2;
|
|
20263
20279
|
break;
|
|
20264
|
-
|
|
20280
|
+
}
|
|
20281
|
+
case "up": {
|
|
20265
20282
|
const yPosUp = height - this.position;
|
|
20266
20283
|
isOffScreen = yPosUp < -drawHeight - buffer2;
|
|
20267
20284
|
break;
|
|
20268
|
-
|
|
20285
|
+
}
|
|
20286
|
+
case "down": {
|
|
20269
20287
|
const yPosDown = -drawHeight + this.position;
|
|
20270
20288
|
isOffScreen = yPosDown > height + buffer2;
|
|
20271
20289
|
break;
|
|
20290
|
+
}
|
|
20272
20291
|
}
|
|
20273
20292
|
if (isOffScreen) {
|
|
20274
20293
|
if (this.loopConfig === false || typeof this.loopConfig === "number" && this.loopConfig === 1) {
|
|
@@ -20324,7 +20343,7 @@ class ScrollingImageRenderer extends Canvas2DRendererBase {
|
|
|
20324
20343
|
return svgContent;
|
|
20325
20344
|
}
|
|
20326
20345
|
const newColor = toRgbString(this.colorOverride);
|
|
20327
|
-
|
|
20346
|
+
const processedSvg = svgContent.replace(/fill\s*=\s*["'][^"']*["']/gi, `fill="${newColor}"`).replace(/fill\s*:\s*[^;"]*/gi, `fill:${newColor}`).replace(/stroke\s*=\s*["'][^"']*["']/gi, `stroke="${newColor}"`).replace(/stroke\s*:\s*[^;"]*/gi, `stroke:${newColor}`);
|
|
20328
20347
|
return processedSvg;
|
|
20329
20348
|
}
|
|
20330
20349
|
dispose() {
|
|
@@ -20468,7 +20487,7 @@ class ScrollingTextRenderer extends Canvas2DRendererBase {
|
|
|
20468
20487
|
this.ctx.fillStyle = this.textColor;
|
|
20469
20488
|
this.ctx.textBaseline = "top";
|
|
20470
20489
|
const totalTextHeight = this.textHeight;
|
|
20471
|
-
|
|
20490
|
+
const startY = (height - totalTextHeight) / 2;
|
|
20472
20491
|
for (let i = 0; i < this.lines.length; i++) {
|
|
20473
20492
|
const line = this.lines[i];
|
|
20474
20493
|
const lineWidth = this.lineWidths[i];
|
|
@@ -20584,22 +20603,26 @@ class ScrollingTextRenderer extends Canvas2DRendererBase {
|
|
|
20584
20603
|
let isOffScreen = false;
|
|
20585
20604
|
const buffer2 = 1;
|
|
20586
20605
|
switch (direction) {
|
|
20587
|
-
case "left":
|
|
20606
|
+
case "left": {
|
|
20588
20607
|
const xPosLeft = width - this.position;
|
|
20589
20608
|
isOffScreen = xPosLeft < -this.textWidth - buffer2;
|
|
20590
20609
|
break;
|
|
20591
|
-
|
|
20610
|
+
}
|
|
20611
|
+
case "right": {
|
|
20592
20612
|
const xPosRight = -this.textWidth + this.position;
|
|
20593
20613
|
isOffScreen = xPosRight > width + buffer2;
|
|
20594
20614
|
break;
|
|
20595
|
-
|
|
20615
|
+
}
|
|
20616
|
+
case "up": {
|
|
20596
20617
|
const yPosUp = height - this.position;
|
|
20597
20618
|
isOffScreen = yPosUp < -this.textHeight - buffer2;
|
|
20598
20619
|
break;
|
|
20599
|
-
|
|
20620
|
+
}
|
|
20621
|
+
case "down": {
|
|
20600
20622
|
const yPosDown = -this.textHeight + this.position;
|
|
20601
20623
|
isOffScreen = yPosDown > height + buffer2;
|
|
20602
20624
|
break;
|
|
20625
|
+
}
|
|
20603
20626
|
}
|
|
20604
20627
|
if (isOffScreen) {
|
|
20605
20628
|
if (this.loopConfig === false || typeof this.loopConfig === "number" && this.loopConfig === 1) {
|
|
@@ -20701,7 +20724,10 @@ class SequenceRenderer {
|
|
|
20701
20724
|
}
|
|
20702
20725
|
}
|
|
20703
20726
|
} catch (error) {
|
|
20704
|
-
console.error(
|
|
20727
|
+
console.error(
|
|
20728
|
+
`Failed to create renderer for pattern "${patternId}":`,
|
|
20729
|
+
error
|
|
20730
|
+
);
|
|
20705
20731
|
this.moveToNextPattern();
|
|
20706
20732
|
}
|
|
20707
20733
|
}
|
|
@@ -21087,7 +21113,10 @@ let CanvasDispatcherModelImpl = class {
|
|
|
21087
21113
|
const patternData = this._patterns.get(pattern);
|
|
21088
21114
|
const mode = patternData.type;
|
|
21089
21115
|
const requestData = req.body || {};
|
|
21090
|
-
this.data = {
|
|
21116
|
+
this.data = {
|
|
21117
|
+
...patternData.data,
|
|
21118
|
+
...requestData
|
|
21119
|
+
};
|
|
21091
21120
|
const rendererData = mode === "sequence" ? { ...this.data, patternStore: this._patterns } : this.data;
|
|
21092
21121
|
rendererModel.renderer = getRenderer({
|
|
21093
21122
|
mode,
|
|
@@ -21526,7 +21555,7 @@ const getKosConnectionId = () => {
|
|
|
21526
21555
|
const params2 = getQueryParams();
|
|
21527
21556
|
const connId = params2?.connId;
|
|
21528
21557
|
const result = connId || window?.kosBridge?.("connId");
|
|
21529
|
-
KosLog.
|
|
21558
|
+
KosLog.debug(`getKosConnectionId: ${result}`);
|
|
21530
21559
|
return result;
|
|
21531
21560
|
};
|
|
21532
21561
|
const { URL: URL$4 } = resolveServiceUrl();
|
|
@@ -22872,14 +22901,14 @@ const updateRegion = async (region) => {
|
|
|
22872
22901
|
regionInfo.updateProperty(region);
|
|
22873
22902
|
};
|
|
22874
22903
|
async function getKosServiceApi() {
|
|
22875
|
-
const { default: API } = await Promise.resolve().then(() => service$
|
|
22904
|
+
const { default: API } = await Promise.resolve().then(() => service$8);
|
|
22876
22905
|
return API;
|
|
22877
22906
|
}
|
|
22878
22907
|
function kosServiceRequest$7(params2) {
|
|
22879
22908
|
return kosServiceRequest$9(params2);
|
|
22880
22909
|
}
|
|
22881
22910
|
const api$7 = createClient();
|
|
22882
|
-
const service$
|
|
22911
|
+
const service$7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
22883
22912
|
__proto__: null,
|
|
22884
22913
|
api: api$7,
|
|
22885
22914
|
default: api$7,
|
|
@@ -22889,7 +22918,7 @@ function kosServiceRequest$6(params2) {
|
|
|
22889
22918
|
return kosServiceRequest$9(params2);
|
|
22890
22919
|
}
|
|
22891
22920
|
const api$6 = createClient();
|
|
22892
|
-
const service$
|
|
22921
|
+
const service$6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
22893
22922
|
__proto__: null,
|
|
22894
22923
|
api: api$6,
|
|
22895
22924
|
default: api$6,
|
|
@@ -22899,7 +22928,7 @@ function kosServiceRequest$5(params2) {
|
|
|
22899
22928
|
return kosServiceRequest$9(params2);
|
|
22900
22929
|
}
|
|
22901
22930
|
const api$5 = createClient();
|
|
22902
|
-
const
|
|
22931
|
+
const service$5 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
22903
22932
|
__proto__: null,
|
|
22904
22933
|
api: api$5,
|
|
22905
22934
|
default: api$5,
|
|
@@ -23713,10 +23742,6 @@ GpioChipModelImpl = __decorateClass$2([
|
|
|
23713
23742
|
kosLoggerAware()
|
|
23714
23743
|
], GpioChipModelImpl);
|
|
23715
23744
|
const GpioChip = GpioChipModelImpl.Registration;
|
|
23716
|
-
KosLog.createLogger({
|
|
23717
|
-
name: "gpio-chip-container-service",
|
|
23718
|
-
group: "Services"
|
|
23719
|
-
});
|
|
23720
23745
|
const GPIO_CHIP_PATH = "/api/kos/gpio/chips";
|
|
23721
23746
|
const GPIO_PIN_PATH = "/api/kos/gpio/pins";
|
|
23722
23747
|
const gpioServiceRequest = kosServiceRequest$5;
|
|
@@ -23840,9 +23865,11 @@ __decorateClass$1([
|
|
|
23840
23865
|
defaultValue: []
|
|
23841
23866
|
},
|
|
23842
23867
|
lifecycle: DependencyLifecycle.INIT,
|
|
23843
|
-
requestOptions: (model) =>
|
|
23844
|
-
|
|
23845
|
-
|
|
23868
|
+
requestOptions: (model) => {
|
|
23869
|
+
return {
|
|
23870
|
+
destinationAddress: model.destinationAddress
|
|
23871
|
+
};
|
|
23872
|
+
}
|
|
23846
23873
|
})
|
|
23847
23874
|
], GpioChipContainerModelImpl.prototype, "handleGpioChipInit", 1);
|
|
23848
23875
|
GpioChipContainerModelImpl = __decorateClass$1([
|
|
@@ -24230,10 +24257,9 @@ const initKosProvider = (registration = { models: {}, preloadModels: [] }, alias
|
|
|
24230
24257
|
disposer();
|
|
24231
24258
|
};
|
|
24232
24259
|
}, [kosCore]);
|
|
24233
|
-
const value = React.useMemo(
|
|
24234
|
-
|
|
24235
|
-
|
|
24236
|
-
);
|
|
24260
|
+
const value = React.useMemo(() => {
|
|
24261
|
+
return { kosCore, online };
|
|
24262
|
+
}, [kosCore, online]);
|
|
24237
24263
|
return /* @__PURE__ */ jsxRuntime.jsx(KosContext.Provider, { value, children });
|
|
24238
24264
|
};
|
|
24239
24265
|
return { KosCoreContextProvider: mobxReactLite.observer(KosCoreContextProvider) };
|
|
@@ -24292,10 +24318,7 @@ const ReloadOnDisconnectPolicy = ({
|
|
|
24292
24318
|
try {
|
|
24293
24319
|
onBeforeReload?.(info);
|
|
24294
24320
|
} catch (err) {
|
|
24295
|
-
KosLog.error(
|
|
24296
|
-
"ReloadOnDisconnectPolicy: onBeforeReload threw",
|
|
24297
|
-
err
|
|
24298
|
-
);
|
|
24321
|
+
KosLog.error("ReloadOnDisconnectPolicy: onBeforeReload threw", err);
|
|
24299
24322
|
}
|
|
24300
24323
|
reloadFn();
|
|
24301
24324
|
}, graceMs);
|
|
@@ -24477,7 +24500,7 @@ function useSuspenseData$1(key, fetcher) {
|
|
|
24477
24500
|
return data;
|
|
24478
24501
|
}
|
|
24479
24502
|
async function fetchModel$1(kosCore, modelOptions) {
|
|
24480
|
-
const { modelId, factory, modelType, options
|
|
24503
|
+
const { modelId, factory, modelType, options } = modelOptions;
|
|
24481
24504
|
let retryCount = 0;
|
|
24482
24505
|
await kosCore.whenReady();
|
|
24483
24506
|
let _model;
|
|
@@ -24818,7 +24841,11 @@ function renderDecodedPreview({
|
|
|
24818
24841
|
pixelSize
|
|
24819
24842
|
}) {
|
|
24820
24843
|
const decode = decodeBase64RGB(dataString, width, height);
|
|
24821
|
-
const img = new ImageData(
|
|
24844
|
+
const img = new ImageData(
|
|
24845
|
+
decode,
|
|
24846
|
+
width,
|
|
24847
|
+
height
|
|
24848
|
+
);
|
|
24822
24849
|
const tempCanvas = document.createElement("canvas");
|
|
24823
24850
|
tempCanvas.width = width;
|
|
24824
24851
|
tempCanvas.height = height;
|
|
@@ -26670,9 +26697,9 @@ exports.KOS_EXECUTION_CONTEXT = KOS_EXECUTION_CONTEXT;
|
|
|
26670
26697
|
exports.KOS_MODEL_ID = KOS_MODEL_ID;
|
|
26671
26698
|
exports.KOS_RECOVERING_SESSION_KEY = KOS_RECOVERING_SESSION_KEY;
|
|
26672
26699
|
exports.KOS_SERVICE = service$4;
|
|
26673
|
-
exports.KOS_SERVICE_1_6_5 = service$
|
|
26674
|
-
exports.KOS_SERVICE_1_8_1 = service$
|
|
26675
|
-
exports.KOS_SERVICE_1_9_X =
|
|
26700
|
+
exports.KOS_SERVICE_1_6_5 = service$7;
|
|
26701
|
+
exports.KOS_SERVICE_1_8_1 = service$6;
|
|
26702
|
+
exports.KOS_SERVICE_1_9_X = service$5;
|
|
26676
26703
|
exports.KeyValue = KeyValue;
|
|
26677
26704
|
exports.KeyValueServices = index$c;
|
|
26678
26705
|
exports.Kos = Kos;
|
|
@@ -26839,7 +26866,6 @@ exports.buildFuture = buildFuture;
|
|
|
26839
26866
|
exports.buildFutureModel = buildFutureModel$1;
|
|
26840
26867
|
exports.cancelFuture = cancelFuture;
|
|
26841
26868
|
exports.checkAppsStarted = checkAppsStarted;
|
|
26842
|
-
exports.checkOrgAuthorization = checkOrgAuthorization;
|
|
26843
26869
|
exports.checkWildcardPattern = checkWildcardPattern;
|
|
26844
26870
|
exports.clearAllServiceResponses = clearAllServiceResponses;
|
|
26845
26871
|
exports.clearPath = clearPath;
|
|
@@ -26916,7 +26942,6 @@ exports.getQueryParams = getQueryParams;
|
|
|
26916
26942
|
exports.getServiceResponse = getServiceResponse;
|
|
26917
26943
|
exports.getStartedApps = getStartedApps;
|
|
26918
26944
|
exports.getTranslations = getTranslations;
|
|
26919
|
-
exports.getWhitelistedOrgs = getWhitelistedOrgs;
|
|
26920
26945
|
exports.getYearsArray = getYearsArray;
|
|
26921
26946
|
exports.handleServiceRequestError = handleServiceRequestError;
|
|
26922
26947
|
exports.hasCachedResponse = hasCachedResponse;
|