@mieweb/ui 0.8.0-dev.22 → 0.8.0-dev.24

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 (198) hide show
  1. package/dist/Animated-Cs-naa2g.d.cts +175 -0
  2. package/dist/Animated-Cs-naa2g.d.ts +175 -0
  3. package/dist/brands/index.cjs +7 -7
  4. package/dist/brands/index.js +2 -2
  5. package/dist/{chunk-YIOZQEMV.cjs → chunk-3LHICE4I.cjs} +3 -3
  6. package/dist/{chunk-YIOZQEMV.cjs.map → chunk-3LHICE4I.cjs.map} +1 -1
  7. package/dist/{chunk-DWRIU4MW.js → chunk-3RB35GYK.js} +3 -3
  8. package/dist/{chunk-DWRIU4MW.js.map → chunk-3RB35GYK.js.map} +1 -1
  9. package/dist/{chunk-BT7SXNZU.cjs → chunk-4SM3I7WE.cjs} +3 -3
  10. package/dist/{chunk-BT7SXNZU.cjs.map → chunk-4SM3I7WE.cjs.map} +1 -1
  11. package/dist/{chunk-JWB4UA4J.cjs → chunk-5BVFVXHN.cjs} +197 -147
  12. package/dist/chunk-5BVFVXHN.cjs.map +1 -0
  13. package/dist/{chunk-62FT5JRH.js → chunk-5H7SAEQO.js} +4 -4
  14. package/dist/{chunk-62FT5JRH.js.map → chunk-5H7SAEQO.js.map} +1 -1
  15. package/dist/{chunk-KRYJJMYN.js → chunk-6SAYPXHX.js} +3 -3
  16. package/dist/{chunk-KRYJJMYN.js.map → chunk-6SAYPXHX.js.map} +1 -1
  17. package/dist/{chunk-KTJETOOH.cjs → chunk-6XDPJWSC.cjs} +36 -36
  18. package/dist/{chunk-KTJETOOH.cjs.map → chunk-6XDPJWSC.cjs.map} +1 -1
  19. package/dist/{chunk-WUKXQZZR.cjs → chunk-7KN6J7XV.cjs} +8 -8
  20. package/dist/{chunk-WUKXQZZR.cjs.map → chunk-7KN6J7XV.cjs.map} +1 -1
  21. package/dist/chunk-BN75TLUN.cjs +163 -0
  22. package/dist/chunk-BN75TLUN.cjs.map +1 -0
  23. package/dist/{chunk-WWJIW2IH.cjs → chunk-BVMABVC4.cjs} +3 -3
  24. package/dist/{chunk-WWJIW2IH.cjs.map → chunk-BVMABVC4.cjs.map} +1 -1
  25. package/dist/{chunk-RS5VA6QU.cjs → chunk-C3DUS2VE.cjs} +3 -3
  26. package/dist/{chunk-RS5VA6QU.cjs.map → chunk-C3DUS2VE.cjs.map} +1 -1
  27. package/dist/{chunk-VIE7UI2R.cjs → chunk-CXDMZT45.cjs} +4 -2
  28. package/dist/chunk-CXDMZT45.cjs.map +1 -0
  29. package/dist/{chunk-TXRQQMG5.js → chunk-CYMZ2QS5.js} +2 -2
  30. package/dist/{chunk-TXRQQMG5.js.map → chunk-CYMZ2QS5.js.map} +1 -1
  31. package/dist/{chunk-KY2CZK5F.js → chunk-D25WH7MH.js} +2 -2
  32. package/dist/{chunk-KY2CZK5F.js.map → chunk-D25WH7MH.js.map} +1 -1
  33. package/dist/{chunk-ATOWMVZH.js → chunk-DFYMIRMW.js} +3 -3
  34. package/dist/{chunk-ATOWMVZH.js.map → chunk-DFYMIRMW.js.map} +1 -1
  35. package/dist/{chunk-PDS7OM73.js → chunk-DGRXAIWK.js} +4 -2
  36. package/dist/chunk-DGRXAIWK.js.map +1 -0
  37. package/dist/{chunk-JHR4PNUA.cjs → chunk-FQBTGS3E.cjs} +5 -5
  38. package/dist/{chunk-JHR4PNUA.cjs.map → chunk-FQBTGS3E.cjs.map} +1 -1
  39. package/dist/{chunk-W3N5XENB.cjs → chunk-FUFBRKOG.cjs} +24 -24
  40. package/dist/{chunk-W3N5XENB.cjs.map → chunk-FUFBRKOG.cjs.map} +1 -1
  41. package/dist/{chunk-UEDTZYGI.cjs → chunk-H4AVMUOC.cjs} +3 -3
  42. package/dist/{chunk-UEDTZYGI.cjs.map → chunk-H4AVMUOC.cjs.map} +1 -1
  43. package/dist/{chunk-X5ZPYYMS.js → chunk-I3DQXUSC.js} +3 -3
  44. package/dist/{chunk-X5ZPYYMS.js.map → chunk-I3DQXUSC.js.map} +1 -1
  45. package/dist/{chunk-LZVPVY5P.js → chunk-KU3XRHWA.js} +3 -3
  46. package/dist/{chunk-LZVPVY5P.js.map → chunk-KU3XRHWA.js.map} +1 -1
  47. package/dist/{chunk-P2VTQ5AR.cjs → chunk-L52N6BEN.cjs} +39 -23
  48. package/dist/chunk-L52N6BEN.cjs.map +1 -0
  49. package/dist/{chunk-SRMTRD7F.js → chunk-L5W7TJQ5.js} +3 -3
  50. package/dist/{chunk-SRMTRD7F.js.map → chunk-L5W7TJQ5.js.map} +1 -1
  51. package/dist/{chunk-Z5KFXHDP.cjs → chunk-MM7QKUE3.cjs} +5 -5
  52. package/dist/{chunk-Z5KFXHDP.cjs.map → chunk-MM7QKUE3.cjs.map} +1 -1
  53. package/dist/{chunk-FJ7YPVKV.js → chunk-MUIDWFYJ.js} +3 -3
  54. package/dist/{chunk-FJ7YPVKV.js.map → chunk-MUIDWFYJ.js.map} +1 -1
  55. package/dist/{chunk-L2LH4CEN.js → chunk-MXQ7J4BB.js} +3 -3
  56. package/dist/{chunk-L2LH4CEN.js.map → chunk-MXQ7J4BB.js.map} +1 -1
  57. package/dist/{chunk-R4E6DMZS.js → chunk-O6GJ4IYS.js} +195 -147
  58. package/dist/chunk-O6GJ4IYS.js.map +1 -0
  59. package/dist/{chunk-MX46D4UJ.cjs → chunk-O7XHHTTP.cjs} +2 -2
  60. package/dist/{chunk-MX46D4UJ.cjs.map → chunk-O7XHHTTP.cjs.map} +1 -1
  61. package/dist/{chunk-7IBZA7G6.js → chunk-OAZUDUGX.js} +4 -4
  62. package/dist/{chunk-7IBZA7G6.js.map → chunk-OAZUDUGX.js.map} +1 -1
  63. package/dist/{chunk-NFKX6QJP.cjs → chunk-OCV33S5Q.cjs} +3 -3
  64. package/dist/{chunk-NFKX6QJP.cjs.map → chunk-OCV33S5Q.cjs.map} +1 -1
  65. package/dist/{chunk-334BUQMR.js → chunk-ODYQYLO2.js} +7 -7
  66. package/dist/{chunk-334BUQMR.js.map → chunk-ODYQYLO2.js.map} +1 -1
  67. package/dist/{chunk-FK2WTX7D.js → chunk-OHDIJOGG.js} +3 -3
  68. package/dist/{chunk-FK2WTX7D.js.map → chunk-OHDIJOGG.js.map} +1 -1
  69. package/dist/{chunk-GQVL2JKQ.cjs → chunk-OHKO5THF.cjs} +3 -3
  70. package/dist/{chunk-GQVL2JKQ.cjs.map → chunk-OHKO5THF.cjs.map} +1 -1
  71. package/dist/{chunk-LMBXJZLG.js → chunk-ON4JULCA.js} +3 -3
  72. package/dist/{chunk-LMBXJZLG.js.map → chunk-ON4JULCA.js.map} +1 -1
  73. package/dist/{chunk-57DPXKUV.js → chunk-ONNY7UO4.js} +4 -4
  74. package/dist/{chunk-57DPXKUV.js.map → chunk-ONNY7UO4.js.map} +1 -1
  75. package/dist/{chunk-KFEN2SRZ.js → chunk-PHK4XBO5.js} +3 -3
  76. package/dist/{chunk-KFEN2SRZ.js.map → chunk-PHK4XBO5.js.map} +1 -1
  77. package/dist/{chunk-XMCIXHGH.js → chunk-Q7G56ZIO.js} +39 -23
  78. package/dist/chunk-Q7G56ZIO.js.map +1 -0
  79. package/dist/{chunk-T5BBZQ66.js → chunk-QAKASRE6.js} +3 -3
  80. package/dist/{chunk-T5BBZQ66.js.map → chunk-QAKASRE6.js.map} +1 -1
  81. package/dist/{chunk-UBOVDAD7.js → chunk-QAQOCS2J.js} +3 -3
  82. package/dist/{chunk-UBOVDAD7.js.map → chunk-QAQOCS2J.js.map} +1 -1
  83. package/dist/{chunk-GLEIVJQB.cjs → chunk-QKAYRHWP.cjs} +9 -9
  84. package/dist/{chunk-GLEIVJQB.cjs.map → chunk-QKAYRHWP.cjs.map} +1 -1
  85. package/dist/{chunk-JWTCEWQ4.cjs → chunk-SNEQXSC5.cjs} +2 -2
  86. package/dist/{chunk-JWTCEWQ4.cjs.map → chunk-SNEQXSC5.cjs.map} +1 -1
  87. package/dist/{chunk-ZSGEGISB.cjs → chunk-SRA2L3SQ.cjs} +4 -4
  88. package/dist/{chunk-ZSGEGISB.cjs.map → chunk-SRA2L3SQ.cjs.map} +1 -1
  89. package/dist/{chunk-3SHLOF4V.cjs → chunk-VTR2KGLY.cjs} +9 -9
  90. package/dist/{chunk-3SHLOF4V.cjs.map → chunk-VTR2KGLY.cjs.map} +1 -1
  91. package/dist/chunk-WYMO3IIK.js +136 -0
  92. package/dist/chunk-WYMO3IIK.js.map +1 -0
  93. package/dist/{chunk-CFI3TQMA.cjs → chunk-X5QRRMGB.cjs} +3 -3
  94. package/dist/{chunk-CFI3TQMA.cjs.map → chunk-X5QRRMGB.cjs.map} +1 -1
  95. package/dist/{chunk-SH6B4MG5.js → chunk-XBXDUAIM.js} +4 -4
  96. package/dist/{chunk-SH6B4MG5.js.map → chunk-XBXDUAIM.js.map} +1 -1
  97. package/dist/{chunk-K5GQPTTA.cjs → chunk-XEEVDZDK.cjs} +3 -3
  98. package/dist/{chunk-K5GQPTTA.cjs.map → chunk-XEEVDZDK.cjs.map} +1 -1
  99. package/dist/{chunk-GXODR6V4.js → chunk-XOIIUO6O.js} +3 -3
  100. package/dist/{chunk-GXODR6V4.js.map → chunk-XOIIUO6O.js.map} +1 -1
  101. package/dist/{chunk-AHHFFXJR.cjs → chunk-XTHMC76F.cjs} +3 -3
  102. package/dist/{chunk-AHHFFXJR.cjs.map → chunk-XTHMC76F.cjs.map} +1 -1
  103. package/dist/{chunk-64SSWBJN.cjs → chunk-YJP6DUFO.cjs} +6 -6
  104. package/dist/{chunk-64SSWBJN.cjs.map → chunk-YJP6DUFO.cjs.map} +1 -1
  105. package/dist/components/Alert/index.d.cts +1 -1
  106. package/dist/components/Alert/index.d.ts +1 -1
  107. package/dist/components/AlertDialog/index.cjs +5 -4
  108. package/dist/components/AlertDialog/index.js +4 -3
  109. package/dist/components/Autocomplete/index.cjs +3 -3
  110. package/dist/components/Autocomplete/index.js +2 -2
  111. package/dist/components/Badge/index.d.cts +1 -1
  112. package/dist/components/Badge/index.d.ts +1 -1
  113. package/dist/components/Card/index.d.cts +2 -2
  114. package/dist/components/Card/index.d.ts +2 -2
  115. package/dist/components/CountryCodeDropdown/index.cjs +5 -5
  116. package/dist/components/CountryCodeDropdown/index.js +2 -2
  117. package/dist/components/CustomizableDashboard/index.cjs +10 -10
  118. package/dist/components/CustomizableDashboard/index.js +3 -3
  119. package/dist/components/DateInput/index.cjs +4 -4
  120. package/dist/components/DateInput/index.js +3 -3
  121. package/dist/components/Dropdown/index.cjs +9 -9
  122. package/dist/components/Dropdown/index.js +2 -2
  123. package/dist/components/GlossaryTooltip/index.cjs +3 -3
  124. package/dist/components/GlossaryTooltip/index.js +2 -2
  125. package/dist/components/KeyboardShortcutsOverlay/index.cjs +6 -5
  126. package/dist/components/KeyboardShortcutsOverlay/index.js +4 -3
  127. package/dist/components/Markdown/index.cjs +10 -10
  128. package/dist/components/Markdown/index.js +2 -2
  129. package/dist/components/MediaEditor/index.cjs +11 -10
  130. package/dist/components/MediaEditor/index.js +6 -5
  131. package/dist/components/MediaPlayer/index.cjs +1 -1
  132. package/dist/components/MediaPlayer/index.js +1 -1
  133. package/dist/components/Modal/index.cjs +11 -10
  134. package/dist/components/Modal/index.d.cts +1 -1
  135. package/dist/components/Modal/index.d.ts +1 -1
  136. package/dist/components/Modal/index.js +3 -2
  137. package/dist/components/Pagination/index.d.cts +1 -1
  138. package/dist/components/Pagination/index.d.ts +1 -1
  139. package/dist/components/PhoneInput/index.cjs +4 -4
  140. package/dist/components/PhoneInput/index.js +2 -2
  141. package/dist/components/Progress/index.d.cts +1 -1
  142. package/dist/components/Progress/index.d.ts +1 -1
  143. package/dist/components/RecordButton/index.d.cts +1 -1
  144. package/dist/components/RecordButton/index.d.ts +1 -1
  145. package/dist/components/RichTextEditor/index.cjs +7 -7
  146. package/dist/components/RichTextEditor/index.js +4 -4
  147. package/dist/components/SectionSpyNav/index.cjs +3 -3
  148. package/dist/components/SectionSpyNav/index.js +2 -2
  149. package/dist/components/Select/index.cjs +4 -4
  150. package/dist/components/Select/index.js +2 -2
  151. package/dist/components/Sheet/index.cjs +11 -11
  152. package/dist/components/Sheet/index.js +2 -2
  153. package/dist/components/Slider/index.d.cts +2 -2
  154. package/dist/components/Slider/index.d.ts +2 -2
  155. package/dist/components/SourceTip/index.cjs +3 -3
  156. package/dist/components/SourceTip/index.js +2 -2
  157. package/dist/components/SuperChat/index.cjs +10 -10
  158. package/dist/components/SuperChat/index.js +4 -4
  159. package/dist/components/SuperChat/plugins/index.cjs +4 -4
  160. package/dist/components/SuperChat/plugins/index.js +3 -3
  161. package/dist/components/Text/index.d.cts +1 -1
  162. package/dist/components/Text/index.d.ts +1 -1
  163. package/dist/components/ThemeProvider/index.cjs +9 -9
  164. package/dist/components/ThemeProvider/index.d.cts +1 -1
  165. package/dist/components/ThemeProvider/index.d.ts +1 -1
  166. package/dist/components/ThemeProvider/index.js +3 -3
  167. package/dist/components/Toggle/index.d.cts +1 -1
  168. package/dist/components/Toggle/index.d.ts +1 -1
  169. package/dist/components/Tooltip/index.cjs +3 -3
  170. package/dist/components/Tooltip/index.js +2 -2
  171. package/dist/esheet.cjs +12 -11
  172. package/dist/esheet.cjs.map +1 -1
  173. package/dist/esheet.js +9 -8
  174. package/dist/esheet.js.map +1 -1
  175. package/dist/hooks/index.cjs +1 -1
  176. package/dist/hooks/index.js +1 -1
  177. package/dist/index.cjs +722 -620
  178. package/dist/index.cjs.map +1 -1
  179. package/dist/index.d.cts +38 -24
  180. package/dist/index.d.ts +38 -24
  181. package/dist/index.js +216 -129
  182. package/dist/index.js.map +1 -1
  183. package/dist/motion.cjs +87 -0
  184. package/dist/motion.cjs.map +1 -0
  185. package/dist/motion.d.cts +52 -0
  186. package/dist/motion.d.ts +52 -0
  187. package/dist/motion.js +50 -0
  188. package/dist/motion.js.map +1 -0
  189. package/dist/styles.css +1 -1
  190. package/dist/tailwind-preset.cjs +4 -4
  191. package/dist/tailwind-preset.js +1 -1
  192. package/package.json +16 -1
  193. package/dist/chunk-JWB4UA4J.cjs.map +0 -1
  194. package/dist/chunk-P2VTQ5AR.cjs.map +0 -1
  195. package/dist/chunk-PDS7OM73.js.map +0 -1
  196. package/dist/chunk-R4E6DMZS.js.map +0 -1
  197. package/dist/chunk-VIE7UI2R.cjs.map +0 -1
  198. package/dist/chunk-XMCIXHGH.js.map +0 -1
@@ -1,7 +1,7 @@
1
- export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from '../../chunk-LMBXJZLG.js';
1
+ export { Sheet, SheetBody, SheetClose, SheetDescription, SheetFooter, SheetHeader, SheetTitle, sheetContentVariants, sheetOverlayVariants } from '../../chunk-ON4JULCA.js';
2
+ import '../../chunk-TQONQSJO.js';
2
3
  import '../../chunk-4SMSH4OY.js';
3
4
  import '../../chunk-T4ME7QCT.js';
4
- import '../../chunk-TQONQSJO.js';
5
5
  import '../../chunk-VSQF22GL.js';
6
6
  //# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map
@@ -6,11 +6,11 @@ declare const sliderTrackVariants: (props?: ({
6
6
  size?: "sm" | "md" | "lg" | null | undefined;
7
7
  } & class_variance_authority_types.ClassProp) | undefined) => string;
8
8
  declare const sliderRangeVariants: (props?: ({
9
- variant?: "danger" | "default" | "warning" | "success" | "neutral" | null | undefined;
9
+ variant?: "default" | "danger" | "warning" | "success" | "neutral" | null | undefined;
10
10
  } & class_variance_authority_types.ClassProp) | undefined) => string;
11
11
  declare const sliderThumbVariants: (props?: ({
12
12
  size?: "sm" | "md" | "lg" | null | undefined;
13
- variant?: "danger" | "default" | "warning" | "success" | "neutral" | null | undefined;
13
+ variant?: "default" | "danger" | "warning" | "success" | "neutral" | null | undefined;
14
14
  } & class_variance_authority_types.ClassProp) | undefined) => string;
15
15
  interface SliderProps extends VariantProps<typeof sliderTrackVariants>, VariantProps<typeof sliderRangeVariants> {
16
16
  /** Current value (controlled) */
@@ -6,11 +6,11 @@ declare const sliderTrackVariants: (props?: ({
6
6
  size?: "sm" | "md" | "lg" | null | undefined;
7
7
  } & class_variance_authority_types.ClassProp) | undefined) => string;
8
8
  declare const sliderRangeVariants: (props?: ({
9
- variant?: "danger" | "default" | "warning" | "success" | "neutral" | null | undefined;
9
+ variant?: "default" | "danger" | "warning" | "success" | "neutral" | null | undefined;
10
10
  } & class_variance_authority_types.ClassProp) | undefined) => string;
11
11
  declare const sliderThumbVariants: (props?: ({
12
12
  size?: "sm" | "md" | "lg" | null | undefined;
13
- variant?: "danger" | "default" | "warning" | "success" | "neutral" | null | undefined;
13
+ variant?: "default" | "danger" | "warning" | "success" | "neutral" | null | undefined;
14
14
  } & class_variance_authority_types.ClassProp) | undefined) => string;
15
15
  interface SliderProps extends VariantProps<typeof sliderTrackVariants>, VariantProps<typeof sliderRangeVariants> {
16
16
  /** Current value (controlled) */
@@ -1,15 +1,15 @@
1
1
  'use strict';
2
2
 
3
- var chunkAHHFFXJR_cjs = require('../../chunk-AHHFFXJR.cjs');
3
+ var chunkXTHMC76F_cjs = require('../../chunk-XTHMC76F.cjs');
4
+ require('../../chunk-S5RVSXDV.cjs');
4
5
  require('../../chunk-FHY3K6PL.cjs');
5
6
  require('../../chunk-AOHJILLU.cjs');
6
- require('../../chunk-S5RVSXDV.cjs');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "SourceTip", {
11
11
  enumerable: true,
12
- get: function () { return chunkAHHFFXJR_cjs.SourceTip; }
12
+ get: function () { return chunkXTHMC76F_cjs.SourceTip; }
13
13
  });
14
14
  //# sourceMappingURL=index.cjs.map
15
15
  //# sourceMappingURL=index.cjs.map
@@ -1,6 +1,6 @@
1
- export { SourceTip } from '../../chunk-KFEN2SRZ.js';
1
+ export { SourceTip } from '../../chunk-PHK4XBO5.js';
2
+ import '../../chunk-TQONQSJO.js';
2
3
  import '../../chunk-T4ME7QCT.js';
3
4
  import '../../chunk-WSNMQQ4P.js';
4
- import '../../chunk-TQONQSJO.js';
5
5
  //# sourceMappingURL=index.js.map
6
6
  //# sourceMappingURL=index.js.map
@@ -2,18 +2,18 @@
2
2
 
3
3
  var chunkJFLC7SHM_cjs = require('../../chunk-JFLC7SHM.cjs');
4
4
  var chunkWIAQQNFU_cjs = require('../../chunk-WIAQQNFU.cjs');
5
- var chunkJWB4UA4J_cjs = require('../../chunk-JWB4UA4J.cjs');
6
- var chunkBT7SXNZU_cjs = require('../../chunk-BT7SXNZU.cjs');
5
+ var chunk5BVFVXHN_cjs = require('../../chunk-5BVFVXHN.cjs');
6
+ var chunk4SM3I7WE_cjs = require('../../chunk-4SM3I7WE.cjs');
7
+ var chunkJEIW7BSV_cjs = require('../../chunk-JEIW7BSV.cjs');
7
8
  require('../../chunk-VBWRH4UW.cjs');
8
9
  require('../../chunk-PJ6CC53R.cjs');
9
- var chunkJEIW7BSV_cjs = require('../../chunk-JEIW7BSV.cjs');
10
10
  require('../../chunk-I44YNYI6.cjs');
11
11
  require('../../chunk-Z5S5JEJD.cjs');
12
12
  var chunkYVL3XATO_cjs = require('../../chunk-YVL3XATO.cjs');
13
+ var chunkS5RVSXDV_cjs = require('../../chunk-S5RVSXDV.cjs');
13
14
  require('../../chunk-FHY3K6PL.cjs');
14
15
  require('../../chunk-FSGEDDF2.cjs');
15
16
  require('../../chunk-AOHJILLU.cjs');
16
- var chunkS5RVSXDV_cjs = require('../../chunk-S5RVSXDV.cjs');
17
17
  var React2 = require('react');
18
18
  var Markdown = require('react-markdown');
19
19
  var remarkGfm = require('remark-gfm');
@@ -543,7 +543,7 @@ function ActionMenuItem({
543
543
  item,
544
544
  onSelect
545
545
  }) {
546
- return /* @__PURE__ */ jsxRuntime.jsx(chunkBT7SXNZU_cjs.DropdownItem, { onClick: () => onSelect(item.onSelect), children: item.description ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-col items-start", children: [
546
+ return /* @__PURE__ */ jsxRuntime.jsx(chunk4SM3I7WE_cjs.DropdownItem, { onClick: () => onSelect(item.onSelect), children: item.description ? /* @__PURE__ */ jsxRuntime.jsxs("span", { className: "flex flex-col items-start", children: [
547
547
  /* @__PURE__ */ jsxRuntime.jsx("span", { children: item.label }),
548
548
  /* @__PURE__ */ jsxRuntime.jsx("span", { className: "text-[10px] font-normal text-neutral-400", children: item.description })
549
549
  ] }) : item.label });
@@ -575,7 +575,7 @@ function FooterActionButton({
575
575
  );
576
576
  if (!action.submenu) return button;
577
577
  return /* @__PURE__ */ jsxRuntime.jsx(
578
- chunkBT7SXNZU_cjs.Dropdown,
578
+ chunk4SM3I7WE_cjs.Dropdown,
579
579
  {
580
580
  open,
581
581
  onOpenChange: setOpen,
@@ -634,7 +634,7 @@ function MessageOverflowMenu({
634
634
  footerVisible && !open && "pointer-events-none invisible opacity-0"
635
635
  ),
636
636
  children: /* @__PURE__ */ jsxRuntime.jsx(
637
- chunkBT7SXNZU_cjs.Dropdown,
637
+ chunk4SM3I7WE_cjs.Dropdown,
638
638
  {
639
639
  open,
640
640
  onOpenChange: setOpen,
@@ -653,9 +653,9 @@ function MessageOverflowMenu({
653
653
  (action) => action.submenu ? (
654
654
  // Actions with variants collapse to just their submenu — a
655
655
  // top-level default item would duplicate the flyout's options.
656
- /* @__PURE__ */ jsxRuntime.jsx(chunkBT7SXNZU_cjs.DropdownSubmenu, { label: action.submenu.label, children: action.submenu.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(ActionMenuItem, { item, onSelect: select }, item.id)) }, action.id)
656
+ /* @__PURE__ */ jsxRuntime.jsx(chunk4SM3I7WE_cjs.DropdownSubmenu, { label: action.submenu.label, children: action.submenu.items.map((item) => /* @__PURE__ */ jsxRuntime.jsx(ActionMenuItem, { item, onSelect: select }, item.id)) }, action.id)
657
657
  ) : /* @__PURE__ */ jsxRuntime.jsx(
658
- chunkBT7SXNZU_cjs.DropdownItem,
658
+ chunk4SM3I7WE_cjs.DropdownItem,
659
659
  {
660
660
  onClick: () => select(action.onSelect),
661
661
  children: action.label
@@ -1323,7 +1323,7 @@ function SuperChat({
1323
1323
  }
1324
1324
  ),
1325
1325
  /* @__PURE__ */ jsxRuntime.jsx(
1326
- chunkJWB4UA4J_cjs.MessageComposer,
1326
+ chunk5BVFVXHN_cjs.MessageComposer,
1327
1327
  {
1328
1328
  onSend: handleComposerSend,
1329
1329
  disabled: readOnly,
@@ -1,18 +1,18 @@
1
1
  import { TextRenderContext } from '../../chunk-I6CY5C6A.js';
2
2
  export { TextRenderContext, useTextRenderContext } from '../../chunk-I6CY5C6A.js';
3
3
  import { ChatBubble, MCPToolCallDisplay, AITypingIndicator, SparklesIcon, CloseIcon } from '../../chunk-22CYDCXA.js';
4
- import { MessageComposer } from '../../chunk-R4E6DMZS.js';
5
- import { Dropdown, DropdownSubmenu, DropdownItem } from '../../chunk-LZVPVY5P.js';
4
+ import { MessageComposer } from '../../chunk-O6GJ4IYS.js';
5
+ import { Dropdown, DropdownSubmenu, DropdownItem } from '../../chunk-KU3XRHWA.js';
6
+ import { Avatar } from '../../chunk-HZ4MBUC3.js';
6
7
  import '../../chunk-IQ4KQJAO.js';
7
8
  import '../../chunk-VVDE4CHU.js';
8
- import { Avatar } from '../../chunk-HZ4MBUC3.js';
9
9
  import '../../chunk-6NZXWKUE.js';
10
10
  import '../../chunk-3IMM2PM4.js';
11
11
  import { Badge } from '../../chunk-BMSG4NBH.js';
12
+ import { cn } from '../../chunk-TQONQSJO.js';
12
13
  import '../../chunk-T4ME7QCT.js';
13
14
  import '../../chunk-62ZOA6PX.js';
14
15
  import '../../chunk-WSNMQQ4P.js';
15
- import { cn } from '../../chunk-TQONQSJO.js';
16
16
  import * as React2 from 'react';
17
17
  import Markdown, { defaultUrlTransform } from 'react-markdown';
18
18
  import remarkGfm from 'remark-gfm';
@@ -1,11 +1,11 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkJFLC7SHM_cjs = require('../../../chunk-JFLC7SHM.cjs');
4
- var chunkJHR4PNUA_cjs = require('../../../chunk-JHR4PNUA.cjs');
5
- require('../../../chunk-JWB4UA4J.cjs');
4
+ var chunkFQBTGS3E_cjs = require('../../../chunk-FQBTGS3E.cjs');
5
+ require('../../../chunk-5BVFVXHN.cjs');
6
+ var chunkS5RVSXDV_cjs = require('../../../chunk-S5RVSXDV.cjs');
6
7
  require('../../../chunk-AOHJILLU.cjs');
7
8
  var chunkNMBYU7D7_cjs = require('../../../chunk-NMBYU7D7.cjs');
8
- var chunkS5RVSXDV_cjs = require('../../../chunk-S5RVSXDV.cjs');
9
9
  var React2 = require('react');
10
10
  var rehypeHighlight = require('rehype-highlight');
11
11
  var jsxRuntime = require('react/jsx-runtime');
@@ -605,7 +605,7 @@ function ZoomableImage({
605
605
  ),
606
606
  open && typeof document !== "undefined" && reactDom.createPortal(
607
607
  /* @__PURE__ */ jsxRuntime.jsx(
608
- chunkJHR4PNUA_cjs.LightboxModal,
608
+ chunkFQBTGS3E_cjs.LightboxModal,
609
609
  {
610
610
  attachment,
611
611
  onClose: () => setOpen(false)
@@ -1,9 +1,9 @@
1
1
  import { useTextRenderContext } from '../../../chunk-I6CY5C6A.js';
2
- import { LightboxModal } from '../../../chunk-L2LH4CEN.js';
3
- import '../../../chunk-R4E6DMZS.js';
2
+ import { LightboxModal } from '../../../chunk-MXQ7J4BB.js';
3
+ import '../../../chunk-O6GJ4IYS.js';
4
+ import { cn } from '../../../chunk-TQONQSJO.js';
4
5
  import '../../../chunk-WSNMQQ4P.js';
5
6
  import { useIsDarkMode } from '../../../chunk-RUGHNFQG.js';
6
- import { cn } from '../../../chunk-TQONQSJO.js';
7
7
  import * as React2 from 'react';
8
8
  import rehypeHighlight from 'rehype-highlight';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const textVariants: (props?: ({
6
- variant?: "primary" | "default" | "warning" | "success" | "muted" | "destructive" | null | undefined;
6
+ variant?: "default" | "primary" | "warning" | "success" | "muted" | "destructive" | null | undefined;
7
7
  size?: "base" | "sm" | "lg" | "xl" | "2xl" | "3xl" | "xs" | null | undefined;
8
8
  weight?: "bold" | "normal" | "medium" | "semibold" | null | undefined;
9
9
  align?: "left" | "start" | "right" | "end" | "center" | null | undefined;
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const textVariants: (props?: ({
6
- variant?: "primary" | "default" | "warning" | "success" | "muted" | "destructive" | null | undefined;
6
+ variant?: "default" | "primary" | "warning" | "success" | "muted" | "destructive" | null | undefined;
7
7
  size?: "base" | "sm" | "lg" | "xl" | "2xl" | "3xl" | "xs" | null | undefined;
8
8
  weight?: "bold" | "normal" | "medium" | "semibold" | null | undefined;
9
9
  align?: "left" | "start" | "right" | "end" | "center" | null | undefined;
@@ -1,36 +1,36 @@
1
1
  'use strict';
2
2
 
3
- var chunkZ5KFXHDP_cjs = require('../../chunk-Z5KFXHDP.cjs');
4
- require('../../chunk-WWJIW2IH.cjs');
3
+ var chunkMM7QKUE3_cjs = require('../../chunk-MM7QKUE3.cjs');
4
+ require('../../chunk-BVMABVC4.cjs');
5
+ require('../../chunk-S5RVSXDV.cjs');
5
6
  require('../../chunk-2O7D6F67.cjs');
6
7
  require('../../chunk-6HFFWEM3.cjs');
7
- require('../../chunk-S5RVSXDV.cjs');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "ThemeProvider", {
12
12
  enumerable: true,
13
- get: function () { return chunkZ5KFXHDP_cjs.ThemeProvider; }
13
+ get: function () { return chunkMM7QKUE3_cjs.ThemeProvider; }
14
14
  });
15
15
  Object.defineProperty(exports, "ThemeProviderContext", {
16
16
  enumerable: true,
17
- get: function () { return chunkZ5KFXHDP_cjs.ThemeProviderContext; }
17
+ get: function () { return chunkMM7QKUE3_cjs.ThemeProviderContext; }
18
18
  });
19
19
  Object.defineProperty(exports, "ThemeToggle", {
20
20
  enumerable: true,
21
- get: function () { return chunkZ5KFXHDP_cjs.ThemeToggle; }
21
+ get: function () { return chunkMM7QKUE3_cjs.ThemeToggle; }
22
22
  });
23
23
  Object.defineProperty(exports, "themeToggleIconVariants", {
24
24
  enumerable: true,
25
- get: function () { return chunkZ5KFXHDP_cjs.themeToggleIconVariants; }
25
+ get: function () { return chunkMM7QKUE3_cjs.themeToggleIconVariants; }
26
26
  });
27
27
  Object.defineProperty(exports, "themeToggleVariants", {
28
28
  enumerable: true,
29
- get: function () { return chunkZ5KFXHDP_cjs.themeToggleVariants; }
29
+ get: function () { return chunkMM7QKUE3_cjs.themeToggleVariants; }
30
30
  });
31
31
  Object.defineProperty(exports, "useThemeContext", {
32
32
  enumerable: true,
33
- get: function () { return chunkZ5KFXHDP_cjs.useThemeContext; }
33
+ get: function () { return chunkMM7QKUE3_cjs.useThemeContext; }
34
34
  });
35
35
  //# sourceMappingURL=index.cjs.map
36
36
  //# sourceMappingURL=index.cjs.map
@@ -54,7 +54,7 @@ declare function useThemeContext(): ThemeProviderContextValue;
54
54
 
55
55
  declare const themeToggleVariants: (props?: ({
56
56
  size?: "sm" | "md" | "lg" | null | undefined;
57
- variant?: "ghost" | "default" | null | undefined;
57
+ variant?: "default" | "ghost" | null | undefined;
58
58
  } & class_variance_authority_types.ClassProp) | undefined) => string;
59
59
  declare const themeToggleIconVariants: (props?: ({
60
60
  size?: "sm" | "md" | "lg" | null | undefined;
@@ -54,7 +54,7 @@ declare function useThemeContext(): ThemeProviderContextValue;
54
54
 
55
55
  declare const themeToggleVariants: (props?: ({
56
56
  size?: "sm" | "md" | "lg" | null | undefined;
57
- variant?: "ghost" | "default" | null | undefined;
57
+ variant?: "default" | "ghost" | null | undefined;
58
58
  } & class_variance_authority_types.ClassProp) | undefined) => string;
59
59
  declare const themeToggleIconVariants: (props?: ({
60
60
  size?: "sm" | "md" | "lg" | null | undefined;
@@ -1,7 +1,7 @@
1
- export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from '../../chunk-SH6B4MG5.js';
2
- import '../../chunk-FJ7YPVKV.js';
1
+ export { ThemeProvider, ThemeProviderContext, ThemeToggle, themeToggleIconVariants, themeToggleVariants, useThemeContext } from '../../chunk-XBXDUAIM.js';
2
+ import '../../chunk-MUIDWFYJ.js';
3
+ import '../../chunk-TQONQSJO.js';
3
4
  import '../../chunk-KJZNEVYM.js';
4
5
  import '../../chunk-HB7C7NB5.js';
5
- import '../../chunk-TQONQSJO.js';
6
6
  //# sourceMappingURL=index.js.map
7
7
  //# sourceMappingURL=index.js.map
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const toggleVariants: (props?: ({
6
- variant?: "outline" | "default" | null | undefined;
6
+ variant?: "default" | "outline" | null | undefined;
7
7
  size?: "sm" | "md" | "lg" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  interface ToggleProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>, VariantProps<typeof toggleVariants> {
@@ -3,7 +3,7 @@ import * as React from 'react';
3
3
  import { VariantProps } from 'class-variance-authority';
4
4
 
5
5
  declare const toggleVariants: (props?: ({
6
- variant?: "outline" | "default" | null | undefined;
6
+ variant?: "default" | "outline" | null | undefined;
7
7
  size?: "sm" | "md" | "lg" | null | undefined;
8
8
  } & class_variance_authority_types.ClassProp) | undefined) => string;
9
9
  interface ToggleProps extends Omit<React.ButtonHTMLAttributes<HTMLButtonElement>, 'onChange'>, VariantProps<typeof toggleVariants> {
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkWWJIW2IH_cjs = require('../../chunk-WWJIW2IH.cjs');
4
- require('../../chunk-6HFFWEM3.cjs');
3
+ var chunkBVMABVC4_cjs = require('../../chunk-BVMABVC4.cjs');
5
4
  require('../../chunk-S5RVSXDV.cjs');
5
+ require('../../chunk-6HFFWEM3.cjs');
6
6
 
7
7
 
8
8
 
9
9
  Object.defineProperty(exports, "Tooltip", {
10
10
  enumerable: true,
11
- get: function () { return chunkWWJIW2IH_cjs.Tooltip; }
11
+ get: function () { return chunkBVMABVC4_cjs.Tooltip; }
12
12
  });
13
13
  //# sourceMappingURL=index.cjs.map
14
14
  //# sourceMappingURL=index.cjs.map
@@ -1,5 +1,5 @@
1
- export { Tooltip } from '../../chunk-FJ7YPVKV.js';
2
- import '../../chunk-HB7C7NB5.js';
1
+ export { Tooltip } from '../../chunk-MUIDWFYJ.js';
3
2
  import '../../chunk-TQONQSJO.js';
3
+ import '../../chunk-HB7C7NB5.js';
4
4
  //# sourceMappingURL=index.js.map
5
5
  //# sourceMappingURL=index.js.map
package/dist/esheet.cjs CHANGED
@@ -1,28 +1,29 @@
1
1
  'use strict';
2
2
 
3
- var chunkKTJETOOH_cjs = require('./chunk-KTJETOOH.cjs');
3
+ var chunk6XDPJWSC_cjs = require('./chunk-6XDPJWSC.cjs');
4
4
  require('./chunk-BSDBI6H7.cjs');
5
- require('./chunk-WWJIW2IH.cjs');
5
+ require('./chunk-BVMABVC4.cjs');
6
6
  require('./chunk-G7EQ3JPX.cjs');
7
7
  require('./chunk-AIJAFPGJ.cjs');
8
- require('./chunk-K5GQPTTA.cjs');
9
- require('./chunk-ZSGEGISB.cjs');
8
+ require('./chunk-XEEVDZDK.cjs');
9
+ require('./chunk-SRA2L3SQ.cjs');
10
10
  require('./chunk-MJWFNV3L.cjs');
11
- require('./chunk-P2VTQ5AR.cjs');
11
+ require('./chunk-CW75IKA6.cjs');
12
+ require('./chunk-L52N6BEN.cjs');
12
13
  require('./chunk-I44YNYI6.cjs');
13
14
  require('./chunk-Z5S5JEJD.cjs');
14
15
  require('./chunk-L7L5S2HO.cjs');
15
16
  require('./chunk-YVL3XATO.cjs');
16
17
  require('./chunk-IINZWUGK.cjs');
18
+ require('./chunk-BN75TLUN.cjs');
19
+ require('./chunk-S5RVSXDV.cjs');
17
20
  require('./chunk-YVPC65ZJ.cjs');
18
21
  require('./chunk-6HFFWEM3.cjs');
19
22
  require('./chunk-NNEFAUHV.cjs');
20
23
  require('./chunk-FHY3K6PL.cjs');
24
+ require('./chunk-SCV7C55E.cjs');
21
25
  require('./chunk-FSGEDDF2.cjs');
22
26
  require('./chunk-AOHJILLU.cjs');
23
- require('./chunk-CW75IKA6.cjs');
24
- require('./chunk-S5RVSXDV.cjs');
25
- require('./chunk-SCV7C55E.cjs');
26
27
  var builder = require('@esheet/builder');
27
28
  var renderer = require('@esheet/renderer');
28
29
  var React = require('react');
@@ -78,7 +79,7 @@ function MedicationListField({
78
79
  return definition.medications ?? [];
79
80
  }, [response?.answer, definition.medications]);
80
81
  return /* @__PURE__ */ jsxRuntime.jsx(
81
- chunkKTJETOOH_cjs.MedicationReconciliation,
82
+ chunk6XDPJWSC_cjs.MedicationReconciliation,
82
83
  {
83
84
  medications,
84
85
  onChange: (next) => onResponse({ answer: JSON.stringify({ medications: next }) }),
@@ -135,7 +136,7 @@ function AllergyListField({
135
136
  codeLookup
136
137
  }) {
137
138
  const definition = field.definition;
138
- const ambientCodeLookup = chunkKTJETOOH_cjs.useCodeLookupConfig();
139
+ const ambientCodeLookup = chunk6XDPJWSC_cjs.useCodeLookupConfig();
139
140
  const effectiveCodeLookup = codeLookup === false ? void 0 : codeLookup ?? ambientCodeLookup ?? void 0;
140
141
  const value = React__namespace.useMemo(() => {
141
142
  if (response?.answer) return parseValue2(response.answer);
@@ -145,7 +146,7 @@ function AllergyListField({
145
146
  onResponse({ answer: JSON.stringify(next) });
146
147
  };
147
148
  return /* @__PURE__ */ jsxRuntime.jsx(
148
- chunkKTJETOOH_cjs.AllergyManager,
149
+ chunk6XDPJWSC_cjs.AllergyManager,
149
150
  {
150
151
  allergies: value.allergies,
151
152
  onChange: (allergies) => commit({
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["React","jsx","MedicationReconciliation","registerCustomFieldTypes","parseValue","useCodeLookupConfig","React2","AllergyManager"],"mappings":"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","file":"esheet.cjs","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
1
+ {"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["React","jsx","MedicationReconciliation","registerCustomFieldTypes","parseValue","useCodeLookupConfig","React2","AllergyManager"],"mappings":"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","file":"esheet.cjs","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
package/dist/esheet.js CHANGED
@@ -1,26 +1,27 @@
1
- import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-334BUQMR.js';
1
+ import { MedicationReconciliation, useCodeLookupConfig, AllergyManager } from './chunk-ODYQYLO2.js';
2
2
  import './chunk-H3YO5GBM.js';
3
- import './chunk-FJ7YPVKV.js';
3
+ import './chunk-MUIDWFYJ.js';
4
4
  import './chunk-EPSB4WTL.js';
5
5
  import './chunk-I3WGZPI6.js';
6
- import './chunk-ATOWMVZH.js';
7
- import './chunk-7IBZA7G6.js';
6
+ import './chunk-DFYMIRMW.js';
7
+ import './chunk-OAZUDUGX.js';
8
8
  import './chunk-QYSUYB3S.js';
9
- import './chunk-XMCIXHGH.js';
9
+ import './chunk-RC2YMOMS.js';
10
+ import './chunk-Q7G56ZIO.js';
10
11
  import './chunk-6NZXWKUE.js';
11
12
  import './chunk-3IMM2PM4.js';
12
13
  import './chunk-BKSPDTX4.js';
13
14
  import './chunk-BMSG4NBH.js';
14
15
  import './chunk-KREUYVMZ.js';
16
+ import './chunk-WYMO3IIK.js';
17
+ import './chunk-TQONQSJO.js';
15
18
  import './chunk-7ZVTLTJF.js';
16
19
  import './chunk-HB7C7NB5.js';
17
20
  import './chunk-4SMSH4OY.js';
18
21
  import './chunk-T4ME7QCT.js';
22
+ import './chunk-VSQF22GL.js';
19
23
  import './chunk-62ZOA6PX.js';
20
24
  import './chunk-WSNMQQ4P.js';
21
- import './chunk-RC2YMOMS.js';
22
- import './chunk-TQONQSJO.js';
23
- import './chunk-VSQF22GL.js';
24
25
  export { EsheetBuilder } from '@esheet/builder';
25
26
  export { EsheetRenderer } from '@esheet/renderer';
26
27
  import * as React from 'react';
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["parseValue","React2","jsx","registerCustomFieldTypes"],"mappings":"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","file":"esheet.js","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}
1
+ {"version":3,"sources":["../src/esheet-fields/MedicationListField.tsx","../src/esheet-fields/AllergyListField.tsx","../src/esheet-fields/registerAll.ts"],"names":["parseValue","React2","jsx","registerCustomFieldTypes"],"mappings":"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","file":"esheet.js","sourcesContent":["/**\n * MedicationListField — eSheet custom field wrapper around\n * MedicationReconciliation.\n *\n * Thin adapter: all reconciliation UI/behavior lives in the standalone\n * `MedicationReconciliation` component (main bundle). This file only maps the\n * eSheet field contract (definition, response, preview/enabled state) onto it.\n *\n * Exposed via the `@mieweb/ui/esheet` entry point (NOT the main bundle) so\n * that @esheet/* stays an optional dependency.\n *\n * The field stores its state as JSON in `response.answer`:\n * `{ medications: Medication[] }`.\n *\n * @example\n * ```tsx\n * import { registerMedicationListFieldType } from '@mieweb/ui/esheet';\n *\n * registerMedicationListFieldType(); // before rendering EsheetBuilder/Renderer\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport {\n MedicationReconciliation,\n type CodeLookupConfig,\n type Medication,\n} from '../components/MedicationList';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface MedicationListFieldValue {\n medications: Medication[];\n}\n\nfunction parseValue(answer: string | undefined): MedicationListFieldValue {\n if (!answer) return { medications: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { medications: [] };\n }\n const { medications } = parsed as { medications?: unknown };\n return {\n medications: Array.isArray(medications)\n ? (medications as Medication[])\n : [],\n };\n } catch {\n return { medications: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function MedicationListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerMedicationListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n medications?: Medication[];\n quickAddOptions?: string[];\n };\n\n // Response wins; otherwise seed from the field definition's medication list.\n const medications = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer).medications;\n return definition.medications ?? [];\n }, [response?.answer, definition.medications]);\n\n return (\n <MedicationReconciliation\n medications={medications}\n onChange={(next) =>\n onResponse({ answer: JSON.stringify({ medications: next }) })\n }\n title={definition.question ?? 'Presenting medications'}\n quickAddOptions={definition.quickAddOptions}\n codeLookup={codeLookup}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `medicationList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n *\n * @param options.codeLookup — wire the offline RxNorm/FDB CodeLookup into the\n * medication editor (Correct / Add Medication):\n * ```tsx\n * import { CodeLookup } from '…/CodeLookup';\n * registerMedicationListFieldType({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\nexport function registerMedicationListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <MedicationListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n medicationList: {\n label: 'Medication Reconciliation',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Presenting medications',\n quickAddOptions: [\n 'aspirin 81 mg tablet',\n 'atorvastatin 20 mg tablet',\n 'metformin 500 mg tablet',\n ],\n },\n component: Field,\n },\n });\n}\n","/**\n * AllergyListField — eSheet custom field wrapper around AllergyManager.\n *\n * Thin adapter, same pattern as MedicationListField. State persists as JSON\n * in `response.answer`: `{ allergies: Allergy[], noKnownAllergies?: boolean }`.\n *\n * @example\n * ```tsx\n * import { registerAllergyListFieldType } from '@mieweb/ui/esheet';\n *\n * registerAllergyListFieldType({ codeLookup: { component: CodeLookup, indexUrl: '/codify' } });\n * ```\n */\n\nimport * as React from 'react';\nimport type { FieldComponentProps } from '@esheet/core';\nimport { registerCustomFieldTypes } from '@esheet/fields';\nimport { AllergyManager, type Allergy } from '../components/AllergyList';\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { useCodeLookupConfig } from '../components/CodeLookup/context';\n\n// =============================================================================\n// Response (de)serialization\n// =============================================================================\n\nexport interface AllergyListFieldValue {\n allergies: Allergy[];\n noKnownAllergies?: boolean;\n}\n\nfunction parseValue(answer: string | undefined): AllergyListFieldValue {\n if (!answer) return { allergies: [] };\n try {\n // shape-guarded: valid JSON like `null` or `[]` must degrade safely\n const parsed: unknown = JSON.parse(answer);\n if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {\n return { allergies: [] };\n }\n const { allergies, noKnownAllergies } = parsed as Partial<\n Record<keyof AllergyListFieldValue, unknown>\n >;\n return {\n allergies: Array.isArray(allergies) ? (allergies as Allergy[]) : [],\n noKnownAllergies:\n typeof noKnownAllergies === 'boolean' ? noKnownAllergies : undefined,\n };\n } catch {\n return { allergies: [] };\n }\n}\n\n// =============================================================================\n// Field component\n// =============================================================================\n\nexport function AllergyListField({\n field,\n response,\n isPreview,\n isEnabled,\n onResponse,\n codeLookup,\n}: FieldComponentProps & {\n /** CodeLookup wiring — supplied via registerAllergyListFieldType() */\n codeLookup?: CodeLookupConfig | false;\n}): React.JSX.Element {\n const definition = field.definition as {\n question?: string;\n allergies?: Allergy[];\n };\n\n // Default to the ambient provider; `false` forces plain text.\n const ambientCodeLookup = useCodeLookupConfig();\n const effectiveCodeLookup =\n codeLookup === false\n ? undefined\n : (codeLookup ?? ambientCodeLookup ?? undefined);\n\n const value = React.useMemo(() => {\n if (response?.answer) return parseValue(response.answer);\n return { allergies: definition.allergies ?? [] };\n }, [response?.answer, definition.allergies]);\n\n const commit = (next: AllergyListFieldValue) => {\n onResponse({ answer: JSON.stringify(next) });\n };\n\n return (\n <AllergyManager\n allergies={value.allergies}\n onChange={(allergies) =>\n commit({\n allergies,\n // any recorded allergy clears NKA\n noKnownAllergies:\n allergies.length > 0 ? undefined : value.noKnownAllergies,\n })\n }\n noKnownAllergies={value.noKnownAllergies}\n onNoKnownAllergiesChange={(nka) =>\n commit({ allergies: value.allergies, noKnownAllergies: nka })\n }\n title={definition.question ?? 'Allergies'}\n codeLookup={codeLookup}\n inlineAddSearch={Boolean(effectiveCodeLookup)}\n readOnly={!(isPreview && isEnabled)}\n />\n );\n}\n\n// =============================================================================\n// Registration\n// =============================================================================\n\n/**\n * Register the `allergyList` field type with eSheet.\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerAllergyListFieldType(options?: {\n codeLookup?: CodeLookupConfig | false;\n}): void {\n const Field = (props: FieldComponentProps) => (\n <AllergyListField {...props} codeLookup={options?.codeLookup} />\n );\n registerCustomFieldTypes({\n allergyList: {\n label: 'Allergy List',\n category: 'rich',\n answerType: 'text',\n hasOptions: false,\n hasMatrix: false,\n defaultProps: {\n question: 'Allergies',\n },\n component: Field,\n },\n });\n}\n","/**\n * registerMieEsheetFields — one-call registration for every @mieweb/ui custom\n * eSheet field type (medication reconciliation + allergy list).\n *\n * The @esheet/* packages stay generic and free of medical dependencies; these\n * fields live in @mieweb/ui and opt in from the consumer side. This helper is\n * the \"batteries included\" entry point so an app can enable the full medical\n * field set with a single call instead of wiring each field type by hand.\n *\n * @example\n * ```tsx\n * import { registerMieEsheetFields } from '@mieweb/ui/esheet';\n * import { CodeLookup } from '…/CodeLookup';\n *\n * // once, before EsheetBuilder / EsheetRenderer mount\n * registerMieEsheetFields({\n * codeLookup: { component: CodeLookup, indexUrl: '/codify' },\n * });\n * ```\n */\n\nimport type { CodeLookupConfig } from '../components/MedicationList';\nimport { registerMedicationListFieldType } from './MedicationListField';\nimport { registerAllergyListFieldType } from './AllergyListField';\n\nexport interface RegisterMieEsheetFieldsOptions {\n /**\n * Shared CodeLookup wiring applied to every field that supports offline\n * RxNorm/FDB coding (medication + allergy editors).\n */\n codeLookup?: CodeLookupConfig;\n}\n\n/**\n * Register all @mieweb/ui custom eSheet field types at once:\n * `medicationList` and `allergyList`.\n *\n * Call once before rendering EsheetBuilder or EsheetRenderer.\n */\nexport function registerMieEsheetFields(\n options?: RegisterMieEsheetFieldsOptions\n): void {\n registerMedicationListFieldType({ codeLookup: options?.codeLookup });\n registerAllergyListFieldType({ codeLookup: options?.codeLookup });\n}\n"]}