@omerdlw/base-framework 1.0.6 → 2.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 (234) hide show
  1. package/dist/atoms/index.js +1 -103
  2. package/dist/atoms/index.js.map +1 -1
  3. package/dist/chunk-3BUP64Q6.js +105 -0
  4. package/dist/chunk-3BUP64Q6.js.map +1 -0
  5. package/dist/chunk-4GMQKD6F.js +353 -0
  6. package/dist/chunk-4GMQKD6F.js.map +1 -0
  7. package/dist/chunk-6SG7V77J.js +577 -0
  8. package/dist/chunk-6SG7V77J.js.map +1 -0
  9. package/dist/chunk-6ZJVLUBE.js +26 -0
  10. package/dist/chunk-6ZJVLUBE.js.map +1 -0
  11. package/dist/chunk-7HQMXTNP.js +419 -0
  12. package/dist/chunk-7HQMXTNP.js.map +1 -0
  13. package/dist/chunk-7TAVYJ3A.js +371 -0
  14. package/dist/chunk-7TAVYJ3A.js.map +1 -0
  15. package/dist/chunk-A5RE3F6O.js +9905 -0
  16. package/dist/chunk-A5RE3F6O.js.map +1 -0
  17. package/dist/chunk-AQ4BNXA2.js +349 -0
  18. package/dist/chunk-AQ4BNXA2.js.map +1 -0
  19. package/dist/chunk-CGHZSSFR.js +2166 -0
  20. package/dist/chunk-CGHZSSFR.js.map +1 -0
  21. package/dist/chunk-DGCQWQLZ.js +61 -0
  22. package/dist/chunk-DGCQWQLZ.js.map +1 -0
  23. package/dist/chunk-FIMPHODX.js +67 -0
  24. package/dist/chunk-FIMPHODX.js.map +1 -0
  25. package/dist/chunk-GF7TUX5I.js +1889 -0
  26. package/dist/chunk-GF7TUX5I.js.map +1 -0
  27. package/dist/chunk-JELG4JLT.js +454 -0
  28. package/dist/chunk-JELG4JLT.js.map +1 -0
  29. package/dist/chunk-K676GL7Z.js +51 -0
  30. package/dist/chunk-K676GL7Z.js.map +1 -0
  31. package/dist/chunk-QI3ALLIB.js +38 -0
  32. package/dist/chunk-QI3ALLIB.js.map +1 -0
  33. package/dist/chunk-QXR55VVS.js +1139 -0
  34. package/dist/chunk-QXR55VVS.js.map +1 -0
  35. package/dist/chunk-R2YGFJDJ.js +408 -0
  36. package/dist/chunk-R2YGFJDJ.js.map +1 -0
  37. package/dist/chunk-RFZQWLC5.js +27 -0
  38. package/dist/chunk-RFZQWLC5.js.map +1 -0
  39. package/dist/chunk-SKBITB5X.js +888 -0
  40. package/dist/chunk-SKBITB5X.js.map +1 -0
  41. package/dist/chunk-SYAVGTOX.js +521 -0
  42. package/dist/chunk-SYAVGTOX.js.map +1 -0
  43. package/dist/chunk-TV3WEF5G.js +784 -0
  44. package/dist/chunk-TV3WEF5G.js.map +1 -0
  45. package/dist/chunk-XASQT4CQ.js +280 -0
  46. package/dist/chunk-XASQT4CQ.js.map +1 -0
  47. package/dist/error/index.js +5 -682
  48. package/dist/error/index.js.map +1 -1
  49. package/dist/error/reporter.d.ts.map +1 -1
  50. package/dist/error/theme.d.ts +1 -1
  51. package/dist/error/theme.d.ts.map +1 -1
  52. package/dist/events.js +1 -7
  53. package/dist/events.js.map +1 -1
  54. package/dist/hooks/index.js +1 -358
  55. package/dist/hooks/index.js.map +1 -1
  56. package/dist/hooks/use-global-event.d.ts +1 -1
  57. package/dist/index.js +18 -20029
  58. package/dist/index.js.map +1 -1
  59. package/dist/kernel/index.js +2 -2035
  60. package/dist/kernel/index.js.map +1 -1
  61. package/dist/kernel/types.d.ts +1 -1
  62. package/dist/modules/ambient/analyze.d.ts +46 -0
  63. package/dist/modules/ambient/analyze.d.ts.map +1 -0
  64. package/dist/modules/ambient/constants.d.ts +1 -5
  65. package/dist/modules/ambient/constants.d.ts.map +1 -1
  66. package/dist/modules/ambient/context.d.ts.map +1 -1
  67. package/dist/modules/ambient/dom.d.ts +11 -12
  68. package/dist/modules/ambient/dom.d.ts.map +1 -1
  69. package/dist/modules/ambient/extractor.d.ts +10 -10
  70. package/dist/modules/ambient/extractor.d.ts.map +1 -1
  71. package/dist/modules/ambient/hooks.d.ts +1 -1
  72. package/dist/modules/ambient/hooks.d.ts.map +1 -1
  73. package/dist/modules/ambient/index.d.ts +6 -4
  74. package/dist/modules/ambient/index.d.ts.map +1 -1
  75. package/dist/modules/ambient/index.js +7 -762
  76. package/dist/modules/ambient/index.js.map +1 -1
  77. package/dist/modules/ambient/module.d.ts +1 -1
  78. package/dist/modules/ambient/module.d.ts.map +1 -1
  79. package/dist/modules/ambient/oklab.d.ts +36 -0
  80. package/dist/modules/ambient/oklab.d.ts.map +1 -0
  81. package/dist/modules/ambient/pipeline.d.ts +28 -0
  82. package/dist/modules/ambient/pipeline.d.ts.map +1 -0
  83. package/dist/modules/ambient/quantize.d.ts +22 -0
  84. package/dist/modules/ambient/quantize.d.ts.map +1 -0
  85. package/dist/modules/ambient/server/address.d.ts +8 -0
  86. package/dist/modules/ambient/server/address.d.ts.map +1 -0
  87. package/dist/modules/ambient/server/index.d.ts +53 -0
  88. package/dist/modules/ambient/server/index.d.ts.map +1 -0
  89. package/dist/modules/ambient/server/index.js +221 -0
  90. package/dist/modules/ambient/server/index.js.map +1 -0
  91. package/dist/modules/ambient/settings.d.ts +19 -0
  92. package/dist/modules/ambient/settings.d.ts.map +1 -0
  93. package/dist/modules/ambient/types.d.ts +105 -9
  94. package/dist/modules/ambient/types.d.ts.map +1 -1
  95. package/dist/modules/ambient/worker/index.d.ts +15 -0
  96. package/dist/modules/ambient/worker/index.d.ts.map +1 -0
  97. package/dist/modules/ambient/worker/index.js +114 -0
  98. package/dist/modules/ambient/worker/index.js.map +1 -0
  99. package/dist/modules/background/constants.d.ts +2 -2
  100. package/dist/modules/background/constants.d.ts.map +1 -1
  101. package/dist/modules/background/hooks.d.ts +1 -1
  102. package/dist/modules/background/index.js +6 -3078
  103. package/dist/modules/background/index.js.map +1 -1
  104. package/dist/modules/background/motion.d.ts +9 -7
  105. package/dist/modules/background/motion.d.ts.map +1 -1
  106. package/dist/modules/background/overlay.d.ts +3 -8
  107. package/dist/modules/background/overlay.d.ts.map +1 -1
  108. package/dist/modules/background/types.d.ts +16 -2
  109. package/dist/modules/background/types.d.ts.map +1 -1
  110. package/dist/modules/context-menu/constants.d.ts +2 -2
  111. package/dist/modules/context-menu/constants.d.ts.map +1 -1
  112. package/dist/modules/context-menu/hooks.d.ts +1 -1
  113. package/dist/modules/context-menu/index.js +10 -1896
  114. package/dist/modules/context-menu/index.js.map +1 -1
  115. package/dist/modules/context-menu/motion.d.ts +1 -8
  116. package/dist/modules/context-menu/motion.d.ts.map +1 -1
  117. package/dist/modules/context-menu/overlay.d.ts.map +1 -1
  118. package/dist/modules/context-menu/types.d.ts +16 -2
  119. package/dist/modules/context-menu/types.d.ts.map +1 -1
  120. package/dist/modules/controls/constants.d.ts +1 -1
  121. package/dist/modules/controls/constants.d.ts.map +1 -1
  122. package/dist/modules/controls/entries.d.ts +1 -1
  123. package/dist/modules/controls/hooks.d.ts +1 -1
  124. package/dist/modules/controls/index.js +4 -1110
  125. package/dist/modules/controls/index.js.map +1 -1
  126. package/dist/modules/controls/overlay.d.ts +1 -1
  127. package/dist/modules/controls/types.d.ts +2 -2
  128. package/dist/modules/dock/cards.d.ts +711 -24
  129. package/dist/modules/dock/cards.d.ts.map +1 -1
  130. package/dist/modules/dock/constants.d.ts +2 -2
  131. package/dist/modules/dock/constants.d.ts.map +1 -1
  132. package/dist/modules/dock/helpers.d.ts +2 -2
  133. package/dist/modules/dock/hooks.d.ts +2 -2
  134. package/dist/modules/dock/index.d.ts +1 -1
  135. package/dist/modules/dock/index.d.ts.map +1 -1
  136. package/dist/modules/dock/index.js +9 -12132
  137. package/dist/modules/dock/index.js.map +1 -1
  138. package/dist/modules/dock/layout.d.ts.map +1 -1
  139. package/dist/modules/dock/module.d.ts +1 -1
  140. package/dist/modules/dock/motion.d.ts +44 -912
  141. package/dist/modules/dock/motion.d.ts.map +1 -1
  142. package/dist/modules/dock/overlay.d.ts +1 -1
  143. package/dist/modules/dock/overlay.d.ts.map +1 -1
  144. package/dist/modules/dock/runtime/dock.d.ts +1 -23
  145. package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
  146. package/dist/modules/dock/styles.d.ts +4 -4
  147. package/dist/modules/dock/surface/hooks.d.ts +5 -20
  148. package/dist/modules/dock/surface/hooks.d.ts.map +1 -1
  149. package/dist/modules/dock/surface/machine.d.ts +4 -3
  150. package/dist/modules/dock/surface/machine.d.ts.map +1 -1
  151. package/dist/modules/dock/surface/stack.d.ts.map +1 -1
  152. package/dist/modules/dock/surface/view-model.d.ts.map +1 -1
  153. package/dist/modules/dock/types.d.ts +162 -3
  154. package/dist/modules/dock/types.d.ts.map +1 -1
  155. package/dist/modules/index.js +16 -17883
  156. package/dist/modules/index.js.map +1 -1
  157. package/dist/modules/loading/constants.d.ts +1 -1
  158. package/dist/modules/loading/constants.d.ts.map +1 -1
  159. package/dist/modules/loading/context.d.ts +1 -1
  160. package/dist/modules/loading/hooks.d.ts +1 -1
  161. package/dist/modules/loading/index.js +5 -1153
  162. package/dist/modules/loading/index.js.map +1 -1
  163. package/dist/modules/loading/types.d.ts +2 -2
  164. package/dist/modules/media/context.d.ts +1 -1
  165. package/dist/modules/media/index.js +3 -570
  166. package/dist/modules/media/index.js.map +1 -1
  167. package/dist/modules/media/types.d.ts +2 -2
  168. package/dist/modules/modal/constants.d.ts +2 -2
  169. package/dist/modules/modal/constants.d.ts.map +1 -1
  170. package/dist/modules/modal/context.d.ts +1 -1
  171. package/dist/modules/modal/hooks.d.ts +3 -3
  172. package/dist/modules/modal/index.js +8 -2355
  173. package/dist/modules/modal/index.js.map +1 -1
  174. package/dist/modules/modal/motion.d.ts +3 -8
  175. package/dist/modules/modal/motion.d.ts.map +1 -1
  176. package/dist/modules/modal/overlay.d.ts.map +1 -1
  177. package/dist/modules/modal/types.d.ts +21 -0
  178. package/dist/modules/modal/types.d.ts.map +1 -1
  179. package/dist/modules/notification/constants.d.ts +2 -2
  180. package/dist/modules/notification/constants.d.ts.map +1 -1
  181. package/dist/modules/notification/context.d.ts +1 -1
  182. package/dist/modules/notification/hooks.d.ts +1 -1
  183. package/dist/modules/notification/index.js +4 -828
  184. package/dist/modules/notification/index.js.map +1 -1
  185. package/dist/modules/notification/motion.d.ts +1 -7
  186. package/dist/modules/notification/motion.d.ts.map +1 -1
  187. package/dist/modules/notification/overlay.d.ts.map +1 -1
  188. package/dist/modules/notification/types.d.ts +9 -1
  189. package/dist/modules/notification/types.d.ts.map +1 -1
  190. package/dist/overlay-TZ6L52A5.js +9 -0
  191. package/dist/overlay-TZ6L52A5.js.map +1 -0
  192. package/dist/provider.d.ts +1 -1
  193. package/dist/provider.d.ts.map +1 -1
  194. package/dist/provider.js +6 -1968
  195. package/dist/provider.js.map +1 -1
  196. package/dist/result.js +2 -63
  197. package/dist/result.js.map +1 -1
  198. package/dist/theme.d.ts +45 -8
  199. package/dist/theme.d.ts.map +1 -1
  200. package/dist/theme.js +3 -41
  201. package/dist/theme.js.map +1 -1
  202. package/dist/tokens/index.d.ts +1 -0
  203. package/dist/tokens/index.d.ts.map +1 -1
  204. package/dist/tokens/index.js +126 -155
  205. package/dist/tokens/index.js.map +1 -1
  206. package/dist/tokens/motion-config.d.ts +44 -0
  207. package/dist/tokens/motion-config.d.ts.map +1 -0
  208. package/dist/tokens/motion.d.ts +23 -174
  209. package/dist/tokens/motion.d.ts.map +1 -1
  210. package/dist/utils/index.js +4 -82
  211. package/dist/utils/index.js.map +1 -1
  212. package/dist/utils/report.d.ts.map +1 -1
  213. package/docs/README.md +1 -0
  214. package/docs/architecture-and-rules.md +4 -3
  215. package/docs/core-engine.md +7 -10
  216. package/docs/getting-started.md +4 -2
  217. package/docs/modules/ambient.md +194 -80
  218. package/docs/modules/background.md +3 -3
  219. package/docs/modules/context-menu.md +2 -2
  220. package/docs/modules/dock.md +9 -6
  221. package/docs/modules/modal.md +2 -2
  222. package/docs/modules/notification.md +2 -2
  223. package/docs/theming.md +81 -9
  224. package/package.json +22 -5
  225. package/templates/AGENTS.md +1 -1
  226. package/templates/motion/background.ts +17 -0
  227. package/templates/motion/context-menu.ts +63 -0
  228. package/templates/motion/dock.ts +327 -0
  229. package/templates/motion/modal.ts +79 -0
  230. package/templates/motion/notification.ts +27 -0
  231. package/templates/motion/tokens.ts +47 -0
  232. package/templates/tsconfig.json +7 -0
  233. package/dist/modules/ambient/color.d.ts +0 -21
  234. package/dist/modules/ambient/color.d.ts.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/modules/media/constants.ts","../src/modules/media/playback.ts","../src/modules/media/session.ts","../src/modules/media/context.tsx","../src/modules/media/hooks.ts","../src/modules/media/overlay.tsx","../src/modules/media/module.tsx"],"names":["useRef","useEffect","useMemo"],"mappings":"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","file":"chunk-R2YGFJDJ.js","sourcesContent":["import { type MediaActions, type MediaState } from \"./types\";\n\nexport const DEFAULT_MEDIA_STATE: MediaState = Object.freeze({\n audibleElement: null,\n element: null,\n hasMedia: false,\n isPlaying: false,\n kind: null,\n loop: false,\n sourceId: null,\n});\n\nexport const INERT_MEDIA_ACTIONS: MediaActions = Object.freeze({\n removeSource: () => {},\n setMuted: () => {},\n toggle: () => {},\n toggleLoop: () => {},\n upsertSource: () => {},\n});\n\n\nexport const MEDIA_SYNC_DRIFT_SECONDS = 0.3;\n\nexport const MEDIA_REGISTRY_KEY = \"page-media\";\n\nexport const PAGE_MEDIA_ID = \"page\";\n","import { MEDIA_SYNC_DRIFT_SECONDS } from \"./constants\";\n\nconst noop = () => {};\n\nexport function toggleElement(element: HTMLMediaElement | null): void {\n if (!element) return;\n if (element.paused || element.ended) {\n void Promise.resolve(element.play()).catch(noop);\n } else {\n element.pause();\n }\n}\n\nexport function safePlay(element: HTMLMediaElement): void {\n try {\n void Promise.resolve(element.play()).catch(noop);\n } catch {}\n}\n\nexport function sameElements(\n a: readonly (HTMLMediaElement | null)[],\n b: readonly (HTMLMediaElement | null)[],\n): boolean {\n return (\n a.length === b.length && a.every((element, index) => element === b[index])\n );\n}\n\nexport function bindFollowers(\n transport: HTMLMediaElement,\n followers: readonly HTMLMediaElement[],\n): () => void {\n const ownLoops = followers.map((follower) => follower.loop);\n\n const align = (hard: boolean) => {\n const time = Number(transport.currentTime) || 0;\n for (const follower of followers) {\n follower.loop = false;\n if (follower.playbackRate !== transport.playbackRate) {\n follower.playbackRate = transport.playbackRate;\n }\n const drift = Math.abs((Number(follower.currentTime) || 0) - time);\n if (hard || drift > MEDIA_SYNC_DRIFT_SECONDS) follower.currentTime = time;\n }\n };\n const play = () => {\n align(false);\n followers.forEach(safePlay);\n };\n const pause = () => followers.forEach((follower) => follower.pause());\n const hardAlign = () => align(true);\n const softAlign = () => align(false);\n\n const listeners: [string, () => void][] = [\n [\"play\", play],\n [\"playing\", play],\n [\"pause\", pause],\n [\"waiting\", pause],\n [\"ended\", pause],\n [\"seeking\", hardAlign],\n [\"seeked\", hardAlign],\n [\"ratechange\", softAlign],\n [\"timeupdate\", softAlign],\n ];\n for (const [type, listener] of listeners) {\n transport.addEventListener(type, listener);\n }\n\n hardAlign();\n if (!transport.paused && !transport.ended) play();\n\n return () => {\n for (const [type, listener] of listeners) {\n transport.removeEventListener(type, listener);\n }\n followers.forEach((follower, index) => {\n follower.loop = ownLoops[index];\n });\n };\n}\n","import { shallowEqual } from \"@/utils\";\nimport { DEFAULT_MEDIA_STATE } from \"./constants\";\nimport {\n type MediaEntry,\n type MediaEntryInput,\n type MediaPageConfig,\n type MediaPageOptions,\n type MediaSession,\n type MediaState,\n} from \"./types\";\n\nfunction newest(sources: readonly MediaEntry[]): MediaEntry {\n return sources.reduce((a, b) => (b.order > a.order ? b : a));\n}\n\nexport function resolveMediaSession(\n sources: readonly MediaEntry[],\n): MediaSession | null {\n if (sources.length === 0) return null;\n\n const ids = new Set(sources.map((source) => source.id));\n const wantsFollow = (source: MediaEntry) =>\n Boolean(source.follow) &&\n source.follow !== source.id &&\n ids.has(source.follow!);\n const rootIds = new Set(\n sources.filter((source) => !wantsFollow(source)).map((source) => source.id),\n );\n const isFollower = (source: MediaEntry) =>\n wantsFollow(source) && rootIds.has(source.follow!);\n\n const transport = newest(sources.filter((source) => !isFollower(source)));\n const followers = sources\n .filter((source) => isFollower(source) && source.follow === transport.id)\n .sort((a, b) => a.order - b.order);\n const audioFollowers = followers.filter((source) => source.kind === \"audio\");\n\n return {\n audible: audioFollowers.length > 0 ? newest(audioFollowers) : transport,\n followers,\n transport,\n };\n}\n\nexport function createMediaState(session: MediaSession | null): MediaState {\n if (!session) return DEFAULT_MEDIA_STATE;\n const { audible, transport } = session;\n return {\n audibleElement: audible.element,\n element: transport.element,\n hasMedia: true,\n isPlaying: transport.isPlaying,\n kind: transport.kind,\n loop: transport.loop,\n sourceId: transport.id,\n };\n}\n\nexport function mediaStatesEqual(a: MediaState, b: MediaState): boolean {\n return shallowEqual(a, b);\n}\n\nexport function mergeMediaSource(\n current: MediaEntry | undefined,\n input: MediaEntryInput,\n order: number,\n): MediaEntry {\n return {\n controls: undefined,\n element: null,\n follow: null,\n isPlaying: false,\n kind: \"audio\",\n loop: false,\n ...current,\n ...input,\n order: current?.order ?? order,\n };\n}\n\nexport function selectPageMedia(\n media: MediaPageConfig | null | undefined,\n): MediaPageOptions | null {\n if (!media) return null;\n if (typeof media === \"string\") return { src: media };\n return media.src ? media : null;\n}\nexport function findDisplacedAudio(\n entries: readonly MediaEntry[],\n session: MediaSession | null,\n newId: string,\n): MediaEntry[] {\n if (!session || session.transport.id !== newId) return [];\n const followerIds = new Set(session.followers.map((entry) => entry.id));\n return entries.filter(\n (entry) =>\n entry.id !== newId &&\n !followerIds.has(entry.id) &&\n entry.kind === \"audio\" &&\n entry.element !== null &&\n !entry.element.paused,\n );\n}\n","\"use client\";\n\nimport { useEffect, useMemo, useRef, useState } from \"react\";\nimport { getOrCreateGlobalContext } from \"@/kernel\";\nimport { createStore } from \"@/utils\";\nimport { DEFAULT_MEDIA_STATE } from \"./constants\";\nimport {\n bindFollowers,\n sameElements,\n toggleElement,\n} from \"./playback\";\nimport {\n createMediaState,\n findDisplacedAudio,\n mediaStatesEqual,\n mergeMediaSource,\n resolveMediaSession,\n} from \"./session\";\nimport {\n type MediaActions,\n type MediaContextValue,\n type MediaEntry,\n type MediaProviderProps,\n type MediaSession,\n type MediaState,\n} from \"./types\";\n\nexport const MediaContext = getOrCreateGlobalContext<MediaContextValue | null>(\n \"MediaContext\",\n null,\n);\n\nexport const NOOP_MEDIA_STORE = createStore<MediaState>(DEFAULT_MEDIA_STATE);\n\ninterface Binding {\n cleanup: () => void;\n followers: readonly (HTMLMediaElement | null)[];\n transport: HTMLMediaElement;\n}\n\nexport function MediaProvider({ children }: MediaProviderProps) {\n const [store] = useState(() =>\n createStore<MediaState>(DEFAULT_MEDIA_STATE, { freezeSnapshots: false }),\n );\n const sourcesRef = useRef(new Map<string, MediaEntry>());\n const sessionRef = useRef<MediaSession | null>(null);\n const orderRef = useRef(0);\n const bindingRef = useRef<Binding | null>(null);\n\n const actions = useMemo<MediaActions>(() => {\n const unbind = () => {\n bindingRef.current?.cleanup();\n bindingRef.current = null;\n };\n\n const rebind = (session: MediaSession | null) => {\n const transport = session?.transport.element ?? null;\n const followers = (session?.followers ?? []).map(\n (source) => source.element,\n );\n const current = bindingRef.current;\n if (\n current &&\n current.transport === transport &&\n sameElements(current.followers, followers)\n ) {\n return;\n }\n unbind();\n const live = followers.filter(\n (element): element is HTMLMediaElement => element !== null,\n );\n if (!transport || live.length === 0) return;\n bindingRef.current = {\n cleanup: bindFollowers(transport, live),\n followers,\n transport,\n };\n };\n\n const commit = () => {\n const session = resolveMediaSession([...sourcesRef.current.values()]);\n sessionRef.current = session;\n rebind(session);\n const next = createMediaState(session);\n store.publish((prev) => (mediaStatesEqual(prev, next) ? prev : next));\n };\n\n const patch = (id: string, changes: Partial<MediaEntry>) => {\n const current = sourcesRef.current.get(id);\n if (!current) return;\n sourcesRef.current.set(id, { ...current, ...changes });\n commit();\n };\n\n return {\n removeSource: (id) => {\n if (sourcesRef.current.delete(id)) commit();\n },\n setMuted: (muted) => {\n const audible = sessionRef.current?.audible;\n if (!audible) return;\n if (audible.controls?.setMuted) audible.controls.setMuted(muted);\n else if (audible.element) audible.element.muted = muted;\n },\n toggle: () => {\n const transport = sessionRef.current?.transport;\n if (!transport) return;\n if (transport.controls?.toggle) transport.controls.toggle();\n else toggleElement(transport.element);\n },\n toggleLoop: () => {\n const transport = sessionRef.current?.transport;\n if (!transport) return;\n if (transport.controls?.toggleLoop) {\n transport.controls.toggleLoop();\n return;\n }\n const loop = !transport.loop;\n if (transport.element) transport.element.loop = loop;\n patch(transport.id, { loop });\n },\n upsertSource: (input) => {\n const current = sourcesRef.current.get(input.id);\n if (!current) orderRef.current += 1;\n sourcesRef.current.set(\n input.id,\n mergeMediaSource(current, input, orderRef.current),\n );\n commit();\n if (!current) {\n findDisplacedAudio(\n [...sourcesRef.current.values()],\n sessionRef.current,\n input.id,\n ).forEach((entry) => entry.element?.pause());\n }\n },\n };\n }, [store]);\n\n useEffect(\n () => () => {\n bindingRef.current?.cleanup();\n bindingRef.current = null;\n },\n [],\n );\n\n const value = useMemo<MediaContextValue>(\n () => ({ actions, store }),\n [actions, store],\n );\n\n return <MediaContext value={value}>{children}</MediaContext>;\n}\n","\"use client\";\n\nimport {\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n} from \"react\";\nimport { useRequiredContext, useStore } from \"@/hooks\";\nimport { INERT_MEDIA_ACTIONS } from \"./constants\";\nimport { MediaContext, NOOP_MEDIA_STORE } from \"./context\";\nimport { toggleElement } from \"./playback\";\nimport {\n type MediaActions,\n type MediaHandle,\n type MediaOptions,\n type MediaState,\n} from \"./types\";\n\nexport function useMediaState(): MediaState {\n const { store } = useRequiredContext(\n MediaContext,\n \"useMediaState\",\n \"MediaProvider\",\n );\n return useStore(store);\n}\n\nexport function useMediaActions(): MediaActions {\n return useRequiredContext(MediaContext, \"useMediaActions\", \"MediaProvider\")\n .actions;\n}\n\nexport function useOptionalMediaState(): MediaState;\nexport function useOptionalMediaState<T>(\n selector: (state: MediaState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T;\nexport function useOptionalMediaState<T = MediaState>(\n selector?: (state: MediaState) => T,\n isEqual?: (a: T, b: T) => boolean,\n): T {\n const ctx = useContext(MediaContext);\n return useStore(\n ctx?.store ?? NOOP_MEDIA_STORE,\n selector as (state: MediaState) => T,\n isEqual,\n );\n}\n\nexport function useOptionalMediaActions(): MediaActions {\n const ctx = useContext(MediaContext);\n return ctx?.actions ?? INERT_MEDIA_ACTIONS;\n}\n\nexport function useMedia(options: MediaOptions): MediaHandle {\n const generatedId = useId();\n const id = options.id ?? `media-${generatedId}`;\n const { removeSource, upsertSource } = useMediaActions();\n const audioRef = useRef<HTMLAudioElement | null>(null);\n const optionsRef = useRef(options);\n const { src, enabled = true } = options;\n const isEnabled = enabled && Boolean(src);\n\n useEffect(() => {\n optionsRef.current = options;\n });\n\n useEffect(() => {\n if (!isEnabled || !src) return undefined;\n const audio = new Audio();\n audio.preload = \"auto\";\n audio.src = src;\n audioRef.current = audio;\n\n const initial = optionsRef.current;\n audio.loop = Boolean(initial.loop);\n audio.muted = Boolean(initial.muted);\n if (typeof initial.volume === \"number\") {\n audio.volume = Math.min(1, Math.max(0, initial.volume));\n }\n\n upsertSource({\n element: audio,\n follow: initial.follow ?? null,\n id,\n isPlaying: false,\n kind: \"audio\",\n loop: audio.loop,\n });\n\n const syncPlaying = () =>\n upsertSource({ id, isPlaying: !audio.paused && !audio.ended });\n const events = [\"play\", \"playing\", \"pause\", \"ended\"] as const;\n events.forEach((type) => audio.addEventListener(type, syncPlaying));\n\n if (!initial.follow && initial.autoplay !== false) {\n void Promise.resolve(audio.play()).catch(() => {});\n }\n\n return () => {\n events.forEach((type) => audio.removeEventListener(type, syncPlaying));\n audio.pause();\n audio.removeAttribute(\"src\");\n audio.load();\n audioRef.current = null;\n removeSource(id);\n };\n }, [id, isEnabled, removeSource, src, upsertSource]);\n\n const { follow = null, loop, muted, volume } = options;\n useEffect(() => {\n const audio = audioRef.current;\n if (!audio) return;\n if (loop !== undefined && !follow) audio.loop = loop;\n if (muted !== undefined) audio.muted = muted;\n if (volume !== undefined) audio.volume = Math.min(1, Math.max(0, volume));\n upsertSource({ follow, id, ...(follow ? {} : { loop: audio.loop }) });\n }, [follow, id, isEnabled, loop, muted, src, upsertSource, volume]);\n\n const play = useCallback(() => {\n const audio = audioRef.current;\n if (audio) void Promise.resolve(audio.play()).catch(() => {});\n }, []);\n const pause = useCallback(() => audioRef.current?.pause(), []);\n const toggle = useCallback(() => toggleElement(audioRef.current), []);\n\n return useMemo(\n () => ({ id, pause, play, toggle }),\n [id, pause, play, toggle],\n );\n}\n","\"use client\";\n\nimport { useRegistryValue } from \"@/kernel\";\nimport { MEDIA_REGISTRY_KEY, PAGE_MEDIA_ID } from \"./constants\";\nimport { useMedia } from \"./hooks\";\nimport { type MediaPageOptions, type MediaSourceProps } from \"./types\";\n\nexport function MediaSource(props: MediaSourceProps) {\n useMedia(props);\n return null;\n}\n\nexport function MediaOverlay() {\n const page = useRegistryValue<\"media\", MediaPageOptions>(\n \"media\",\n MEDIA_REGISTRY_KEY,\n );\n useMedia({ ...page, id: PAGE_MEDIA_ID, src: page?.src });\n return null;\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport { defineModule, type PageModuleApi } from \"@/kernel\";\nimport { MEDIA_REGISTRY_KEY } from \"./constants\";\nimport { MediaContext, MediaProvider } from \"./context\";\nimport { useMediaActions } from \"./hooks\";\nimport { MediaOverlay } from \"./overlay\";\nimport { selectPageMedia } from \"./session\";\nimport {\n type MediaPageApi,\n type MediaPageConfig,\n type MediaPageOptions,\n} from \"./types\";\n\nfunction useMediaPage(\n _slice: MediaPageOptions | null,\n page: PageModuleApi,\n): MediaPageApi {\n const actions = useMediaActions();\n return useMemo(\n () => ({\n ...actions,\n set: (media: MediaPageConfig) => page.set({ media }),\n }),\n [actions, page],\n );\n}\n\nexport const mediaModule = defineModule({\n id: \"media\",\n context: MediaContext,\n Provider: MediaProvider,\n Overlay: MediaOverlay,\n registry: {\n cleanupDelayMs: 600,\n keyPolicy: \"singleton\",\n lifecycle: \"immediate\",\n singletonKey: MEDIA_REGISTRY_KEY,\n },\n page: {\n select: (config) => selectPageMedia(config.media),\n entries: (slice: MediaPageOptions) => [\n { key: MEDIA_REGISTRY_KEY, value: slice },\n ],\n use: useMediaPage,\n },\n});\n\ndeclare module \"@omerdlw/base-framework/kernel\" {\n interface CoreModules {\n media: typeof mediaModule;\n }\n interface PageConfig {\n media?: MediaPageConfig;\n }\n}\n"]}
@@ -0,0 +1,27 @@
1
+ // src/utils/report.ts
2
+ var GLOBAL_SINK_KEY = /* @__PURE__ */ Symbol.for("__base_framework_report_sink__");
3
+ var _global = globalThis;
4
+ function report(scope, error, level = "error") {
5
+ const sink = _global[GLOBAL_SINK_KEY];
6
+ if (sink) {
7
+ try {
8
+ sink(scope, error, level);
9
+ return;
10
+ } catch {
11
+ }
12
+ }
13
+ if (process.env.NODE_ENV === "production" && typeof window !== "undefined") {
14
+ return;
15
+ }
16
+ console[level](`[${scope}]`, error);
17
+ }
18
+ function setReportSink(next) {
19
+ _global[GLOBAL_SINK_KEY] = next;
20
+ return () => {
21
+ if (_global[GLOBAL_SINK_KEY] === next) _global[GLOBAL_SINK_KEY] = null;
22
+ };
23
+ }
24
+
25
+ export { report, setReportSink };
26
+ //# sourceMappingURL=chunk-RFZQWLC5.js.map
27
+ //# sourceMappingURL=chunk-RFZQWLC5.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/report.ts"],"names":[],"mappings":";AAWA,IAAM,eAAA,mBAAkB,MAAA,CAAO,GAAA,CAAI,gCAAgC,CAAA;AAKnE,IAAM,OAAA,GAAU,UAAA;AAET,SAAS,MAAA,CACd,KAAA,EACA,KAAA,EACA,KAAA,GAAqB,OAAA,EACf;AACN,EAAA,MAAM,IAAA,GAAO,QAAQ,eAAe,CAAA;AACpC,EAAA,IAAI,IAAA,EAAM;AACR,IAAA,IAAI;AACF,MAAA,IAAA,CAAK,KAAA,EAAO,OAAO,KAAK,CAAA;AACxB,MAAA;AAAA,IACF,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX;AAEA,EAAA,IAAI,QAAQ,GAAA,CAAI,QAAA,KAAa,YAAA,IAAgB,OAAO,WAAW,WAAA,EAAa;AAC1E,IAAA;AAAA,EACF;AACA,EAAA,OAAA,CAAQ,KAAK,CAAA,CAAE,CAAA,CAAA,EAAI,KAAK,KAAK,KAAK,CAAA;AACpC;AAEO,SAAS,cAAc,IAAA,EAA8B;AAC1D,EAAA,OAAA,CAAQ,eAAe,CAAA,GAAI,IAAA;AAC3B,EAAA,OAAO,MAAM;AACX,IAAA,IAAI,QAAQ,eAAe,CAAA,KAAM,IAAA,EAAM,OAAA,CAAQ,eAAe,CAAA,GAAI,IAAA;AAAA,EACpE,CAAA;AACF","file":"chunk-RFZQWLC5.js","sourcesContent":["export type ReportLevel = \"error\" | \"warn\";\n\nexport type ReportSink = (\n scope: string,\n error: unknown,\n level: ReportLevel,\n) => void;\n\n// The sink lives on globalThis so every bundled copy of this module (the\n// server-safe and client builds each carry one) reads the sink that\n// GlobalErrorListener installs.\nconst GLOBAL_SINK_KEY = Symbol.for(\"__base_framework_report_sink__\");\ntype GlobalWithSink = typeof globalThis & {\n [GLOBAL_SINK_KEY]?: ReportSink | null;\n};\n\nconst _global = globalThis as GlobalWithSink;\n\nexport function report(\n scope: string,\n error: unknown,\n level: ReportLevel = \"error\",\n): void {\n const sink = _global[GLOBAL_SINK_KEY];\n if (sink) {\n try {\n sink(scope, error, level);\n return;\n } catch {}\n }\n\n if (process.env.NODE_ENV === \"production\" && typeof window !== \"undefined\") {\n return;\n }\n console[level](`[${scope}]`, error);\n}\n\nexport function setReportSink(next: ReportSink): () => void {\n _global[GLOBAL_SINK_KEY] = next;\n return () => {\n if (_global[GLOBAL_SINK_KEY] === next) _global[GLOBAL_SINK_KEY] = null;\n };\n}\n"]}