@mieweb/ui 0.11.0-dev.46 → 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.
- package/agent/evals/install.md +6 -4
- package/agent/skills/mieweb-ui-tailwind4/SKILL.md +6 -2
- package/dist/{EncounterMdyEditor-XA7HLLVD.cjs → EncounterMdyEditor-KW52MD2Q.cjs} +6 -6
- package/dist/{EncounterMdyEditor-XA7HLLVD.cjs.map → EncounterMdyEditor-KW52MD2Q.cjs.map} +1 -1
- package/dist/{EncounterMdyEditor-ATNWXQ72.js → EncounterMdyEditor-OYO3H5GJ.js} +3 -3
- package/dist/{EncounterMdyEditor-ATNWXQ72.js.map → EncounterMdyEditor-OYO3H5GJ.js.map} +1 -1
- package/dist/{chunk-F6ZTKNAL.cjs → chunk-3XR7BPKD.cjs} +4 -4
- package/dist/{chunk-F6ZTKNAL.cjs.map → chunk-3XR7BPKD.cjs.map} +1 -1
- package/dist/{chunk-ULKDK6W6.js → chunk-3XVDSLDT.js} +4 -4
- package/dist/chunk-3XVDSLDT.js.map +1 -0
- package/dist/{chunk-WI35L5TR.js → chunk-DHCSY2JY.js} +3 -3
- package/dist/{chunk-WI35L5TR.js.map → chunk-DHCSY2JY.js.map} +1 -1
- package/dist/{chunk-IYXZ25E6.js → chunk-ETAYMSCW.js} +4 -4
- package/dist/{chunk-IYXZ25E6.js.map → chunk-ETAYMSCW.js.map} +1 -1
- package/dist/{chunk-LE3HZ7MM.cjs → chunk-LVUSCBG4.cjs} +11 -11
- package/dist/{chunk-LE3HZ7MM.cjs.map → chunk-LVUSCBG4.cjs.map} +1 -1
- package/dist/{chunk-BUM72SAI.cjs → chunk-LWAXTZGG.cjs} +7 -7
- package/dist/{chunk-BUM72SAI.cjs.map → chunk-LWAXTZGG.cjs.map} +1 -1
- package/dist/{chunk-QJ75ZMCG.js → chunk-R4DQRXZY.js} +3 -3
- package/dist/{chunk-QJ75ZMCG.js.map → chunk-R4DQRXZY.js.map} +1 -1
- package/dist/{chunk-5O54NWAL.cjs → chunk-TA5K5546.cjs} +4 -4
- package/dist/chunk-TA5K5546.cjs.map +1 -0
- package/dist/{chunk-2D6TFO2Y.js → chunk-XJ37SWVD.js} +3 -3
- package/dist/{chunk-2D6TFO2Y.js.map → chunk-XJ37SWVD.js.map} +1 -1
- package/dist/{chunk-6I2G26AX.cjs → chunk-YKL66TCM.cjs} +4 -4
- package/dist/{chunk-6I2G26AX.cjs.map → chunk-YKL66TCM.cjs.map} +1 -1
- package/dist/collabKit-652AGQW6.js +99 -0
- package/dist/collabKit-652AGQW6.js.map +1 -0
- package/dist/collabKit-DVSTUBN4.cjs +102 -0
- package/dist/collabKit-DVSTUBN4.cjs.map +1 -0
- package/dist/components/EmailEditor/index.cjs +13 -13
- package/dist/components/EmailEditor/index.js +4 -4
- package/dist/components/Textarea/index.cjs +6 -6
- package/dist/components/Textarea/index.js +3 -3
- package/dist/esheet.cjs +18 -18
- package/dist/esheet.js +5 -5
- package/dist/index.cjs +53 -53
- package/dist/index.js +7 -7
- package/dist/kerebron.cjs +5 -5
- package/dist/kerebron.js +2 -2
- package/dist/styles/init.css +8 -4
- package/package.json +1 -1
- package/dist/chunk-5O54NWAL.cjs.map +0 -1
- package/dist/chunk-ULKDK6W6.js.map +0 -1
- package/dist/collabKit-GCRHP25F.cjs +0 -76
- package/dist/collabKit-GCRHP25F.cjs.map +0 -1
- package/dist/collabKit-SJPDPXU4.js +0 -52
- 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
|
|
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-
|
|
8
|
+
require('../../chunk-3XR7BPKD.cjs');
|
|
9
9
|
require('../../chunk-UPWIJC6I.cjs');
|
|
10
10
|
require('../../chunk-CPDNX3LS.cjs');
|
|
11
|
-
require('../../chunk-
|
|
12
|
-
require('../../chunk-
|
|
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
|
|
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
|
|
44
|
+
get: function () { return chunkLWAXTZGG_cjs.EmailEditor; }
|
|
45
45
|
});
|
|
46
46
|
Object.defineProperty(exports, "createDefaultDesignSettings", {
|
|
47
47
|
enumerable: true,
|
|
48
|
-
get: function () { return
|
|
48
|
+
get: function () { return chunkLWAXTZGG_cjs.createDefaultDesignSettings; }
|
|
49
49
|
});
|
|
50
50
|
Object.defineProperty(exports, "createEmailBlock", {
|
|
51
51
|
enumerable: true,
|
|
52
|
-
get: function () { return
|
|
52
|
+
get: function () { return chunkLWAXTZGG_cjs.createEmailBlock; }
|
|
53
53
|
});
|
|
54
54
|
Object.defineProperty(exports, "createEmailHtmlSanitizer", {
|
|
55
55
|
enumerable: true,
|
|
56
|
-
get: function () { return
|
|
56
|
+
get: function () { return chunkLWAXTZGG_cjs.createEmailHtmlSanitizer; }
|
|
57
57
|
});
|
|
58
58
|
Object.defineProperty(exports, "createEmptyEmailContentTree", {
|
|
59
59
|
enumerable: true,
|
|
60
|
-
get: function () { return
|
|
60
|
+
get: function () { return chunkLWAXTZGG_cjs.createEmptyEmailContentTree; }
|
|
61
61
|
});
|
|
62
62
|
Object.defineProperty(exports, "defaultEmailEditorLabels", {
|
|
63
63
|
enumerable: true,
|
|
64
|
-
get: function () { return
|
|
64
|
+
get: function () { return chunkLWAXTZGG_cjs.defaultEmailEditorLabels; }
|
|
65
65
|
});
|
|
66
66
|
Object.defineProperty(exports, "generateEmailBlockId", {
|
|
67
67
|
enumerable: true,
|
|
68
|
-
get: function () { return
|
|
68
|
+
get: function () { return chunkLWAXTZGG_cjs.generateEmailBlockId; }
|
|
69
69
|
});
|
|
70
70
|
Object.defineProperty(exports, "renderEmailMjml", {
|
|
71
71
|
enumerable: true,
|
|
72
|
-
get: function () { return
|
|
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-
|
|
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-
|
|
6
|
+
import '../../chunk-XJ37SWVD.js';
|
|
7
7
|
import '../../chunk-VCI2Y7ST.js';
|
|
8
8
|
import '../../chunk-HNXLLDPN.js';
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-
|
|
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
|
|
4
|
-
require('../../chunk-
|
|
5
|
-
require('../../chunk-
|
|
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
|
|
33
|
+
get: function () { return chunk3XR7BPKD_cjs.Textarea; }
|
|
34
34
|
});
|
|
35
35
|
Object.defineProperty(exports, "htmlToPlain", {
|
|
36
36
|
enumerable: true,
|
|
37
|
-
get: function () { return
|
|
37
|
+
get: function () { return chunk3XR7BPKD_cjs.htmlToPlain; }
|
|
38
38
|
});
|
|
39
39
|
Object.defineProperty(exports, "plainToHtml", {
|
|
40
40
|
enumerable: true,
|
|
41
|
-
get: function () { return
|
|
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-
|
|
2
|
-
import '../../chunk-
|
|
3
|
-
import '../../chunk-
|
|
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
|
|
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-
|
|
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
|
|
24
|
-
require('./chunk-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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-
|
|
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 =
|
|
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(
|
|
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
|
-
|
|
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 =
|
|
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
|
-
|
|
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-
|
|
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-
|
|
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-
|
|
23
|
-
import './chunk-
|
|
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-
|
|
2670
|
+
() => import('./EncounterMdyEditor-OYO3H5GJ.js').then((module) => ({
|
|
2671
2671
|
default: module.EncounterMdyEditor
|
|
2672
2672
|
}))
|
|
2673
2673
|
);
|