@signality/core 0.0.1-alpha.2 → 0.0.1-alpha.4
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/README.md +51 -47
- package/browser/battery/index.d.ts +27 -2
- package/browser/bluetooth/index.d.ts +40 -13
- package/browser/breakpoints/index.d.ts +22 -9
- package/browser/broadcast-channel/index.d.ts +1 -1
- package/browser/browser-language/index.d.ts +1 -1
- package/browser/clipboard/index.d.ts +22 -6
- package/browser/device-posture/index.d.ts +23 -2
- package/browser/display-media/index.d.ts +34 -22
- package/browser/eye-dropper/index.d.ts +22 -6
- package/browser/favicon/index.d.ts +29 -2
- package/browser/file-dialog/index.d.ts +97 -0
- package/browser/fps/index.d.ts +1 -1
- package/browser/fullscreen/index.d.ts +78 -0
- package/browser/gamepad/index.d.ts +39 -9
- package/browser/geolocation/index.d.ts +44 -13
- package/browser/index.d.ts +8 -2
- package/browser/input-modality/index.d.ts +1 -1
- package/browser/listener/index.d.ts +1 -1
- package/browser/media-query/index.d.ts +1 -1
- package/browser/network/index.d.ts +37 -9
- package/browser/online/index.d.ts +1 -1
- package/browser/page-visibility/index.d.ts +1 -1
- package/browser/permission-state/index.d.ts +23 -0
- package/browser/picture-in-picture/index.d.ts +24 -6
- package/browser/screen-orientation/index.d.ts +1 -1
- package/browser/speech-recognition/index.d.ts +51 -13
- package/browser/speech-synthesis/index.d.ts +82 -42
- package/browser/storage/index.d.ts +1 -1
- package/browser/text-direction/index.d.ts +2 -5
- package/{elements → browser}/text-selection/index.d.ts +1 -1
- package/browser/vibration/index.d.ts +38 -9
- package/browser/web-notification/index.d.ts +35 -9
- package/browser/web-share/index.d.ts +19 -5
- package/browser/web-worker/index.d.ts +35 -11
- package/browser/window-focus/index.d.ts +27 -0
- package/{elements → browser}/window-size/index.d.ts +6 -7
- package/elements/active-element/index.d.ts +1 -1
- package/elements/dropzone/index.d.ts +60 -10
- package/elements/element-focus/index.d.ts +1 -1
- package/elements/element-focus-within/index.d.ts +1 -1
- package/elements/element-hover/index.d.ts +1 -1
- package/elements/element-size/index.d.ts +8 -5
- package/elements/element-visibility/index.d.ts +25 -7
- package/elements/index.d.ts +0 -2
- package/elements/mouse-position/index.d.ts +27 -7
- package/elements/on-click-outside/index.d.ts +1 -1
- package/elements/on-disconnect/index.d.ts +1 -1
- package/elements/on-long-press/index.d.ts +1 -1
- package/elements/pointer-swipe/index.d.ts +1 -1
- package/elements/scroll-position/index.d.ts +2 -2
- package/elements/swipe/index.d.ts +1 -1
- package/fesm2022/signality-core-browser-battery.mjs +1 -1
- package/fesm2022/signality-core-browser-battery.mjs.map +1 -1
- package/fesm2022/signality-core-browser-bluetooth.mjs +28 -27
- package/fesm2022/signality-core-browser-bluetooth.mjs.map +1 -1
- package/fesm2022/signality-core-browser-breakpoints.mjs +19 -10
- package/fesm2022/signality-core-browser-breakpoints.mjs.map +1 -1
- package/fesm2022/signality-core-browser-broadcast-channel.mjs +1 -1
- package/fesm2022/signality-core-browser-broadcast-channel.mjs.map +1 -1
- package/fesm2022/signality-core-browser-browser-language.mjs +1 -1
- package/fesm2022/signality-core-browser-browser-language.mjs.map +1 -1
- package/fesm2022/signality-core-browser-clipboard.mjs +1 -1
- package/fesm2022/signality-core-browser-clipboard.mjs.map +1 -1
- package/fesm2022/signality-core-browser-device-posture.mjs +13 -0
- package/fesm2022/signality-core-browser-device-posture.mjs.map +1 -1
- package/fesm2022/signality-core-browser-display-media.mjs +4 -17
- package/fesm2022/signality-core-browser-display-media.mjs.map +1 -1
- package/fesm2022/signality-core-browser-eye-dropper.mjs +1 -1
- package/fesm2022/signality-core-browser-eye-dropper.mjs.map +1 -1
- package/fesm2022/signality-core-browser-favicon.mjs +2 -2
- package/fesm2022/signality-core-browser-favicon.mjs.map +1 -1
- package/fesm2022/signality-core-browser-file-dialog.mjs +109 -0
- package/fesm2022/signality-core-browser-file-dialog.mjs.map +1 -0
- package/fesm2022/signality-core-browser-fps.mjs +1 -1
- package/fesm2022/signality-core-browser-fps.mjs.map +1 -1
- package/fesm2022/signality-core-browser-fullscreen.mjs +113 -0
- package/fesm2022/signality-core-browser-fullscreen.mjs.map +1 -0
- package/fesm2022/signality-core-browser-gamepad.mjs +14 -4
- package/fesm2022/signality-core-browser-gamepad.mjs.map +1 -1
- package/fesm2022/signality-core-browser-geolocation.mjs +8 -19
- package/fesm2022/signality-core-browser-geolocation.mjs.map +1 -1
- package/fesm2022/signality-core-browser-input-modality.mjs +1 -1
- package/fesm2022/signality-core-browser-input-modality.mjs.map +1 -1
- package/fesm2022/signality-core-browser-listener.mjs +18 -6
- package/fesm2022/signality-core-browser-listener.mjs.map +1 -1
- package/fesm2022/signality-core-browser-media-query.mjs +1 -1
- package/fesm2022/signality-core-browser-media-query.mjs.map +1 -1
- package/fesm2022/signality-core-browser-network.mjs +2 -2
- package/fesm2022/signality-core-browser-network.mjs.map +1 -1
- package/fesm2022/signality-core-browser-online.mjs +1 -1
- package/fesm2022/signality-core-browser-online.mjs.map +1 -1
- package/fesm2022/signality-core-browser-page-visibility.mjs +1 -1
- package/fesm2022/signality-core-browser-page-visibility.mjs.map +1 -1
- package/fesm2022/signality-core-browser-permission-state.mjs +57 -0
- package/fesm2022/signality-core-browser-permission-state.mjs.map +1 -0
- package/fesm2022/signality-core-browser-picture-in-picture.mjs +30 -13
- package/fesm2022/signality-core-browser-picture-in-picture.mjs.map +1 -1
- package/fesm2022/signality-core-browser-screen-orientation.mjs +1 -1
- package/fesm2022/signality-core-browser-screen-orientation.mjs.map +1 -1
- package/fesm2022/signality-core-browser-speech-recognition.mjs +6 -18
- package/fesm2022/signality-core-browser-speech-recognition.mjs.map +1 -1
- package/fesm2022/signality-core-browser-speech-synthesis.mjs +14 -16
- package/fesm2022/signality-core-browser-speech-synthesis.mjs.map +1 -1
- package/fesm2022/signality-core-browser-storage.mjs +1 -1
- package/fesm2022/signality-core-browser-storage.mjs.map +1 -1
- package/fesm2022/signality-core-browser-text-direction.mjs +1 -4
- package/fesm2022/signality-core-browser-text-direction.mjs.map +1 -1
- package/fesm2022/{signality-core-elements-text-selection.mjs → signality-core-browser-text-selection.mjs} +2 -2
- package/fesm2022/signality-core-browser-text-selection.mjs.map +1 -0
- package/fesm2022/signality-core-browser-vibration.mjs +14 -5
- package/fesm2022/signality-core-browser-vibration.mjs.map +1 -1
- package/fesm2022/signality-core-browser-web-notification.mjs +5 -7
- package/fesm2022/signality-core-browser-web-notification.mjs.map +1 -1
- package/fesm2022/signality-core-browser-web-share.mjs +3 -5
- package/fesm2022/signality-core-browser-web-share.mjs.map +1 -1
- package/fesm2022/signality-core-browser-web-worker.mjs +6 -3
- package/fesm2022/signality-core-browser-web-worker.mjs.map +1 -1
- package/fesm2022/signality-core-browser-window-focus.mjs +48 -0
- package/fesm2022/signality-core-browser-window-focus.mjs.map +1 -0
- package/fesm2022/{signality-core-elements-window-size.mjs → signality-core-browser-window-size.mjs} +4 -24
- package/fesm2022/signality-core-browser-window-size.mjs.map +1 -0
- package/fesm2022/signality-core-browser.mjs +8 -2
- package/fesm2022/signality-core-browser.mjs.map +1 -1
- package/fesm2022/signality-core-elements-active-element.mjs +1 -1
- package/fesm2022/signality-core-elements-active-element.mjs.map +1 -1
- package/fesm2022/signality-core-elements-dropzone.mjs +28 -29
- package/fesm2022/signality-core-elements-dropzone.mjs.map +1 -1
- package/fesm2022/signality-core-elements-element-focus-within.mjs +1 -1
- package/fesm2022/signality-core-elements-element-focus-within.mjs.map +1 -1
- package/fesm2022/signality-core-elements-element-focus.mjs +1 -1
- package/fesm2022/signality-core-elements-element-focus.mjs.map +1 -1
- package/fesm2022/signality-core-elements-element-hover.mjs +1 -1
- package/fesm2022/signality-core-elements-element-hover.mjs.map +1 -1
- package/fesm2022/signality-core-elements-element-size.mjs +19 -24
- package/fesm2022/signality-core-elements-element-size.mjs.map +1 -1
- package/fesm2022/signality-core-elements-element-visibility.mjs +2 -2
- package/fesm2022/signality-core-elements-element-visibility.mjs.map +1 -1
- package/fesm2022/signality-core-elements-mouse-position.mjs +3 -3
- package/fesm2022/signality-core-elements-mouse-position.mjs.map +1 -1
- package/fesm2022/signality-core-elements-on-click-outside.mjs +1 -1
- package/fesm2022/signality-core-elements-on-click-outside.mjs.map +1 -1
- package/fesm2022/signality-core-elements-on-disconnect.mjs +1 -1
- package/fesm2022/signality-core-elements-on-disconnect.mjs.map +1 -1
- package/fesm2022/signality-core-elements-on-long-press.mjs +1 -1
- package/fesm2022/signality-core-elements-on-long-press.mjs.map +1 -1
- package/fesm2022/signality-core-elements-pointer-swipe.mjs +1 -1
- package/fesm2022/signality-core-elements-pointer-swipe.mjs.map +1 -1
- package/fesm2022/signality-core-elements-scroll-position.mjs +2 -2
- package/fesm2022/signality-core-elements-scroll-position.mjs.map +1 -1
- package/fesm2022/signality-core-elements-swipe.mjs +1 -1
- package/fesm2022/signality-core-elements-swipe.mjs.map +1 -1
- package/fesm2022/signality-core-elements.mjs +0 -2
- package/fesm2022/signality-core-elements.mjs.map +1 -1
- package/fesm2022/signality-core-internal.mjs +54 -7
- package/fesm2022/signality-core-internal.mjs.map +1 -1
- package/fesm2022/signality-core-observers-intersection-observer.mjs +3 -2
- package/fesm2022/signality-core-observers-intersection-observer.mjs.map +1 -1
- package/fesm2022/signality-core-observers-mutation-observer.mjs +3 -2
- package/fesm2022/signality-core-observers-mutation-observer.mjs.map +1 -1
- package/fesm2022/signality-core-observers-resize-observer.mjs +3 -2
- package/fesm2022/signality-core-observers-resize-observer.mjs.map +1 -1
- package/fesm2022/signality-core-observers.mjs +0 -1
- package/fesm2022/signality-core-observers.mjs.map +1 -1
- package/fesm2022/signality-core-reactivity-debounced.mjs.map +1 -1
- package/fesm2022/signality-core-reactivity-throttled.mjs.map +1 -1
- package/fesm2022/signality-core-reactivity-watcher.mjs.map +1 -1
- package/fesm2022/signality-core-router-fragment.mjs +1 -1
- package/fesm2022/signality-core-router-fragment.mjs.map +1 -1
- package/fesm2022/signality-core-router-params.mjs +1 -1
- package/fesm2022/signality-core-router-params.mjs.map +1 -1
- package/fesm2022/signality-core-router-query-params.mjs.map +1 -1
- package/fesm2022/signality-core-router-route-data.mjs +1 -1
- package/fesm2022/signality-core-router-route-data.mjs.map +1 -1
- package/fesm2022/signality-core-router-router-listener.mjs.map +1 -1
- package/fesm2022/signality-core-router-title.mjs +1 -1
- package/fesm2022/signality-core-router-title.mjs.map +1 -1
- package/fesm2022/signality-core-router-url.mjs +1 -1
- package/fesm2022/signality-core-router-url.mjs.map +1 -1
- package/fesm2022/signality-core-scheduling-debounce-callback.mjs +1 -1
- package/fesm2022/signality-core-scheduling-debounce-callback.mjs.map +1 -1
- package/fesm2022/signality-core-scheduling-interval.mjs +29 -72
- package/fesm2022/signality-core-scheduling-interval.mjs.map +1 -1
- package/internal/utils/assert.d.ts +2 -0
- package/internal/utils/dom/index.d.ts +1 -0
- package/internal/utils/dom/is-element.d.ts +1 -1
- package/internal/utils/dom/is-event-target.d.ts +1 -0
- package/internal/utils/files/index.d.ts +1 -0
- package/internal/utils/files/is-accepted-file.d.ts +11 -0
- package/internal/utils/index.d.ts +3 -0
- package/internal/utils/to-element.d.ts +1 -1
- package/internal/utils/unref-element.d.ts +2 -0
- package/observers/index.d.ts +0 -1
- package/observers/intersection-observer/index.d.ts +22 -1
- package/observers/mutation-observer/index.d.ts +43 -1
- package/observers/resize-observer/index.d.ts +13 -1
- package/package.json +30 -26
- package/reactivity/debounced/index.d.ts +2 -2
- package/reactivity/throttled/index.d.ts +2 -2
- package/reactivity/watcher/index.d.ts +2 -2
- package/router/fragment/index.d.ts +1 -1
- package/router/params/index.d.ts +1 -1
- package/router/query-params/index.d.ts +5 -3
- package/router/route-data/index.d.ts +1 -1
- package/router/router-listener/index.d.ts +1 -1
- package/router/title/index.d.ts +1 -1
- package/router/url/index.d.ts +1 -1
- package/scheduling/debounce-callback/index.d.ts +1 -1
- package/scheduling/interval/index.d.ts +19 -27
- package/browser/pointer-lock-element/index.d.ts +0 -22
- package/browser/wake-lock/index.d.ts +0 -37
- package/fesm2022/signality-core-browser-pointer-lock-element.mjs +0 -43
- package/fesm2022/signality-core-browser-pointer-lock-element.mjs.map +0 -1
- package/fesm2022/signality-core-browser-wake-lock.mjs +0 -149
- package/fesm2022/signality-core-browser-wake-lock.mjs.map +0 -1
- package/fesm2022/signality-core-elements-text-selection.mjs.map +0 -1
- package/fesm2022/signality-core-elements-window-size.mjs.map +0 -1
- package/fesm2022/signality-core-observers-performance-observer.mjs +0 -84
- package/fesm2022/signality-core-observers-performance-observer.mjs.map +0 -1
- package/observers/performance-observer/index.d.ts +0 -58
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signality-core-router-url.mjs","sources":["../../../projects/core/router/url/index.ts","../../../projects/core/router/url/signality-core-router-url.ts"],"sourcesContent":["import { type CreateSignalOptions, inject, signal, type Signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { constSignal, setupContext } from '@signality/core/internal';\nimport type { WithInjector } from '@signality/core/types';\nimport { routerListener } from '@signality/core/router/router-listener';\n\nexport interface UrlOptions extends CreateSignalOptions<string>, WithInjector {\n /**\n * Include origin (protocol + host) for absolute URL.\n * @default false\n */\n readonly absolute?: boolean;\n}\n\n/**\n * Reactive wrapper around the [Angular Router](https://angular.dev/guide/routing) current URL.\n *\n * @param options - Optional configuration\n * @returns A signal containing the current URL\n *\n * @example\n * ```typescript\n * @Component({\n * template: `\n * <div>\n * <p>Current URL: {{ currentUrl() }}</p>\n * <p>Absolute URL: {{ absoluteUrl() }}</p>\n * </div>\n * `\n * })\n * class
|
|
1
|
+
{"version":3,"file":"signality-core-router-url.mjs","sources":["../../../projects/core/router/url/index.ts","../../../projects/core/router/url/signality-core-router-url.ts"],"sourcesContent":["import { type CreateSignalOptions, inject, signal, type Signal } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { constSignal, setupContext } from '@signality/core/internal';\nimport type { WithInjector } from '@signality/core/types';\nimport { routerListener } from '@signality/core/router/router-listener';\n\nexport interface UrlOptions extends CreateSignalOptions<string>, WithInjector {\n /**\n * Include origin (protocol + host) for absolute URL.\n * @default false\n */\n readonly absolute?: boolean;\n}\n\n/**\n * Reactive wrapper around the [Angular Router](https://angular.dev/guide/routing) current URL.\n *\n * @param options - Optional configuration\n * @returns A signal containing the current URL\n *\n * @example\n * ```typescript\n * @Component({\n * template: `\n * <div>\n * <p>Current URL: {{ currentUrl() }}</p>\n * <p>Absolute URL: {{ absoluteUrl() }}</p>\n * </div>\n * `\n * })\n * export class UrlDemo {\n * readonly currentUrl = url();\n * readonly absoluteUrl = url({ absolute: true });\n * }\n * ```\n */\nexport function url(options?: UrlOptions): Signal<string> {\n const { runInContext } = setupContext(options?.injector, url);\n\n return runInContext(({ isServer }) => {\n const router = inject(Router);\n\n if (isServer) {\n return constSignal(router.url);\n }\n\n const getUrl = () => {\n const relativeUrl = router.url;\n\n if (options?.absolute) {\n return location.origin + relativeUrl;\n }\n\n return relativeUrl;\n };\n\n const result = signal(getUrl(), options);\n\n routerListener('navigationend', () => result.set(getUrl()));\n\n return result.asReadonly();\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAcA;;;;;;;;;;;;;;;;;;;;;AAqBG;AACG,SAAU,GAAG,CAAC,OAAoB,EAAA;AACtC,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC;AAE7D,IAAA,OAAO,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAI;AACnC,QAAA,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAE7B,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC;QAChC;QAEA,MAAM,MAAM,GAAG,MAAK;AAClB,YAAA,MAAM,WAAW,GAAG,MAAM,CAAC,GAAG;AAE9B,YAAA,IAAI,OAAO,EAAE,QAAQ,EAAE;AACrB,gBAAA,OAAO,QAAQ,CAAC,MAAM,GAAG,WAAW;YACtC;AAEA,YAAA,OAAO,WAAW;AACpB,QAAA,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC;AAExC,QAAA,cAAc,CAAC,eAAe,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;AAE3D,QAAA,OAAO,MAAM,CAAC,UAAU,EAAE;AAC5B,IAAA,CAAC,CAAC;AACJ;;AC9DA;;AAEG;;;;"}
|
|
@@ -16,7 +16,7 @@ import { setupContext, toValue } from '@signality/core/internal';
|
|
|
16
16
|
* <input (input)="handleInput($event.target.value)" />
|
|
17
17
|
* `,
|
|
18
18
|
* })
|
|
19
|
-
* export class
|
|
19
|
+
* export class SearchInput {
|
|
20
20
|
* readonly debounceTime = input(300);
|
|
21
21
|
* readonly searchChange = output<string>();
|
|
22
22
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signality-core-scheduling-debounce-callback.mjs","sources":["../../../projects/core/scheduling/debounce-callback/index.ts","../../../projects/core/scheduling/debounce-callback/signality-core-scheduling-debounce-callback.ts"],"sourcesContent":["import type { MaybeSignal, WithInjector } from '@signality/core/types';\nimport { setupContext, type Timer, toValue } from '@signality/core/internal';\n\n/**\n * Creates a debounced version of a callback function.\n * The callback will only be executed after the specified wait time has elapsed since the last invocation.\n *\n * @param callback - The function to debounce\n * @param wait - Debounce delay in milliseconds (can be a reactive signal)\n * @param options - Optional configuration including injector\n * @returns A debounced version of the callback function\n *\n * @example\n * ```typescript\n * @Component({\n * template: `\n * <input (input)=\"handleInput($event.target.value)\" />\n * `,\n * })\n * export class
|
|
1
|
+
{"version":3,"file":"signality-core-scheduling-debounce-callback.mjs","sources":["../../../projects/core/scheduling/debounce-callback/index.ts","../../../projects/core/scheduling/debounce-callback/signality-core-scheduling-debounce-callback.ts"],"sourcesContent":["import type { MaybeSignal, WithInjector } from '@signality/core/types';\nimport { setupContext, type Timer, toValue } from '@signality/core/internal';\n\n/**\n * Creates a debounced version of a callback function.\n * The callback will only be executed after the specified wait time has elapsed since the last invocation.\n *\n * @param callback - The function to debounce\n * @param wait - Debounce delay in milliseconds (can be a reactive signal)\n * @param options - Optional configuration including injector\n * @returns A debounced version of the callback function\n *\n * @example\n * ```typescript\n * @Component({\n * template: `\n * <input (input)=\"handleInput($event.target.value)\" />\n * `,\n * })\n * export class SearchInput {\n * readonly debounceTime = input(300);\n * readonly searchChange = output<string>();\n *\n * readonly handleInput = debounceCallback(value => {\n * this.searchChange.emit(value);\n * }, this.debounceTime);\n * }\n * ```\n */\nexport function debounceCallback<T extends (...args: any[]) => any>(\n callback: T,\n wait: MaybeSignal<number>,\n options?: WithInjector\n): T {\n const { runInContext } = setupContext(options?.injector, debounceCallback);\n\n return runInContext(({ isServer, onCleanup }) => {\n if (isServer) {\n return callback;\n }\n\n let timer: Timer;\n\n onCleanup(() => {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n });\n\n return new Proxy(callback, {\n apply(target, thisArg, args) {\n if (timer !== undefined) {\n clearTimeout(timer);\n }\n timer = setTimeout(() => {\n target.apply(thisArg, args);\n }, toValue.untracked(wait));\n },\n });\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAGA;;;;;;;;;;;;;;;;;;;;;;;;;AAyBG;SACa,gBAAgB,CAC9B,QAAW,EACX,IAAyB,EACzB,OAAsB,EAAA;AAEtB,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC;IAE1E,OAAO,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAI;QAC9C,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,QAAQ;QACjB;AAEA,QAAA,IAAI,KAAY;QAEhB,SAAS,CAAC,MAAK;AACb,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,YAAY,CAAC,KAAK,CAAC;YACrB;AACF,QAAA,CAAC,CAAC;AAEF,QAAA,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE;AACzB,YAAA,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAA;AACzB,gBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;oBACvB,YAAY,CAAC,KAAK,CAAC;gBACrB;AACA,gBAAA,KAAK,GAAG,UAAU,CAAC,MAAK;AACtB,oBAAA,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC;gBAC7B,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;AACF,SAAA,CAAC;AACJ,IAAA,CAAC,CAAC;AACJ;;AC5DA;;AAEG;;;;"}
|
|
@@ -1,33 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { setupContext,
|
|
1
|
+
import { isSignal } from '@angular/core';
|
|
2
|
+
import { setupContext, NOOP_EFFECT_REF, toValue } from '@signality/core/internal';
|
|
3
3
|
import { watcher } from '@signality/core/reactivity/watcher';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
6
|
+
* Signal-based wrapper around [`setInterval`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval).
|
|
7
|
+
* Creates a reactive interval that executes a callback at specified intervals.
|
|
8
|
+
* The interval starts immediately upon creation and can be stopped with `destroy()`.
|
|
8
9
|
*
|
|
9
|
-
* @param callback - Function to execute on each interval tick
|
|
10
|
+
* @param callback - Function to execute on each interval tick
|
|
10
11
|
* @param intervalMs - Interval duration in milliseconds (can be a reactive signal)
|
|
11
|
-
* @param options - Optional configuration
|
|
12
|
-
* @returns An IntervalRef with
|
|
12
|
+
* @param options - Optional configuration
|
|
13
|
+
* @returns An IntervalRef with a `destroy` method to stop the interval
|
|
13
14
|
*
|
|
14
15
|
* @example
|
|
15
16
|
* ```typescript
|
|
16
17
|
* @Component({
|
|
17
18
|
* template: `
|
|
18
|
-
* <p>
|
|
19
|
-
* <button (click)="polling.
|
|
20
|
-
* <button (click)="polling.resume()">Start</button>
|
|
19
|
+
* <p>Ticks: {{ ticks() }}</p>
|
|
20
|
+
* <button (click)="polling.destroy()">Stop</button>
|
|
21
21
|
* `,
|
|
22
22
|
* })
|
|
23
23
|
* export class PeriodicTask {
|
|
24
|
-
* readonly
|
|
25
|
-
* await this.checkStatus();
|
|
26
|
-
* }, 5000);
|
|
24
|
+
* readonly ticks = signal(0);
|
|
27
25
|
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* }
|
|
26
|
+
* readonly polling = interval(() => {
|
|
27
|
+
* this.ticks.update(n => n + 1);
|
|
28
|
+
* }, 5000);
|
|
31
29
|
* }
|
|
32
30
|
* ```
|
|
33
31
|
*/
|
|
@@ -35,70 +33,29 @@ function interval(callback, intervalMs, options) {
|
|
|
35
33
|
const { runInContext } = setupContext(options?.injector, interval);
|
|
36
34
|
return runInContext(({ isServer, onCleanup }) => {
|
|
37
35
|
if (isServer) {
|
|
38
|
-
return
|
|
39
|
-
isActive: constSignal(false),
|
|
40
|
-
counter: constSignal(0),
|
|
41
|
-
pause: NOOP_FN,
|
|
42
|
-
resume: NOOP_FN,
|
|
43
|
-
reset: NOOP_FN,
|
|
44
|
-
};
|
|
36
|
+
return NOOP_EFFECT_REF;
|
|
45
37
|
}
|
|
46
|
-
const isActive = signal(false, ...(ngDevMode ? [{ debugName: "isActive" }] : []));
|
|
47
|
-
const counter = signal(0, ...(ngDevMode ? [{ debugName: "counter" }] : []));
|
|
48
38
|
let intervalId;
|
|
39
|
+
let watcherRef = null;
|
|
49
40
|
const start = () => {
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
}
|
|
54
|
-
const ms = toValue(intervalMs);
|
|
55
|
-
intervalId = setInterval(() => {
|
|
56
|
-
const currentCounter = counter() + 1;
|
|
57
|
-
counter.set(currentCounter);
|
|
58
|
-
callback(currentCounter);
|
|
59
|
-
}, ms);
|
|
60
|
-
});
|
|
61
|
-
};
|
|
62
|
-
const pause = () => {
|
|
63
|
-
cleanup();
|
|
64
|
-
isActive.set(false);
|
|
65
|
-
};
|
|
66
|
-
const cleanup = () => {
|
|
67
|
-
if (intervalId !== undefined) {
|
|
68
|
-
clearInterval(intervalId);
|
|
69
|
-
intervalId = undefined;
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
const resume = () => {
|
|
73
|
-
if (intervalId !== undefined) {
|
|
74
|
-
return;
|
|
75
|
-
}
|
|
76
|
-
isActive.set(true);
|
|
77
|
-
start();
|
|
78
|
-
};
|
|
79
|
-
const reset = () => {
|
|
80
|
-
counter.set(0);
|
|
41
|
+
clearInterval(intervalId);
|
|
42
|
+
const ms = toValue.untracked(intervalMs);
|
|
43
|
+
intervalId = ms > 0 ? setInterval(callback, ms) : undefined;
|
|
81
44
|
};
|
|
82
45
|
if (isSignal(intervalMs)) {
|
|
83
|
-
watcher(intervalMs,
|
|
84
|
-
if (isActive() && newMs !== undefined) {
|
|
85
|
-
cleanup();
|
|
86
|
-
start();
|
|
87
|
-
}
|
|
88
|
-
});
|
|
46
|
+
watcherRef = watcher(intervalMs, start);
|
|
89
47
|
}
|
|
90
|
-
|
|
48
|
+
const destroy = () => {
|
|
49
|
+
clearInterval(intervalId);
|
|
50
|
+
intervalId = undefined;
|
|
51
|
+
watcherRef?.destroy();
|
|
52
|
+
};
|
|
53
|
+
onCleanup(destroy);
|
|
91
54
|
if (options?.immediate) {
|
|
92
|
-
|
|
93
|
-
start();
|
|
55
|
+
callback();
|
|
94
56
|
}
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
counter: counter.asReadonly(),
|
|
98
|
-
pause,
|
|
99
|
-
resume,
|
|
100
|
-
reset,
|
|
101
|
-
};
|
|
57
|
+
start();
|
|
58
|
+
return { destroy };
|
|
102
59
|
});
|
|
103
60
|
}
|
|
104
61
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signality-core-scheduling-interval.mjs","sources":["../../../projects/core/scheduling/interval/index.ts","../../../projects/core/scheduling/interval/signality-core-scheduling-interval.ts"],"sourcesContent":["import { isSignal
|
|
1
|
+
{"version":3,"file":"signality-core-scheduling-interval.mjs","sources":["../../../projects/core/scheduling/interval/index.ts","../../../projects/core/scheduling/interval/signality-core-scheduling-interval.ts"],"sourcesContent":["import { isSignal } from '@angular/core';\nimport { NOOP_EFFECT_REF, setupContext, type Timer, toValue } from '@signality/core/internal';\nimport type { MaybeSignal, WithInjector } from '@signality/core/types';\nimport { watcher, type WatcherRef } from '@signality/core/reactivity/watcher';\n\nexport interface IntervalOptions extends WithInjector {\n /**\n * Call the callback immediately, without waiting for the first tick.\n *\n * @default false\n */\n readonly immediate?: boolean;\n}\n\nexport interface IntervalRef {\n /**\n * Stop the interval permanently.\n */\n readonly destroy: () => void;\n}\n\n/**\n * Signal-based wrapper around [`setInterval`](https://developer.mozilla.org/en-US/docs/Web/API/Window/setInterval).\n * Creates a reactive interval that executes a callback at specified intervals.\n * The interval starts immediately upon creation and can be stopped with `destroy()`.\n *\n * @param callback - Function to execute on each interval tick\n * @param intervalMs - Interval duration in milliseconds (can be a reactive signal)\n * @param options - Optional configuration\n * @returns An IntervalRef with a `destroy` method to stop the interval\n *\n * @example\n * ```typescript\n * @Component({\n * template: `\n * <p>Ticks: {{ ticks() }}</p>\n * <button (click)=\"polling.destroy()\">Stop</button>\n * `,\n * })\n * export class PeriodicTask {\n * readonly ticks = signal(0);\n *\n * readonly polling = interval(() => {\n * this.ticks.update(n => n + 1);\n * }, 5000);\n * }\n * ```\n */\nexport function interval(\n callback: () => void,\n intervalMs: MaybeSignal<number>,\n options?: IntervalOptions\n): IntervalRef {\n const { runInContext } = setupContext(options?.injector, interval);\n\n return runInContext(({ isServer, onCleanup }) => {\n if (isServer) {\n return NOOP_EFFECT_REF;\n }\n\n let intervalId: Timer;\n let watcherRef: WatcherRef | null = null;\n\n const start = () => {\n clearInterval(intervalId);\n\n const ms = toValue.untracked(intervalMs);\n intervalId = ms > 0 ? setInterval(callback, ms) : undefined;\n };\n\n if (isSignal(intervalMs)) {\n watcherRef = watcher(intervalMs, start);\n }\n\n const destroy = () => {\n clearInterval(intervalId);\n intervalId = undefined;\n watcherRef?.destroy();\n };\n\n onCleanup(destroy);\n\n if (options?.immediate) {\n callback();\n }\n\n start();\n\n return { destroy };\n });\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAqBA;;;;;;;;;;;;;;;;;;;;;;;;;;AA0BG;SACa,QAAQ,CACtB,QAAoB,EACpB,UAA+B,EAC/B,OAAyB,EAAA;AAEzB,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC;IAElE,OAAO,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAI;QAC9C,IAAI,QAAQ,EAAE;AACZ,YAAA,OAAO,eAAe;QACxB;AAEA,QAAA,IAAI,UAAiB;QACrB,IAAI,UAAU,GAAsB,IAAI;QAExC,MAAM,KAAK,GAAG,MAAK;YACjB,aAAa,CAAC,UAAU,CAAC;YAEzB,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC;AACxC,YAAA,UAAU,GAAG,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,GAAG,SAAS;AAC7D,QAAA,CAAC;AAED,QAAA,IAAI,QAAQ,CAAC,UAAU,CAAC,EAAE;AACxB,YAAA,UAAU,GAAG,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC;QACzC;QAEA,MAAM,OAAO,GAAG,MAAK;YACnB,aAAa,CAAC,UAAU,CAAC;YACzB,UAAU,GAAG,SAAS;YACtB,UAAU,EAAE,OAAO,EAAE;AACvB,QAAA,CAAC;QAED,SAAS,CAAC,OAAO,CAAC;AAElB,QAAA,IAAI,OAAO,EAAE,SAAS,EAAE;AACtB,YAAA,QAAQ,EAAE;QACZ;AAEA,QAAA,KAAK,EAAE;QAEP,OAAO,EAAE,OAAO,EAAE;AACpB,IAAA,CAAC,CAAC;AACJ;;AC1FA;;AAEG;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function isElement(
|
|
1
|
+
export declare function isElement(value: unknown): value is Element;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isEventTarget(value: unknown): value is EventTarget;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './is-accepted-file';
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Checks whether a file matches the given accept patterns.
|
|
3
|
+
* Follows the native HTML
|
|
4
|
+
* [`accept`](https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/accept) attribute format:
|
|
5
|
+
* MIME types (`'image/png'`), wildcards (`'image/*'`), and file extensions (`'.pdf'`).
|
|
6
|
+
*
|
|
7
|
+
* @param file - File to check
|
|
8
|
+
* @param accept - Comma-separated string of accepted patterns (e.g. `'image/*, .pdf'`)
|
|
9
|
+
* @internal
|
|
10
|
+
*/
|
|
11
|
+
export declare function isAcceptedFile(file: File, accept: string): boolean;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export * from './bom';
|
|
2
2
|
export * from './dom';
|
|
3
|
+
export * from './assert';
|
|
3
4
|
export * from './context';
|
|
4
5
|
export * from './create-token';
|
|
5
6
|
export * from './is-query-signal';
|
|
@@ -8,3 +9,5 @@ export * from './const-signal';
|
|
|
8
9
|
export * from './proxy-signal';
|
|
9
10
|
export * from './to-element';
|
|
10
11
|
export * from './to-value';
|
|
12
|
+
export * from './unref-element';
|
|
13
|
+
export * from './files/index';
|
package/observers/index.d.ts
CHANGED
|
@@ -1,11 +1,32 @@
|
|
|
1
1
|
import { type CreateEffectOptions } from '@angular/core';
|
|
2
2
|
import type { MaybeElementSignal, MaybeSignal } from '@signality/core/types';
|
|
3
3
|
export interface IntersectionObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
/**
|
|
5
|
+
* Scrollable ancestor used as the intersection viewport.
|
|
6
|
+
* `null` or `undefined` defaults to the browser viewport.
|
|
7
|
+
*
|
|
8
|
+
* @see [IntersectionObserver: root on MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/root)
|
|
9
|
+
*/
|
|
4
10
|
readonly root?: MaybeElementSignal<Element> | Document | null;
|
|
11
|
+
/**
|
|
12
|
+
* CSS margin applied around the root before computing intersections.
|
|
13
|
+
* Accepts values in the same format as the CSS `margin` property (e.g. `'10px 0px'`).
|
|
14
|
+
*
|
|
15
|
+
* @see [IntersectionObserver: rootMargin on MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/rootMargin)
|
|
16
|
+
*/
|
|
5
17
|
readonly rootMargin?: MaybeSignal<string>;
|
|
18
|
+
/**
|
|
19
|
+
* Fraction(s) of the target element that must be visible to trigger the callback.
|
|
20
|
+
* A single number or an array of thresholds, each between `0` and `1`.
|
|
21
|
+
*
|
|
22
|
+
* @see [IntersectionObserver: thresholds on MDN](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/thresholds)
|
|
23
|
+
*/
|
|
6
24
|
readonly threshold?: MaybeSignal<number | number[]>;
|
|
7
25
|
}
|
|
8
26
|
export interface IntersectionObserverRef {
|
|
27
|
+
/**
|
|
28
|
+
* Stop observing all targets and disconnect the underlying `IntersectionObserver`.
|
|
29
|
+
*/
|
|
9
30
|
readonly destroy: () => void;
|
|
10
31
|
}
|
|
11
32
|
/**
|
|
@@ -27,7 +48,7 @@ export interface IntersectionObserverRef {
|
|
|
27
48
|
* }
|
|
28
49
|
* `
|
|
29
50
|
* })
|
|
30
|
-
* class
|
|
51
|
+
* export class IntersectionDemo {
|
|
31
52
|
* readonly section = viewChild<ElementRef>('section');
|
|
32
53
|
* readonly isVisible = signal(false);
|
|
33
54
|
*
|
|
@@ -1,15 +1,57 @@
|
|
|
1
1
|
import { type CreateEffectOptions } from '@angular/core';
|
|
2
2
|
import type { MaybeElementSignal, MaybeSignal } from '@signality/core/types';
|
|
3
3
|
export interface MutationObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
/**
|
|
5
|
+
* Whether to observe additions and removals of child nodes.
|
|
6
|
+
*
|
|
7
|
+
* @see [MutationObserver.observe(): childList on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#childlist)
|
|
8
|
+
*/
|
|
4
9
|
readonly childList?: MaybeSignal<boolean>;
|
|
10
|
+
/**
|
|
11
|
+
* Whether to observe attribute changes on the target element.
|
|
12
|
+
* Use `attributeFilter` to limit which attributes are observed.
|
|
13
|
+
*
|
|
14
|
+
* @see [MutationObserver.observe(): attributes on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#attributes)
|
|
15
|
+
*/
|
|
5
16
|
readonly attributes?: MaybeSignal<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Whether to observe changes to the text content (`CharacterData`) of the target.
|
|
19
|
+
*
|
|
20
|
+
* @see [MutationObserver.observe(): characterData on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#characterdata)
|
|
21
|
+
*/
|
|
6
22
|
readonly characterData?: MaybeSignal<boolean>;
|
|
23
|
+
/**
|
|
24
|
+
* Whether to extend observation to the entire subtree of the target element.
|
|
25
|
+
*
|
|
26
|
+
* @see [MutationObserver.observe(): subtree on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#subtree)
|
|
27
|
+
*/
|
|
7
28
|
readonly subtree?: MaybeSignal<boolean>;
|
|
29
|
+
/**
|
|
30
|
+
* Whether to record the previous attribute value in each `MutationRecord`.
|
|
31
|
+
* Implicitly sets `attributes` to `true` if not already set.
|
|
32
|
+
*
|
|
33
|
+
* @see [MutationObserver.observe(): attributeOldValue on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#attributeoldvalue)
|
|
34
|
+
*/
|
|
8
35
|
readonly attributeOldValue?: MaybeSignal<boolean>;
|
|
36
|
+
/**
|
|
37
|
+
* Whether to record the previous character data value in each `MutationRecord`.
|
|
38
|
+
* Implicitly sets `characterData` to `true` if not already set.
|
|
39
|
+
*
|
|
40
|
+
* @see [MutationObserver.observe(): characterDataOldValue on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#characterdataoldvalue)
|
|
41
|
+
*/
|
|
9
42
|
readonly characterDataOldValue?: MaybeSignal<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Array of attribute local names to observe. Only mutations to listed attributes are reported.
|
|
45
|
+
* Implicitly sets `attributes` to `true` if not already set.
|
|
46
|
+
*
|
|
47
|
+
* @see [MutationObserver.observe(): attributeFilter on MDN](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver/observe#attributefilter)
|
|
48
|
+
*/
|
|
10
49
|
readonly attributeFilter?: MaybeSignal<string[]>;
|
|
11
50
|
}
|
|
12
51
|
export interface MutationObserverRef {
|
|
52
|
+
/**
|
|
53
|
+
* Stop observing all targets and disconnect the underlying `MutationObserver`.
|
|
54
|
+
*/
|
|
13
55
|
readonly destroy: () => void;
|
|
14
56
|
}
|
|
15
57
|
/**
|
|
@@ -30,7 +72,7 @@ export interface MutationObserverRef {
|
|
|
30
72
|
* </div>
|
|
31
73
|
* `
|
|
32
74
|
* })
|
|
33
|
-
* class MutationComponent {
|
|
75
|
+
* export class MutationComponent {
|
|
34
76
|
* readonly container = viewChild<ElementRef>('container');
|
|
35
77
|
* readonly childCount = signal(0);
|
|
36
78
|
*
|
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
import { type CreateEffectOptions } from '@angular/core';
|
|
2
2
|
import type { MaybeElementSignal, MaybeSignal } from '@signality/core/types';
|
|
3
3
|
export interface ResizeObserverInitOptions extends Omit<CreateEffectOptions, 'allowSignalWrites'> {
|
|
4
|
+
/**
|
|
5
|
+
* Box model to measure when reporting size changes.
|
|
6
|
+
*
|
|
7
|
+
* - `'content-box'` — size of the content area, excluding padding and border (default).
|
|
8
|
+
* - `'border-box'` — size including padding and border.
|
|
9
|
+
* - `'device-pixel-content-box'` — content-box size in physical device pixels.
|
|
10
|
+
*
|
|
11
|
+
* @see [ResizeObserver.observe(): box on MDN](https://developer.mozilla.org/en-US/docs/Web/API/ResizeObserver/observe#box)
|
|
12
|
+
*/
|
|
4
13
|
readonly box?: MaybeSignal<ResizeObserverBoxOptions>;
|
|
5
14
|
}
|
|
6
15
|
export interface ResizeObserverRef {
|
|
16
|
+
/**
|
|
17
|
+
* Stop observing all targets and disconnect the underlying `ResizeObserver`.
|
|
18
|
+
*/
|
|
7
19
|
readonly destroy: () => void;
|
|
8
20
|
}
|
|
9
21
|
/**
|
|
@@ -24,7 +36,7 @@ export interface ResizeObserverRef {
|
|
|
24
36
|
* </div>
|
|
25
37
|
* `
|
|
26
38
|
* })
|
|
27
|
-
* class ResizeComponent {
|
|
39
|
+
* export class ResizeComponent {
|
|
28
40
|
* readonly resizable = viewChild<ElementRef>('resizable');
|
|
29
41
|
* readonly size = signal({ width: 0, height: 0 });
|
|
30
42
|
*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signality/core",
|
|
3
|
-
"version": "0.0.1-alpha.
|
|
3
|
+
"version": "0.0.1-alpha.4",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"author": "Vyacheslav Borodin <https://github.com/vs-borodin>",
|
|
6
6
|
"description": "A foundational toolkit for Angular Signals",
|
|
@@ -23,11 +23,11 @@
|
|
|
23
23
|
"homepage": "https://signality.dev",
|
|
24
24
|
"sideEffects": false,
|
|
25
25
|
"peerDependencies": {
|
|
26
|
-
"@angular/common": ">=
|
|
27
|
-
"@angular/core": ">=
|
|
28
|
-
"@angular/forms": ">=
|
|
29
|
-
"@angular/router": ">=
|
|
30
|
-
"@angular/platform-browser": ">=
|
|
26
|
+
"@angular/common": ">=20.0.0",
|
|
27
|
+
"@angular/core": ">=20.0.0",
|
|
28
|
+
"@angular/forms": ">=20.0.0",
|
|
29
|
+
"@angular/router": ">=20.0.0",
|
|
30
|
+
"@angular/platform-browser": ">=20.0.0",
|
|
31
31
|
"rxjs": ">=7.8.1"
|
|
32
32
|
},
|
|
33
33
|
"module": "fesm2022/signality-core.mjs",
|
|
@@ -116,10 +116,18 @@
|
|
|
116
116
|
"types": "./browser/favicon/index.d.ts",
|
|
117
117
|
"default": "./fesm2022/signality-core-browser-favicon.mjs"
|
|
118
118
|
},
|
|
119
|
+
"./browser/file-dialog": {
|
|
120
|
+
"types": "./browser/file-dialog/index.d.ts",
|
|
121
|
+
"default": "./fesm2022/signality-core-browser-file-dialog.mjs"
|
|
122
|
+
},
|
|
119
123
|
"./browser/fps": {
|
|
120
124
|
"types": "./browser/fps/index.d.ts",
|
|
121
125
|
"default": "./fesm2022/signality-core-browser-fps.mjs"
|
|
122
126
|
},
|
|
127
|
+
"./browser/fullscreen": {
|
|
128
|
+
"types": "./browser/fullscreen/index.d.ts",
|
|
129
|
+
"default": "./fesm2022/signality-core-browser-fullscreen.mjs"
|
|
130
|
+
},
|
|
123
131
|
"./browser/gamepad": {
|
|
124
132
|
"types": "./browser/gamepad/index.d.ts",
|
|
125
133
|
"default": "./fesm2022/signality-core-browser-gamepad.mjs"
|
|
@@ -152,14 +160,14 @@
|
|
|
152
160
|
"types": "./browser/page-visibility/index.d.ts",
|
|
153
161
|
"default": "./fesm2022/signality-core-browser-page-visibility.mjs"
|
|
154
162
|
},
|
|
163
|
+
"./browser/permission-state": {
|
|
164
|
+
"types": "./browser/permission-state/index.d.ts",
|
|
165
|
+
"default": "./fesm2022/signality-core-browser-permission-state.mjs"
|
|
166
|
+
},
|
|
155
167
|
"./browser/picture-in-picture": {
|
|
156
168
|
"types": "./browser/picture-in-picture/index.d.ts",
|
|
157
169
|
"default": "./fesm2022/signality-core-browser-picture-in-picture.mjs"
|
|
158
170
|
},
|
|
159
|
-
"./browser/pointer-lock-element": {
|
|
160
|
-
"types": "./browser/pointer-lock-element/index.d.ts",
|
|
161
|
-
"default": "./fesm2022/signality-core-browser-pointer-lock-element.mjs"
|
|
162
|
-
},
|
|
163
171
|
"./browser/screen-orientation": {
|
|
164
172
|
"types": "./browser/screen-orientation/index.d.ts",
|
|
165
173
|
"default": "./fesm2022/signality-core-browser-screen-orientation.mjs"
|
|
@@ -180,14 +188,14 @@
|
|
|
180
188
|
"types": "./browser/text-direction/index.d.ts",
|
|
181
189
|
"default": "./fesm2022/signality-core-browser-text-direction.mjs"
|
|
182
190
|
},
|
|
191
|
+
"./browser/text-selection": {
|
|
192
|
+
"types": "./browser/text-selection/index.d.ts",
|
|
193
|
+
"default": "./fesm2022/signality-core-browser-text-selection.mjs"
|
|
194
|
+
},
|
|
183
195
|
"./browser/vibration": {
|
|
184
196
|
"types": "./browser/vibration/index.d.ts",
|
|
185
197
|
"default": "./fesm2022/signality-core-browser-vibration.mjs"
|
|
186
198
|
},
|
|
187
|
-
"./browser/wake-lock": {
|
|
188
|
-
"types": "./browser/wake-lock/index.d.ts",
|
|
189
|
-
"default": "./fesm2022/signality-core-browser-wake-lock.mjs"
|
|
190
|
-
},
|
|
191
199
|
"./browser/web-notification": {
|
|
192
200
|
"types": "./browser/web-notification/index.d.ts",
|
|
193
201
|
"default": "./fesm2022/signality-core-browser-web-notification.mjs"
|
|
@@ -200,6 +208,14 @@
|
|
|
200
208
|
"types": "./browser/web-worker/index.d.ts",
|
|
201
209
|
"default": "./fesm2022/signality-core-browser-web-worker.mjs"
|
|
202
210
|
},
|
|
211
|
+
"./browser/window-focus": {
|
|
212
|
+
"types": "./browser/window-focus/index.d.ts",
|
|
213
|
+
"default": "./fesm2022/signality-core-browser-window-focus.mjs"
|
|
214
|
+
},
|
|
215
|
+
"./browser/window-size": {
|
|
216
|
+
"types": "./browser/window-size/index.d.ts",
|
|
217
|
+
"default": "./fesm2022/signality-core-browser-window-size.mjs"
|
|
218
|
+
},
|
|
203
219
|
"./elements/active-element": {
|
|
204
220
|
"types": "./elements/active-element/index.d.ts",
|
|
205
221
|
"default": "./fesm2022/signality-core-elements-active-element.mjs"
|
|
@@ -256,14 +272,6 @@
|
|
|
256
272
|
"types": "./elements/swipe/index.d.ts",
|
|
257
273
|
"default": "./fesm2022/signality-core-elements-swipe.mjs"
|
|
258
274
|
},
|
|
259
|
-
"./elements/text-selection": {
|
|
260
|
-
"types": "./elements/text-selection/index.d.ts",
|
|
261
|
-
"default": "./fesm2022/signality-core-elements-text-selection.mjs"
|
|
262
|
-
},
|
|
263
|
-
"./elements/window-size": {
|
|
264
|
-
"types": "./elements/window-size/index.d.ts",
|
|
265
|
-
"default": "./fesm2022/signality-core-elements-window-size.mjs"
|
|
266
|
-
},
|
|
267
275
|
"./forms/cva": {
|
|
268
276
|
"types": "./forms/cva/index.d.ts",
|
|
269
277
|
"default": "./fesm2022/signality-core-forms-cva.mjs"
|
|
@@ -276,10 +284,6 @@
|
|
|
276
284
|
"types": "./observers/mutation-observer/index.d.ts",
|
|
277
285
|
"default": "./fesm2022/signality-core-observers-mutation-observer.mjs"
|
|
278
286
|
},
|
|
279
|
-
"./observers/performance-observer": {
|
|
280
|
-
"types": "./observers/performance-observer/index.d.ts",
|
|
281
|
-
"default": "./fesm2022/signality-core-observers-performance-observer.mjs"
|
|
282
|
-
},
|
|
283
287
|
"./observers/resize-observer": {
|
|
284
288
|
"types": "./observers/resize-observer/index.d.ts",
|
|
285
289
|
"default": "./fesm2022/signality-core-observers-resize-observer.mjs"
|
|
@@ -18,7 +18,7 @@ export type DebouncedOptions<T> = CreateSignalOptions<T> & WithInjector;
|
|
|
18
18
|
* <p>Debounced value: {{ debouncedQuery() }}</p>
|
|
19
19
|
* `
|
|
20
20
|
* })
|
|
21
|
-
* class SearchInput {
|
|
21
|
+
* export class SearchInput {
|
|
22
22
|
* readonly query = signal('');
|
|
23
23
|
* readonly debouncedQuery = debounced(this.query, 300);
|
|
24
24
|
* }
|
|
@@ -42,7 +42,7 @@ export declare function debounced<S extends Signal<any>>(source: S, timeMs: Mayb
|
|
|
42
42
|
* <p>Search results for: {{ query() }}</p>
|
|
43
43
|
* `
|
|
44
44
|
* })
|
|
45
|
-
* class SearchInput {
|
|
45
|
+
* export class SearchInput {
|
|
46
46
|
* readonly query = debounced('', 300);
|
|
47
47
|
* }
|
|
48
48
|
* ```
|
|
@@ -20,7 +20,7 @@ export type ThrottledOptions<T> = CreateSignalOptions<T> & WithInjector;
|
|
|
20
20
|
* </div>
|
|
21
21
|
* `
|
|
22
22
|
* })
|
|
23
|
-
* class ScrollTracker {
|
|
23
|
+
* export class ScrollTracker {
|
|
24
24
|
* readonly scrollY = signal(0);
|
|
25
25
|
* readonly throttledScrollY = throttled(this.scrollY, 100);
|
|
26
26
|
* }
|
|
@@ -45,7 +45,7 @@ export declare function throttled<S extends Signal<any>>(source: S, timeMs: Mayb
|
|
|
45
45
|
* </div>
|
|
46
46
|
* `
|
|
47
47
|
* })
|
|
48
|
-
* class MouseTracker {
|
|
48
|
+
* export class MouseTracker {
|
|
49
49
|
* readonly mousePosition = throttled({ x: 0, y: 0 }, 16);
|
|
50
50
|
* }
|
|
51
51
|
* ```
|
|
@@ -24,7 +24,7 @@ export type WatcherRef = EffectRef;
|
|
|
24
24
|
* <button (click)="count.set(count() + 1)">Count: {{ count() }}</button>
|
|
25
25
|
* `
|
|
26
26
|
* })
|
|
27
|
-
* class
|
|
27
|
+
* export class Counter {
|
|
28
28
|
* readonly count = signal(0);
|
|
29
29
|
*
|
|
30
30
|
* constructor() {
|
|
@@ -53,7 +53,7 @@ export declare function watcher<V>(source: Signal<V>, fn: (curr: V, prev: V, onC
|
|
|
53
53
|
* <input [(ngModel)]="age" type="number" />
|
|
54
54
|
* `
|
|
55
55
|
* })
|
|
56
|
-
* class
|
|
56
|
+
* export class UserPreview {
|
|
57
57
|
* readonly name = signal('John');
|
|
58
58
|
* readonly age = signal(25);
|
|
59
59
|
*
|
package/router/params/index.d.ts
CHANGED
|
@@ -19,7 +19,7 @@ export type ParamsOptions<T extends Params = Params> = CreateSignalOptions<T> &
|
|
|
19
19
|
* </div>
|
|
20
20
|
* `
|
|
21
21
|
* })
|
|
22
|
-
* class
|
|
22
|
+
* export class UserPreview {
|
|
23
23
|
* // Route: /user/:id/:slug
|
|
24
24
|
* readonly routeParams = params<{ id: string; slug: string }>();
|
|
25
25
|
* }
|