@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
@@ -50,27 +50,20 @@ var __disposeResources = (this && this.__disposeResources) || (function (Suppres
50
50
  var e = new Error(message);
51
51
  return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
52
52
  });
53
+ import { createInjector } from '@furystack/inject';
54
+ import { usingAsync } from '@furystack/utils';
53
55
  import { describe, expect, it, vi } from 'vitest';
54
56
  import { RouteMatchService } from './route-match-service.js';
55
57
  describe('RouteMatchService', () => {
56
- it('should start with an empty match chain', () => {
57
- const env_1 = { stack: [], error: void 0, hasError: false };
58
- try {
59
- const service = __addDisposableResource(env_1, new RouteMatchService(), false);
58
+ it('should start with an empty match chain', async () => {
59
+ await usingAsync(createInjector(), async (i) => {
60
+ const service = i.get(RouteMatchService);
60
61
  expect(service.currentMatchChain.getValue()).toEqual([]);
61
- }
62
- catch (e_1) {
63
- env_1.error = e_1;
64
- env_1.hasError = true;
65
- }
66
- finally {
67
- __disposeResources(env_1);
68
- }
62
+ });
69
63
  });
70
- it('should update the match chain', () => {
71
- const env_2 = { stack: [], error: void 0, hasError: false };
72
- try {
73
- const service = __addDisposableResource(env_2, new RouteMatchService(), false);
64
+ it('should update the match chain', async () => {
65
+ await usingAsync(createInjector(), async (i) => {
66
+ const service = i.get(RouteMatchService);
74
67
  const chain = [
75
68
  {
76
69
  route: { component: () => ({}) },
@@ -81,43 +74,39 @@ describe('RouteMatchService', () => {
81
74
  ];
82
75
  service.currentMatchChain.setValue(chain);
83
76
  expect(service.currentMatchChain.getValue()).toBe(chain);
84
- }
85
- catch (e_2) {
86
- env_2.error = e_2;
87
- env_2.hasError = true;
88
- }
89
- finally {
90
- __disposeResources(env_2);
91
- }
77
+ });
92
78
  });
93
- it('should notify subscribers on match chain change', () => {
94
- const env_3 = { stack: [], error: void 0, hasError: false };
95
- try {
96
- const service = __addDisposableResource(env_3, new RouteMatchService(), false);
97
- const listener = vi.fn();
98
- const _subscription = __addDisposableResource(env_3, service.currentMatchChain.subscribe(listener), false);
99
- const chain = [
100
- {
101
- route: { meta: { title: 'Home' }, component: () => ({}) },
102
- match: { path: '/', params: {} },
103
- query: null,
104
- hash: undefined,
105
- },
106
- ];
107
- service.currentMatchChain.setValue(chain);
108
- expect(listener).toHaveBeenCalledWith(chain);
109
- }
110
- catch (e_3) {
111
- env_3.error = e_3;
112
- env_3.hasError = true;
113
- }
114
- finally {
115
- __disposeResources(env_3);
116
- }
79
+ it('should notify subscribers on match chain change', async () => {
80
+ await usingAsync(createInjector(), async (i) => {
81
+ const env_1 = { stack: [], error: void 0, hasError: false };
82
+ try {
83
+ const service = i.get(RouteMatchService);
84
+ const listener = vi.fn();
85
+ const _subscription = __addDisposableResource(env_1, service.currentMatchChain.subscribe(listener), false);
86
+ const chain = [
87
+ {
88
+ route: { meta: { title: 'Home' }, component: () => ({}) },
89
+ match: { path: '/', params: {} },
90
+ query: null,
91
+ hash: undefined,
92
+ },
93
+ ];
94
+ service.currentMatchChain.setValue(chain);
95
+ expect(listener).toHaveBeenCalledWith(chain);
96
+ }
97
+ catch (e_1) {
98
+ env_1.error = e_1;
99
+ env_1.hasError = true;
100
+ }
101
+ finally {
102
+ __disposeResources(env_1);
103
+ }
104
+ });
117
105
  });
118
- it('should dispose the observable on service disposal', () => {
119
- const service = new RouteMatchService();
120
- service[Symbol.dispose]();
106
+ it('should dispose the observable on injector disposal', async () => {
107
+ const injector = createInjector();
108
+ const service = injector.get(RouteMatchService);
109
+ await injector[Symbol.asyncDispose]();
121
110
  expect(() => service.currentMatchChain.setValue([])).toThrow();
122
111
  });
123
112
  });
@@ -1 +1 @@
1
- {"version":3,"file":"route-match-service.spec.js","sourceRoot":"","sources":["../../src/services/route-match-service.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;;;YAChD,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;;;;;;;;;KACzD,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;;;YACvC,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;oBACrC,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,SAAS;iBAChB;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;;;;;;;;KACzD,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;;;YACzD,MAAM,OAAO,kCAAG,IAAI,iBAAiB,EAAE,QAAA,CAAA;YACvC,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;YACxB,MAAM,aAAa,kCAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAA,CAAA;YAEnE,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBACxE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;oBAChC,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,SAAS;iBAChB;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YAEzC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;;;;;;;;;KAC7C,CAAC,CAAA;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,OAAO,GAAG,IAAI,iBAAiB,EAAE,CAAA;QACvC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;QAEzB,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"route-match-service.spec.js","sourceRoot":"","sources":["../../src/services/route-match-service.spec.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAE5D,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,EAAE,CAAC,wCAAwC,EAAE,KAAK,IAAI,EAAE;QACtD,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YACxC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;QAC7C,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;YAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;YACxC,MAAM,KAAK,GAAsB;gBAC/B;oBACE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;oBAC/C,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE;oBACrC,KAAK,EAAE,IAAI;oBACX,IAAI,EAAE,SAAS;iBAChB;aACF,CAAA;YACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;YACzC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,iDAAiD,EAAE,KAAK,IAAI,EAAE;QAC/D,MAAM,UAAU,CAAC,cAAc,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;;;gBAC7C,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;gBACxC,MAAM,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAA;gBACxB,MAAM,aAAa,kCAAG,OAAO,CAAC,iBAAiB,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAA,CAAA;gBAEnE,MAAM,KAAK,GAAsB;oBAC/B;wBACE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAgB,EAAE;wBACxE,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;wBAChC,KAAK,EAAE,IAAI;wBACX,IAAI,EAAE,SAAS;qBAChB;iBACF,CAAA;gBACD,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;gBAEzC,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAA;;;;;;;;;SAC7C,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAA;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC/C,MAAM,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAA;QAErC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAA;IAChE,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,8 +1,8 @@
1
- import { Injector } from '@furystack/inject';
1
+ import { createInjector, Injector } from '@furystack/inject';
2
2
  import { describe, expect, expectTypeOf, it } from 'vitest';
3
3
  import { buildDocumentTitle, extractNavTree, resolveRouteTitle, resolveRouteTitles, } from './route-meta-utils.js';
4
4
  describe('resolveRouteTitle', () => {
5
- const injector = new Injector();
5
+ const injector = createInjector();
6
6
  it('should return undefined when no meta is configured', async () => {
7
7
  const entry = {
8
8
  route: { component: () => ({}) },
@@ -75,7 +75,7 @@ describe('resolveRouteTitle', () => {
75
75
  });
76
76
  });
77
77
  describe('resolveRouteTitles', () => {
78
- const injector = new Injector();
78
+ const injector = createInjector();
79
79
  it('should resolve all titles in a mixed chain', async () => {
80
80
  const chain = [
81
81
  {
@@ -1 +1 @@
1
- {"version":3,"file":"route-meta-utils.spec.js","sourceRoot":"","sources":["../../src/services/route-meta-utils.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"route-meta-utils.spec.js","sourceRoot":"","sources":["../../src/services/route-meta-utils.spec.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { Token } from '@furystack/inject';
1
2
  import { ObservableValue } from '@furystack/utils';
2
3
  /**
3
4
  * Available screen size breakpoint identifiers, ordered from smallest to largest.
@@ -18,100 +19,40 @@ export type Breakpoint = {
18
19
  /**
19
20
  * Service for detecting and subscribing to screen size and orientation changes.
20
21
  *
21
- * This service provides reactive observables for responsive design decisions.
22
22
  * Use `screenSize.atLeast[size]` to check if the viewport is at least a certain size.
23
23
  *
24
24
  * **Breakpoint Thresholds:**
25
- * - `xs`: 0px+ (all sizes)
26
- * - `sm`: 600px+ (small tablets and up)
27
- * - `md`: 960px+ (tablets and up)
28
- * - `lg`: 1280px+ (desktops and up)
29
- * - `xl`: 1920px+ (large desktops)
25
+ * - `xs`: 0px+
26
+ * - `sm`: 600px+
27
+ * - `md`: 960px+
28
+ * - `lg`: 1280px+
29
+ * - `xl`: 1920px+
30
30
  *
31
31
  * @example
32
32
  * ```typescript
33
- * const screenService = injector.getInstance(ScreenService);
33
+ * const screenService = injector.get(ScreenService)
34
34
  *
35
- * // Check if screen is at least medium size
36
35
  * if (screenService.screenSize.atLeast.md.getValue()) {
37
- * // Show desktop layout
36
+ * // Desktop layout
38
37
  * }
39
38
  *
40
- * // Subscribe to size changes for responsive behavior
41
39
  * screenService.screenSize.atLeast.md.subscribe((isAtLeastMd) => {
42
- * if (isAtLeastMd) {
43
- * console.log('Desktop or tablet view');
44
- * } else {
45
- * console.log('Mobile view');
46
- * }
47
- * });
48
- *
49
- * // Get current breakpoint by checking from largest to smallest
50
- * const getCurrentBreakpoint = (): ScreenSize => {
51
- * if (screenService.screenSize.atLeast.xl.getValue()) return 'xl';
52
- * if (screenService.screenSize.atLeast.lg.getValue()) return 'lg';
53
- * if (screenService.screenSize.atLeast.md.getValue()) return 'md';
54
- * if (screenService.screenSize.atLeast.sm.getValue()) return 'sm';
55
- * return 'xs';
56
- * };
57
- *
58
- * // Subscribe to orientation changes
59
- * screenService.orientation.subscribe((orientation) => {
60
- * console.log(`Screen is now in ${orientation} mode`);
61
- * });
40
+ * // react to breakpoint changes
41
+ * })
62
42
  * ```
63
43
  */
64
- export declare class ScreenService implements Disposable {
65
- private getOrientation;
66
- /**
67
- * The definitions of the breakpoint thresholds in pixels.
68
- * Each breakpoint represents the minimum width for that size category.
69
- */
44
+ export interface ScreenService {
70
45
  readonly breakpoints: {
71
46
  [K in ScreenSize]: {
72
47
  minSize: number;
73
48
  };
74
49
  };
75
- /**
76
- * Cleans up event listeners when the service is disposed.
77
- */
78
- [Symbol.dispose](): void;
79
- /**
80
- * Observable values for checking if the screen is at least a certain size.
81
- *
82
- * Each observable emits `true` when the viewport width is >= the breakpoint threshold,
83
- * and `false` otherwise. Values update automatically on window resize.
84
- *
85
- * @example
86
- * ```typescript
87
- * // Hide sidebar on small screens
88
- * screenService.screenSize.atLeast.md.subscribe((isAtLeastMd) => {
89
- * sidebarVisible.setValue(isAtLeastMd);
90
- * });
91
- * ```
92
- */
93
50
  readonly screenSize: {
94
51
  atLeast: {
95
52
  [K in ScreenSize]: ObservableValue<boolean>;
96
53
  };
97
54
  };
98
- private screenSizeAtLeast;
99
- /**
100
- * Observable value for tracking the screen orientation.
101
- * Emits 'landscape' or 'portrait' based on the current viewport dimensions.
102
- *
103
- * @example
104
- * ```typescript
105
- * screenService.orientation.subscribe((orientation) => {
106
- * if (orientation === 'landscape') {
107
- * // Adjust layout for landscape mode
108
- * }
109
- * });
110
- * ```
111
- */
112
- orientation: ObservableValue<"landscape" | "portrait">;
113
- private onResizeListener;
114
- private refreshValues;
115
- constructor();
55
+ readonly orientation: ObservableValue<'landscape' | 'portrait'>;
116
56
  }
57
+ export declare const ScreenService: Token<ScreenService, 'singleton'>;
117
58
  //# sourceMappingURL=screen-service.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"screen-service.d.ts","sourceRoot":"","sources":["../../src/services/screen-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,WAAW,yCAA0C,CAAA;AAElE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,qBACa,aAAc,YAAW,UAAU;IAC9C,OAAO,CAAC,cAAc,CAA2F;IAEjH;;;OAGG;IACH,SAAgB,WAAW,EAAE;SAAG,CAAC,IAAI,UAAU,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE;KAAE,CAMtE;IAED;;OAEG;IACI,CAAC,MAAM,CAAC,OAAO,CAAC;IAQvB;;;;;;;;;;;;;OAaG;IACH,SAAgB,UAAU,EAAE;QAC1B,OAAO,EAAE;aAAG,CAAC,IAAI,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC;SAAE,CAAA;KACzD,CAQA;IAED,OAAO,CAAC,iBAAiB;IAIzB;;;;;;;;;;;;OAYG;IACI,WAAW,4CAAuE;IAEzF,OAAO,CAAC,gBAAgB,CAEvB;IAED,OAAO,CAAC,aAAa;;CAWtB"}
1
+ {"version":3,"file":"screen-service.d.ts","sourceRoot":"","sources":["../../src/services/screen-service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAE9C,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD;;GAEG;AACH,eAAO,MAAM,WAAW,yCAA0C,CAAA;AAElE;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,MAAM,UAAU,GAAG;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhF;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE;SAAG,CAAC,IAAI,UAAU,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE;KAAE,CAAA;IAChE,QAAQ,CAAC,UAAU,EAAE;QACnB,OAAO,EAAE;aAAG,CAAC,IAAI,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC;SAAE,CAAA;KACzD,CAAA;IACD,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC,WAAW,GAAG,UAAU,CAAC,CAAA;CAChE;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,WAAW,CAsD1D,CAAA"}
@@ -1,144 +1,52 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { Injectable } from '@furystack/inject';
1
+ import { defineService } from '@furystack/inject';
11
2
  import { ObservableValue } from '@furystack/utils';
12
3
  /**
13
4
  * Available screen size breakpoint identifiers, ordered from smallest to largest.
14
5
  */
15
6
  export const ScreenSizes = ['xs', 'sm', 'md', 'lg', 'xl'];
16
- /**
17
- * Service for detecting and subscribing to screen size and orientation changes.
18
- *
19
- * This service provides reactive observables for responsive design decisions.
20
- * Use `screenSize.atLeast[size]` to check if the viewport is at least a certain size.
21
- *
22
- * **Breakpoint Thresholds:**
23
- * - `xs`: 0px+ (all sizes)
24
- * - `sm`: 600px+ (small tablets and up)
25
- * - `md`: 960px+ (tablets and up)
26
- * - `lg`: 1280px+ (desktops and up)
27
- * - `xl`: 1920px+ (large desktops)
28
- *
29
- * @example
30
- * ```typescript
31
- * const screenService = injector.getInstance(ScreenService);
32
- *
33
- * // Check if screen is at least medium size
34
- * if (screenService.screenSize.atLeast.md.getValue()) {
35
- * // Show desktop layout
36
- * }
37
- *
38
- * // Subscribe to size changes for responsive behavior
39
- * screenService.screenSize.atLeast.md.subscribe((isAtLeastMd) => {
40
- * if (isAtLeastMd) {
41
- * console.log('Desktop or tablet view');
42
- * } else {
43
- * console.log('Mobile view');
44
- * }
45
- * });
46
- *
47
- * // Get current breakpoint by checking from largest to smallest
48
- * const getCurrentBreakpoint = (): ScreenSize => {
49
- * if (screenService.screenSize.atLeast.xl.getValue()) return 'xl';
50
- * if (screenService.screenSize.atLeast.lg.getValue()) return 'lg';
51
- * if (screenService.screenSize.atLeast.md.getValue()) return 'md';
52
- * if (screenService.screenSize.atLeast.sm.getValue()) return 'sm';
53
- * return 'xs';
54
- * };
55
- *
56
- * // Subscribe to orientation changes
57
- * screenService.orientation.subscribe((orientation) => {
58
- * console.log(`Screen is now in ${orientation} mode`);
59
- * });
60
- * ```
61
- */
62
- let ScreenService = class ScreenService {
63
- getOrientation = () => (window.matchMedia?.('(orientation:landscape').matches ? 'landscape' : 'portrait');
64
- /**
65
- * The definitions of the breakpoint thresholds in pixels.
66
- * Each breakpoint represents the minimum width for that size category.
67
- */
68
- breakpoints = {
69
- xl: { minSize: 1920 },
70
- lg: { minSize: 1280 },
71
- md: { minSize: 960 },
72
- sm: { minSize: 600 },
73
- xs: { minSize: 0 },
74
- };
75
- /**
76
- * Cleans up event listeners when the service is disposed.
77
- */
78
- [Symbol.dispose]() {
79
- window.removeEventListener('resize', this.onResizeListener);
80
- this.orientation[Symbol.dispose]();
81
- Object.values(this.screenSize.atLeast).forEach((observable) => {
82
- observable[Symbol.dispose]();
83
- });
84
- }
85
- /**
86
- * Observable values for checking if the screen is at least a certain size.
87
- *
88
- * Each observable emits `true` when the viewport width is >= the breakpoint threshold,
89
- * and `false` otherwise. Values update automatically on window resize.
90
- *
91
- * @example
92
- * ```typescript
93
- * // Hide sidebar on small screens
94
- * screenService.screenSize.atLeast.md.subscribe((isAtLeastMd) => {
95
- * sidebarVisible.setValue(isAtLeastMd);
96
- * });
97
- * ```
98
- */
99
- screenSize = {
100
- atLeast: {
101
- xs: new ObservableValue(this.screenSizeAtLeast('xs')),
102
- sm: new ObservableValue(this.screenSizeAtLeast('sm')),
103
- md: new ObservableValue(this.screenSizeAtLeast('md')),
104
- lg: new ObservableValue(this.screenSizeAtLeast('lg')),
105
- xl: new ObservableValue(this.screenSizeAtLeast('xl')),
106
- },
107
- };
108
- screenSizeAtLeast(size) {
109
- return window.innerWidth >= this.breakpoints[size].minSize;
110
- }
111
- /**
112
- * Observable value for tracking the screen orientation.
113
- * Emits 'landscape' or 'portrait' based on the current viewport dimensions.
114
- *
115
- * @example
116
- * ```typescript
117
- * screenService.orientation.subscribe((orientation) => {
118
- * if (orientation === 'landscape') {
119
- * // Adjust layout for landscape mode
120
- * }
121
- * });
122
- * ```
123
- */
124
- orientation = new ObservableValue(this.getOrientation());
125
- onResizeListener = () => {
126
- this.refreshValues();
127
- };
128
- refreshValues() {
129
- this.orientation.setValue(this.getOrientation());
130
- ScreenSizes.forEach((size) => {
131
- this.screenSize.atLeast[size].setValue(this.screenSizeAtLeast(size));
7
+ export const ScreenService = defineService({
8
+ name: '@furystack/shades/ScreenService',
9
+ lifetime: 'singleton',
10
+ factory: ({ onDispose }) => {
11
+ const getOrientation = () => window.matchMedia?.('(orientation:landscape').matches ? 'landscape' : 'portrait';
12
+ const breakpoints = {
13
+ xl: { minSize: 1920 },
14
+ lg: { minSize: 1280 },
15
+ md: { minSize: 960 },
16
+ sm: { minSize: 600 },
17
+ xs: { minSize: 0 },
18
+ };
19
+ const screenSizeAtLeast = (size) => window.innerWidth >= breakpoints[size].minSize;
20
+ const atLeast = {
21
+ xs: new ObservableValue(screenSizeAtLeast('xs')),
22
+ sm: new ObservableValue(screenSizeAtLeast('sm')),
23
+ md: new ObservableValue(screenSizeAtLeast('md')),
24
+ lg: new ObservableValue(screenSizeAtLeast('lg')),
25
+ xl: new ObservableValue(screenSizeAtLeast('xl')),
26
+ };
27
+ const orientation = new ObservableValue(getOrientation());
28
+ const refreshValues = () => {
29
+ orientation.setValue(getOrientation());
30
+ for (const size of ScreenSizes) {
31
+ atLeast[size].setValue(screenSizeAtLeast(size));
32
+ }
33
+ };
34
+ const onResizeListener = () => {
35
+ refreshValues();
36
+ };
37
+ window.addEventListener('resize', onResizeListener);
38
+ refreshValues();
39
+ onDispose(() => {
40
+ window.removeEventListener('resize', onResizeListener);
41
+ // eslint-disable-next-line furystack/prefer-using-wrapper -- Disposal is deferred to the injector's onDispose hook.
42
+ orientation[Symbol.dispose]();
43
+ Object.values(atLeast).forEach((observable) => observable[Symbol.dispose]());
132
44
  });
133
- }
134
- constructor() {
135
- window.addEventListener('resize', this.onResizeListener);
136
- this.refreshValues();
137
- }
138
- };
139
- ScreenService = __decorate([
140
- Injectable({ lifetime: 'singleton' }),
141
- __metadata("design:paramtypes", [])
142
- ], ScreenService);
143
- export { ScreenService };
45
+ return {
46
+ breakpoints,
47
+ screenSize: { atLeast },
48
+ orientation,
49
+ };
50
+ },
51
+ });
144
52
  //# sourceMappingURL=screen-service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"screen-service.js","sourceRoot":"","sources":["../../src/services/screen-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"screen-service.js","sourceRoot":"","sources":["../../src/services/screen-service.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAElD;;GAEG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU,CAAA;AA6ClE,MAAM,CAAC,MAAM,aAAa,GAAsC,aAAa,CAAC;IAC5E,IAAI,EAAE,iCAAiC;IACvC,QAAQ,EAAE,WAAW;IACrB,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE;QACzB,MAAM,cAAc,GAAG,GAA6B,EAAE,CACpD,MAAM,CAAC,UAAU,EAAE,CAAC,wBAAwB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAA;QAElF,MAAM,WAAW,GAA+C;YAC9D,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACrB,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YACrB,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YACpB,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;YACpB,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;SACnB,CAAA;QAED,MAAM,iBAAiB,GAAG,CAAC,IAAgB,EAAW,EAAE,CAAC,MAAM,CAAC,UAAU,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,OAAO,CAAA;QAEvG,MAAM,OAAO,GAAoD;YAC/D,EAAE,EAAE,IAAI,eAAe,CAAU,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzD,EAAE,EAAE,IAAI,eAAe,CAAU,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzD,EAAE,EAAE,IAAI,eAAe,CAAU,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzD,EAAE,EAAE,IAAI,eAAe,CAAU,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACzD,EAAE,EAAE,IAAI,eAAe,CAAU,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAC1D,CAAA;QAED,MAAM,WAAW,GAAG,IAAI,eAAe,CAA2B,cAAc,EAAE,CAAC,CAAA;QAEnF,MAAM,aAAa,GAAG,GAAS,EAAE;YAC/B,WAAW,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,CAAA;YACtC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAA;YACjD,CAAC;QACH,CAAC,CAAA;QAED,MAAM,gBAAgB,GAAG,GAAS,EAAE;YAClC,aAAa,EAAE,CAAA;QACjB,CAAC,CAAA;QAED,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;QACnD,aAAa,EAAE,CAAA;QAEf,SAAS,CAAC,GAAG,EAAE;YACb,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAA;YACtD,oHAAoH;YACpH,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;YAC7B,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;QAC9E,CAAC,CAAC,CAAA;QAEF,OAAO;YACL,WAAW;YACX,UAAU,EAAE,EAAE,OAAO,EAAE;YACvB,WAAW;SACZ,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { Injector } from '@furystack/inject';
1
+ import { createInjector } from '@furystack/inject';
2
2
  import { usingAsync } from '@furystack/utils';
3
3
  import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
4
  import { ScreenService, ScreenSizes } from './screen-service.js';
@@ -11,15 +11,16 @@ describe('ScreenService', () => {
11
11
  vi.restoreAllMocks();
12
12
  });
13
13
  it('Should be constructed', async () => {
14
- await usingAsync(new Injector(), async (i) => {
15
- const s = i.getInstance(ScreenService);
16
- expect(s).toBeInstanceOf(ScreenService);
14
+ await usingAsync(createInjector(), async (i) => {
15
+ const s = i.get(ScreenService);
16
+ expect(s).toBeDefined();
17
+ expect(s.breakpoints).toBeDefined();
17
18
  });
18
19
  });
19
20
  describe('breakpoints', () => {
20
21
  it('Should have correct breakpoint definitions', async () => {
21
- await usingAsync(new Injector(), async (i) => {
22
- const s = i.getInstance(ScreenService);
22
+ await usingAsync(createInjector(), async (i) => {
23
+ const s = i.get(ScreenService);
23
24
  expect(s.breakpoints.xs.minSize).toBe(0);
24
25
  expect(s.breakpoints.sm.minSize).toBe(600);
25
26
  expect(s.breakpoints.md.minSize).toBe(960);
@@ -30,8 +31,8 @@ describe('ScreenService', () => {
30
31
  });
31
32
  describe('screenSize.atLeast', () => {
32
33
  it('Should have observable for each screen size', async () => {
33
- await usingAsync(new Injector(), async (i) => {
34
- const s = i.getInstance(ScreenService);
34
+ await usingAsync(createInjector(), async (i) => {
35
+ const s = i.get(ScreenService);
35
36
  for (const size of ScreenSizes) {
36
37
  expect(s.screenSize.atLeast[size]).toBeDefined();
37
38
  expect(typeof s.screenSize.atLeast[size].getValue()).toBe('boolean');
@@ -39,15 +40,15 @@ describe('ScreenService', () => {
39
40
  });
40
41
  });
41
42
  it('Should return true for xs on any screen size', async () => {
42
- await usingAsync(new Injector(), async (i) => {
43
- const s = i.getInstance(ScreenService);
43
+ await usingAsync(createInjector(), async (i) => {
44
+ const s = i.get(ScreenService);
44
45
  // xs has minSize 0, so it should always be true
45
46
  expect(s.screenSize.atLeast.xs.getValue()).toBe(true);
46
47
  });
47
48
  });
48
49
  it('Should update screenSize observables on window resize', async () => {
49
- await usingAsync(new Injector(), async (i) => {
50
- const s = i.getInstance(ScreenService);
50
+ await usingAsync(createInjector(), async (i) => {
51
+ const s = i.get(ScreenService);
51
52
  // Mock window.innerWidth to simulate a large screen
52
53
  vi.spyOn(window, 'innerWidth', 'get').mockReturnValue(1920);
53
54
  // Trigger resize event
@@ -72,8 +73,8 @@ describe('ScreenService', () => {
72
73
  });
73
74
  describe('orientation', () => {
74
75
  it('Should have an orientation observable', async () => {
75
- await usingAsync(new Injector(), async (i) => {
76
- const s = i.getInstance(ScreenService);
76
+ await usingAsync(createInjector(), async (i) => {
77
+ const s = i.get(ScreenService);
77
78
  const orientation = s.orientation.getValue();
78
79
  expect(['landscape', 'portrait']).toContain(orientation);
79
80
  });
@@ -82,10 +83,10 @@ describe('ScreenService', () => {
82
83
  // Mock matchMedia before creating the service
83
84
  const matchMediaMock = vi.fn();
84
85
  window.matchMedia = matchMediaMock;
85
- await usingAsync(new Injector(), async (i) => {
86
+ await usingAsync(createInjector(), async (i) => {
86
87
  // Set initial orientation to landscape
87
88
  matchMediaMock.mockReturnValue({ matches: true });
88
- const s = i.getInstance(ScreenService);
89
+ const s = i.get(ScreenService);
89
90
  // Verify initial landscape
90
91
  window.dispatchEvent(new Event('resize'));
91
92
  expect(s.orientation.getValue()).toBe('landscape');
@@ -99,8 +100,8 @@ describe('ScreenService', () => {
99
100
  describe('disposal', () => {
100
101
  it('Should remove resize event listener on dispose', async () => {
101
102
  const removeEventListenerSpy = vi.spyOn(window, 'removeEventListener');
102
- await usingAsync(new Injector(), async (i) => {
103
- i.getInstance(ScreenService);
103
+ await usingAsync(createInjector(), async (i) => {
104
+ i.get(ScreenService);
104
105
  });
105
106
  expect(removeEventListenerSpy).toHaveBeenCalledWith('resize', expect.any(Function));
106
107
  });