element-vir 9.0.1 → 9.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.
@@ -6,4 +6,5 @@ export type NonEmptyString<T> = T extends '' ? never : T;
6
6
  * testing packages.
7
7
  */
8
8
  export declare function ensureInstanceOf<T>(value: unknown, constructor: new (...args: any) => T, message?: string): asserts value is T;
9
+ export type PickAndBlockOthers<OriginalObject, PickKeys extends keyof OriginalObject> = Pick<OriginalObject, PickKeys> & Partial<Record<Exclude<keyof OriginalObject, PickKeys>, never>>;
9
10
  //# sourceMappingURL=type.d.ts.map
@@ -1,35 +1,26 @@
1
1
  import { UnPromise } from '@augment-vir/common';
2
2
  import { JsonValue, Promisable } from 'type-fest';
3
+ import { PickAndBlockOthers } from '../../augments/type';
3
4
  import { PropertyInitMapBase } from './element-properties';
4
5
  export type AsyncState<ValueGeneric> = Error | Promisable<UnPromise<ValueGeneric>>;
5
- export type AsyncStateSetValue<ValueGeneric> = {
6
+ type AllSetValueProperties<ValueGeneric> = {
7
+ /** Set a new value directly without using any promises. */
8
+ resolvedValue: UnPromise<ValueGeneric>;
6
9
  createPromise: () => Promise<UnPromise<ValueGeneric>>;
7
10
  /**
8
11
  * When trigger changes (according to deep equality checking through JSON stringify), the
9
12
  * createPromise callback will be called and the element's state will be updated again.
10
13
  * Otherwise, the createPromise callback will only be called the first time.
11
14
  *
12
- * Set this to undefined to disabled automatic updating. Meaning, createPromise will only
13
- * be called the first time.
15
+ * Set this to undefined to disabled automatic updating. Meaning, createPromise will only be
16
+ * called the first time.
14
17
  */
15
18
  trigger: JsonValue | Readonly<JsonValue> | undefined;
16
- newPromise?: never;
17
- forceUpdate?: never;
18
- } | {
19
- createPromise?: never;
20
- trigger?: never;
21
- forceUpdate?: never;
22
19
  newPromise: Promise<UnPromise<ValueGeneric>>;
23
- } | {
24
- createPromise?: never;
25
- trigger?: never;
26
- newPromise?: never;
27
- /**
28
- * Clear the current value and trigger createPromise to get called again on the next
29
- * render.
30
- */
20
+ /** Clear the current value and trigger createPromise to get called again on the next render. */
31
21
  forceUpdate: true;
32
22
  };
23
+ export type AsyncStateSetValue<ValueGeneric> = PickAndBlockOthers<AllSetValueProperties<ValueGeneric>, 'createPromise' | 'trigger'> | PickAndBlockOthers<AllSetValueProperties<ValueGeneric>, 'newPromise'> | PickAndBlockOthers<AllSetValueProperties<ValueGeneric>, 'forceUpdate'> | PickAndBlockOthers<AllSetValueProperties<ValueGeneric>, 'resolvedValue'>;
33
24
  export type MaybeAsyncStateToSync<PropertyMapInit extends PropertyInitMapBase> = {
34
25
  [Prop in keyof PropertyMapInit]: PropertyMapInit[Prop] extends AsyncStateHandler<infer ValueGeneric> | AsyncStateInit<infer ValueGeneric> ? AsyncState<ValueGeneric> : PropertyMapInit[Prop];
35
26
  };
@@ -51,4 +42,5 @@ export declare class AsyncStateInit<ValueGeneric> {
51
42
  constructor(initialValue?: Promise<UnPromise<ValueGeneric>> | undefined);
52
43
  }
53
44
  export declare function asyncState<ValueGeneric>(initialValue?: Promise<UnPromise<ValueGeneric>> | undefined): AsyncStateInit<ValueGeneric>;
45
+ export {};
54
46
  //# sourceMappingURL=async-state.d.ts.map
@@ -9,7 +9,7 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
10
10
  return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
11
11
  };
12
- var _AsyncStateHandler_instances, _AsyncStateHandler_lastTrigger, _AsyncStateHandler_resolutionValue, _AsyncStateHandler_rejectionError, _AsyncStateHandler_listeners, _AsyncStateHandler_lastSetPromise, _AsyncStateHandler_waitingForValuePromise, _AsyncStateHandler_fireListeners, _AsyncStateHandler_setPromise;
12
+ var _AsyncStateHandler_instances, _AsyncStateHandler_lastTrigger, _AsyncStateHandler_resolutionValue, _AsyncStateHandler_rejectionError, _AsyncStateHandler_listeners, _AsyncStateHandler_lastSetPromise, _AsyncStateHandler_waitingForValuePromise, _AsyncStateHandler_fireListeners, _AsyncStateHandler_setPromise, _AsyncStateHandler_resolveValue;
13
13
  import { areJsonEqual, createDeferredPromiseWrapper, ensureError, filterObject, mapObjectValues, } from '@augment-vir/common';
14
14
  export function toAsyncStateHandlerMap(propertyInitMap) {
15
15
  if (!propertyInitMap) {
@@ -52,6 +52,9 @@ export class AsyncStateHandler {
52
52
  // force a re-render
53
53
  __classPrivateFieldGet(this, _AsyncStateHandler_instances, "m", _AsyncStateHandler_fireListeners).call(this);
54
54
  }
55
+ else if ('resolvedValue' in setInputs) {
56
+ __classPrivateFieldGet(this, _AsyncStateHandler_instances, "m", _AsyncStateHandler_resolveValue).call(this, setInputs.resolvedValue);
57
+ }
55
58
  else {
56
59
  if (setInputs.forceUpdate) {
57
60
  __classPrivateFieldSet(this, _AsyncStateHandler_lastTrigger, notSetSymbol, "f");
@@ -93,6 +96,8 @@ _AsyncStateHandler_lastTrigger = new WeakMap(), _AsyncStateHandler_resolutionVal
93
96
  // abort setting the promise if we already have set this promise
94
97
  return;
95
98
  }
99
+ __classPrivateFieldSet(this, _AsyncStateHandler_resolutionValue, undefined, "f");
100
+ __classPrivateFieldSet(this, _AsyncStateHandler_rejectionError, undefined, "f");
96
101
  __classPrivateFieldSet(this, _AsyncStateHandler_lastSetPromise, newPromise, "f");
97
102
  if (__classPrivateFieldGet(this, _AsyncStateHandler_waitingForValuePromise, "f").isSettled()) {
98
103
  __classPrivateFieldSet(this, _AsyncStateHandler_waitingForValuePromise, createDeferredPromiseWrapper(), "f");
@@ -101,10 +106,7 @@ _AsyncStateHandler_lastTrigger = new WeakMap(), _AsyncStateHandler_resolutionVal
101
106
  .then((value) => {
102
107
  // make sure we're still actually waiting for this promise
103
108
  if (__classPrivateFieldGet(this, _AsyncStateHandler_lastSetPromise, "f") === newPromise) {
104
- __classPrivateFieldSet(this, _AsyncStateHandler_rejectionError, undefined, "f");
105
- __classPrivateFieldSet(this, _AsyncStateHandler_resolutionValue, value, "f");
106
- __classPrivateFieldGet(this, _AsyncStateHandler_waitingForValuePromise, "f").resolve(value);
107
- __classPrivateFieldGet(this, _AsyncStateHandler_instances, "m", _AsyncStateHandler_fireListeners).call(this);
109
+ __classPrivateFieldGet(this, _AsyncStateHandler_instances, "m", _AsyncStateHandler_resolveValue).call(this, value);
108
110
  }
109
111
  })
110
112
  .catch((reason) => {
@@ -121,6 +123,16 @@ _AsyncStateHandler_lastTrigger = new WeakMap(), _AsyncStateHandler_resolutionVal
121
123
  __classPrivateFieldGet(this, _AsyncStateHandler_instances, "m", _AsyncStateHandler_fireListeners).call(this);
122
124
  }
123
125
  });
126
+ }, _AsyncStateHandler_resolveValue = function _AsyncStateHandler_resolveValue(value) {
127
+ if (value !== __classPrivateFieldGet(this, _AsyncStateHandler_resolutionValue, "f")) {
128
+ __classPrivateFieldSet(this, _AsyncStateHandler_rejectionError, undefined, "f");
129
+ __classPrivateFieldSet(this, _AsyncStateHandler_resolutionValue, value, "f");
130
+ if (__classPrivateFieldGet(this, _AsyncStateHandler_waitingForValuePromise, "f").isSettled()) {
131
+ __classPrivateFieldSet(this, _AsyncStateHandler_waitingForValuePromise, createDeferredPromiseWrapper(), "f");
132
+ }
133
+ __classPrivateFieldGet(this, _AsyncStateHandler_waitingForValuePromise, "f").resolve(value);
134
+ __classPrivateFieldGet(this, _AsyncStateHandler_instances, "m", _AsyncStateHandler_fireListeners).call(this);
135
+ }
124
136
  };
125
137
  export class AsyncStateInit {
126
138
  constructor(initialValue) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "element-vir",
3
- "version": "9.0.1",
3
+ "version": "9.1.1",
4
4
  "keywords": [
5
5
  "custom",
6
6
  "web",