@kosdev-code/kos-ui-sdk 0.1.0-next.807 → 0.1.0-next.808
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/core/util/kos-model-utils.d.ts +43 -0
- package/core/util/kos-model-utils.d.ts.map +1 -1
- package/index.cjs +24 -0
- package/index.cjs.map +1 -1
- package/index.js +24 -0
- package/index.js.map +1 -1
- package/package.json +3 -3
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { IKosDataModel, IKosModel } from '../core/kosModel';
|
|
2
|
+
import { KosModelState } from '../core/lifecycle';
|
|
2
3
|
/**
|
|
3
4
|
* Asynchronously destroys a KOS data model.
|
|
4
5
|
*
|
|
@@ -143,4 +144,46 @@ export declare const isKosModel: <T extends IKosDataModel>(type: string) => (mod
|
|
|
143
144
|
* @kosApiLevel 2
|
|
144
145
|
*/
|
|
145
146
|
export declare const isKosModelReady: (model: IKosDataModel) => boolean;
|
|
147
|
+
/**
|
|
148
|
+
* An observable, read-only view of a model's activation lifecycle.
|
|
149
|
+
*
|
|
150
|
+
* Models that fetch lazily do so in `activate()`, so activation state — not
|
|
151
|
+
* `loaded`, which tracks the `load()` lifecycle — is what tells a consumer
|
|
152
|
+
* whether that fetch has settled and whether it succeeded. Exposing just this
|
|
153
|
+
* lets a view react to activation without taking a dependency on the whole
|
|
154
|
+
* {@link IKosModel}.
|
|
155
|
+
*/
|
|
156
|
+
export interface KosModelActivationState {
|
|
157
|
+
/** The model's current activation state. */
|
|
158
|
+
readonly activeStatus: KosModelState;
|
|
159
|
+
/** Activation is in flight — nothing conclusive to render yet. */
|
|
160
|
+
readonly isActivating: boolean;
|
|
161
|
+
/** Activation completed; the model's activate() work is done. */
|
|
162
|
+
readonly isActive: boolean;
|
|
163
|
+
/** Activation threw — the model's data is absent, not empty. */
|
|
164
|
+
readonly isFailed: boolean;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Retrieves an observable view of a model's activation state.
|
|
168
|
+
*
|
|
169
|
+
* Every member is a getter, so reads happen at access time and stay tracked —
|
|
170
|
+
* call this once and read its properties inside a `kosComponent` (or any MobX
|
|
171
|
+
* reaction) to re-render as the model activates, succeeds, or fails.
|
|
172
|
+
*
|
|
173
|
+
* @param model - The KOS data model to observe.
|
|
174
|
+
* @returns The activation view, or `undefined` when the model has no wrapper
|
|
175
|
+
* yet (not created, or already destroyed).
|
|
176
|
+
*
|
|
177
|
+
* @example Distinguishing "still loading" from "empty" from "failed"
|
|
178
|
+
* ```tsx
|
|
179
|
+
* const activation = getKosModelActivationState(container);
|
|
180
|
+
* if (!activation || activation.isActivating) return <Blank />;
|
|
181
|
+
* if (activation.isFailed) return <LoadError />;
|
|
182
|
+
* return <Versions items={container.items} />;
|
|
183
|
+
* ```
|
|
184
|
+
*
|
|
185
|
+
* @kosService core.utils
|
|
186
|
+
* @kosApiLevel 15
|
|
187
|
+
*/
|
|
188
|
+
export declare const getKosModelActivationState: (model: IKosDataModel | undefined) => KosModelActivationState | undefined;
|
|
146
189
|
//# sourceMappingURL=kos-model-utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"kos-model-utils.d.ts","sourceRoot":"","sources":["../../../../../packages/kos-ui-sdk/src/core/util/kos-model-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"kos-model-utils.d.ts","sourceRoot":"","sources":["../../../../../packages/kos-ui-sdk/src/core/util/kos-model-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAkB,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAIlE;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAU,OAAO,aAAa,kBAGzD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAU,WAAW,aAAa,kBAS5D,CAAC;AACF;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,GAAU,OAAO,aAAa,kBAevD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,eAAe,GAAU,SAAS,MAAM,gCAQpD,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,GAAU,CAAC,SAAS,aAAa,GAAG,aAAa,EACvE,SAAS,MAAM;WAQqB,CAAC;;EACtC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,GAAI,CAAC,SAAS,aAAa,GAAG,aAAa,EACrE,SAAS,MAAM;WAOqB,CAAC;;CACtC,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,UAAU,GAAI,CAAC,SAAS,aAAa,EAChD,WAAW,MAAM,EACjB,WAAW;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,KASZ,CAAC,EACrB,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,SAAS,GAAI,CAAC,SAAS,aAAa,EAC/C,WAAW,MAAM,EACjB,WAAW;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,MACU,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB,GAAI,CAAC,SAAS,aAAa,EAC1D,OAAO,aAAa,EACpB,MAAM,MAAM,KAWwB,CACrC,CAAC;AAEF;;;;;;;;;GASG;AACH,eAAO,MAAM,wBAAwB,GAAI,OAAO,aAAa,oBAc5D,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,uBAAuB,GAAI,SAAS,MAAM,mEAYtD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,mBAAmB,GAAI,CAAC,SAAS,aAAa,EACzD,SAAS,MAAM,EACf,UAAU,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,KAC9B,SAAS,GAAG,SAWd,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,UAAU,GACpB,CAAC,SAAS,aAAa,EAAE,MAAM,MAAM,MACrC,OAAO,GAAG,KAAG,KAAK,IAAI,CAC4B,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,eAAe,GAAI,OAAO,aAAa,YAMnD,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC;IACrC,kEAAkE;IAClE,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,iEAAiE;IACjE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,0BAA0B,GACrC,OAAO,aAAa,GAAG,SAAS,KAC/B,uBAAuB,GAAG,SAuB5B,CAAC"}
|
package/index.cjs
CHANGED
|
@@ -2915,6 +2915,29 @@ const isKosModelReady = (model) => {
|
|
|
2915
2915
|
}
|
|
2916
2916
|
return kosModel2.isReady();
|
|
2917
2917
|
};
|
|
2918
|
+
const getKosModelActivationState = (model) => {
|
|
2919
|
+
if (!model?.id) {
|
|
2920
|
+
return void 0;
|
|
2921
|
+
}
|
|
2922
|
+
const kosModel2 = KosCore.getInstance().modelManager.getModelById(model.id);
|
|
2923
|
+
if (!kosModel2) {
|
|
2924
|
+
return void 0;
|
|
2925
|
+
}
|
|
2926
|
+
return {
|
|
2927
|
+
get activeStatus() {
|
|
2928
|
+
return kosModel2.activeStatus;
|
|
2929
|
+
},
|
|
2930
|
+
get isActivating() {
|
|
2931
|
+
return kosModel2.activeStatus === KosModelState.ACTIVATING;
|
|
2932
|
+
},
|
|
2933
|
+
get isActive() {
|
|
2934
|
+
return kosModel2.activeStatus === KosModelState.ACTIVE;
|
|
2935
|
+
},
|
|
2936
|
+
get isFailed() {
|
|
2937
|
+
return kosModel2.activeStatus === KosModelState.FAILED;
|
|
2938
|
+
}
|
|
2939
|
+
};
|
|
2940
|
+
};
|
|
2918
2941
|
const log$L = KosLog.createLogger({ name: "kos-model-factory" });
|
|
2919
2942
|
const KosModelFactory = {
|
|
2920
2943
|
byModelType: (modelType) => KosCore.getInstance().modelManager.getModelFactory(
|
|
@@ -27220,6 +27243,7 @@ exports.getKosConnectionId = getKosConnectionId;
|
|
|
27220
27243
|
exports.getKosLocalizationDescriptor = getKosLocalizationDescriptor;
|
|
27221
27244
|
exports.getKosMessageLogging = getKosMessageLogging;
|
|
27222
27245
|
exports.getKosModel = getKosModel$1;
|
|
27246
|
+
exports.getKosModelActivationState = getKosModelActivationState;
|
|
27223
27247
|
exports.getKosModelSync = getKosModelSync;
|
|
27224
27248
|
exports.getKosModelType = getKosModelType;
|
|
27225
27249
|
exports.getKosServiceApi = getKosServiceApi;
|