@furystack/shades 14.0.0 → 15.0.0
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/CHANGELOG.md +13 -0
- package/esm/component-factory.spec.d.ts.map +1 -1
- package/esm/component-factory.spec.js +2 -2
- package/esm/component-factory.spec.js.map +1 -1
- package/esm/components/nested-hooks.js +2 -2
- package/esm/components/nested-hooks.js.map +1 -1
- package/esm/components/nested-hooks.spec.js +14 -14
- package/esm/components/nested-hooks.spec.js.map +1 -1
- package/esm/components/nested-navigate.js +1 -1
- package/esm/components/nested-navigate.js.map +1 -1
- package/esm/components/nested-navigate.spec.js +16 -16
- package/esm/components/nested-navigate.spec.js.map +1 -1
- package/esm/components/nested-replace.js +1 -1
- package/esm/components/nested-replace.js.map +1 -1
- package/esm/components/nested-replace.spec.js +6 -6
- package/esm/components/nested-replace.spec.js.map +1 -1
- package/esm/components/nested-route-link.js +1 -1
- package/esm/components/nested-route-link.js.map +1 -1
- package/esm/components/nested-route-link.spec.js +8 -8
- package/esm/components/nested-route-link.spec.js.map +1 -1
- package/esm/components/nested-router.js +3 -3
- package/esm/components/nested-router.js.map +1 -1
- package/esm/components/nested-router.spec.js +24 -24
- package/esm/components/nested-router.spec.js.map +1 -1
- package/esm/services/location-service.d.ts +39 -42
- package/esm/services/location-service.d.ts.map +1 -1
- package/esm/services/location-service.js +115 -134
- package/esm/services/location-service.js.map +1 -1
- package/esm/services/location-service.spec.js +32 -30
- package/esm/services/location-service.spec.js.map +1 -1
- package/esm/services/route-match-service.d.ts +3 -2
- package/esm/services/route-match-service.d.ts.map +1 -1
- package/esm/services/route-match-service.js +13 -22
- package/esm/services/route-match-service.js.map +1 -1
- package/esm/services/route-match-service.spec.js +40 -51
- package/esm/services/route-match-service.spec.js.map +1 -1
- package/esm/services/route-meta-utils.spec.js +3 -3
- package/esm/services/route-meta-utils.spec.js.map +1 -1
- package/esm/services/screen-service.d.ts +13 -72
- package/esm/services/screen-service.d.ts.map +1 -1
- package/esm/services/screen-service.js +45 -137
- package/esm/services/screen-service.js.map +1 -1
- package/esm/services/screen-service.spec.js +19 -18
- package/esm/services/screen-service.spec.js.map +1 -1
- package/esm/services/spatial-navigation-service.d.ts +17 -39
- package/esm/services/spatial-navigation-service.d.ts.map +1 -1
- package/esm/services/spatial-navigation-service.js +280 -313
- package/esm/services/spatial-navigation-service.js.map +1 -1
- package/esm/services/spatial-navigation-service.spec.js +163 -158
- package/esm/services/spatial-navigation-service.spec.js.map +1 -1
- package/esm/shade.d.ts +1 -1
- package/esm/shade.d.ts.map +1 -1
- package/esm/shade.js +10 -7
- package/esm/shade.js.map +1 -1
- package/package.json +5 -4
- package/src/component-factory.spec.tsx +3 -2
- package/src/components/nested-hooks.spec.ts +14 -14
- package/src/components/nested-hooks.ts +2 -2
- package/src/components/nested-navigate.spec.ts +17 -16
- package/src/components/nested-navigate.ts +1 -1
- package/src/components/nested-replace.spec.ts +7 -6
- package/src/components/nested-replace.ts +1 -1
- package/src/components/nested-route-link.spec.tsx +8 -8
- package/src/components/nested-route-link.tsx +1 -1
- package/src/components/nested-router.spec.tsx +24 -24
- package/src/components/nested-router.tsx +3 -3
- package/src/services/location-service.spec.ts +35 -31
- package/src/services/location-service.tsx +156 -122
- package/src/services/route-match-service.spec.ts +41 -32
- package/src/services/route-match-service.ts +17 -8
- package/src/services/route-meta-utils.spec.ts +3 -3
- package/src/services/screen-service.spec.ts +19 -18
- package/src/services/screen-service.ts +65 -110
- package/src/services/spatial-navigation-service.spec.ts +165 -160
- package/src/services/spatial-navigation-service.ts +299 -287
- package/src/shade.ts +11 -8
package/src/shade.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { Constructable } from '@furystack/
|
|
2
|
-
import {
|
|
1
|
+
import type { Constructable } from '@furystack/core'
|
|
2
|
+
import { Injector } from '@furystack/inject'
|
|
3
3
|
import { ObservableValue } from '@furystack/utils'
|
|
4
4
|
import type { ChildrenList, CSSObject, PartialElement, RenderOptions } from './models/index.js'
|
|
5
5
|
import type { RefObject } from './models/render-options.js'
|
|
@@ -166,16 +166,16 @@ export const Shade = <TProps, TElementBase extends HTMLElement = HTMLElement>(
|
|
|
166
166
|
this._refs.set(key, refObject as unknown as RefObject<Element>)
|
|
167
167
|
return refObject as RefObject<T>
|
|
168
168
|
},
|
|
169
|
-
useObservable: (key,
|
|
169
|
+
useObservable: (key, observable, options) => {
|
|
170
170
|
const onChange = options?.onChange || (() => this.updateComponent())
|
|
171
|
-
return this.resourceManager.useObservable(key,
|
|
171
|
+
return this.resourceManager.useObservable(key, observable, onChange, options)
|
|
172
172
|
},
|
|
173
173
|
useState: (key, initialValue) =>
|
|
174
174
|
this.resourceManager.useState(key, initialValue, this.updateComponent.bind(this)),
|
|
175
175
|
useSearchState: (key, initialValue) =>
|
|
176
176
|
this.resourceManager.useObservable(
|
|
177
177
|
`useSearchState-${key}`,
|
|
178
|
-
this.injector.
|
|
178
|
+
this.injector.get(LocationService).useSearchParam(key, initialValue),
|
|
179
179
|
() => this.updateComponent(),
|
|
180
180
|
),
|
|
181
181
|
|
|
@@ -416,8 +416,8 @@ export const Shade = <TProps, TElementBase extends HTMLElement = HTMLElement>(
|
|
|
416
416
|
return this._injector
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
const fromProps =
|
|
420
|
-
if (fromProps
|
|
419
|
+
const fromProps = (this.props as { injector?: unknown } | undefined)?.injector
|
|
420
|
+
if (fromProps instanceof Injector) {
|
|
421
421
|
return fromProps
|
|
422
422
|
}
|
|
423
423
|
|
|
@@ -426,7 +426,10 @@ export const Shade = <TProps, TElementBase extends HTMLElement = HTMLElement>(
|
|
|
426
426
|
this._injector = fromParent
|
|
427
427
|
return fromParent
|
|
428
428
|
}
|
|
429
|
-
//
|
|
429
|
+
// Fallback for isolated components (tests and non-DI use cases) that
|
|
430
|
+
// never reach for any services. Components that do resolve tokens
|
|
431
|
+
// will fail loudly at resolution time, since this throwaway injector
|
|
432
|
+
// has no bindings.
|
|
430
433
|
return new Injector()
|
|
431
434
|
}
|
|
432
435
|
|