@toon-protocol/views 0.12.0 → 0.12.2

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 (71) hide show
  1. package/dist/app/index.html +132 -92
  2. package/dist/app-bridge/ext-apps-bridge.d.ts.map +1 -1
  3. package/dist/app-bridge/ext-apps-bridge.js +23 -0
  4. package/dist/app-bridge/ext-apps-bridge.js.map +1 -1
  5. package/dist/app-bridge/types.d.ts +25 -0
  6. package/dist/app-bridge/types.d.ts.map +1 -1
  7. package/dist/atoms/feed.d.ts +15 -0
  8. package/dist/atoms/feed.d.ts.map +1 -0
  9. package/dist/atoms/feed.js +71 -0
  10. package/dist/atoms/feed.js.map +1 -0
  11. package/dist/atoms/interactive.d.ts.map +1 -1
  12. package/dist/atoms/interactive.js +25 -6
  13. package/dist/atoms/interactive.js.map +1 -1
  14. package/dist/atoms/live-ticker.d.ts +17 -0
  15. package/dist/atoms/live-ticker.d.ts.map +1 -0
  16. package/dist/atoms/live-ticker.js +62 -0
  17. package/dist/atoms/live-ticker.js.map +1 -0
  18. package/dist/atoms/media-gallery.d.ts +14 -0
  19. package/dist/atoms/media-gallery.d.ts.map +1 -0
  20. package/dist/atoms/media-gallery.js +86 -0
  21. package/dist/atoms/media-gallery.js.map +1 -0
  22. package/dist/atoms/media.d.ts +37 -1
  23. package/dist/atoms/media.d.ts.map +1 -1
  24. package/dist/atoms/media.js +90 -4
  25. package/dist/atoms/media.js.map +1 -1
  26. package/dist/atoms/registry.d.ts.map +1 -1
  27. package/dist/atoms/registry.js +8 -0
  28. package/dist/atoms/registry.js.map +1 -1
  29. package/dist/atoms/social-ui.d.ts.map +1 -1
  30. package/dist/atoms/social-ui.js +7 -1
  31. package/dist/atoms/social-ui.js.map +1 -1
  32. package/dist/atoms/social.d.ts +9 -1
  33. package/dist/atoms/social.d.ts.map +1 -1
  34. package/dist/atoms/social.js +24 -3
  35. package/dist/atoms/social.js.map +1 -1
  36. package/dist/atoms/thread-view.d.ts +21 -0
  37. package/dist/atoms/thread-view.d.ts.map +1 -0
  38. package/dist/atoms/thread-view.js +118 -0
  39. package/dist/atoms/thread-view.js.map +1 -0
  40. package/dist/atoms/types.d.ts +21 -0
  41. package/dist/atoms/types.d.ts.map +1 -1
  42. package/dist/atoms/types.js +3 -0
  43. package/dist/atoms/types.js.map +1 -1
  44. package/dist/catalog.d.ts.map +1 -1
  45. package/dist/catalog.js +45 -0
  46. package/dist/catalog.js.map +1 -1
  47. package/dist/engagement-budget.d.ts +68 -0
  48. package/dist/engagement-budget.d.ts.map +1 -0
  49. package/dist/engagement-budget.js +166 -0
  50. package/dist/engagement-budget.js.map +1 -0
  51. package/dist/gallery/gallery.js +27 -0
  52. package/dist/gallery/gallery.js.map +1 -1
  53. package/dist/gallery/mock-bridge.d.ts.map +1 -1
  54. package/dist/gallery/mock-bridge.js +15 -0
  55. package/dist/gallery/mock-bridge.js.map +1 -1
  56. package/dist/paging.d.ts +28 -0
  57. package/dist/paging.d.ts.map +1 -0
  58. package/dist/paging.js +36 -0
  59. package/dist/paging.js.map +1 -0
  60. package/dist/runtime.d.ts.map +1 -1
  61. package/dist/runtime.js +47 -6
  62. package/dist/runtime.js.map +1 -1
  63. package/dist/spendy-consent.d.ts +16 -1
  64. package/dist/spendy-consent.d.ts.map +1 -1
  65. package/dist/spendy-consent.js +42 -8
  66. package/dist/spendy-consent.js.map +1 -1
  67. package/dist/surface.d.ts +37 -0
  68. package/dist/surface.d.ts.map +1 -0
  69. package/dist/surface.js +64 -0
  70. package/dist/surface.js.map +1 -0
  71. package/package.json +3 -3
@@ -0,0 +1,64 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Surface-mode control for atoms.
4
+ *
5
+ * Wraps the (optional, feature-detected) display-mode methods on {@link
6
+ * ViewBridge} as a reactive hook. Atoms use it to decide whether to offer "Open
7
+ * timeline" (fullscreen) or a live ticker (pip), and to request the switch — but
8
+ * they degrade to inline-only on hosts (and the mock bridge) that don't expose
9
+ * the capability, so nothing assumes fullscreen/pip exists.
10
+ */
11
+ import { createContext, useCallback, useContext, useEffect, useState, } from 'react';
12
+ import {} from './app-bridge/types.js';
13
+ function read(bridge) {
14
+ return {
15
+ mode: bridge.displayMode?.() ?? 'inline',
16
+ available: bridge.availableDisplayModes?.() ?? [],
17
+ };
18
+ }
19
+ /** Reactive surface-mode state + a `request` to switch modes. */
20
+ export function useDisplayMode(bridge) {
21
+ const [state, setState] = useState(() => read(bridge));
22
+ useEffect(() => {
23
+ // Re-read on mount (the host context may have arrived after the initial
24
+ // render) and whenever the host context changes (mode/size/theme).
25
+ setState(read(bridge));
26
+ return bridge.onHostContextChanged?.(() => setState(read(bridge)));
27
+ }, [bridge]);
28
+ const request = useCallback(async (mode) => {
29
+ if (!bridge.requestDisplayMode)
30
+ return;
31
+ const actual = await bridge.requestDisplayMode(mode);
32
+ setState((s) => ({ ...s, mode: actual }));
33
+ }, [bridge]);
34
+ return {
35
+ mode: state.mode,
36
+ available: state.available,
37
+ canFullscreen: state.available.includes('fullscreen'),
38
+ canPip: state.available.includes('pip'),
39
+ request,
40
+ };
41
+ }
42
+ /** The inline-only fallback used when no {@link SurfaceProvider} is mounted. */
43
+ const INLINE_ONLY = {
44
+ mode: 'inline',
45
+ available: [],
46
+ canFullscreen: false,
47
+ canPip: false,
48
+ request: async () => { },
49
+ };
50
+ const SurfaceContext = createContext(INLINE_ONLY);
51
+ /**
52
+ * Computes surface-mode state ONCE per view and shares it via context, so the
53
+ * many atoms in a view read it cheaply instead of each subscribing to the host
54
+ * (which would chain N handlers onto the single host-context callback).
55
+ */
56
+ export const SurfaceProvider = ({ bridge, children, }) => {
57
+ const control = useDisplayMode(bridge);
58
+ return _jsx(SurfaceContext.Provider, { value: control, children: children });
59
+ };
60
+ /** Read the view's surface-mode control (inline-only when no provider is mounted). */
61
+ export function useSurface() {
62
+ return useContext(SurfaceContext);
63
+ }
64
+ //# sourceMappingURL=surface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"surface.js","sourceRoot":"","sources":["../src/surface.tsx"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;AAEH,OAAO,EACL,aAAa,EACb,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,GAGT,MAAM,OAAO,CAAC;AACf,OAAO,EAAqC,MAAM,uBAAuB,CAAC;AAe1E,SAAS,IAAI,CAAC,MAAkB;IAC9B,OAAO;QACL,IAAI,EAAE,MAAM,CAAC,WAAW,EAAE,EAAE,IAAI,QAAQ;QACxC,SAAS,EAAE,MAAM,CAAC,qBAAqB,EAAE,EAAE,IAAI,EAAE;KAClD,CAAC;AACJ,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEvD,SAAS,CAAC,GAAG,EAAE;QACb,wEAAwE;QACxE,mEAAmE;QACnE,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC,oBAAoB,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IAEb,MAAM,OAAO,GAAG,WAAW,CACzB,KAAK,EAAE,IAAiB,EAAiB,EAAE;QACzC,IAAI,CAAC,MAAM,CAAC,kBAAkB;YAAE,OAAO;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrD,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC;QACrD,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC;QACvC,OAAO;KACR,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,MAAM,WAAW,GAAuB;IACtC,IAAI,EAAE,QAAQ;IACd,SAAS,EAAE,EAAE;IACb,aAAa,EAAE,KAAK;IACpB,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,KAAK,IAAI,EAAE,GAAE,CAAC;CACxB,CAAC;AAEF,MAAM,cAAc,GAAG,aAAa,CAAqB,WAAW,CAAC,CAAC;AAEtE;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAoD,CAAC,EAC/E,MAAM,EACN,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACvC,OAAO,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAAG,QAAQ,GAA2B,CAAC;AACvF,CAAC,CAAC;AAEF,sFAAsF;AACtF,MAAM,UAAU,UAAU;IACxB,OAAO,UAAU,CAAC,cAAc,CAAC,CAAC;AACpC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toon-protocol/views",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "description": "Shared TOON kind→atom registry, NIP parsers, ViewSpec composition runtime, and MCP-app iframe bundle. Consumed by rig and the toon-mcp apps surface.",
5
5
  "type": "module",
6
6
  "publishConfig": {
@@ -38,8 +38,8 @@
38
38
  "tailwind-merge": "^2.6.1",
39
39
  "tw-animate-css": "^1.4.0",
40
40
  "zod": "^3.25.0",
41
- "@toon-protocol/arweave": "0.1.1",
42
- "@toon-protocol/client": "0.14.11"
41
+ "@toon-protocol/client": "0.14.12",
42
+ "@toon-protocol/arweave": "0.1.1"
43
43
  },
44
44
  "peerDependencies": {
45
45
  "react": "^19.0.0",