@mappoh/nova 0.2.3 → 0.5.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/README.md +180 -30
- package/dist/a11y/index.d.ts +40 -0
- package/dist/a11y/index.d.ts.map +1 -0
- package/dist/a11y/index.js +162 -0
- package/dist/a11y/index.js.map +1 -0
- package/dist/alert/alert.d.ts +32 -0
- package/dist/alert/alert.d.ts.map +1 -0
- package/dist/alert/alert.js +307 -0
- package/dist/alert/alert.js.map +1 -0
- package/dist/alert/index.d.ts +3 -0
- package/dist/alert/index.d.ts.map +1 -0
- package/dist/alert/index.js +2 -0
- package/dist/alert/index.js.map +1 -0
- package/dist/animation/flip.d.ts +28 -0
- package/dist/animation/flip.d.ts.map +1 -0
- package/dist/animation/flip.js +113 -0
- package/dist/animation/flip.js.map +1 -0
- package/dist/animation/spring.d.ts +34 -0
- package/dist/animation/spring.d.ts.map +1 -0
- package/dist/animation/spring.js +86 -0
- package/dist/animation/spring.js.map +1 -0
- package/dist/animation/stagger.d.ts +43 -0
- package/dist/animation/stagger.d.ts.map +1 -0
- package/dist/animation/stagger.js +150 -0
- package/dist/animation/stagger.js.map +1 -0
- package/dist/avatar/avatar.d.ts +27 -0
- package/dist/avatar/avatar.d.ts.map +1 -0
- package/dist/avatar/avatar.js +132 -0
- package/dist/avatar/avatar.js.map +1 -0
- package/dist/avatar/index.d.ts +3 -0
- package/dist/avatar/index.d.ts.map +1 -0
- package/dist/avatar/index.js +2 -0
- package/dist/avatar/index.js.map +1 -0
- package/dist/badge/badge.d.ts +27 -0
- package/dist/badge/badge.d.ts.map +1 -0
- package/dist/badge/badge.js +118 -0
- package/dist/badge/badge.js.map +1 -0
- package/dist/badge/index.d.ts +3 -0
- package/dist/badge/index.d.ts.map +1 -0
- package/dist/badge/index.js +2 -0
- package/dist/badge/index.js.map +1 -0
- package/dist/cache/cache.d.ts +28 -0
- package/dist/cache/cache.d.ts.map +1 -0
- package/dist/cache/cache.js +67 -0
- package/dist/cache/cache.js.map +1 -0
- package/dist/cache/index.d.ts +3 -0
- package/dist/cache/index.d.ts.map +1 -0
- package/dist/cache/index.js +2 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/chart/chart.d.ts +31 -0
- package/dist/chart/chart.d.ts.map +1 -0
- package/dist/chart/chart.js +372 -0
- package/dist/chart/chart.js.map +1 -0
- package/dist/chart/index.d.ts +3 -0
- package/dist/chart/index.d.ts.map +1 -0
- package/dist/chart/index.js +2 -0
- package/dist/chart/index.js.map +1 -0
- package/dist/color-picker/color-picker.d.ts +18 -0
- package/dist/color-picker/color-picker.d.ts.map +1 -0
- package/dist/color-picker/color-picker.js +243 -0
- package/dist/color-picker/color-picker.js.map +1 -0
- package/dist/color-picker/index.d.ts +3 -0
- package/dist/color-picker/index.d.ts.map +1 -0
- package/dist/color-picker/index.js +2 -0
- package/dist/color-picker/index.js.map +1 -0
- package/dist/combobox/combobox.d.ts +26 -0
- package/dist/combobox/combobox.d.ts.map +1 -0
- package/dist/combobox/combobox.js +262 -0
- package/dist/combobox/combobox.js.map +1 -0
- package/dist/combobox/index.d.ts +3 -0
- package/dist/combobox/index.d.ts.map +1 -0
- package/dist/combobox/index.js +2 -0
- package/dist/combobox/index.js.map +1 -0
- package/dist/command-palette/command-palette.d.ts +31 -0
- package/dist/command-palette/command-palette.d.ts.map +1 -0
- package/dist/command-palette/command-palette.js +590 -0
- package/dist/command-palette/command-palette.js.map +1 -0
- package/dist/command-palette/index.d.ts +3 -0
- package/dist/command-palette/index.d.ts.map +1 -0
- package/dist/command-palette/index.js +2 -0
- package/dist/command-palette/index.js.map +1 -0
- package/dist/component/component.d.ts +20 -2
- package/dist/component/component.d.ts.map +1 -1
- package/dist/component/component.js +115 -5
- package/dist/component/component.js.map +1 -1
- package/dist/component/connect.d.ts +50 -0
- package/dist/component/connect.d.ts.map +1 -1
- package/dist/component/connect.js +135 -0
- package/dist/component/connect.js.map +1 -1
- package/dist/component/directives.d.ts +20 -0
- package/dist/component/directives.d.ts.map +1 -0
- package/dist/component/directives.js +42 -0
- package/dist/component/directives.js.map +1 -0
- package/dist/component/html.d.ts +8 -0
- package/dist/component/html.d.ts.map +1 -1
- package/dist/component/html.js +11 -0
- package/dist/component/html.js.map +1 -1
- package/dist/component/index.d.ts +9 -3
- package/dist/component/index.d.ts.map +1 -1
- package/dist/component/index.js +6 -2
- package/dist/component/index.js.map +1 -1
- package/dist/component/portal.d.ts +32 -0
- package/dist/component/portal.d.ts.map +1 -0
- package/dist/component/portal.js +59 -0
- package/dist/component/portal.js.map +1 -0
- package/dist/component/ref.d.ts +18 -0
- package/dist/component/ref.d.ts.map +1 -0
- package/dist/component/ref.js +17 -0
- package/dist/component/ref.js.map +1 -0
- package/dist/component/slot-styles.d.ts +18 -0
- package/dist/component/slot-styles.d.ts.map +1 -0
- package/dist/component/slot-styles.js +47 -0
- package/dist/component/slot-styles.js.map +1 -0
- package/dist/component/template.d.ts +2 -0
- package/dist/component/template.d.ts.map +1 -1
- package/dist/component/template.js +122 -4
- package/dist/component/template.js.map +1 -1
- package/dist/context/context.d.ts +39 -0
- package/dist/context/context.d.ts.map +1 -0
- package/dist/context/context.js +111 -0
- package/dist/context/context.js.map +1 -0
- package/dist/context/index.d.ts +3 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +2 -0
- package/dist/context/index.js.map +1 -0
- package/dist/data-table/data-table.d.ts +34 -0
- package/dist/data-table/data-table.d.ts.map +1 -0
- package/dist/data-table/data-table.js +256 -0
- package/dist/data-table/data-table.js.map +1 -0
- package/dist/data-table/index.d.ts +3 -0
- package/dist/data-table/index.d.ts.map +1 -0
- package/dist/data-table/index.js +2 -0
- package/dist/data-table/index.js.map +1 -0
- package/dist/date-picker/date-picker.d.ts +22 -0
- package/dist/date-picker/date-picker.d.ts.map +1 -0
- package/dist/date-picker/date-picker.js +282 -0
- package/dist/date-picker/date-picker.js.map +1 -0
- package/dist/date-picker/index.d.ts +3 -0
- package/dist/date-picker/index.d.ts.map +1 -0
- package/dist/date-picker/index.js +2 -0
- package/dist/date-picker/index.js.map +1 -0
- package/dist/devtools/devtools.d.ts +54 -0
- package/dist/devtools/devtools.d.ts.map +1 -1
- package/dist/devtools/devtools.js +86 -0
- package/dist/devtools/devtools.js.map +1 -1
- package/dist/devtools/index.d.ts +2 -2
- package/dist/devtools/index.d.ts.map +1 -1
- package/dist/devtools/index.js +1 -1
- package/dist/devtools/index.js.map +1 -1
- package/dist/editor/editor.d.ts +40 -0
- package/dist/editor/editor.d.ts.map +1 -0
- package/dist/editor/editor.js +955 -0
- package/dist/editor/editor.js.map +1 -0
- package/dist/editor/index.d.ts +3 -0
- package/dist/editor/index.d.ts.map +1 -0
- package/dist/editor/index.js +2 -0
- package/dist/editor/index.js.map +1 -0
- package/dist/event-bus/event-bus.d.ts +20 -0
- package/dist/event-bus/event-bus.d.ts.map +1 -0
- package/dist/event-bus/event-bus.js +55 -0
- package/dist/event-bus/event-bus.js.map +1 -0
- package/dist/event-bus/index.d.ts +3 -0
- package/dist/event-bus/index.d.ts.map +1 -0
- package/dist/event-bus/index.js +2 -0
- package/dist/event-bus/index.js.map +1 -0
- package/dist/file-upload/file-upload.d.ts +24 -0
- package/dist/file-upload/file-upload.d.ts.map +1 -0
- package/dist/file-upload/file-upload.js +177 -0
- package/dist/file-upload/file-upload.js.map +1 -0
- package/dist/file-upload/index.d.ts +3 -0
- package/dist/file-upload/index.d.ts.map +1 -0
- package/dist/file-upload/index.js +2 -0
- package/dist/file-upload/index.js.map +1 -0
- package/dist/forms/form-engine.d.ts +19 -6
- package/dist/forms/form-engine.d.ts.map +1 -1
- package/dist/forms/form-engine.js +97 -11
- package/dist/forms/form-engine.js.map +1 -1
- package/dist/forms/validators.d.ts +4 -0
- package/dist/forms/validators.d.ts.map +1 -1
- package/dist/forms/validators.js +6 -0
- package/dist/forms/validators.js.map +1 -1
- package/dist/forms/wasm-validators.d.ts +19 -11
- package/dist/forms/wasm-validators.d.ts.map +1 -1
- package/dist/forms/wasm-validators.js +191 -31
- package/dist/forms/wasm-validators.js.map +1 -1
- package/dist/gesture/gesture.d.ts +2 -0
- package/dist/gesture/gesture.d.ts.map +1 -1
- package/dist/gesture/gesture.js +81 -0
- package/dist/gesture/gesture.js.map +1 -1
- package/dist/http/http.d.ts +8 -0
- package/dist/http/http.d.ts.map +1 -1
- package/dist/http/http.js +18 -4
- package/dist/http/http.js.map +1 -1
- package/dist/i18n/i18n.d.ts +6 -0
- package/dist/i18n/i18n.d.ts.map +1 -1
- package/dist/i18n/i18n.js +71 -9
- package/dist/i18n/i18n.js.map +1 -1
- package/dist/machine/index.d.ts +3 -0
- package/dist/machine/index.d.ts.map +1 -0
- package/dist/machine/index.js +2 -0
- package/dist/machine/index.js.map +1 -0
- package/dist/machine/machine.d.ts +26 -0
- package/dist/machine/machine.d.ts.map +1 -0
- package/dist/machine/machine.js +79 -0
- package/dist/machine/machine.js.map +1 -0
- package/dist/modal/modal.d.ts.map +1 -1
- package/dist/modal/modal.js +13 -29
- package/dist/modal/modal.js.map +1 -1
- package/dist/notification-center/index.d.ts +3 -0
- package/dist/notification-center/index.d.ts.map +1 -0
- package/dist/notification-center/index.js +2 -0
- package/dist/notification-center/index.js.map +1 -0
- package/dist/notification-center/notification-center.d.ts +55 -0
- package/dist/notification-center/notification-center.d.ts.map +1 -0
- package/dist/notification-center/notification-center.js +941 -0
- package/dist/notification-center/notification-center.js.map +1 -0
- package/dist/pagination/index.d.ts +3 -0
- package/dist/pagination/index.d.ts.map +1 -0
- package/dist/pagination/index.js +2 -0
- package/dist/pagination/index.js.map +1 -0
- package/dist/pagination/pagination.d.ts +31 -0
- package/dist/pagination/pagination.d.ts.map +1 -0
- package/dist/pagination/pagination.js +213 -0
- package/dist/pagination/pagination.js.map +1 -0
- package/dist/progress/progress.d.ts.map +1 -1
- package/dist/progress/progress.js +5 -7
- package/dist/progress/progress.js.map +1 -1
- package/dist/query/index.d.ts +3 -0
- package/dist/query/index.d.ts.map +1 -0
- package/dist/query/index.js +2 -0
- package/dist/query/index.js.map +1 -0
- package/dist/query/query.d.ts +31 -0
- package/dist/query/query.d.ts.map +1 -0
- package/dist/query/query.js +150 -0
- package/dist/query/query.js.map +1 -0
- package/dist/radio-group/index.d.ts +3 -0
- package/dist/radio-group/index.d.ts.map +1 -0
- package/dist/radio-group/index.js +2 -0
- package/dist/radio-group/index.js.map +1 -0
- package/dist/radio-group/radio-group.d.ts +37 -0
- package/dist/radio-group/radio-group.d.ts.map +1 -0
- package/dist/radio-group/radio-group.js +251 -0
- package/dist/radio-group/radio-group.js.map +1 -0
- package/dist/rating/index.d.ts +3 -0
- package/dist/rating/index.d.ts.map +1 -0
- package/dist/rating/index.js +2 -0
- package/dist/rating/index.js.map +1 -0
- package/dist/rating/rating.d.ts +31 -0
- package/dist/rating/rating.d.ts.map +1 -0
- package/dist/rating/rating.js +187 -0
- package/dist/rating/rating.js.map +1 -0
- package/dist/router/index.d.ts +1 -1
- package/dist/router/index.d.ts.map +1 -1
- package/dist/router/index.js +1 -1
- package/dist/router/index.js.map +1 -1
- package/dist/router/router.d.ts +30 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +131 -16
- package/dist/router/router.js.map +1 -1
- package/dist/skeleton/index.d.ts +3 -0
- package/dist/skeleton/index.d.ts.map +1 -0
- package/dist/skeleton/index.js +2 -0
- package/dist/skeleton/index.js.map +1 -0
- package/dist/skeleton/skeleton.d.ts +24 -0
- package/dist/skeleton/skeleton.d.ts.map +1 -0
- package/dist/skeleton/skeleton.js +91 -0
- package/dist/skeleton/skeleton.js.map +1 -0
- package/dist/slider/index.d.ts +3 -0
- package/dist/slider/index.d.ts.map +1 -0
- package/dist/slider/index.js +2 -0
- package/dist/slider/index.js.map +1 -0
- package/dist/slider/slider.d.ts +33 -0
- package/dist/slider/slider.d.ts.map +1 -0
- package/dist/slider/slider.js +248 -0
- package/dist/slider/slider.js.map +1 -0
- package/dist/spinner/index.d.ts +3 -0
- package/dist/spinner/index.d.ts.map +1 -0
- package/dist/spinner/index.js +2 -0
- package/dist/spinner/index.js.map +1 -0
- package/dist/spinner/spinner.d.ts +23 -0
- package/dist/spinner/spinner.d.ts.map +1 -0
- package/dist/spinner/spinner.js +82 -0
- package/dist/spinner/spinner.js.map +1 -0
- package/dist/state/store.d.ts +4 -0
- package/dist/state/store.d.ts.map +1 -1
- package/dist/state/store.js +27 -7
- package/dist/state/store.js.map +1 -1
- package/dist/sw/sw.d.ts.map +1 -1
- package/dist/sw/sw.js +39 -7
- package/dist/sw/sw.js.map +1 -1
- package/dist/switch/index.d.ts +3 -0
- package/dist/switch/index.d.ts.map +1 -0
- package/dist/switch/index.js +2 -0
- package/dist/switch/index.js.map +1 -0
- package/dist/switch/switch.d.ts +27 -0
- package/dist/switch/switch.d.ts.map +1 -0
- package/dist/switch/switch.js +163 -0
- package/dist/switch/switch.js.map +1 -0
- package/dist/theme/index.d.ts +2 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +1 -0
- package/dist/theme/index.js.map +1 -1
- package/dist/theme/scale.d.ts +40 -0
- package/dist/theme/scale.d.ts.map +1 -0
- package/dist/theme/scale.js +62 -0
- package/dist/theme/scale.js.map +1 -0
- package/dist/tree-view/index.d.ts +3 -0
- package/dist/tree-view/index.d.ts.map +1 -0
- package/dist/tree-view/index.js +2 -0
- package/dist/tree-view/index.js.map +1 -0
- package/dist/tree-view/tree-view.d.ts +29 -0
- package/dist/tree-view/tree-view.d.ts.map +1 -0
- package/dist/tree-view/tree-view.js +273 -0
- package/dist/tree-view/tree-view.js.map +1 -0
- package/dist/utils/index.d.ts +29 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +114 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/websocket/index.d.ts +3 -0
- package/dist/websocket/index.d.ts.map +1 -0
- package/dist/websocket/index.js +2 -0
- package/dist/websocket/index.js.map +1 -0
- package/dist/websocket/websocket.d.ts +31 -0
- package/dist/websocket/websocket.d.ts.map +1 -0
- package/dist/websocket/websocket.js +164 -0
- package/dist/websocket/websocket.js.map +1 -0
- package/package.json +135 -2
|
@@ -22,6 +22,8 @@ export interface GestureEvent {
|
|
|
22
22
|
distance?: number;
|
|
23
23
|
/** Original touch/pointer event */
|
|
24
24
|
originalEvent: Event;
|
|
25
|
+
/** Pointer type: 'touch', 'mouse', 'pen' */
|
|
26
|
+
pointerType?: string;
|
|
25
27
|
}
|
|
26
28
|
export interface GestureOptions {
|
|
27
29
|
/** Min distance for swipe detection in px. Default: 50 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/gesture/gesture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,aAAa,EAAE,KAAK,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACtE,OAAO,IAAI,IAAI,CAAC;CACjB;AAUD,iDAAiD;AACjD,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,GAAG,OAAO,EACzB,OAAO,GAAE,cAAmB,GAC3B,eAAe,
|
|
1
|
+
{"version":3,"file":"gesture.d.ts","sourceRoot":"","sources":["../../src/gesture/gesture.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,CAAC;AAC1E,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAE9D,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,WAAW,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,aAAa,EAAE,KAAK,CAAC;IACrB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8CAA8C;IAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACtE,OAAO,IAAI,IAAI,CAAC;CACjB;AAUD,iDAAiD;AACjD,wBAAgB,OAAO,CACrB,OAAO,EAAE,MAAM,GAAG,OAAO,EACzB,OAAO,GAAE,cAAmB,GAC3B,eAAe,CA0OjB"}
|
package/dist/gesture/gesture.js
CHANGED
|
@@ -130,9 +130,85 @@ export function gesture(element, options = {}) {
|
|
|
130
130
|
initialPinchDist = 0;
|
|
131
131
|
isPanning = false;
|
|
132
132
|
}
|
|
133
|
+
// --- PointerEvent support (mouse, pen, touch via unified API) ---
|
|
134
|
+
const usePointer = typeof PointerEvent !== 'undefined';
|
|
135
|
+
let pointerType = '';
|
|
136
|
+
function onPointerDown(e) {
|
|
137
|
+
// Skip touch pointers — touch listeners already handle single-finger gestures
|
|
138
|
+
if (e.pointerType === 'touch')
|
|
139
|
+
return;
|
|
140
|
+
if (e.isPrimary) {
|
|
141
|
+
pointerType = e.pointerType;
|
|
142
|
+
startX = e.clientX;
|
|
143
|
+
startY = e.clientY;
|
|
144
|
+
startTime = Date.now();
|
|
145
|
+
isPanning = false;
|
|
146
|
+
try {
|
|
147
|
+
el.setPointerCapture(e.pointerId);
|
|
148
|
+
}
|
|
149
|
+
catch { /* element detached */ }
|
|
150
|
+
if (gestures.includes('longpress')) {
|
|
151
|
+
longPressTimer = setTimeout(() => {
|
|
152
|
+
emit('longpress', { deltaX: 0, deltaY: 0, pointerType, originalEvent: e });
|
|
153
|
+
}, longPressDuration);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function onPointerMove(e) {
|
|
158
|
+
if (!e.isPrimary || e.pointerType === 'touch')
|
|
159
|
+
return;
|
|
160
|
+
const dx = e.clientX - startX;
|
|
161
|
+
const dy = e.clientY - startY;
|
|
162
|
+
if (longPressTimer && dist(dx, dy) > tapTolerance) {
|
|
163
|
+
clearTimeout(longPressTimer);
|
|
164
|
+
longPressTimer = undefined;
|
|
165
|
+
}
|
|
166
|
+
if (gestures.includes('pan')) {
|
|
167
|
+
if (!isPanning && dist(dx, dy) > tapTolerance)
|
|
168
|
+
isPanning = true;
|
|
169
|
+
if (isPanning) {
|
|
170
|
+
const elapsed = Date.now() - startTime || 1;
|
|
171
|
+
emit('pan', { deltaX: dx, deltaY: dy, velocityX: dx / elapsed, velocityY: dy / elapsed, pointerType, originalEvent: e });
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function onPointerUp(e) {
|
|
176
|
+
if (!e.isPrimary || e.pointerType === 'touch')
|
|
177
|
+
return;
|
|
178
|
+
if (longPressTimer) {
|
|
179
|
+
clearTimeout(longPressTimer);
|
|
180
|
+
longPressTimer = undefined;
|
|
181
|
+
}
|
|
182
|
+
const dx = e.clientX - startX;
|
|
183
|
+
const dy = e.clientY - startY;
|
|
184
|
+
const elapsed = Date.now() - startTime || 1;
|
|
185
|
+
const d = dist(dx, dy);
|
|
186
|
+
if (d < tapTolerance && elapsed < 300 && gestures.includes('tap')) {
|
|
187
|
+
emit('tap', { deltaX: dx, deltaY: dy, pointerType, originalEvent: e });
|
|
188
|
+
return;
|
|
189
|
+
}
|
|
190
|
+
if (gestures.includes('swipe') && d >= swipeThreshold) {
|
|
191
|
+
const vx = Math.abs(dx / elapsed);
|
|
192
|
+
const vy = Math.abs(dy / elapsed);
|
|
193
|
+
if (vx >= swipeVelocity || vy >= swipeVelocity) {
|
|
194
|
+
const direction = Math.abs(dx) > Math.abs(dy)
|
|
195
|
+
? (dx > 0 ? 'right' : 'left')
|
|
196
|
+
: (dy > 0 ? 'down' : 'up');
|
|
197
|
+
emit('swipe', { deltaX: dx, deltaY: dy, velocityX: dx / elapsed, velocityY: dy / elapsed, direction, pointerType, originalEvent: e });
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
isPanning = false;
|
|
201
|
+
}
|
|
202
|
+
// Always attach touch listeners for pinch (multi-touch not available via PointerEvent easily)
|
|
133
203
|
el.addEventListener('touchstart', onTouchStart, { passive: true });
|
|
134
204
|
el.addEventListener('touchmove', onTouchMove, { passive: true });
|
|
135
205
|
el.addEventListener('touchend', onTouchEnd);
|
|
206
|
+
// Attach pointer listeners for single-finger/mouse/pen gestures
|
|
207
|
+
if (usePointer) {
|
|
208
|
+
el.addEventListener('pointerdown', onPointerDown);
|
|
209
|
+
el.addEventListener('pointermove', onPointerMove);
|
|
210
|
+
el.addEventListener('pointerup', onPointerUp);
|
|
211
|
+
}
|
|
136
212
|
return {
|
|
137
213
|
on(type, handler) {
|
|
138
214
|
if (!handlers.has(type))
|
|
@@ -144,6 +220,11 @@ export function gesture(element, options = {}) {
|
|
|
144
220
|
el.removeEventListener('touchstart', onTouchStart);
|
|
145
221
|
el.removeEventListener('touchmove', onTouchMove);
|
|
146
222
|
el.removeEventListener('touchend', onTouchEnd);
|
|
223
|
+
if (usePointer) {
|
|
224
|
+
el.removeEventListener('pointerdown', onPointerDown);
|
|
225
|
+
el.removeEventListener('pointermove', onPointerMove);
|
|
226
|
+
el.removeEventListener('pointerup', onPointerUp);
|
|
227
|
+
}
|
|
147
228
|
for (const set of handlers.values())
|
|
148
229
|
set.clear();
|
|
149
230
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gesture.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"gesture.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
package/dist/http/http.d.ts
CHANGED
|
@@ -4,6 +4,10 @@
|
|
|
4
4
|
* Typed fetch wrapper with interceptors, retries, timeout, and abort control.
|
|
5
5
|
* Pure TypeScript, zero external dependencies.
|
|
6
6
|
*/
|
|
7
|
+
export interface Interceptor {
|
|
8
|
+
onRequest?: (config: RequestConfig) => RequestConfig | Promise<RequestConfig>;
|
|
9
|
+
onResponse?: (response: Response, config: RequestConfig) => Response | Promise<Response>;
|
|
10
|
+
}
|
|
7
11
|
export interface HttpOptions {
|
|
8
12
|
baseUrl?: string;
|
|
9
13
|
headers?: Record<string, string>;
|
|
@@ -12,9 +16,13 @@ export interface HttpOptions {
|
|
|
12
16
|
retryDelay?: number;
|
|
13
17
|
retryBackoff?: boolean;
|
|
14
18
|
credentials?: RequestCredentials;
|
|
19
|
+
/** @deprecated Use interceptors instead */
|
|
15
20
|
onRequest?: (config: RequestConfig) => RequestConfig | Promise<RequestConfig>;
|
|
21
|
+
/** @deprecated Use interceptors instead */
|
|
16
22
|
onResponse?: (response: Response, config: RequestConfig) => Response | Promise<Response>;
|
|
17
23
|
onError?: (error: HttpError) => void;
|
|
24
|
+
/** Interceptor chain. Request interceptors run in order, response in reverse. */
|
|
25
|
+
interceptors?: Interceptor[];
|
|
18
26
|
}
|
|
19
27
|
export interface RequestConfig {
|
|
20
28
|
url: string;
|
package/dist/http/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http/http.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9E,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzF,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http/http.ts"],"names":[],"mappings":"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"}
|
package/dist/http/http.js
CHANGED
|
@@ -36,10 +36,21 @@ function wait(ms) {
|
|
|
36
36
|
/** Create a typed HTTP client instance. */
|
|
37
37
|
export function createHttp(options = {}) {
|
|
38
38
|
const { baseUrl = '', headers: defaultHeaders = {}, timeout: defaultTimeout = 30_000, retries: defaultRetries = 0, retryDelay: defaultRetryDelay = 1_000, retryBackoff = true, credentials, onRequest, onResponse, onError, } = options;
|
|
39
|
+
// Build interceptor chain: legacy single interceptor + interceptors array
|
|
40
|
+
const interceptors = [];
|
|
41
|
+
if (onRequest || onResponse) {
|
|
42
|
+
interceptors.push({ onRequest, onResponse });
|
|
43
|
+
}
|
|
44
|
+
if (options.interceptors) {
|
|
45
|
+
interceptors.push(...options.interceptors);
|
|
46
|
+
}
|
|
39
47
|
async function request(config) {
|
|
40
48
|
let cfg = { ...config };
|
|
41
|
-
|
|
42
|
-
|
|
49
|
+
// Run request interceptors in order
|
|
50
|
+
for (const ic of interceptors) {
|
|
51
|
+
if (ic.onRequest)
|
|
52
|
+
cfg = await ic.onRequest(cfg);
|
|
53
|
+
}
|
|
43
54
|
const timeout = cfg.timeout ?? defaultTimeout;
|
|
44
55
|
const maxRetries = cfg.retries ?? defaultRetries;
|
|
45
56
|
const fullUrl = appendParams(baseUrl ? joinUrl(baseUrl, cfg.url) : cfg.url, cfg.params);
|
|
@@ -87,8 +98,11 @@ export function createHttp(options = {}) {
|
|
|
87
98
|
let response = await fetch(fullUrl, init);
|
|
88
99
|
if (timeoutId !== undefined)
|
|
89
100
|
clearTimeout(timeoutId);
|
|
90
|
-
|
|
91
|
-
|
|
101
|
+
// Run response interceptors in reverse order
|
|
102
|
+
for (let j = interceptors.length - 1; j >= 0; j--) {
|
|
103
|
+
if (interceptors[j].onResponse)
|
|
104
|
+
response = await interceptors[j].onResponse(response, cfg);
|
|
105
|
+
}
|
|
92
106
|
if (!response.ok) {
|
|
93
107
|
const error = createHttpError(`HTTP ${response.status}: ${response.statusText}`, cfg, response.status, response);
|
|
94
108
|
if (attempt < maxRetries && isRetryable(error)) {
|
package/dist/http/http.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
package/dist/i18n/i18n.d.ts
CHANGED
|
@@ -22,6 +22,12 @@ export interface I18nInstance {
|
|
|
22
22
|
addMessages(locale: string, messages: Record<string, string>): void;
|
|
23
23
|
/** Subscribe to locale changes. Returns unsubscribe function. */
|
|
24
24
|
subscribe(fn: (locale: string) => void): () => void;
|
|
25
|
+
/** Format a number using Intl.NumberFormat */
|
|
26
|
+
formatNumber?(value: number, options?: Intl.NumberFormatOptions): string;
|
|
27
|
+
/** Format a date using Intl.DateTimeFormat */
|
|
28
|
+
formatDate?(date: Date | number, options?: Intl.DateTimeFormatOptions): string;
|
|
29
|
+
/** Format a relative time (e.g. "3 days ago") */
|
|
30
|
+
formatRelative?(date: Date | number): string;
|
|
25
31
|
}
|
|
26
32
|
/** Create a reactive i18n instance. */
|
|
27
33
|
export declare function createI18n(options: I18nOptions): I18nInstance;
|
package/dist/i18n/i18n.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n/i18n.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IACjE,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACpE,iEAAiE;IACjE,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../src/i18n/i18n.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,gCAAgC;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CAClD;AAED,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IACjE,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6BAA6B;IAC7B,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,2CAA2C;IAC3C,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACpE,iEAAiE;IACjE,SAAS,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACpD,8CAA8C;IAC9C,YAAY,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;IACzE,8CAA8C;IAC9C,UAAU,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,GAAG,MAAM,CAAC;IAC/E,iDAAiD;IACjD,cAAc,CAAC,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;CAC9C;AA6ED,uCAAuC;AACvC,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,YAAY,CAkE7D"}
|
package/dist/i18n/i18n.js
CHANGED
|
@@ -12,18 +12,13 @@ function interpolate(str, params) {
|
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
/**
|
|
15
|
-
* Handle pipe-based pluralization.
|
|
15
|
+
* Handle pipe-based pluralization (legacy format).
|
|
16
16
|
* Format: "singular|plural" or "zero|singular|plural"
|
|
17
|
-
* Requires a `count` param.
|
|
18
17
|
*/
|
|
19
|
-
function
|
|
20
|
-
if (!str.includes('|'))
|
|
21
|
-
return str;
|
|
22
|
-
const count = params.count !== undefined ? Number(params.count) : 1;
|
|
18
|
+
function pluralizePipe(str, count) {
|
|
23
19
|
const forms = str.split('|');
|
|
24
|
-
if (forms.length === 2)
|
|
20
|
+
if (forms.length === 2)
|
|
25
21
|
return count === 1 ? forms[0] : forms[1];
|
|
26
|
-
}
|
|
27
22
|
if (forms.length >= 3) {
|
|
28
23
|
if (count === 0)
|
|
29
24
|
return forms[0];
|
|
@@ -33,6 +28,37 @@ function pluralize(str, params) {
|
|
|
33
28
|
}
|
|
34
29
|
return str;
|
|
35
30
|
}
|
|
31
|
+
/** ICU plural pattern: {varName, plural, one{text} other{text}} */
|
|
32
|
+
const ICU_PLURAL_RE = /\{(\w+),\s*plural,\s*((?:\w+\{[^}]*\}\s*)+)\}/;
|
|
33
|
+
/**
|
|
34
|
+
* Parse ICU-style plural syntax using Intl.PluralRules.
|
|
35
|
+
* Supports zero, one, two, few, many, other categories.
|
|
36
|
+
* '#' in the body is replaced with the actual count.
|
|
37
|
+
*/
|
|
38
|
+
function pluralizeICU(str, params, rules) {
|
|
39
|
+
return str.replace(ICU_PLURAL_RE, (_, varName, body) => {
|
|
40
|
+
const count = params[varName] !== undefined ? Number(params[varName]) : 0;
|
|
41
|
+
const category = rules ? rules.select(count) : (count === 1 ? 'one' : 'other');
|
|
42
|
+
const categories = {};
|
|
43
|
+
const re = /(\w+)\{([^}]*)\}/g;
|
|
44
|
+
let match;
|
|
45
|
+
while ((match = re.exec(body)))
|
|
46
|
+
categories[match[1]] = match[2];
|
|
47
|
+
const template = categories[category] ?? categories['other'] ?? '';
|
|
48
|
+
return template.replace(/#/g, String(count));
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Handle pluralization: ICU-style or pipe-based (legacy).
|
|
53
|
+
*/
|
|
54
|
+
function pluralize(str, params, rules) {
|
|
55
|
+
if (ICU_PLURAL_RE.test(str))
|
|
56
|
+
return pluralizeICU(str, params, rules);
|
|
57
|
+
if (!str.includes('|'))
|
|
58
|
+
return str;
|
|
59
|
+
const count = params.count !== undefined ? Number(params.count) : 1;
|
|
60
|
+
return pluralizePipe(str, count);
|
|
61
|
+
}
|
|
36
62
|
/**
|
|
37
63
|
* Look up a key in a flat message map. Supports dot-notation keys directly
|
|
38
64
|
* (keys are stored flat, e.g. 'nav.home').
|
|
@@ -42,12 +68,27 @@ function lookup(messages, key) {
|
|
|
42
68
|
return undefined;
|
|
43
69
|
return messages[key];
|
|
44
70
|
}
|
|
71
|
+
/** Relative time units in descending order */
|
|
72
|
+
const RELATIVE_UNITS = [
|
|
73
|
+
['year', 365 * 24 * 60 * 60 * 1000],
|
|
74
|
+
['month', 30 * 24 * 60 * 60 * 1000],
|
|
75
|
+
['week', 7 * 24 * 60 * 60 * 1000],
|
|
76
|
+
['day', 24 * 60 * 60 * 1000],
|
|
77
|
+
['hour', 60 * 60 * 1000],
|
|
78
|
+
['minute', 60 * 1000],
|
|
79
|
+
['second', 1000],
|
|
80
|
+
];
|
|
45
81
|
/** Create a reactive i18n instance. */
|
|
46
82
|
export function createI18n(options) {
|
|
47
83
|
const { fallbackLocale = 'en' } = options;
|
|
48
84
|
const allMessages = { ...options.messages };
|
|
49
85
|
const subscribers = new Set();
|
|
50
86
|
let currentLocale = options.locale;
|
|
87
|
+
let pluralRules = null;
|
|
88
|
+
try {
|
|
89
|
+
pluralRules = new Intl.PluralRules(currentLocale);
|
|
90
|
+
}
|
|
91
|
+
catch { /* older env */ }
|
|
51
92
|
function resolve(key) {
|
|
52
93
|
return lookup(allMessages[currentLocale], key)
|
|
53
94
|
?? lookup(allMessages[fallbackLocale], key);
|
|
@@ -59,7 +100,7 @@ export function createI18n(options) {
|
|
|
59
100
|
if (value === undefined)
|
|
60
101
|
return key;
|
|
61
102
|
if (params) {
|
|
62
|
-
value = pluralize(value, params);
|
|
103
|
+
value = pluralize(value, params, pluralRules);
|
|
63
104
|
value = interpolate(value, params);
|
|
64
105
|
}
|
|
65
106
|
return value;
|
|
@@ -68,6 +109,10 @@ export function createI18n(options) {
|
|
|
68
109
|
if (locale === currentLocale)
|
|
69
110
|
return;
|
|
70
111
|
currentLocale = locale;
|
|
112
|
+
try {
|
|
113
|
+
pluralRules = new Intl.PluralRules(locale);
|
|
114
|
+
}
|
|
115
|
+
catch { /* older env */ }
|
|
71
116
|
for (const fn of subscribers)
|
|
72
117
|
fn(locale);
|
|
73
118
|
},
|
|
@@ -78,6 +123,23 @@ export function createI18n(options) {
|
|
|
78
123
|
subscribers.add(fn);
|
|
79
124
|
return () => { subscribers.delete(fn); };
|
|
80
125
|
},
|
|
126
|
+
formatNumber(value, opts) {
|
|
127
|
+
return new Intl.NumberFormat(currentLocale, opts).format(value);
|
|
128
|
+
},
|
|
129
|
+
formatDate(date, opts) {
|
|
130
|
+
return new Intl.DateTimeFormat(currentLocale, opts).format(date);
|
|
131
|
+
},
|
|
132
|
+
formatRelative(date) {
|
|
133
|
+
const ms = (date instanceof Date ? date.getTime() : date) - Date.now();
|
|
134
|
+
const absMs = Math.abs(ms);
|
|
135
|
+
for (const [unit, threshold] of RELATIVE_UNITS) {
|
|
136
|
+
if (absMs >= threshold) {
|
|
137
|
+
const value = Math.round(ms / threshold);
|
|
138
|
+
return new Intl.RelativeTimeFormat(currentLocale, { numeric: 'auto' }).format(value, unit);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
return new Intl.RelativeTimeFormat(currentLocale, { numeric: 'auto' }).format(0, 'second');
|
|
142
|
+
},
|
|
81
143
|
};
|
|
82
144
|
return instance;
|
|
83
145
|
}
|
package/dist/i18n/i18n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"i18n.js","sourceRoot":"","sources":[""],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/machine/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nova Engine — Finite State Machine
|
|
3
|
+
*
|
|
4
|
+
* Lightweight FSM with enter/exit actions and event-driven transitions.
|
|
5
|
+
*/
|
|
6
|
+
export interface MachineConfig<S extends string, E extends string> {
|
|
7
|
+
initial: S;
|
|
8
|
+
states: Record<S, {
|
|
9
|
+
on?: Partial<Record<E, S | {
|
|
10
|
+
target: S;
|
|
11
|
+
action?: () => void;
|
|
12
|
+
}>>;
|
|
13
|
+
enter?: () => void;
|
|
14
|
+
exit?: () => void;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface MachineInstance<S extends string, E extends string> {
|
|
18
|
+
readonly current: S;
|
|
19
|
+
send(event: E): void;
|
|
20
|
+
matches(state: S): boolean;
|
|
21
|
+
subscribe(fn: (state: S) => void): () => void;
|
|
22
|
+
destroy(): void;
|
|
23
|
+
}
|
|
24
|
+
/** Create a finite state machine from the given configuration. */
|
|
25
|
+
export declare function createMachine<S extends string, E extends string>(config: MachineConfig<S, E>): MachineInstance<S, E>;
|
|
26
|
+
//# sourceMappingURL=machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../src/machine/machine.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM;IAC/D,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE;QAChB,EAAE,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG;YAAE,MAAM,EAAE,CAAC,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;SAAE,CAAC,CAAC,CAAC;QAChE,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;QACnB,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;KACnB,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM;IACjE,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3B,SAAS,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC9C,OAAO,IAAI,IAAI,CAAC;CACjB;AAMD,kEAAkE;AAClE,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAC9D,MAAM,EAAE,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,GAC1B,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,CA0EvB"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Nova Engine — Finite State Machine
|
|
3
|
+
*
|
|
4
|
+
* Lightweight FSM with enter/exit actions and event-driven transitions.
|
|
5
|
+
*/
|
|
6
|
+
// ---------------------------------------------------------------------------
|
|
7
|
+
// createMachine
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
/** Create a finite state machine from the given configuration. */
|
|
10
|
+
export function createMachine(config) {
|
|
11
|
+
let current = config.initial;
|
|
12
|
+
let destroyed = false;
|
|
13
|
+
const subscribers = new Set();
|
|
14
|
+
// Run the enter action for the initial state
|
|
15
|
+
const initialState = config.states[current];
|
|
16
|
+
if (initialState?.enter)
|
|
17
|
+
initialState.enter();
|
|
18
|
+
function notify() {
|
|
19
|
+
for (const fn of [...subscribers])
|
|
20
|
+
fn(current);
|
|
21
|
+
}
|
|
22
|
+
const instance = {
|
|
23
|
+
get current() { return current; },
|
|
24
|
+
send(event) {
|
|
25
|
+
if (destroyed)
|
|
26
|
+
return;
|
|
27
|
+
const stateConfig = config.states[current];
|
|
28
|
+
if (!stateConfig?.on)
|
|
29
|
+
return;
|
|
30
|
+
const transition = stateConfig.on[event];
|
|
31
|
+
if (transition === undefined)
|
|
32
|
+
return;
|
|
33
|
+
// Resolve target and optional action
|
|
34
|
+
let target;
|
|
35
|
+
let action;
|
|
36
|
+
if (typeof transition === 'string') {
|
|
37
|
+
target = transition;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
target = transition.target;
|
|
41
|
+
action = transition.action;
|
|
42
|
+
}
|
|
43
|
+
// Guard: target state must exist in config
|
|
44
|
+
if (!(target in config.states))
|
|
45
|
+
return;
|
|
46
|
+
// Exit current state
|
|
47
|
+
if (stateConfig.exit)
|
|
48
|
+
stateConfig.exit();
|
|
49
|
+
// Run transition action (if any)
|
|
50
|
+
if (action)
|
|
51
|
+
action();
|
|
52
|
+
// Transition
|
|
53
|
+
const prev = current;
|
|
54
|
+
current = target;
|
|
55
|
+
// Enter new state
|
|
56
|
+
const nextState = config.states[current];
|
|
57
|
+
if (nextState?.enter)
|
|
58
|
+
nextState.enter();
|
|
59
|
+
// Notify subscribers only if the state actually changed
|
|
60
|
+
if (prev !== current)
|
|
61
|
+
notify();
|
|
62
|
+
},
|
|
63
|
+
matches(state) {
|
|
64
|
+
return current === state;
|
|
65
|
+
},
|
|
66
|
+
subscribe(fn) {
|
|
67
|
+
subscribers.add(fn);
|
|
68
|
+
return () => { subscribers.delete(fn); };
|
|
69
|
+
},
|
|
70
|
+
destroy() {
|
|
71
|
+
if (destroyed)
|
|
72
|
+
return;
|
|
73
|
+
destroyed = true;
|
|
74
|
+
subscribers.clear();
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
return instance;
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":[""],"names":[],"mappings":"AAAA;;;;GAIG;AAmBH,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,kEAAkE;AAClE,MAAM,UAAU,aAAa,CAC3B,MAA2B;IAE3B,IAAI,OAAO,GAAM,MAAM,CAAC,OAAO,CAAC;IAChC,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAsB,CAAC;IAElD,6CAA6C;IAC7C,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,YAAY,EAAE,KAAK;QAAE,YAAY,CAAC,KAAK,EAAE,CAAC;IAE9C,SAAS,MAAM;QACb,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC;YAAE,EAAE,CAAC,OAAO,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,QAAQ,GAA0B;QACtC,IAAI,OAAO,KAAQ,OAAO,OAAO,CAAC,CAAC,CAAC;QAEpC,IAAI,CAAC,KAAQ;YACX,IAAI,SAAS;gBAAE,OAAO;YAEtB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC3C,IAAI,CAAC,WAAW,EAAE,EAAE;gBAAE,OAAO;YAE7B,MAAM,UAAU,GAAG,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,UAAU,KAAK,SAAS;gBAAE,OAAO;YAErC,qCAAqC;YACrC,IAAI,MAAS,CAAC;YACd,IAAI,MAAgC,CAAC;YAErC,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;gBACnC,MAAM,GAAG,UAAe,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;gBAC3B,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAC7B,CAAC;YAED,2CAA2C;YAC3C,IAAI,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC;gBAAE,OAAO;YAEvC,qBAAqB;YACrB,IAAI,WAAW,CAAC,IAAI;gBAAE,WAAW,CAAC,IAAI,EAAE,CAAC;YAEzC,iCAAiC;YACjC,IAAI,MAAM;gBAAE,MAAM,EAAE,CAAC;YAErB,aAAa;YACb,MAAM,IAAI,GAAG,OAAO,CAAC;YACrB,OAAO,GAAG,MAAM,CAAC;YAEjB,kBAAkB;YAClB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,SAAS,EAAE,KAAK;gBAAE,SAAS,CAAC,KAAK,EAAE,CAAC;YAExC,wDAAwD;YACxD,IAAI,IAAI,KAAK,OAAO;gBAAE,MAAM,EAAE,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,KAAQ;YACd,OAAO,OAAO,KAAK,KAAK,CAAC;QAC3B,CAAC;QAED,SAAS,CAAC,EAAsB;YAC9B,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpB,OAAO,GAAG,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,CAAC;QAED,OAAO;YACL,IAAI,SAAS;gBAAE,OAAO;YACtB,SAAS,GAAG,IAAI,CAAC;YACjB,WAAW,CAAC,KAAK,EAAE,CAAC;QACtB,CAAC;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/modal/modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"modal.d.ts","sourceRoot":"","sources":["../../src/modal/modal.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,WAAW,YAAY;IAC3B,mDAAmD;IACnD,OAAO,EAAE,MAAM,GAAG,WAAW,CAAC;IAC9B,6CAA6C;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,yCAAyC;IACzC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,sCAAsC;IACtC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,qCAAqC;IACrC,IAAI,CAAC,EAAE,QAAQ,GAAG,aAAa,CAAC;IAChC,uBAAuB;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,MAAM,IAAI,OAAO,CAAC;IAClB,+BAA+B;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,mBAAmB;IACnB,OAAO,IAAI,IAAI,CAAC;CACjB;AAgDD,sCAAsC;AACtC,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,aAAa,CAiIhE"}
|