@mieweb/ui 0.11.0-dev.47 → 0.11.0-dev.48

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 (46) hide show
  1. package/agent/skills/mieweb-ui-tailwind4/SKILL.md +1 -0
  2. package/dist/{EncounterMdyEditor-XA7HLLVD.cjs → EncounterMdyEditor-KW52MD2Q.cjs} +6 -6
  3. package/dist/{EncounterMdyEditor-XA7HLLVD.cjs.map → EncounterMdyEditor-KW52MD2Q.cjs.map} +1 -1
  4. package/dist/{EncounterMdyEditor-ATNWXQ72.js → EncounterMdyEditor-OYO3H5GJ.js} +3 -3
  5. package/dist/{EncounterMdyEditor-ATNWXQ72.js.map → EncounterMdyEditor-OYO3H5GJ.js.map} +1 -1
  6. package/dist/{chunk-F6ZTKNAL.cjs → chunk-3XR7BPKD.cjs} +4 -4
  7. package/dist/{chunk-F6ZTKNAL.cjs.map → chunk-3XR7BPKD.cjs.map} +1 -1
  8. package/dist/{chunk-ULKDK6W6.js → chunk-3XVDSLDT.js} +4 -4
  9. package/dist/chunk-3XVDSLDT.js.map +1 -0
  10. package/dist/{chunk-WI35L5TR.js → chunk-DHCSY2JY.js} +3 -3
  11. package/dist/{chunk-WI35L5TR.js.map → chunk-DHCSY2JY.js.map} +1 -1
  12. package/dist/{chunk-IYXZ25E6.js → chunk-ETAYMSCW.js} +4 -4
  13. package/dist/{chunk-IYXZ25E6.js.map → chunk-ETAYMSCW.js.map} +1 -1
  14. package/dist/{chunk-LE3HZ7MM.cjs → chunk-LVUSCBG4.cjs} +11 -11
  15. package/dist/{chunk-LE3HZ7MM.cjs.map → chunk-LVUSCBG4.cjs.map} +1 -1
  16. package/dist/{chunk-BUM72SAI.cjs → chunk-LWAXTZGG.cjs} +7 -7
  17. package/dist/{chunk-BUM72SAI.cjs.map → chunk-LWAXTZGG.cjs.map} +1 -1
  18. package/dist/{chunk-QJ75ZMCG.js → chunk-R4DQRXZY.js} +3 -3
  19. package/dist/{chunk-QJ75ZMCG.js.map → chunk-R4DQRXZY.js.map} +1 -1
  20. package/dist/{chunk-5O54NWAL.cjs → chunk-TA5K5546.cjs} +4 -4
  21. package/dist/chunk-TA5K5546.cjs.map +1 -0
  22. package/dist/{chunk-2D6TFO2Y.js → chunk-XJ37SWVD.js} +3 -3
  23. package/dist/{chunk-2D6TFO2Y.js.map → chunk-XJ37SWVD.js.map} +1 -1
  24. package/dist/{chunk-6I2G26AX.cjs → chunk-YKL66TCM.cjs} +4 -4
  25. package/dist/{chunk-6I2G26AX.cjs.map → chunk-YKL66TCM.cjs.map} +1 -1
  26. package/dist/collabKit-652AGQW6.js +99 -0
  27. package/dist/collabKit-652AGQW6.js.map +1 -0
  28. package/dist/collabKit-DVSTUBN4.cjs +102 -0
  29. package/dist/collabKit-DVSTUBN4.cjs.map +1 -0
  30. package/dist/components/EmailEditor/index.cjs +13 -13
  31. package/dist/components/EmailEditor/index.js +4 -4
  32. package/dist/components/Textarea/index.cjs +6 -6
  33. package/dist/components/Textarea/index.js +3 -3
  34. package/dist/esheet.cjs +18 -18
  35. package/dist/esheet.js +5 -5
  36. package/dist/index.cjs +53 -53
  37. package/dist/index.js +7 -7
  38. package/dist/kerebron.cjs +5 -5
  39. package/dist/kerebron.js +2 -2
  40. package/package.json +1 -1
  41. package/dist/chunk-5O54NWAL.cjs.map +0 -1
  42. package/dist/chunk-ULKDK6W6.js.map +0 -1
  43. package/dist/collabKit-GCRHP25F.cjs +0 -76
  44. package/dist/collabKit-GCRHP25F.cjs.map +0 -1
  45. package/dist/collabKit-SJPDPXU4.js +0 -52
  46. package/dist/collabKit-SJPDPXU4.js.map +0 -1
@@ -0,0 +1,99 @@
1
+ import './chunk-PX6F3LHL.js';
2
+
3
+ // src/components/RichEditor/collabKit.ts
4
+ function defaultWsUrl() {
5
+ const loc = globalThis.location;
6
+ const protocol = loc && loc.protocol === "https:" ? "wss:" : "ws:";
7
+ const host = loc ? loc.host : "localhost";
8
+ return `${protocol}//${host}/yjs`;
9
+ }
10
+ async function peerExport(specifier, exportName, load) {
11
+ const mod = await load;
12
+ const value = mod[exportName];
13
+ if (value === void 0) {
14
+ throw new Error(
15
+ `[RichEditor] Optional peer "${specifier}" has no "${exportName}" export \u2014 it is likely not installed (bundlers stub absent optional peers). Collaborative editing needs @kerebron/extension-yjs, yjs and y-protocols.`
16
+ );
17
+ }
18
+ return value;
19
+ }
20
+ var HuddleYjsKit = class {
21
+ constructor(peers, url, params, WebSocketImpl, user) {
22
+ this.peers = peers;
23
+ this.url = url;
24
+ this.params = params;
25
+ this.WebSocketImpl = WebSocketImpl;
26
+ this.user = user;
27
+ }
28
+ peers;
29
+ url;
30
+ params;
31
+ WebSocketImpl;
32
+ user;
33
+ name = "yjs-editor";
34
+ getExtensions() {
35
+ const { ExtensionYjs, WebsocketProvider, MarkYChange, Awareness, Doc } = this.peers;
36
+ const url = this.url;
37
+ const params = this.params;
38
+ const user = this.user;
39
+ const WebSocketImpl = this.WebSocketImpl ?? globalThis.WebSocket;
40
+ const createYjsProvider = (roomId) => {
41
+ const ydoc = new Doc({ gc: false });
42
+ const provider = new WebsocketProvider(url, roomId, ydoc, {
43
+ connect: true,
44
+ awareness: new Awareness(ydoc),
45
+ params,
46
+ protocols: [],
47
+ WebSocketPolyfill: WebSocketImpl,
48
+ resyncInterval: -1,
49
+ maxBackoffTime: 2500,
50
+ disableBc: false
51
+ });
52
+ if (user) provider.awareness.setLocalStateField("kerebron:user", user);
53
+ return [provider, ydoc];
54
+ };
55
+ return [new MarkYChange(), new ExtensionYjs({ createYjsProvider })];
56
+ }
57
+ };
58
+ async function createHuddleYjsKit(url, params, WebSocketImpl, user) {
59
+ const [extensionYjs, websocketProvider, markYChange, awareness, doc] = await Promise.all([
60
+ peerExport(
61
+ "@kerebron/extension-yjs",
62
+ "ExtensionYjs",
63
+ import('@kerebron/extension-yjs')
64
+ ),
65
+ peerExport(
66
+ "@kerebron/extension-yjs/WebsocketProvider",
67
+ "WebsocketProvider",
68
+ import('@kerebron/extension-yjs/WebsocketProvider')
69
+ ),
70
+ peerExport(
71
+ "@kerebron/extension-yjs/MarkYChange",
72
+ "MarkYChange",
73
+ import('@kerebron/extension-yjs/MarkYChange')
74
+ ),
75
+ peerExport(
76
+ "y-protocols/awareness",
77
+ "Awareness",
78
+ import('y-protocols/awareness')
79
+ ),
80
+ peerExport("yjs", "Doc", import('yjs'))
81
+ ]);
82
+ return new HuddleYjsKit(
83
+ {
84
+ ExtensionYjs: extensionYjs,
85
+ WebsocketProvider: websocketProvider,
86
+ MarkYChange: markYChange,
87
+ Awareness: awareness,
88
+ Doc: doc
89
+ },
90
+ url,
91
+ params,
92
+ WebSocketImpl,
93
+ user
94
+ );
95
+ }
96
+
97
+ export { createHuddleYjsKit, defaultWsUrl };
98
+ //# sourceMappingURL=collabKit-652AGQW6.js.map
99
+ //# sourceMappingURL=collabKit-652AGQW6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/RichEditor/collabKit.ts"],"names":[],"mappings":"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","file":"collabKit-652AGQW6.js","sourcesContent":["/**\n * Collaborative (Yjs) editor kit for {@link RichEditor}.\n *\n * Kept in its own module — loaded via dynamic `import()` from `editorKits.ts`\n * only when a `collab` config is passed — so `@kerebron/extension-yjs`, `yjs`\n * and `y-protocols` stay truly optional peers: plain-mode consumers never load\n * them and don't need them installed.\n *\n * The peers are themselves loaded via dynamic `import()` here, not static\n * `import`: bundlers substitute an empty stub module for absent optional\n * peers, and a static *named* import from that stub is a hard build error in\n * Rolldown-based Vite (mieweb/ui#706) — even for consumers who never enable\n * collab. A dynamic namespace import is not statically checked, so their\n * builds pass; at runtime {@link createHuddleYjsKit} validates the loaded\n * modules and rejects with a descriptive error that `createEditorKits`'\n * degrade-to-local path already handles.\n *\n * We deliberately do not use `@kerebron/editor-kits`' own `YjsEditorKit`: it\n * constructs the `WebsocketProvider` with no query params, leaving no way to\n * authenticate the socket. Here we thread caller-supplied `params` (e.g. an\n * auth token) into the provider so the backend `/yjs` route can authorize the\n * room.\n */\nimport type { EditorKit } from '@kerebron/editor';\nimport type { ExtensionYjs } from '@kerebron/extension-yjs';\nimport type { WebsocketProvider } from '@kerebron/extension-yjs/WebsocketProvider';\nimport type { MarkYChange } from '@kerebron/extension-yjs/MarkYChange';\nimport type * as awarenessProtocol from 'y-protocols/awareness';\nimport type * as Y from 'yjs';\n\n/** Derive the default `/yjs` websocket URL from the current page origin. */\nexport function defaultWsUrl(): string {\n const loc = globalThis.location;\n const protocol = loc && loc.protocol === 'https:' ? 'wss:' : 'ws:';\n const host = loc ? loc.host : 'localhost';\n return `${protocol}//${host}/yjs`;\n}\n\n/** The optional-peer constructors {@link HuddleYjsKit} needs at runtime. */\ninterface YjsPeers {\n ExtensionYjs: typeof ExtensionYjs;\n WebsocketProvider: typeof WebsocketProvider;\n MarkYChange: typeof MarkYChange;\n Awareness: typeof awarenessProtocol.Awareness;\n Doc: typeof Y.Doc;\n}\n\n/**\n * Import one optional peer and pluck a named export, rejecting with a\n * peer-install hint when the export is missing — which is what \"installed\"\n * looks like when a bundler stubbed out an absent optional dependency.\n */\nasync function peerExport<T>(\n specifier: string,\n exportName: string,\n load: Promise<Record<string, unknown>>\n): Promise<T> {\n const mod = await load;\n const value = mod[exportName];\n if (value === undefined) {\n throw new Error(\n `[RichEditor] Optional peer \"${specifier}\" has no \"${exportName}\" export — ` +\n `it is likely not installed (bundlers stub absent optional peers). ` +\n `Collaborative editing needs @kerebron/extension-yjs, yjs and y-protocols.`\n );\n }\n return value as T;\n}\n\n/** MarkYChange + ExtensionYjs, with an authenticated websocket provider. */\nclass HuddleYjsKit implements EditorKit {\n name = 'yjs-editor';\n constructor(\n private readonly peers: YjsPeers,\n private readonly url: string,\n private readonly params: Record<string, string>,\n private readonly WebSocketImpl?: typeof globalThis.WebSocket,\n private readonly user?: { id: string; name: string; color?: string }\n ) {}\n\n getExtensions() {\n const { ExtensionYjs, WebsocketProvider, MarkYChange, Awareness, Doc } =\n this.peers;\n const url = this.url;\n const params = this.params;\n const user = this.user;\n const WebSocketImpl = this.WebSocketImpl ?? globalThis.WebSocket;\n const createYjsProvider = (roomId: string): [WebsocketProvider, Y.Doc] => {\n const ydoc = new Doc({ gc: false });\n // The provider's opts default is a *default parameter*, not a merge, so we\n // must pass every field when we want to set `params`.\n const provider = new WebsocketProvider(url, roomId, ydoc, {\n connect: true,\n awareness: new Awareness(ydoc),\n params,\n protocols: [],\n WebSocketPolyfill: WebSocketImpl,\n resyncInterval: -1,\n maxBackoffTime: 2500,\n disableBc: false,\n });\n // Named cursors: the position plugin skips states with no user field.\n if (user) provider.awareness.setLocalStateField('kerebron:user', user);\n return [provider, ydoc];\n };\n return [new MarkYChange(), new ExtensionYjs({ createYjsProvider })];\n }\n}\n\n/**\n * Load the optional Yjs peers and build the collab kit. Rejects when any peer\n * is missing/stubbed; `createEditorKits` catches that and degrades to a local\n * editor via {@link CollabConfig.onUnavailable}.\n */\nexport async function createHuddleYjsKit(\n url: string,\n params: Record<string, string>,\n WebSocketImpl?: typeof globalThis.WebSocket,\n user?: { id: string; name: string; color?: string }\n): Promise<EditorKit> {\n const [extensionYjs, websocketProvider, markYChange, awareness, doc] =\n await Promise.all([\n peerExport<YjsPeers['ExtensionYjs']>(\n '@kerebron/extension-yjs',\n 'ExtensionYjs',\n import('@kerebron/extension-yjs')\n ),\n peerExport<YjsPeers['WebsocketProvider']>(\n '@kerebron/extension-yjs/WebsocketProvider',\n 'WebsocketProvider',\n import('@kerebron/extension-yjs/WebsocketProvider')\n ),\n peerExport<YjsPeers['MarkYChange']>(\n '@kerebron/extension-yjs/MarkYChange',\n 'MarkYChange',\n import('@kerebron/extension-yjs/MarkYChange')\n ),\n peerExport<YjsPeers['Awareness']>(\n 'y-protocols/awareness',\n 'Awareness',\n import('y-protocols/awareness')\n ),\n peerExport<YjsPeers['Doc']>('yjs', 'Doc', import('yjs')),\n ]);\n return new HuddleYjsKit(\n {\n ExtensionYjs: extensionYjs,\n WebsocketProvider: websocketProvider,\n MarkYChange: markYChange,\n Awareness: awareness,\n Doc: doc,\n },\n url,\n params,\n WebSocketImpl,\n user\n );\n}\n"]}
@@ -0,0 +1,102 @@
1
+ 'use strict';
2
+
3
+ require('./chunk-EUAMEVVI.cjs');
4
+
5
+ // src/components/RichEditor/collabKit.ts
6
+ function defaultWsUrl() {
7
+ const loc = globalThis.location;
8
+ const protocol = loc && loc.protocol === "https:" ? "wss:" : "ws:";
9
+ const host = loc ? loc.host : "localhost";
10
+ return `${protocol}//${host}/yjs`;
11
+ }
12
+ async function peerExport(specifier, exportName, load) {
13
+ const mod = await load;
14
+ const value = mod[exportName];
15
+ if (value === void 0) {
16
+ throw new Error(
17
+ `[RichEditor] Optional peer "${specifier}" has no "${exportName}" export \u2014 it is likely not installed (bundlers stub absent optional peers). Collaborative editing needs @kerebron/extension-yjs, yjs and y-protocols.`
18
+ );
19
+ }
20
+ return value;
21
+ }
22
+ var HuddleYjsKit = class {
23
+ constructor(peers, url, params, WebSocketImpl, user) {
24
+ this.peers = peers;
25
+ this.url = url;
26
+ this.params = params;
27
+ this.WebSocketImpl = WebSocketImpl;
28
+ this.user = user;
29
+ }
30
+ peers;
31
+ url;
32
+ params;
33
+ WebSocketImpl;
34
+ user;
35
+ name = "yjs-editor";
36
+ getExtensions() {
37
+ const { ExtensionYjs, WebsocketProvider, MarkYChange, Awareness, Doc } = this.peers;
38
+ const url = this.url;
39
+ const params = this.params;
40
+ const user = this.user;
41
+ const WebSocketImpl = this.WebSocketImpl ?? globalThis.WebSocket;
42
+ const createYjsProvider = (roomId) => {
43
+ const ydoc = new Doc({ gc: false });
44
+ const provider = new WebsocketProvider(url, roomId, ydoc, {
45
+ connect: true,
46
+ awareness: new Awareness(ydoc),
47
+ params,
48
+ protocols: [],
49
+ WebSocketPolyfill: WebSocketImpl,
50
+ resyncInterval: -1,
51
+ maxBackoffTime: 2500,
52
+ disableBc: false
53
+ });
54
+ if (user) provider.awareness.setLocalStateField("kerebron:user", user);
55
+ return [provider, ydoc];
56
+ };
57
+ return [new MarkYChange(), new ExtensionYjs({ createYjsProvider })];
58
+ }
59
+ };
60
+ async function createHuddleYjsKit(url, params, WebSocketImpl, user) {
61
+ const [extensionYjs, websocketProvider, markYChange, awareness, doc] = await Promise.all([
62
+ peerExport(
63
+ "@kerebron/extension-yjs",
64
+ "ExtensionYjs",
65
+ import('@kerebron/extension-yjs')
66
+ ),
67
+ peerExport(
68
+ "@kerebron/extension-yjs/WebsocketProvider",
69
+ "WebsocketProvider",
70
+ import('@kerebron/extension-yjs/WebsocketProvider')
71
+ ),
72
+ peerExport(
73
+ "@kerebron/extension-yjs/MarkYChange",
74
+ "MarkYChange",
75
+ import('@kerebron/extension-yjs/MarkYChange')
76
+ ),
77
+ peerExport(
78
+ "y-protocols/awareness",
79
+ "Awareness",
80
+ import('y-protocols/awareness')
81
+ ),
82
+ peerExport("yjs", "Doc", import('yjs'))
83
+ ]);
84
+ return new HuddleYjsKit(
85
+ {
86
+ ExtensionYjs: extensionYjs,
87
+ WebsocketProvider: websocketProvider,
88
+ MarkYChange: markYChange,
89
+ Awareness: awareness,
90
+ Doc: doc
91
+ },
92
+ url,
93
+ params,
94
+ WebSocketImpl,
95
+ user
96
+ );
97
+ }
98
+
99
+ exports.createHuddleYjsKit = createHuddleYjsKit;
100
+ exports.defaultWsUrl = defaultWsUrl;
101
+ //# sourceMappingURL=collabKit-DVSTUBN4.cjs.map
102
+ //# sourceMappingURL=collabKit-DVSTUBN4.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/RichEditor/collabKit.ts"],"names":[],"mappings":"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","file":"collabKit-DVSTUBN4.cjs","sourcesContent":["/**\n * Collaborative (Yjs) editor kit for {@link RichEditor}.\n *\n * Kept in its own module — loaded via dynamic `import()` from `editorKits.ts`\n * only when a `collab` config is passed — so `@kerebron/extension-yjs`, `yjs`\n * and `y-protocols` stay truly optional peers: plain-mode consumers never load\n * them and don't need them installed.\n *\n * The peers are themselves loaded via dynamic `import()` here, not static\n * `import`: bundlers substitute an empty stub module for absent optional\n * peers, and a static *named* import from that stub is a hard build error in\n * Rolldown-based Vite (mieweb/ui#706) — even for consumers who never enable\n * collab. A dynamic namespace import is not statically checked, so their\n * builds pass; at runtime {@link createHuddleYjsKit} validates the loaded\n * modules and rejects with a descriptive error that `createEditorKits`'\n * degrade-to-local path already handles.\n *\n * We deliberately do not use `@kerebron/editor-kits`' own `YjsEditorKit`: it\n * constructs the `WebsocketProvider` with no query params, leaving no way to\n * authenticate the socket. Here we thread caller-supplied `params` (e.g. an\n * auth token) into the provider so the backend `/yjs` route can authorize the\n * room.\n */\nimport type { EditorKit } from '@kerebron/editor';\nimport type { ExtensionYjs } from '@kerebron/extension-yjs';\nimport type { WebsocketProvider } from '@kerebron/extension-yjs/WebsocketProvider';\nimport type { MarkYChange } from '@kerebron/extension-yjs/MarkYChange';\nimport type * as awarenessProtocol from 'y-protocols/awareness';\nimport type * as Y from 'yjs';\n\n/** Derive the default `/yjs` websocket URL from the current page origin. */\nexport function defaultWsUrl(): string {\n const loc = globalThis.location;\n const protocol = loc && loc.protocol === 'https:' ? 'wss:' : 'ws:';\n const host = loc ? loc.host : 'localhost';\n return `${protocol}//${host}/yjs`;\n}\n\n/** The optional-peer constructors {@link HuddleYjsKit} needs at runtime. */\ninterface YjsPeers {\n ExtensionYjs: typeof ExtensionYjs;\n WebsocketProvider: typeof WebsocketProvider;\n MarkYChange: typeof MarkYChange;\n Awareness: typeof awarenessProtocol.Awareness;\n Doc: typeof Y.Doc;\n}\n\n/**\n * Import one optional peer and pluck a named export, rejecting with a\n * peer-install hint when the export is missing — which is what \"installed\"\n * looks like when a bundler stubbed out an absent optional dependency.\n */\nasync function peerExport<T>(\n specifier: string,\n exportName: string,\n load: Promise<Record<string, unknown>>\n): Promise<T> {\n const mod = await load;\n const value = mod[exportName];\n if (value === undefined) {\n throw new Error(\n `[RichEditor] Optional peer \"${specifier}\" has no \"${exportName}\" export — ` +\n `it is likely not installed (bundlers stub absent optional peers). ` +\n `Collaborative editing needs @kerebron/extension-yjs, yjs and y-protocols.`\n );\n }\n return value as T;\n}\n\n/** MarkYChange + ExtensionYjs, with an authenticated websocket provider. */\nclass HuddleYjsKit implements EditorKit {\n name = 'yjs-editor';\n constructor(\n private readonly peers: YjsPeers,\n private readonly url: string,\n private readonly params: Record<string, string>,\n private readonly WebSocketImpl?: typeof globalThis.WebSocket,\n private readonly user?: { id: string; name: string; color?: string }\n ) {}\n\n getExtensions() {\n const { ExtensionYjs, WebsocketProvider, MarkYChange, Awareness, Doc } =\n this.peers;\n const url = this.url;\n const params = this.params;\n const user = this.user;\n const WebSocketImpl = this.WebSocketImpl ?? globalThis.WebSocket;\n const createYjsProvider = (roomId: string): [WebsocketProvider, Y.Doc] => {\n const ydoc = new Doc({ gc: false });\n // The provider's opts default is a *default parameter*, not a merge, so we\n // must pass every field when we want to set `params`.\n const provider = new WebsocketProvider(url, roomId, ydoc, {\n connect: true,\n awareness: new Awareness(ydoc),\n params,\n protocols: [],\n WebSocketPolyfill: WebSocketImpl,\n resyncInterval: -1,\n maxBackoffTime: 2500,\n disableBc: false,\n });\n // Named cursors: the position plugin skips states with no user field.\n if (user) provider.awareness.setLocalStateField('kerebron:user', user);\n return [provider, ydoc];\n };\n return [new MarkYChange(), new ExtensionYjs({ createYjsProvider })];\n }\n}\n\n/**\n * Load the optional Yjs peers and build the collab kit. Rejects when any peer\n * is missing/stubbed; `createEditorKits` catches that and degrades to a local\n * editor via {@link CollabConfig.onUnavailable}.\n */\nexport async function createHuddleYjsKit(\n url: string,\n params: Record<string, string>,\n WebSocketImpl?: typeof globalThis.WebSocket,\n user?: { id: string; name: string; color?: string }\n): Promise<EditorKit> {\n const [extensionYjs, websocketProvider, markYChange, awareness, doc] =\n await Promise.all([\n peerExport<YjsPeers['ExtensionYjs']>(\n '@kerebron/extension-yjs',\n 'ExtensionYjs',\n import('@kerebron/extension-yjs')\n ),\n peerExport<YjsPeers['WebsocketProvider']>(\n '@kerebron/extension-yjs/WebsocketProvider',\n 'WebsocketProvider',\n import('@kerebron/extension-yjs/WebsocketProvider')\n ),\n peerExport<YjsPeers['MarkYChange']>(\n '@kerebron/extension-yjs/MarkYChange',\n 'MarkYChange',\n import('@kerebron/extension-yjs/MarkYChange')\n ),\n peerExport<YjsPeers['Awareness']>(\n 'y-protocols/awareness',\n 'Awareness',\n import('y-protocols/awareness')\n ),\n peerExport<YjsPeers['Doc']>('yjs', 'Doc', import('yjs')),\n ]);\n return new HuddleYjsKit(\n {\n ExtensionYjs: extensionYjs,\n WebsocketProvider: websocketProvider,\n MarkYChange: markYChange,\n Awareness: awareness,\n Doc: doc,\n },\n url,\n params,\n WebSocketImpl,\n user\n );\n}\n"]}
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkBUM72SAI_cjs = require('../../chunk-BUM72SAI.cjs');
3
+ var chunkLWAXTZGG_cjs = require('../../chunk-LWAXTZGG.cjs');
4
4
  require('../../chunk-BXRQ6HEP.cjs');
5
5
  require('../../chunk-7K6SW4VB.cjs');
6
6
  require('../../chunk-PLMXN23Q.cjs');
7
7
  require('../../chunk-7WJ6MBF5.cjs');
8
- require('../../chunk-F6ZTKNAL.cjs');
8
+ require('../../chunk-3XR7BPKD.cjs');
9
9
  require('../../chunk-UPWIJC6I.cjs');
10
10
  require('../../chunk-CPDNX3LS.cjs');
11
- require('../../chunk-6I2G26AX.cjs');
12
- require('../../chunk-5O54NWAL.cjs');
11
+ require('../../chunk-YKL66TCM.cjs');
12
+ require('../../chunk-TA5K5546.cjs');
13
13
  require('../../chunk-CFT3P5KP.cjs');
14
14
  require('../../chunk-FSLI5IKP.cjs');
15
15
  require('../../chunk-YP5T6NZD.cjs');
@@ -37,39 +37,39 @@ require('../../chunk-EUAMEVVI.cjs');
37
37
 
38
38
  Object.defineProperty(exports, "EMAIL_BLOCK_TYPES", {
39
39
  enumerable: true,
40
- get: function () { return chunkBUM72SAI_cjs.EMAIL_BLOCK_TYPES; }
40
+ get: function () { return chunkLWAXTZGG_cjs.EMAIL_BLOCK_TYPES; }
41
41
  });
42
42
  Object.defineProperty(exports, "EmailEditor", {
43
43
  enumerable: true,
44
- get: function () { return chunkBUM72SAI_cjs.EmailEditor; }
44
+ get: function () { return chunkLWAXTZGG_cjs.EmailEditor; }
45
45
  });
46
46
  Object.defineProperty(exports, "createDefaultDesignSettings", {
47
47
  enumerable: true,
48
- get: function () { return chunkBUM72SAI_cjs.createDefaultDesignSettings; }
48
+ get: function () { return chunkLWAXTZGG_cjs.createDefaultDesignSettings; }
49
49
  });
50
50
  Object.defineProperty(exports, "createEmailBlock", {
51
51
  enumerable: true,
52
- get: function () { return chunkBUM72SAI_cjs.createEmailBlock; }
52
+ get: function () { return chunkLWAXTZGG_cjs.createEmailBlock; }
53
53
  });
54
54
  Object.defineProperty(exports, "createEmailHtmlSanitizer", {
55
55
  enumerable: true,
56
- get: function () { return chunkBUM72SAI_cjs.createEmailHtmlSanitizer; }
56
+ get: function () { return chunkLWAXTZGG_cjs.createEmailHtmlSanitizer; }
57
57
  });
58
58
  Object.defineProperty(exports, "createEmptyEmailContentTree", {
59
59
  enumerable: true,
60
- get: function () { return chunkBUM72SAI_cjs.createEmptyEmailContentTree; }
60
+ get: function () { return chunkLWAXTZGG_cjs.createEmptyEmailContentTree; }
61
61
  });
62
62
  Object.defineProperty(exports, "defaultEmailEditorLabels", {
63
63
  enumerable: true,
64
- get: function () { return chunkBUM72SAI_cjs.defaultEmailEditorLabels; }
64
+ get: function () { return chunkLWAXTZGG_cjs.defaultEmailEditorLabels; }
65
65
  });
66
66
  Object.defineProperty(exports, "generateEmailBlockId", {
67
67
  enumerable: true,
68
- get: function () { return chunkBUM72SAI_cjs.generateEmailBlockId; }
68
+ get: function () { return chunkLWAXTZGG_cjs.generateEmailBlockId; }
69
69
  });
70
70
  Object.defineProperty(exports, "renderEmailMjml", {
71
71
  enumerable: true,
72
- get: function () { return chunkBUM72SAI_cjs.renderEmailMjml; }
72
+ get: function () { return chunkLWAXTZGG_cjs.renderEmailMjml; }
73
73
  });
74
74
  //# sourceMappingURL=index.cjs.map
75
75
  //# sourceMappingURL=index.cjs.map
@@ -1,13 +1,13 @@
1
- export { EMAIL_BLOCK_TYPES, EmailEditor, createDefaultDesignSettings, createEmailBlock, createEmailHtmlSanitizer, createEmptyEmailContentTree, defaultEmailEditorLabels, generateEmailBlockId, renderEmailMjml } from '../../chunk-IYXZ25E6.js';
1
+ export { EMAIL_BLOCK_TYPES, EmailEditor, createDefaultDesignSettings, createEmailBlock, createEmailHtmlSanitizer, createEmptyEmailContentTree, defaultEmailEditorLabels, generateEmailBlockId, renderEmailMjml } from '../../chunk-ETAYMSCW.js';
2
2
  import '../../chunk-XBAAHOCP.js';
3
3
  import '../../chunk-RYGVILUR.js';
4
4
  import '../../chunk-AQ564XO7.js';
5
5
  import '../../chunk-CVNPNZMX.js';
6
- import '../../chunk-2D6TFO2Y.js';
6
+ import '../../chunk-XJ37SWVD.js';
7
7
  import '../../chunk-VCI2Y7ST.js';
8
8
  import '../../chunk-HNXLLDPN.js';
9
- import '../../chunk-WI35L5TR.js';
10
- import '../../chunk-ULKDK6W6.js';
9
+ import '../../chunk-DHCSY2JY.js';
10
+ import '../../chunk-3XVDSLDT.js';
11
11
  import '../../chunk-N6STVVB6.js';
12
12
  import '../../chunk-5YOT4DVH.js';
13
13
  import '../../chunk-OQWZYKJM.js';
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkF6ZTKNAL_cjs = require('../../chunk-F6ZTKNAL.cjs');
4
- require('../../chunk-6I2G26AX.cjs');
5
- require('../../chunk-5O54NWAL.cjs');
3
+ var chunk3XR7BPKD_cjs = require('../../chunk-3XR7BPKD.cjs');
4
+ require('../../chunk-YKL66TCM.cjs');
5
+ require('../../chunk-TA5K5546.cjs');
6
6
  require('../../chunk-CFT3P5KP.cjs');
7
7
  require('../../chunk-FSLI5IKP.cjs');
8
8
  require('../../chunk-YP5T6NZD.cjs');
@@ -30,15 +30,15 @@ require('../../chunk-EUAMEVVI.cjs');
30
30
 
31
31
  Object.defineProperty(exports, "Textarea", {
32
32
  enumerable: true,
33
- get: function () { return chunkF6ZTKNAL_cjs.Textarea; }
33
+ get: function () { return chunk3XR7BPKD_cjs.Textarea; }
34
34
  });
35
35
  Object.defineProperty(exports, "htmlToPlain", {
36
36
  enumerable: true,
37
- get: function () { return chunkF6ZTKNAL_cjs.htmlToPlain; }
37
+ get: function () { return chunk3XR7BPKD_cjs.htmlToPlain; }
38
38
  });
39
39
  Object.defineProperty(exports, "plainToHtml", {
40
40
  enumerable: true,
41
- get: function () { return chunkF6ZTKNAL_cjs.plainToHtml; }
41
+ get: function () { return chunk3XR7BPKD_cjs.plainToHtml; }
42
42
  });
43
43
  //# sourceMappingURL=index.cjs.map
44
44
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
- export { Textarea, htmlToPlain, plainToHtml } from '../../chunk-2D6TFO2Y.js';
2
- import '../../chunk-WI35L5TR.js';
3
- import '../../chunk-ULKDK6W6.js';
1
+ export { Textarea, htmlToPlain, plainToHtml } from '../../chunk-XJ37SWVD.js';
2
+ import '../../chunk-DHCSY2JY.js';
3
+ import '../../chunk-3XVDSLDT.js';
4
4
  import '../../chunk-N6STVVB6.js';
5
5
  import '../../chunk-5YOT4DVH.js';
6
6
  import '../../chunk-OQWZYKJM.js';
package/dist/esheet.cjs CHANGED
@@ -2,14 +2,14 @@
2
2
 
3
3
  require('./chunk-K2BY7YPJ.cjs');
4
4
  var chunkJK2IWOI7_cjs = require('./chunk-JK2IWOI7.cjs');
5
- var chunkLE3HZ7MM_cjs = require('./chunk-LE3HZ7MM.cjs');
5
+ var chunkLVUSCBG4_cjs = require('./chunk-LVUSCBG4.cjs');
6
6
  var chunkXM3D4KAF_cjs = require('./chunk-XM3D4KAF.cjs');
7
7
  require('./chunk-3SEQVGLH.cjs');
8
8
  var chunkSV6YGK4U_cjs = require('./chunk-SV6YGK4U.cjs');
9
9
  require('./chunk-G7EQ3JPX.cjs');
10
10
  require('./chunk-AIJAFPGJ.cjs');
11
11
  var chunkMXIIPFTA_cjs = require('./chunk-MXIIPFTA.cjs');
12
- require('./chunk-F6ZTKNAL.cjs');
12
+ require('./chunk-3XR7BPKD.cjs');
13
13
  var chunkUPWIJC6I_cjs = require('./chunk-UPWIJC6I.cjs');
14
14
  require('./chunk-MJWFNV3L.cjs');
15
15
  require('./chunk-7AECNMYV.cjs');
@@ -20,8 +20,8 @@ require('./chunk-NNEFAUHV.cjs');
20
20
  require('./chunk-CW75IKA6.cjs');
21
21
  require('./chunk-SCV7C55E.cjs');
22
22
  require('./chunk-7E46YDOT.cjs');
23
- var chunk6I2G26AX_cjs = require('./chunk-6I2G26AX.cjs');
24
- require('./chunk-5O54NWAL.cjs');
23
+ var chunkYKL66TCM_cjs = require('./chunk-YKL66TCM.cjs');
24
+ require('./chunk-TA5K5546.cjs');
25
25
  require('./chunk-CFT3P5KP.cjs');
26
26
  var chunkFSLI5IKP_cjs = require('./chunk-FSLI5IKP.cjs');
27
27
  require('./chunk-YP5T6NZD.cjs');
@@ -828,7 +828,7 @@ function conditionSystemIdentity(system) {
828
828
  const trimmed = system.trim();
829
829
  if (trimmed === "http://hl7.org/fhir/sid/icd-10-cm") return "ICD-10-CM";
830
830
  if (trimmed === "http://snomed.info/sct") return "SNOMED";
831
- return chunkLE3HZ7MM_cjs.normalizeConditionCodingSystem(trimmed);
831
+ return chunkLVUSCBG4_cjs.normalizeConditionCodingSystem(trimmed);
832
832
  }
833
833
  function matchingConditionCode(concern, picked) {
834
834
  return Boolean(
@@ -928,7 +928,7 @@ function EncounterAssessmentField({
928
928
  }
929
929
  return /* @__PURE__ */ jsxRuntime.jsxs("section", { className: "space-y-2", children: [
930
930
  /* @__PURE__ */ jsxRuntime.jsx(
931
- chunkLE3HZ7MM_cjs.Assessment,
931
+ chunkLVUSCBG4_cjs.Assessment,
932
932
  {
933
933
  concerns,
934
934
  items: value.items,
@@ -1311,7 +1311,7 @@ function EsheetNarrativeField({
1311
1311
  }
1312
1312
  ),
1313
1313
  /* @__PURE__ */ jsxRuntime.jsx(
1314
- chunk6I2G26AX_cjs.TextAreaRichKerebron,
1314
+ chunkYKL66TCM_cjs.TextAreaRichKerebron,
1315
1315
  {
1316
1316
  ref: editorRef,
1317
1317
  value: html,
@@ -1470,7 +1470,7 @@ function EncounterMedicationField({
1470
1470
  if (error)
1471
1471
  return /* @__PURE__ */ jsxRuntime.jsx(InvalidClinicalAnswer, { label: "medication", answer: response?.answer });
1472
1472
  return /* @__PURE__ */ jsxRuntime.jsx(
1473
- chunkLE3HZ7MM_cjs.MedicationReconciliation,
1473
+ chunkLVUSCBG4_cjs.MedicationReconciliation,
1474
1474
  {
1475
1475
  medications: value.medications,
1476
1476
  onChange: commit,
@@ -1526,7 +1526,7 @@ function EncounterAllergyField({
1526
1526
  if (error)
1527
1527
  return /* @__PURE__ */ jsxRuntime.jsx(InvalidClinicalAnswer, { label: "allergy", answer: response?.answer });
1528
1528
  return /* @__PURE__ */ jsxRuntime.jsx(
1529
- chunkLE3HZ7MM_cjs.AllergyManager,
1529
+ chunkLVUSCBG4_cjs.AllergyManager,
1530
1530
  {
1531
1531
  allergies: value.allergies,
1532
1532
  onChange: (allergies) => commitValue((current) => ({
@@ -1570,7 +1570,7 @@ function EncounterConditionsField({
1570
1570
  [response?.answer]
1571
1571
  );
1572
1572
  const m = chunkFSLI5IKP_cjs.useMessages();
1573
- const codeLookup = chunkLE3HZ7MM_cjs.useCodeLookupConfig();
1573
+ const codeLookup = chunkLVUSCBG4_cjs.useCodeLookupConfig();
1574
1574
  const assertionDate = useEncounterAssertionDate(field);
1575
1575
  const currentDate = React11__namespace.useRef(assertionDate);
1576
1576
  currentDate.current = assertionDate;
@@ -1725,7 +1725,7 @@ function EncounterConditionsField({
1725
1725
  }
1726
1726
  ),
1727
1727
  /* @__PURE__ */ jsxRuntime.jsx(
1728
- chunkLE3HZ7MM_cjs.ConditionEditor,
1728
+ chunkLVUSCBG4_cjs.ConditionEditor,
1729
1729
  {
1730
1730
  mode: editor?.mode ?? "add",
1731
1731
  open: editor !== null,
@@ -1883,7 +1883,7 @@ function EncounterPlanField({
1883
1883
  if (!value)
1884
1884
  return /* @__PURE__ */ jsxRuntime.jsx(InvalidClinicalAnswer, { label, answer: response?.answer });
1885
1885
  return /* @__PURE__ */ jsxRuntime.jsx("section", { "aria-label": label, className: "min-w-0 space-y-2", children: /* @__PURE__ */ jsxRuntime.jsx(
1886
- chunkLE3HZ7MM_cjs.Assessment,
1886
+ chunkLVUSCBG4_cjs.Assessment,
1887
1887
  {
1888
1888
  concerns,
1889
1889
  items,
@@ -2690,7 +2690,7 @@ function executeEncounterVisitToolCall(name, args, tools) {
2690
2690
  };
2691
2691
  }
2692
2692
  var EncounterMdyEditor = React11__namespace.lazy(
2693
- () => import('./EncounterMdyEditor-XA7HLLVD.cjs').then((module) => ({
2693
+ () => import('./EncounterMdyEditor-KW52MD2Q.cjs').then((module) => ({
2694
2694
  default: module.EncounterMdyEditor
2695
2695
  }))
2696
2696
  );
@@ -2708,7 +2708,7 @@ function ensureFields() {
2708
2708
  }
2709
2709
  var esheetDefaultsSettled = false;
2710
2710
  var EncounterVisit = React11__namespace.forwardRef(function EncounterVisit2({ definition, initialMdy, codeLookup, messages, ...props }, ref) {
2711
- const inheritedCodeLookup = chunkLE3HZ7MM_cjs.useCodeLookupConfig();
2711
+ const inheritedCodeLookup = chunkLVUSCBG4_cjs.useCodeLookupConfig();
2712
2712
  const parsed = React11__namespace.useMemo(
2713
2713
  () => initialMdy === void 0 ? null : chunkJK2IWOI7_cjs.parseEncounterMdy(initialMdy),
2714
2714
  [initialMdy]
@@ -2775,7 +2775,7 @@ var EncounterVisit = React11__namespace.forwardRef(function EncounterVisit2({ de
2775
2775
  },
2776
2776
  visitDefinition.id
2777
2777
  );
2778
- return /* @__PURE__ */ jsxRuntime.jsx(chunkLE3HZ7MM_cjs.CodeLookupContext.Provider, { value: codeLookup ?? inheritedCodeLookup, children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSLI5IKP_cjs.MessagesProvider, { messages, children: session }) });
2778
+ return /* @__PURE__ */ jsxRuntime.jsx(chunkLVUSCBG4_cjs.CodeLookupContext.Provider, { value: codeLookup ?? inheritedCodeLookup, children: /* @__PURE__ */ jsxRuntime.jsx(chunkFSLI5IKP_cjs.MessagesProvider, { messages, children: session }) });
2779
2779
  });
2780
2780
  var EncounterVisitSession = React11__namespace.forwardRef(function EncounterVisitSession2({
2781
2781
  definition,
@@ -3873,7 +3873,7 @@ function MedicationListField({
3873
3873
  return definition.medications ?? [];
3874
3874
  }, [response?.answer, definition.medications]);
3875
3875
  return /* @__PURE__ */ jsxRuntime.jsx(
3876
- chunkLE3HZ7MM_cjs.MedicationReconciliation,
3876
+ chunkLVUSCBG4_cjs.MedicationReconciliation,
3877
3877
  {
3878
3878
  medications,
3879
3879
  onChange: (next) => onResponse({ answer: JSON.stringify({ medications: next }) }),
@@ -3931,7 +3931,7 @@ function AllergyListField({
3931
3931
  codeLookup
3932
3932
  }) {
3933
3933
  const definition = field.definition;
3934
- const ambientCodeLookup = chunkLE3HZ7MM_cjs.useCodeLookupConfig();
3934
+ const ambientCodeLookup = chunkLVUSCBG4_cjs.useCodeLookupConfig();
3935
3935
  const effectiveCodeLookup = codeLookup === false ? void 0 : codeLookup ?? ambientCodeLookup ?? void 0;
3936
3936
  const value = React11__namespace.useMemo(() => {
3937
3937
  if (response?.answer) return parseValue2(response.answer);
@@ -3941,7 +3941,7 @@ function AllergyListField({
3941
3941
  onResponse({ answer: JSON.stringify(next) });
3942
3942
  };
3943
3943
  return /* @__PURE__ */ jsxRuntime.jsx(
3944
- chunkLE3HZ7MM_cjs.AllergyManager,
3944
+ chunkLVUSCBG4_cjs.AllergyManager,
3945
3945
  {
3946
3946
  allergies: value.allergies,
3947
3947
  onChange: (allergies) => commit({
package/dist/esheet.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import './chunk-GADJASST.js';
2
2
  import { parseEncounterMdy, DEFAULT_ENCOUNTER_VISIT_DEFINITION, createEncounterFormDefinition, ENCOUNTER_DOCUMENT_FIELD_ID, encounterDocumentResponse, createEncounterSnapshot, updateEncounterDocumentBody, getEncounterSectionFieldId, getEncounterMdyFields, getEncounterSectionFieldIds, getEncounterDocumentBody, renderEncounterMdy, validateEncounterVitals, validateEncounterPlan, validateEncounterConditions, validAssessmentItem, isEncounterDate, validateEncounterAllergyValue, validateEncounterMedicationValue, validateEncounterAssessment, validateEncounterResponses, getEncounterFieldId, validateEncounterDefinition } from './chunk-LBUXS6FJ.js';
3
3
  export { DEFAULT_ENCOUNTER_VISIT_DEFINITION, ENCOUNTER_DOCUMENT_FIELD_ID, EXAMPLE_ENCOUNTER_VISIT_RESPONSES, createEncounterFormDefinition, createEncounterMdy, createEncounterSnapshot, encounterDocumentResponse, getEncounterConcerns, getEncounterDocumentBody, getEncounterFieldId, getEncounterMdyFields, getEncounterSectionFieldId, getEncounterSectionFieldIds, parseEncounterAssessment, parseEncounterConditions, parseEncounterMdy, parseEncounterPlan, parseEncounterVitals, refreshEncounterMdyLinks, renderEncounterMdy, updateEncounterDocumentBody, validAssessmentItem, validateEncounterAllergyValue, validateEncounterAssessment, validateEncounterConditions, validateEncounterDefinition, validateEncounterMedicationValue, validateEncounterPlan, validateEncounterResponses, validateEncounterVitals } from './chunk-LBUXS6FJ.js';
4
- import { useCodeLookupConfig, CodeLookupContext, Assessment, ConditionEditor, AllergyManager, MedicationReconciliation, normalizeConditionCodingSystem } from './chunk-QJ75ZMCG.js';
4
+ import { useCodeLookupConfig, CodeLookupContext, Assessment, ConditionEditor, AllergyManager, MedicationReconciliation, normalizeConditionCodingSystem } from './chunk-R4DQRXZY.js';
5
5
  import { ProblemList, currentAssertion } from './chunk-VQGRMCVT.js';
6
6
  import './chunk-AB24H2RM.js';
7
7
  import { ButtonGroup } from './chunk-BBLEGF5L.js';
8
8
  import './chunk-EPSB4WTL.js';
9
9
  import './chunk-I3WGZPI6.js';
10
10
  import { DateInput } from './chunk-ZP4H5HA4.js';
11
- import './chunk-2D6TFO2Y.js';
11
+ import './chunk-XJ37SWVD.js';
12
12
  import { Select } from './chunk-VCI2Y7ST.js';
13
13
  import './chunk-QYSUYB3S.js';
14
14
  import './chunk-753Z3NXL.js';
@@ -19,8 +19,8 @@ import './chunk-4SMSH4OY.js';
19
19
  import './chunk-RC2YMOMS.js';
20
20
  import './chunk-VSQF22GL.js';
21
21
  import './chunk-522WJIVI.js';
22
- import { TextAreaRichKerebron } from './chunk-WI35L5TR.js';
23
- import './chunk-ULKDK6W6.js';
22
+ import { TextAreaRichKerebron } from './chunk-DHCSY2JY.js';
23
+ import './chunk-3XVDSLDT.js';
24
24
  import './chunk-N6STVVB6.js';
25
25
  import { MessagesProvider, useMessages } from './chunk-5YOT4DVH.js';
26
26
  import './chunk-OQWZYKJM.js';
@@ -2667,7 +2667,7 @@ function executeEncounterVisitToolCall(name, args, tools) {
2667
2667
  };
2668
2668
  }
2669
2669
  var EncounterMdyEditor = React11.lazy(
2670
- () => import('./EncounterMdyEditor-ATNWXQ72.js').then((module) => ({
2670
+ () => import('./EncounterMdyEditor-OYO3H5GJ.js').then((module) => ({
2671
2671
  default: module.EncounterMdyEditor
2672
2672
  }))
2673
2673
  );