@hawsen-the-first/interactiv 0.0.1

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 (48) hide show
  1. package/README.md +326 -0
  2. package/dist/animations.css +160 -0
  3. package/dist/index.d.ts +20 -0
  4. package/dist/index.d.ts.map +1 -0
  5. package/dist/index.js +26 -0
  6. package/dist/src/animationBus.d.ts +30 -0
  7. package/dist/src/animationBus.d.ts.map +1 -0
  8. package/dist/src/animationBus.js +125 -0
  9. package/dist/src/appBuilder.d.ts +173 -0
  10. package/dist/src/appBuilder.d.ts.map +1 -0
  11. package/dist/src/appBuilder.js +957 -0
  12. package/dist/src/eventBus.d.ts +100 -0
  13. package/dist/src/eventBus.d.ts.map +1 -0
  14. package/dist/src/eventBus.js +326 -0
  15. package/dist/src/eventManager.d.ts +87 -0
  16. package/dist/src/eventManager.d.ts.map +1 -0
  17. package/dist/src/eventManager.js +455 -0
  18. package/dist/src/garbageCollector.d.ts +68 -0
  19. package/dist/src/garbageCollector.d.ts.map +1 -0
  20. package/dist/src/garbageCollector.js +169 -0
  21. package/dist/src/logger.d.ts +11 -0
  22. package/dist/src/logger.d.ts.map +1 -0
  23. package/dist/src/logger.js +15 -0
  24. package/dist/src/navigationManager.d.ts +105 -0
  25. package/dist/src/navigationManager.d.ts.map +1 -0
  26. package/dist/src/navigationManager.js +533 -0
  27. package/dist/src/screensaverManager.d.ts +66 -0
  28. package/dist/src/screensaverManager.d.ts.map +1 -0
  29. package/dist/src/screensaverManager.js +417 -0
  30. package/dist/src/settingsManager.d.ts +48 -0
  31. package/dist/src/settingsManager.d.ts.map +1 -0
  32. package/dist/src/settingsManager.js +317 -0
  33. package/dist/src/stateManager.d.ts +58 -0
  34. package/dist/src/stateManager.d.ts.map +1 -0
  35. package/dist/src/stateManager.js +278 -0
  36. package/dist/src/types.d.ts +32 -0
  37. package/dist/src/types.d.ts.map +1 -0
  38. package/dist/src/types.js +1 -0
  39. package/dist/utils/generateGuid.d.ts +2 -0
  40. package/dist/utils/generateGuid.d.ts.map +1 -0
  41. package/dist/utils/generateGuid.js +19 -0
  42. package/dist/utils/logger.d.ts +9 -0
  43. package/dist/utils/logger.d.ts.map +1 -0
  44. package/dist/utils/logger.js +42 -0
  45. package/dist/utils/template-helpers.d.ts +32 -0
  46. package/dist/utils/template-helpers.d.ts.map +1 -0
  47. package/dist/utils/template-helpers.js +24 -0
  48. package/package.json +59 -0
@@ -0,0 +1,173 @@
1
+ import { EventBus, EventOrchestrator } from "./eventBus";
2
+ import { type ScreensaverConfig } from "./screensaverManager";
3
+ import { type SettingsConfig } from "./settingsManager";
4
+ import { EventManager } from "./eventManager";
5
+ import { ComponentStateManager } from "./stateManager";
6
+ import type { PointerEventData, DragCallbacks, HoverCallbacks, SwipeCallbacks } from "./eventManager";
7
+ import type { RenderOptions } from "./types";
8
+ declare abstract class RenderableComponent {
9
+ componentId: string;
10
+ state: any;
11
+ renderBus: EventBus;
12
+ protected shadowRoot: ShadowRoot;
13
+ protected bubbleChanges: boolean;
14
+ protected children: RenderableComponent[];
15
+ protected parent?: RenderableComponent;
16
+ protected template: string;
17
+ protected styles: string;
18
+ protected lastRenderedHTML: string;
19
+ protected properties: Map<string, any>;
20
+ protected hostElement: HTMLElement;
21
+ protected eventManager: EventManager;
22
+ protected stateManager: ComponentStateManager;
23
+ protected orchestrator: EventOrchestrator;
24
+ private globalSheets;
25
+ constructor(id: string, orchestrator: EventOrchestrator, bubbleChanges?: boolean);
26
+ private setupRenderListeners;
27
+ protected attachShadowDOM(): void;
28
+ useGlobalStyles(text: string): Promise<void>;
29
+ private initializeEventManager;
30
+ /**
31
+ * Clean up event listeners before re-render to prevent duplicates
32
+ */
33
+ private initializeStateManager;
34
+ private handleStateChange;
35
+ protected performRender(options?: RenderOptions): void;
36
+ private performRenderWithFade;
37
+ private performRenderImmediate;
38
+ private compileTemplate;
39
+ private updateShadowDOM;
40
+ private renderChildren;
41
+ protected getProperty(key: string): any;
42
+ getPublicProperty(key: string): any;
43
+ setProperty(key: string, value: any): void;
44
+ addChild(child: RenderableComponent): void;
45
+ removeChild(childId: string): void;
46
+ addSibling(sibling: RenderableComponent): void;
47
+ removeSibling(siblingId: string): void;
48
+ private notifyChildrenOfStructureChange;
49
+ private attachEventListeners;
50
+ protected handleAction(action: string, event: Event): void;
51
+ protected onBeforeRender(): void;
52
+ onAfterRender(): void;
53
+ protected shouldRerender(changeType: string, source: string): boolean;
54
+ protected handleParentChange(changeType: string): void;
55
+ protected handleChildChange(childId: string, changeType: string): void;
56
+ protected abstract defineTemplate(): void;
57
+ protected abstract defineStyles(): void;
58
+ performInitialRender(): void;
59
+ getHostElement(): HTMLElement;
60
+ getChildrenCount(): number;
61
+ /**
62
+ * Add a point interaction (click + tap) to elements matching the selector
63
+ */
64
+ protected point(selector: string, callback: (data: PointerEventData) => void): void;
65
+ /**
66
+ * Add an un-point interaction (click + tap) to elements matching the selector
67
+ */
68
+ protected unpoint(selector: string, callback: (data: PointerEventData) => void): void;
69
+ /**
70
+ * Add drag interaction (mouse drag + touch drag) to elements matching the selector
71
+ */
72
+ protected drag(selector: string, callbacks: DragCallbacks): void;
73
+ /**
74
+ * Add hover interaction (mouse enter/leave + touch fallback) to elements matching the selector
75
+ */
76
+ protected hover(selector: string, callbacks: HoverCallbacks): void;
77
+ /**
78
+ * Add long press interaction to elements matching the selector
79
+ */
80
+ protected longPress(selector: string, callback: (data: PointerEventData) => void, duration?: number): void;
81
+ /**
82
+ * Add swipe gesture detection to elements matching the selector
83
+ */
84
+ protected swipe(selector: string, callbacks: SwipeCallbacks, threshold?: number): void;
85
+ /**
86
+ * Add a custom event listener with automatic cleanup
87
+ */
88
+ protected addEventListener(element: Element | Document, type: string, listener: EventListener, options?: AddEventListenerOptions): void;
89
+ /**
90
+ * Remove a specific event listener
91
+ */
92
+ protected removeEventListener(element: Element, type: string, listener: EventListener): void;
93
+ /**
94
+ * Create and manage local component state
95
+ */
96
+ useState<T>(key: string, initialValue: T): [T, (newValue: T) => void];
97
+ /**
98
+ * Subscribe to and manage global application state
99
+ */
100
+ protected useGlobalState<T>(key: string, initialValue?: T): [T, (newValue: T) => void];
101
+ /**
102
+ * Get current local state value without subscribing
103
+ */
104
+ protected getLocalState(key: string): any;
105
+ /**
106
+ * Define multiple state properties at once with initial values
107
+ * This creates reactive state properties accessible via this.state
108
+ */
109
+ defineState(initialState: Record<string, any>): void;
110
+ /**
111
+ * Destroy the component and clean up all event listeners
112
+ */
113
+ destroy(): void;
114
+ }
115
+ declare class AppBuilder extends RenderableComponent {
116
+ private pages;
117
+ private navigationManager;
118
+ constructor(orchestrator: EventOrchestrator);
119
+ private setupNavigationContainer;
120
+ protected defineTemplate(): void;
121
+ protected defineStyles(): void;
122
+ addPage(page: Page): void;
123
+ removePage(pageId: string): void;
124
+ navigateToPage(pageId: string, config?: import("./navigationManager").TransitionConfig): void;
125
+ navigateToView(viewId: string, config?: import("./navigationManager").TransitionConfig): void;
126
+ getCurrentPageId(): string | null;
127
+ getCurrentViewId(): string | null;
128
+ isTransitioning(): boolean;
129
+ /**
130
+ * Add a screensaver page with the specified configuration
131
+ * The screensaver page can contain multiple views for rich interactive experiences
132
+ * @param screensaverPage The page to use as the screensaver (can contain multiple views)
133
+ * @param config Configuration object for the screensaver (excluding 'page' property)
134
+ */
135
+ addScreensaver(screensaverPage: Page, config: Omit<ScreensaverConfig, 'page'>): void;
136
+ attachToDom(): void;
137
+ }
138
+ declare class Page extends RenderableComponent {
139
+ private views;
140
+ constructor(id: string, orchestrator: EventOrchestrator, bubbleChanges?: boolean, customTemplate?: string, customStyles?: string);
141
+ protected defineTemplate(): void;
142
+ protected defineStyles(): void;
143
+ addView(view: View): void;
144
+ removeView(viewId: string): void;
145
+ /**
146
+ * Add a screensaver page with the specified configuration
147
+ * @param screensaverPage The page to use as the screensaver (can contain multiple views)
148
+ * @param config Configuration object for the screensaver (excluding 'page' property)
149
+ */
150
+ addScreensaver(screensaverPage: Page, config: Omit<ScreensaverConfig, 'page'>): void;
151
+ /**
152
+ * Add a hidden settings page to this page with the specified configuration
153
+ * The settings page is activated by touching corners in sequence: top-left, top-right, bottom-right
154
+ * @param view The view to use as the settings page
155
+ * @param config Configuration object for the settings page
156
+ */
157
+ addSettings(view: View, config: SettingsConfig): void;
158
+ }
159
+ declare class View extends RenderableComponent {
160
+ private components;
161
+ constructor(id: string, orchestrator: EventOrchestrator, bubbleChanges?: boolean, customTemplate?: string, customStyles?: string);
162
+ protected defineTemplate(): void;
163
+ protected defineStyles(): void;
164
+ addComponent(component: Component): void;
165
+ removeComponent(componentId: string): void;
166
+ }
167
+ declare class Component extends RenderableComponent {
168
+ constructor(id: string, orchestrator: EventOrchestrator, bubbleChanges?: boolean, customTemplate?: string, customStyles?: string);
169
+ protected defineTemplate(): void;
170
+ protected defineStyles(): void;
171
+ }
172
+ export { AppBuilder, Page, View, Component, RenderableComponent, EventBus };
173
+ //# sourceMappingURL=appBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"appBuilder.d.ts","sourceRoot":"","sources":["../../src/appBuilder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEzD,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAmB,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,cAAc,EACf,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAG7C,uBAAe,mBAAmB;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,GAAG,CAAC;IACX,SAAS,EAAE,QAAQ,CAAC;IAC3B,SAAS,CAAC,UAAU,EAAG,UAAU,CAAC;IAClC,SAAS,CAAC,aAAa,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,QAAQ,EAAE,mBAAmB,EAAE,CAAM;IAC/C,SAAS,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACvC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAM;IAChC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAM;IAC9B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAM;IACxC,SAAS,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAa;IACnD,SAAS,CAAC,WAAW,EAAG,WAAW,CAAC;IACpC,SAAS,CAAC,YAAY,EAAG,YAAY,CAAC;IACtC,SAAS,CAAC,YAAY,EAAG,qBAAqB,CAAC;IAC/C,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAC1C,OAAO,CAAC,YAAY,CAAkB;gBAGpC,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,iBAAiB,EAC/B,aAAa,GAAE,OAAe;IAehC,OAAO,CAAC,oBAAoB;IAkB5B,SAAS,CAAC,eAAe,IAAI,IAAI;IAQpB,eAAe,CAAC,IAAI,EAAE,MAAM;IAKzC,OAAO,CAAC,sBAAsB;IAI9B;;OAEG;IAOH,OAAO,CAAC,sBAAsB;IAY9B,OAAO,CAAC,iBAAiB;IAkBzB,SAAS,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,IAAI;YAUxC,qBAAqB;IAenC,OAAO,CAAC,sBAAsB;IAe9B,OAAO,CAAC,eAAe;IAuCvB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAoBtB,SAAS,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAIhC,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAInC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI;IAqC1C,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI;IAY1C,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAmBlC,UAAU,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAY9C,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAwB7C,OAAO,CAAC,+BAA+B;IASvC,OAAO,CAAC,oBAAoB;IAW5B,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI;IAQ1D,SAAS,CAAC,cAAc,IAAI,IAAI;IACzB,aAAa,IAAI,IAAI;IAE5B,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;IAOrE,SAAS,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAQtD,SAAS,CAAC,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQtE,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI;IACzC,SAAS,CAAC,QAAQ,CAAC,YAAY,IAAI,IAAI;IAGhC,oBAAoB,IAAI,IAAI;IAM5B,cAAc,IAAI,WAAW;IAI7B,gBAAgB,IAAI,MAAM;IAMjC;;OAEG;IACH,SAAS,CAAC,KAAK,CACb,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GACzC,IAAI;IAIP;;OAEG;IACH,SAAS,CAAC,OAAO,CACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,GACzC,IAAI;IAIP;;OAEG;IACH,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,GAAG,IAAI;IAIhE;;OAEG;IACH,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,GAAG,IAAI;IAIlE;;OAEG;IACH,SAAS,CAAC,SAAS,CACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,EAC1C,QAAQ,GAAE,MAAY,GACrB,IAAI;IAIP;;OAEG;IACH,SAAS,CAAC,KAAK,CACb,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,cAAc,EACzB,SAAS,GAAE,MAAW,GACrB,IAAI;IAIP;;OAEG;IACH,SAAS,CAAC,gBAAgB,CACxB,OAAO,EAAE,OAAO,GAAG,QAAQ,EAC3B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,EACvB,OAAO,CAAC,EAAE,uBAAuB,GAChC,IAAI;IAIP;;OAEG;IACH,SAAS,CAAC,mBAAmB,CAC3B,OAAO,EAAE,OAAO,EAChB,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,aAAa,GACtB,IAAI;IAMP;;OAEG;IACI,QAAQ,CAAC,CAAC,EACf,GAAG,EAAE,MAAM,EACX,YAAY,EAAE,CAAC,GACd,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC;IAI7B;;OAEG;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EACxB,GAAG,EAAE,MAAM,EACX,YAAY,CAAC,EAAE,CAAC,GACf,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,IAAI,CAAC;IAI7B;;OAEG;IACH,SAAS,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAIzC;;;OAGG;IACI,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI;IAI3D;;OAEG;IACI,OAAO,IAAI,IAAI;CAuBvB;AAGD,cAAM,UAAW,SAAQ,mBAAmB;IAC1C,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,iBAAiB,CAAoB;gBAEjC,YAAY,EAAE,iBAAiB;IAS3C,OAAO,CAAC,wBAAwB;IAQhC,SAAS,CAAC,cAAc,IAAI,IAAI;IAYhC,SAAS,CAAC,YAAY,IAAI,IAAI;IAkBvB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAOzB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQhC,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,qBAAqB,EAAE,gBAAgB,GACtD,IAAI;IAIA,cAAc,CACnB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,qBAAqB,EAAE,gBAAgB,GACtD,IAAI;IAIA,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,gBAAgB,IAAI,MAAM,GAAG,IAAI;IAIjC,eAAe,IAAI,OAAO;IAIjC;;;;;OAKG;IACI,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI;IAoBpF,WAAW,IAAI,IAAI;CAU3B;AAED,cAAM,IAAK,SAAQ,mBAAmB;IACpC,OAAO,CAAC,KAAK,CAAc;gBAGzB,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,iBAAiB,EAC/B,aAAa,GAAE,OAAc,EAC7B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM;IAevB,SAAS,CAAC,cAAc,IAAI,IAAI;IA4BhC,SAAS,CAAC,YAAY,IAAI,IAAI;IAsDvB,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAWzB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQvC;;;;OAIG;IACI,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,GAAG,IAAI;IAiB3F;;;;;OAKG;IACI,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,cAAc,GAAG,IAAI;CAoB7D;AAGD,cAAM,IAAK,SAAQ,mBAAmB;IACpC,OAAO,CAAC,UAAU,CAAmB;gBAGnC,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,iBAAiB,EAC/B,aAAa,GAAE,OAAe,EAC9B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM;IAevB,SAAS,CAAC,cAAc,IAAI,IAAI;IAuBhC,SAAS,CAAC,YAAY,IAAI,IAAI;IAwCvB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKxC,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;CAUlD;AAGD,cAAM,SAAU,SAAQ,mBAAmB;gBAEvC,EAAE,EAAE,MAAM,EACV,YAAY,EAAE,iBAAiB,EAC/B,aAAa,GAAE,OAAe,EAC9B,cAAc,CAAC,EAAE,MAAM,EACvB,YAAY,CAAC,EAAE,MAAM;IAavB,SAAS,CAAC,cAAc,IAAI,IAAI;IA+ChC,SAAS,CAAC,YAAY,IAAI,IAAI;CAgH/B;AAED,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC"}