@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.
Files changed (76) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/esm/component-factory.spec.d.ts.map +1 -1
  3. package/esm/component-factory.spec.js +2 -2
  4. package/esm/component-factory.spec.js.map +1 -1
  5. package/esm/components/nested-hooks.js +2 -2
  6. package/esm/components/nested-hooks.js.map +1 -1
  7. package/esm/components/nested-hooks.spec.js +14 -14
  8. package/esm/components/nested-hooks.spec.js.map +1 -1
  9. package/esm/components/nested-navigate.js +1 -1
  10. package/esm/components/nested-navigate.js.map +1 -1
  11. package/esm/components/nested-navigate.spec.js +16 -16
  12. package/esm/components/nested-navigate.spec.js.map +1 -1
  13. package/esm/components/nested-replace.js +1 -1
  14. package/esm/components/nested-replace.js.map +1 -1
  15. package/esm/components/nested-replace.spec.js +6 -6
  16. package/esm/components/nested-replace.spec.js.map +1 -1
  17. package/esm/components/nested-route-link.js +1 -1
  18. package/esm/components/nested-route-link.js.map +1 -1
  19. package/esm/components/nested-route-link.spec.js +8 -8
  20. package/esm/components/nested-route-link.spec.js.map +1 -1
  21. package/esm/components/nested-router.js +3 -3
  22. package/esm/components/nested-router.js.map +1 -1
  23. package/esm/components/nested-router.spec.js +24 -24
  24. package/esm/components/nested-router.spec.js.map +1 -1
  25. package/esm/services/location-service.d.ts +39 -42
  26. package/esm/services/location-service.d.ts.map +1 -1
  27. package/esm/services/location-service.js +115 -134
  28. package/esm/services/location-service.js.map +1 -1
  29. package/esm/services/location-service.spec.js +32 -30
  30. package/esm/services/location-service.spec.js.map +1 -1
  31. package/esm/services/route-match-service.d.ts +3 -2
  32. package/esm/services/route-match-service.d.ts.map +1 -1
  33. package/esm/services/route-match-service.js +13 -22
  34. package/esm/services/route-match-service.js.map +1 -1
  35. package/esm/services/route-match-service.spec.js +40 -51
  36. package/esm/services/route-match-service.spec.js.map +1 -1
  37. package/esm/services/route-meta-utils.spec.js +3 -3
  38. package/esm/services/route-meta-utils.spec.js.map +1 -1
  39. package/esm/services/screen-service.d.ts +13 -72
  40. package/esm/services/screen-service.d.ts.map +1 -1
  41. package/esm/services/screen-service.js +45 -137
  42. package/esm/services/screen-service.js.map +1 -1
  43. package/esm/services/screen-service.spec.js +19 -18
  44. package/esm/services/screen-service.spec.js.map +1 -1
  45. package/esm/services/spatial-navigation-service.d.ts +17 -39
  46. package/esm/services/spatial-navigation-service.d.ts.map +1 -1
  47. package/esm/services/spatial-navigation-service.js +280 -313
  48. package/esm/services/spatial-navigation-service.js.map +1 -1
  49. package/esm/services/spatial-navigation-service.spec.js +163 -158
  50. package/esm/services/spatial-navigation-service.spec.js.map +1 -1
  51. package/esm/shade.d.ts +1 -1
  52. package/esm/shade.d.ts.map +1 -1
  53. package/esm/shade.js +10 -7
  54. package/esm/shade.js.map +1 -1
  55. package/package.json +5 -4
  56. package/src/component-factory.spec.tsx +3 -2
  57. package/src/components/nested-hooks.spec.ts +14 -14
  58. package/src/components/nested-hooks.ts +2 -2
  59. package/src/components/nested-navigate.spec.ts +17 -16
  60. package/src/components/nested-navigate.ts +1 -1
  61. package/src/components/nested-replace.spec.ts +7 -6
  62. package/src/components/nested-replace.ts +1 -1
  63. package/src/components/nested-route-link.spec.tsx +8 -8
  64. package/src/components/nested-route-link.tsx +1 -1
  65. package/src/components/nested-router.spec.tsx +24 -24
  66. package/src/components/nested-router.tsx +3 -3
  67. package/src/services/location-service.spec.ts +35 -31
  68. package/src/services/location-service.tsx +156 -122
  69. package/src/services/route-match-service.spec.ts +41 -32
  70. package/src/services/route-match-service.ts +17 -8
  71. package/src/services/route-meta-utils.spec.ts +3 -3
  72. package/src/services/screen-service.spec.ts +19 -18
  73. package/src/services/screen-service.ts +65 -110
  74. package/src/services/spatial-navigation-service.spec.ts +165 -160
  75. package/src/services/spatial-navigation-service.ts +299 -287
  76. package/src/shade.ts +11 -8
package/src/shade.ts CHANGED
@@ -1,5 +1,5 @@
1
- import type { Constructable } from '@furystack/inject'
2
- import { hasInjectorReference, Injector } from '@furystack/inject'
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, obesrvable, options) => {
169
+ useObservable: (key, observable, options) => {
170
170
  const onChange = options?.onChange || (() => this.updateComponent())
171
- return this.resourceManager.useObservable(key, obesrvable, onChange, options)
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.getInstance(LocationService).useSearchParam(key, initialValue),
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 = hasInjectorReference(this.props) && this.props.injector
420
- if (fromProps && fromProps instanceof Injector) {
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
- // Injector not set explicitly and not found on parents!
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