@mlightcad/cad-simple-viewer 1.7.0 → 1.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +185 -180
  3. package/dist/cad-simple-viewer.js +17061 -12706
  4. package/dist/cad-simple-viewer.umd.cjs +981 -114
  5. package/dist/mtext-renderer-worker.js +1908 -1765
  6. package/icons.ts +7 -7
  7. package/lib/app/AcApContext.d.ts.map +1 -1
  8. package/lib/app/AcApContext.js +4 -3
  9. package/lib/app/AcApContext.js.map +1 -1
  10. package/lib/app/AcApDocManager.d.ts +38 -18
  11. package/lib/app/AcApDocManager.d.ts.map +1 -1
  12. package/lib/app/AcApDocManager.js +59 -45
  13. package/lib/app/AcApDocManager.js.map +1 -1
  14. package/lib/app/AcApOpenDatabaseOptions.d.ts +17 -1
  15. package/lib/app/AcApOpenDatabaseOptions.d.ts.map +1 -1
  16. package/lib/app/AcApOpenDatabaseOptions.js +1 -1
  17. package/lib/app/AcApOpenDatabaseOptions.js.map +1 -1
  18. package/lib/app/AcApOpenFileProgressController.d.ts +4 -2
  19. package/lib/app/AcApOpenFileProgressController.d.ts.map +1 -1
  20. package/lib/app/AcApOpenFileProgressController.js +4 -2
  21. package/lib/app/AcApOpenFileProgressController.js.map +1 -1
  22. package/lib/app/index.d.ts +1 -0
  23. package/lib/app/index.d.ts.map +1 -1
  24. package/lib/app/index.js +1 -0
  25. package/lib/app/index.js.map +1 -1
  26. package/lib/app/notification/AcApNotificationEventBridge.d.ts +130 -0
  27. package/lib/app/notification/AcApNotificationEventBridge.d.ts.map +1 -0
  28. package/lib/app/notification/AcApNotificationEventBridge.js +309 -0
  29. package/lib/app/notification/AcApNotificationEventBridge.js.map +1 -0
  30. package/lib/app/notification/AcApNotificationService.d.ts +185 -0
  31. package/lib/app/notification/AcApNotificationService.d.ts.map +1 -0
  32. package/lib/app/notification/AcApNotificationService.js +271 -0
  33. package/lib/app/notification/AcApNotificationService.js.map +1 -0
  34. package/lib/app/notification/AcApNotificationStore.d.ts +147 -0
  35. package/lib/app/notification/AcApNotificationStore.d.ts.map +1 -0
  36. package/lib/app/notification/AcApNotificationStore.js +345 -0
  37. package/lib/app/notification/AcApNotificationStore.js.map +1 -0
  38. package/lib/app/notification/AcApNotificationTypes.d.ts +195 -0
  39. package/lib/app/notification/AcApNotificationTypes.d.ts.map +1 -0
  40. package/lib/app/notification/AcApNotificationTypes.js +78 -0
  41. package/lib/app/notification/AcApNotificationTypes.js.map +1 -0
  42. package/lib/app/notification/index.d.ts +13 -0
  43. package/lib/app/notification/index.d.ts.map +1 -0
  44. package/lib/app/notification/index.js +13 -0
  45. package/lib/app/notification/index.js.map +1 -0
  46. package/lib/command/AcApInstallDrawStyleSessionAccessory.js +11 -7
  47. package/lib/command/AcApInstallDrawStyleSessionAccessory.js.map +1 -1
  48. package/lib/command/AcApSwitchBgCmd.d.ts.map +1 -1
  49. package/lib/command/AcApSwitchBgCmd.js +7 -2
  50. package/lib/command/AcApSwitchBgCmd.js.map +1 -1
  51. package/lib/command/AcApToolbarDocBind.d.ts +19 -0
  52. package/lib/command/AcApToolbarDocBind.d.ts.map +1 -0
  53. package/lib/command/AcApToolbarDocBind.js +62 -0
  54. package/lib/command/AcApToolbarDocBind.js.map +1 -0
  55. package/lib/command/convert/AcApConvertToBmpCmd.d.ts +14 -0
  56. package/lib/command/convert/AcApConvertToBmpCmd.d.ts.map +1 -0
  57. package/lib/command/convert/AcApConvertToBmpCmd.js +34 -0
  58. package/lib/command/convert/AcApConvertToBmpCmd.js.map +1 -0
  59. package/lib/command/convert/AcApConvertToJpgCmd.d.ts +14 -0
  60. package/lib/command/convert/AcApConvertToJpgCmd.d.ts.map +1 -0
  61. package/lib/command/convert/AcApConvertToJpgCmd.js +34 -0
  62. package/lib/command/convert/AcApConvertToJpgCmd.js.map +1 -0
  63. package/lib/command/convert/AcApConvertToPngCmd.d.ts +4 -36
  64. package/lib/command/convert/AcApConvertToPngCmd.d.ts.map +1 -1
  65. package/lib/command/convert/AcApConvertToPngCmd.js +4 -138
  66. package/lib/command/convert/AcApConvertToPngCmd.js.map +1 -1
  67. package/lib/command/convert/AcApConvertToRasterImageCmd.d.ts +40 -0
  68. package/lib/command/convert/AcApConvertToRasterImageCmd.d.ts.map +1 -0
  69. package/lib/command/convert/AcApConvertToRasterImageCmd.js +161 -0
  70. package/lib/command/convert/AcApConvertToRasterImageCmd.js.map +1 -0
  71. package/lib/command/convert/{AcApPngConvertor.d.ts → AcApRasterImageConvertor.d.ts} +36 -12
  72. package/lib/command/convert/AcApRasterImageConvertor.d.ts.map +1 -0
  73. package/lib/command/convert/{AcApPngConvertor.js → AcApRasterImageConvertor.js} +163 -32
  74. package/lib/command/convert/AcApRasterImageConvertor.js.map +1 -0
  75. package/lib/command/convert/index.d.ts +4 -1
  76. package/lib/command/convert/index.d.ts.map +1 -1
  77. package/lib/command/convert/index.js +4 -1
  78. package/lib/command/convert/index.js.map +1 -1
  79. package/lib/command/index.d.ts +2 -0
  80. package/lib/command/index.d.ts.map +1 -1
  81. package/lib/command/index.js +2 -0
  82. package/lib/command/index.js.map +1 -1
  83. package/lib/command/markup/AcApMarkupCalloutCmd.d.ts.map +1 -1
  84. package/lib/command/markup/AcApMarkupCalloutCmd.js +51 -1
  85. package/lib/command/markup/AcApMarkupCalloutCmd.js.map +1 -1
  86. package/lib/command/markup/AcApMarkupCmdUtil.d.ts +5 -0
  87. package/lib/command/markup/AcApMarkupCmdUtil.d.ts.map +1 -1
  88. package/lib/command/markup/AcApMarkupCmdUtil.js +27 -9
  89. package/lib/command/markup/AcApMarkupCmdUtil.js.map +1 -1
  90. package/lib/command/markup/AcApMarkupShapeCallout.d.ts.map +1 -1
  91. package/lib/command/markup/AcApMarkupShapeCallout.js +49 -1
  92. package/lib/command/markup/AcApMarkupShapeCallout.js.map +1 -1
  93. package/lib/editor/global/AcEdUiLayout.d.ts +6 -0
  94. package/lib/editor/global/AcEdUiLayout.d.ts.map +1 -1
  95. package/lib/editor/global/AcEdUiLayout.js +6 -0
  96. package/lib/editor/global/AcEdUiLayout.js.map +1 -1
  97. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.d.ts +31 -0
  98. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.d.ts.map +1 -0
  99. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.js +67 -0
  100. package/lib/editor/input/ui/AcEdCanvasTouchCalloutGuard.js.map +1 -0
  101. package/lib/editor/input/ui/AcEdFloatingInput.d.ts +2 -0
  102. package/lib/editor/input/ui/AcEdFloatingInput.d.ts.map +1 -1
  103. package/lib/editor/input/ui/AcEdFloatingInput.js +13 -2
  104. package/lib/editor/input/ui/AcEdFloatingInput.js.map +1 -1
  105. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts +6 -0
  106. package/lib/editor/input/ui/AcEdFloatingInputTypes.d.ts.map +1 -1
  107. package/lib/editor/input/ui/AcEdInputManager.d.ts.map +1 -1
  108. package/lib/editor/input/ui/AcEdInputManager.js +47 -7
  109. package/lib/editor/input/ui/AcEdInputManager.js.map +1 -1
  110. package/lib/editor/input/ui/AcEdMobileBoxGesture.d.ts.map +1 -1
  111. package/lib/editor/input/ui/AcEdMobileBoxGesture.js +2 -0
  112. package/lib/editor/input/ui/AcEdMobileBoxGesture.js.map +1 -1
  113. package/lib/editor/input/ui/AcEdMobileCommandChrome.d.ts +18 -4
  114. package/lib/editor/input/ui/AcEdMobileCommandChrome.d.ts.map +1 -1
  115. package/lib/editor/input/ui/AcEdMobileCommandChrome.js +14 -0
  116. package/lib/editor/input/ui/AcEdMobileCommandChrome.js.map +1 -1
  117. package/lib/editor/input/ui/AcEdSessionAccessoryController.d.ts +10 -2
  118. package/lib/editor/input/ui/AcEdSessionAccessoryController.d.ts.map +1 -1
  119. package/lib/editor/input/ui/AcEdSessionAccessoryController.js +15 -4
  120. package/lib/editor/input/ui/AcEdSessionAccessoryController.js.map +1 -1
  121. package/lib/editor/input/ui/AcEdTouchPointTiming.d.ts +1 -1
  122. package/lib/editor/input/ui/AcEdTouchPointTiming.d.ts.map +1 -1
  123. package/lib/editor/input/ui/AcEdTouchPointTiming.js +1 -1
  124. package/lib/editor/input/ui/AcEdTouchPointTiming.js.map +1 -1
  125. package/lib/editor/input/ui/index.d.ts +1 -0
  126. package/lib/editor/input/ui/index.d.ts.map +1 -1
  127. package/lib/editor/input/ui/index.js +1 -0
  128. package/lib/editor/input/ui/index.js.map +1 -1
  129. package/lib/editor/view/AcEdBaseView.d.ts +12 -0
  130. package/lib/editor/view/AcEdBaseView.d.ts.map +1 -1
  131. package/lib/editor/view/AcEdBaseView.js +19 -9
  132. package/lib/editor/view/AcEdBaseView.js.map +1 -1
  133. package/lib/editor/view/AcEdSelectionBoxIntersect.d.ts +36 -0
  134. package/lib/editor/view/AcEdSelectionBoxIntersect.d.ts.map +1 -0
  135. package/lib/editor/view/AcEdSelectionBoxIntersect.js +113 -0
  136. package/lib/editor/view/AcEdSelectionBoxIntersect.js.map +1 -0
  137. package/lib/editor/view/index.d.ts +1 -0
  138. package/lib/editor/view/index.d.ts.map +1 -1
  139. package/lib/editor/view/index.js +1 -0
  140. package/lib/editor/view/index.js.map +1 -1
  141. package/lib/i18n/AcApI18n.d.ts +2 -1
  142. package/lib/i18n/AcApI18n.d.ts.map +1 -1
  143. package/lib/i18n/AcApI18n.js +4 -1
  144. package/lib/i18n/AcApI18n.js.map +1 -1
  145. package/lib/i18n/ar/command.d.ts +9 -0
  146. package/lib/i18n/ar/command.d.ts.map +1 -1
  147. package/lib/i18n/ar/command.js +1 -1
  148. package/lib/i18n/ar/command.js.map +1 -1
  149. package/lib/i18n/ar/jig.d.ts +47 -0
  150. package/lib/i18n/ar/jig.d.ts.map +1 -1
  151. package/lib/i18n/ar/jig.js +17 -1
  152. package/lib/i18n/ar/jig.js.map +1 -1
  153. package/lib/i18n/ar/main.d.ts +30 -0
  154. package/lib/i18n/ar/main.d.ts.map +1 -1
  155. package/lib/i18n/ar/main.js +34 -4
  156. package/lib/i18n/ar/main.js.map +1 -1
  157. package/lib/i18n/cs/command.d.ts +9 -0
  158. package/lib/i18n/cs/command.d.ts.map +1 -1
  159. package/lib/i18n/cs/command.js +9 -0
  160. package/lib/i18n/cs/command.js.map +1 -1
  161. package/lib/i18n/cs/jig.d.ts +47 -0
  162. package/lib/i18n/cs/jig.d.ts.map +1 -1
  163. package/lib/i18n/cs/jig.js +47 -0
  164. package/lib/i18n/cs/jig.js.map +1 -1
  165. package/lib/i18n/cs/main.d.ts +30 -0
  166. package/lib/i18n/cs/main.d.ts.map +1 -1
  167. package/lib/i18n/cs/main.js +34 -4
  168. package/lib/i18n/cs/main.js.map +1 -1
  169. package/lib/i18n/en/command.d.ts +9 -0
  170. package/lib/i18n/en/command.d.ts.map +1 -1
  171. package/lib/i18n/en/command.js +9 -0
  172. package/lib/i18n/en/command.js.map +1 -1
  173. package/lib/i18n/en/jig.d.ts +47 -0
  174. package/lib/i18n/en/jig.d.ts.map +1 -1
  175. package/lib/i18n/en/jig.js +47 -0
  176. package/lib/i18n/en/jig.js.map +1 -1
  177. package/lib/i18n/en/main.d.ts +30 -0
  178. package/lib/i18n/en/main.d.ts.map +1 -1
  179. package/lib/i18n/en/main.js +34 -4
  180. package/lib/i18n/en/main.js.map +1 -1
  181. package/lib/i18n/index.d.ts +2 -2
  182. package/lib/i18n/index.d.ts.map +1 -1
  183. package/lib/i18n/index.js.map +1 -1
  184. package/lib/i18n/tr/command.d.ts +9 -0
  185. package/lib/i18n/tr/command.d.ts.map +1 -1
  186. package/lib/i18n/tr/command.js +9 -0
  187. package/lib/i18n/tr/command.js.map +1 -1
  188. package/lib/i18n/tr/jig.d.ts +47 -0
  189. package/lib/i18n/tr/jig.d.ts.map +1 -1
  190. package/lib/i18n/tr/jig.js +47 -0
  191. package/lib/i18n/tr/jig.js.map +1 -1
  192. package/lib/i18n/tr/main.d.ts +30 -0
  193. package/lib/i18n/tr/main.d.ts.map +1 -1
  194. package/lib/i18n/tr/main.js +34 -4
  195. package/lib/i18n/tr/main.js.map +1 -1
  196. package/lib/i18n/zh/command.d.ts +9 -0
  197. package/lib/i18n/zh/command.d.ts.map +1 -1
  198. package/lib/i18n/zh/command.js +9 -0
  199. package/lib/i18n/zh/command.js.map +1 -1
  200. package/lib/i18n/zh/jig.d.ts +47 -0
  201. package/lib/i18n/zh/jig.d.ts.map +1 -1
  202. package/lib/i18n/zh/jig.js +47 -0
  203. package/lib/i18n/zh/jig.js.map +1 -1
  204. package/lib/i18n/zh/main.d.ts +30 -0
  205. package/lib/i18n/zh/main.d.ts.map +1 -1
  206. package/lib/i18n/zh/main.js +34 -4
  207. package/lib/i18n/zh/main.js.map +1 -1
  208. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts +6 -0
  209. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.d.ts.map +1 -1
  210. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js +10 -0
  211. package/lib/spatialIndex/AcTrHierarchicalSpatialIndex.js.map +1 -1
  212. package/lib/spatialIndex/AcTrLinearSpatialIndex.d.ts +4 -0
  213. package/lib/spatialIndex/AcTrLinearSpatialIndex.d.ts.map +1 -1
  214. package/lib/spatialIndex/AcTrLinearSpatialIndex.js +9 -0
  215. package/lib/spatialIndex/AcTrLinearSpatialIndex.js.map +1 -1
  216. package/lib/spatialIndex/AcTrRBushSpatialIndex.d.ts +4 -0
  217. package/lib/spatialIndex/AcTrRBushSpatialIndex.d.ts.map +1 -1
  218. package/lib/spatialIndex/AcTrRBushSpatialIndex.js +9 -0
  219. package/lib/spatialIndex/AcTrRBushSpatialIndex.js.map +1 -1
  220. package/lib/ui/AcUiDefaultNotificationUi.d.ts +167 -0
  221. package/lib/ui/AcUiDefaultNotificationUi.d.ts.map +1 -0
  222. package/lib/ui/AcUiDefaultNotificationUi.js +603 -0
  223. package/lib/ui/AcUiDefaultNotificationUi.js.map +1 -0
  224. package/lib/ui/AcUiDrawStyle.d.ts +2 -1
  225. package/lib/ui/AcUiDrawStyle.d.ts.map +1 -1
  226. package/lib/ui/AcUiDrawStyle.js +2 -1
  227. package/lib/ui/AcUiDrawStyle.js.map +1 -1
  228. package/lib/ui/AcUiDrawStyleSessionAccessory.d.ts.map +1 -1
  229. package/lib/ui/AcUiDrawStyleSessionAccessory.js +5 -1
  230. package/lib/ui/AcUiDrawStyleSessionAccessory.js.map +1 -1
  231. package/lib/ui/AcUiMobileSessionPanel.d.ts +73 -8
  232. package/lib/ui/AcUiMobileSessionPanel.d.ts.map +1 -1
  233. package/lib/ui/AcUiMobileSessionPanel.js +314 -49
  234. package/lib/ui/AcUiMobileSessionPanel.js.map +1 -1
  235. package/lib/ui/AcUiShortCutToolbar.d.ts +24 -0
  236. package/lib/ui/AcUiShortCutToolbar.d.ts.map +1 -1
  237. package/lib/ui/AcUiShortCutToolbar.js +73 -5
  238. package/lib/ui/AcUiShortCutToolbar.js.map +1 -1
  239. package/lib/ui/index.d.ts +2 -0
  240. package/lib/ui/index.d.ts.map +1 -1
  241. package/lib/ui/index.js +2 -0
  242. package/lib/ui/index.js.map +1 -1
  243. package/lib/ui/toolbar/AcUiDropdownMenu.d.ts +48 -0
  244. package/lib/ui/toolbar/AcUiDropdownMenu.d.ts.map +1 -0
  245. package/lib/ui/toolbar/AcUiDropdownMenu.js +116 -0
  246. package/lib/ui/toolbar/AcUiDropdownMenu.js.map +1 -0
  247. package/lib/ui/toolbar/AcUiSubToolbar.d.ts +125 -0
  248. package/lib/ui/toolbar/AcUiSubToolbar.d.ts.map +1 -0
  249. package/lib/ui/toolbar/AcUiSubToolbar.js +625 -0
  250. package/lib/ui/toolbar/AcUiSubToolbar.js.map +1 -0
  251. package/lib/ui/toolbar/AcUiToolbar.d.ts +446 -0
  252. package/lib/ui/toolbar/AcUiToolbar.d.ts.map +1 -0
  253. package/lib/ui/toolbar/AcUiToolbar.js +1550 -0
  254. package/lib/ui/toolbar/AcUiToolbar.js.map +1 -0
  255. package/lib/ui/toolbar/AcUiToolbarStyles.d.ts +20 -0
  256. package/lib/ui/toolbar/AcUiToolbarStyles.d.ts.map +1 -0
  257. package/lib/ui/toolbar/AcUiToolbarStyles.js +34 -0
  258. package/lib/ui/toolbar/AcUiToolbarStyles.js.map +1 -0
  259. package/lib/ui/toolbar/acuiWrapPackLayout.d.ts +19 -0
  260. package/lib/ui/toolbar/acuiWrapPackLayout.d.ts.map +1 -0
  261. package/lib/ui/toolbar/acuiWrapPackLayout.js +36 -0
  262. package/lib/ui/toolbar/acuiWrapPackLayout.js.map +1 -0
  263. package/lib/ui/toolbar/index.d.ts +19 -0
  264. package/lib/ui/toolbar/index.d.ts.map +1 -0
  265. package/lib/ui/toolbar/index.js +15 -0
  266. package/lib/ui/toolbar/index.js.map +1 -0
  267. package/lib/ui/toolbar/resolveToolbarChrome.d.ts +14 -0
  268. package/lib/ui/toolbar/resolveToolbarChrome.d.ts.map +1 -0
  269. package/lib/ui/toolbar/resolveToolbarChrome.js +35 -0
  270. package/lib/ui/toolbar/resolveToolbarChrome.js.map +1 -0
  271. package/lib/ui/toolbar/resolveToolbarItemState.d.ts +63 -0
  272. package/lib/ui/toolbar/resolveToolbarItemState.d.ts.map +1 -0
  273. package/lib/ui/toolbar/resolveToolbarItemState.js +171 -0
  274. package/lib/ui/toolbar/resolveToolbarItemState.js.map +1 -0
  275. package/lib/ui/toolbar/toolbarItemUtils.d.ts +62 -0
  276. package/lib/ui/toolbar/toolbarItemUtils.d.ts.map +1 -0
  277. package/lib/ui/toolbar/toolbarItemUtils.js +184 -0
  278. package/lib/ui/toolbar/toolbarItemUtils.js.map +1 -0
  279. package/lib/ui/toolbar/types.d.ts +268 -0
  280. package/lib/ui/toolbar/types.d.ts.map +1 -0
  281. package/lib/ui/toolbar/types.js +8 -0
  282. package/lib/ui/toolbar/types.js.map +1 -0
  283. package/lib/ui-html-entry.d.ts +8 -1
  284. package/lib/ui-html-entry.d.ts.map +1 -1
  285. package/lib/ui-html-entry.js +6 -1
  286. package/lib/ui-html-entry.js.map +1 -1
  287. package/lib/util/AcApAnalyzeUnsupportedDrawing.d.ts +53 -0
  288. package/lib/util/AcApAnalyzeUnsupportedDrawing.d.ts.map +1 -0
  289. package/lib/util/AcApAnalyzeUnsupportedDrawing.js +164 -0
  290. package/lib/util/AcApAnalyzeUnsupportedDrawing.js.map +1 -0
  291. package/lib/util/AcApFormatFontMissedMessage.d.ts +32 -0
  292. package/lib/util/AcApFormatFontMissedMessage.d.ts.map +1 -0
  293. package/lib/util/AcApFormatFontMissedMessage.js +46 -0
  294. package/lib/util/AcApFormatFontMissedMessage.js.map +1 -0
  295. package/lib/util/AcApFormatUnsupportedEntitiesMessage.d.ts +44 -0
  296. package/lib/util/AcApFormatUnsupportedEntitiesMessage.d.ts.map +1 -0
  297. package/lib/util/AcApFormatUnsupportedEntitiesMessage.js +105 -0
  298. package/lib/util/AcApFormatUnsupportedEntitiesMessage.js.map +1 -0
  299. package/lib/util/index.d.ts +3 -0
  300. package/lib/util/index.d.ts.map +1 -1
  301. package/lib/util/index.js +3 -0
  302. package/lib/util/index.js.map +1 -1
  303. package/lib/view/AcTrLayer.d.ts +13 -1
  304. package/lib/view/AcTrLayer.d.ts.map +1 -1
  305. package/lib/view/AcTrLayer.js +28 -11
  306. package/lib/view/AcTrLayer.js.map +1 -1
  307. package/lib/view/AcTrLayout.d.ts +17 -2
  308. package/lib/view/AcTrLayout.d.ts.map +1 -1
  309. package/lib/view/AcTrLayout.js +44 -3
  310. package/lib/view/AcTrLayout.js.map +1 -1
  311. package/lib/view/AcTrScene.d.ts +4 -0
  312. package/lib/view/AcTrScene.d.ts.map +1 -1
  313. package/lib/view/AcTrScene.js +6 -0
  314. package/lib/view/AcTrScene.js.map +1 -1
  315. package/lib/view/AcTrView2d.d.ts +93 -14
  316. package/lib/view/AcTrView2d.d.ts.map +1 -1
  317. package/lib/view/AcTrView2d.js +382 -102
  318. package/lib/view/AcTrView2d.js.map +1 -1
  319. package/package.json +8 -8
  320. package/src/ui/icons.ts +387 -387
  321. package/lib/command/convert/AcApPngConvertor.d.ts.map +0 -1
  322. package/lib/command/convert/AcApPngConvertor.js.map +0 -1
@@ -34,11 +34,13 @@ var ZERO_TEXTS = {
34
34
  y: '0'
35
35
  };
36
36
  /**
37
- * Shared phone/pad session chrome: bottom panel with title bar (accessory +
38
- * help + collapse), in-panel prompt, live metrics, keyword chips, and ✓/×.
37
+ * Shared phone/pad session chrome: bottom panel with title bar (session
38
+ * accessory or prompt + help + collapse), message row (prompt + keyword chips
39
+ * when an accessory owns the title), live metrics or a string field, and ✓/×.
39
40
  *
40
- * Compact (collapsed) mode keeps a single-line prompt and confirm/cancel while
41
- * hiding metrics to reclaim canvas height and cover the bottom toolbar.
41
+ * Compact (collapsed) mode is a single row:
42
+ * accessory (if any), command message in leftover space, expand, ✓/×.
43
+ * Metrics, string field, and keyword chips stay hidden.
42
44
  */
43
45
  var AcUiMobileSessionPanel = /** @class */ (function () {
44
46
  function AcUiMobileSessionPanel(options) {
@@ -49,9 +51,11 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
49
51
  this.open = false;
50
52
  this.collapsed = false;
51
53
  this.showMetrics = false;
54
+ this.showStringInput = false;
52
55
  this.hasBasePoint = false;
53
56
  this.frozenTexts = null;
54
57
  this.frozenHasBasePoint = false;
58
+ this.compactPromptRaf = 0;
55
59
  this.host = options.host;
56
60
  this.activeClass = (_a = options.activeClass) !== null && _a !== void 0 ? _a : 'ml-mobile-cmd-active';
57
61
  this.isPhoneLayout = options.isPhoneLayout;
@@ -138,6 +142,12 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
138
142
  this.accessoryObserver.observe(this.accessoryContentEl, {
139
143
  childList: true
140
144
  });
145
+ if (typeof ResizeObserver !== 'undefined') {
146
+ this.compactPromptObserver = new ResizeObserver(function () {
147
+ _this.scheduleCompactPromptVisibility();
148
+ });
149
+ this.compactPromptObserver.observe(this.accessoryEl);
150
+ }
141
151
  this.cancelBtn = document.createElement('button');
142
152
  this.cancelBtn.type = 'button';
143
153
  this.cancelBtn.className = 'ml-mobile-cmd-cancel';
@@ -180,7 +190,38 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
180
190
  this.deltaGroup = document.createElement('div');
181
191
  this.deltaGroup.className = 'ml-mobile-cmd-group ml-mobile-cmd-group-delta';
182
192
  this.deltaGroup.append(this.deltaStack, this.deltaActions);
183
- this.panel.append(this.accessoryEl, this.promptRow, this.absGroup, this.polarGroup, this.deltaGroup, this.sharedActions);
193
+ this.stringInput = document.createElement('textarea');
194
+ this.stringInput.className = 'ml-mobile-cmd-string-input';
195
+ this.stringInput.rows = 1;
196
+ this.stringInput.autocomplete = 'off';
197
+ this.stringInput.spellcheck = false;
198
+ this.stringInput.addEventListener('input', function () {
199
+ _this.syncStringInputHeight();
200
+ });
201
+ this.stringInput.addEventListener('keydown', function (e) {
202
+ var _a, _b;
203
+ // Enter inserts a newline. Ctrl/Cmd+Enter commits (same as ✓).
204
+ if (e.key === 'Enter' && (e.ctrlKey || e.metaKey)) {
205
+ e.preventDefault();
206
+ e.stopPropagation();
207
+ if (_this.confirmBtn.disabled)
208
+ return;
209
+ (_a = _this.callbacks) === null || _a === void 0 ? void 0 : _a.onConfirm();
210
+ }
211
+ else if (e.key === 'Escape') {
212
+ e.preventDefault();
213
+ e.stopPropagation();
214
+ (_b = _this.callbacks) === null || _b === void 0 ? void 0 : _b.onCancel();
215
+ }
216
+ });
217
+ this.sinkPointer(this.stringInput);
218
+ this.stringActions = document.createElement('div');
219
+ this.stringActions.className = 'ml-mobile-cmd-actions';
220
+ this.stringGroup = document.createElement('div');
221
+ this.stringGroup.className = 'ml-mobile-cmd-group ml-mobile-cmd-group-string';
222
+ this.stringGroup.hidden = true;
223
+ this.stringGroup.append(this.stringInput, this.stringActions);
224
+ this.panel.append(this.accessoryEl, this.promptRow, this.absGroup, this.polarGroup, this.deltaGroup, this.stringGroup, this.sharedActions);
184
225
  this.root.appendChild(this.panel);
185
226
  this.sinkPointer(this.panel);
186
227
  this.host.appendChild(this.root);
@@ -218,15 +259,20 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
218
259
  */
219
260
  AcUiMobileSessionPanel.prototype.show = function (state, callbacks) {
220
261
  var _this = this;
221
- var _a, _b;
262
+ var _a, _b, _c, _d;
222
263
  this.callbacks = callbacks;
223
264
  this.open = true;
224
- this.showMetrics = state.showMetrics;
265
+ this.showStringInput = state.showStringInput === true;
266
+ this.showMetrics = this.showStringInput ? false : state.showMetrics;
225
267
  this.root.hidden = false;
226
268
  this.root.setAttribute('aria-hidden', 'false');
227
269
  this.host.classList.add(this.activeClass);
228
270
  this.promptEl.textContent = stripPromptColon(state.prompt);
229
- this.confirmBtn.disabled = !state.allowNone;
271
+ // String mode: ✓ commits typed text (always enabled). Point / actions:
272
+ // ✓ is empty-Enter / allowNone.
273
+ this.confirmBtn.disabled = this.showStringInput ? false : !state.allowNone;
274
+ this.stringInput.value = (_a = state.stringValue) !== null && _a !== void 0 ? _a : '';
275
+ this.stringInput.placeholder = (_b = state.stringPlaceholder) !== null && _b !== void 0 ? _b : '';
230
276
  this.prepareAccessory();
231
277
  this.renderChips(state.keywords);
232
278
  if (this.frozenTexts) {
@@ -235,13 +281,26 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
235
281
  else {
236
282
  this.setMetricTexts(ZERO_TEXTS, false);
237
283
  }
238
- (_a = this.layoutUnsub) === null || _a === void 0 ? void 0 : _a.call(this);
239
- this.layoutUnsub = (_b = this.subscribeLayout) === null || _b === void 0 ? void 0 : _b.call(this, function () {
240
- if (_this.open)
284
+ (_c = this.layoutUnsub) === null || _c === void 0 ? void 0 : _c.call(this);
285
+ this.layoutUnsub = (_d = this.subscribeLayout) === null || _d === void 0 ? void 0 : _d.call(this, function () {
286
+ if (_this.open) {
241
287
  _this.applyMetricVisibility();
288
+ if (_this.showStringInput)
289
+ _this.syncStringInputHeight();
290
+ }
242
291
  });
243
292
  this.applyMetricVisibility();
244
293
  this.refreshLabels();
294
+ if (this.showStringInput) {
295
+ this.syncStringInputHeight();
296
+ // Defer so the soft keyboard opens after the panel paints.
297
+ requestAnimationFrame(function () {
298
+ if (_this.open && _this.showStringInput) {
299
+ _this.syncStringInputHeight();
300
+ _this.stringInput.focus();
301
+ }
302
+ });
303
+ }
245
304
  };
246
305
  /**
247
306
  * Updates prompt / keywords / ✓ without tearing down the session.
@@ -253,19 +312,75 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
253
312
  return;
254
313
  if (partial.prompt != null) {
255
314
  this.promptEl.textContent = stripPromptColon(partial.prompt);
315
+ if (this.collapsed)
316
+ this.scheduleCompactPromptVisibility();
256
317
  }
257
- if (partial.allowNone != null) {
318
+ if (partial.showStringInput != null) {
319
+ this.showStringInput = partial.showStringInput;
320
+ if (this.showStringInput)
321
+ this.showMetrics = false;
322
+ this.confirmBtn.disabled = this.showStringInput
323
+ ? false
324
+ : partial.allowNone != null
325
+ ? !partial.allowNone
326
+ : this.confirmBtn.disabled;
327
+ this.applyMetricVisibility();
328
+ }
329
+ if (partial.allowNone != null && !this.showStringInput) {
258
330
  this.confirmBtn.disabled = !partial.allowNone;
259
331
  }
332
+ if (partial.stringValue != null) {
333
+ this.stringInput.value = partial.stringValue;
334
+ this.syncStringInputHeight();
335
+ }
336
+ if (partial.stringPlaceholder != null) {
337
+ this.stringInput.placeholder = partial.stringPlaceholder;
338
+ }
260
339
  if (partial.keywords) {
261
340
  this.renderChips(partial.keywords);
262
341
  this.applyMetricVisibility();
263
342
  }
264
- if (partial.showMetrics != null) {
343
+ if (partial.showMetrics != null && !this.showStringInput) {
265
344
  this.showMetrics = partial.showMetrics;
266
345
  this.applyMetricVisibility();
267
346
  }
268
347
  };
348
+ /** Current value of the session string field (empty when not in string mode). */
349
+ AcUiMobileSessionPanel.prototype.getStringValue = function () {
350
+ return this.stringInput.value;
351
+ };
352
+ /** Focuses the session string field when string input mode is active. */
353
+ AcUiMobileSessionPanel.prototype.focusStringInput = function () {
354
+ if (!this.open || !this.showStringInput)
355
+ return;
356
+ this.stringInput.focus();
357
+ };
358
+ /**
359
+ * Sizes the string field from 1 to 3 lines of content. Taller content
360
+ * scrolls inside a 3-line viewport so the right-hand actions/divider stay
361
+ * matched to the visible field height.
362
+ */
363
+ AcUiMobileSessionPanel.prototype.syncStringInputHeight = function () {
364
+ if (!this.open || !this.showStringInput)
365
+ return;
366
+ var el = this.stringInput;
367
+ var style = getComputedStyle(el);
368
+ var fontSize = parseFloat(style.fontSize) || 14;
369
+ var lineHeight = parseFloat(style.lineHeight) || fontSize * 1.35;
370
+ var padY = (parseFloat(style.paddingTop) || 0) +
371
+ (parseFloat(style.paddingBottom) || 0);
372
+ var borderY = (parseFloat(style.borderTopWidth) || 0) +
373
+ (parseFloat(style.borderBottomWidth) || 0);
374
+ var minH = lineHeight + padY + borderY;
375
+ var maxH = lineHeight * 3 + padY + borderY;
376
+ // Collapse first so scrollHeight reflects the current value.
377
+ el.style.height = "".concat(minH, "px");
378
+ el.style.overflowY = 'hidden';
379
+ var contentH = el.scrollHeight;
380
+ var next = Math.min(Math.max(contentH, minH), maxH);
381
+ el.style.height = "".concat(next, "px");
382
+ el.style.overflowY = contentH > maxH + 0.5 ? 'auto' : 'hidden';
383
+ };
269
384
  /**
270
385
  * Pushes live metric values (read-only; buttons stay disabled for keypad hook).
271
386
  *
@@ -295,18 +410,39 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
295
410
  /** Shows the accessory / title row (custom content slot + help + collapse). */
296
411
  AcUiMobileSessionPanel.prototype.prepareAccessory = function () {
297
412
  this.accessoryEl.hidden = false;
413
+ // Remounts can restore widgets after `show()` already ran placement against
414
+ // an empty slot — re-sync so the prompt stays on the message row.
415
+ if (this.open)
416
+ this.applyMetricVisibility();
298
417
  };
299
418
  /** Clears custom accessory content; help / collapse stay while open. */
300
419
  AcUiMobileSessionPanel.prototype.clearAccessory = function () {
301
420
  this.accessoryContentEl.replaceChildren();
421
+ if (this.open)
422
+ this.applyMetricVisibility();
302
423
  };
303
- /** Hides the panel and clears session callbacks. */
424
+ /**
425
+ * Hides the panel without clearing accessory widgets.
426
+ *
427
+ * Draw-style (and other) session accessories outlive individual prompts —
428
+ * `endMobilePrompt` / `beginMobilePrompt` pairs between picks must not wipe
429
+ * them. Ownership stays with the accessory mount lifecycle
430
+ * ({@link clearAccessory} via the session-accessory controller).
431
+ */
304
432
  AcUiMobileSessionPanel.prototype.hide = function () {
305
433
  var _a;
306
434
  this.open = false;
307
435
  this.callbacks = null;
308
- this.clearAccessory();
436
+ this.showStringInput = false;
437
+ this.stringInput.value = '';
438
+ this.stringInput.placeholder = '';
439
+ this.stringInput.style.height = '';
440
+ this.stringInput.style.overflowY = '';
309
441
  this.accessoryEl.hidden = true;
442
+ if (this.compactPromptRaf) {
443
+ cancelAnimationFrame(this.compactPromptRaf);
444
+ this.compactPromptRaf = 0;
445
+ }
310
446
  this.setCollapsed(false);
311
447
  (_a = this.layoutUnsub) === null || _a === void 0 ? void 0 : _a.call(this);
312
448
  this.layoutUnsub = undefined;
@@ -332,11 +468,17 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
332
468
  };
333
469
  /** Removes DOM. */
334
470
  AcUiMobileSessionPanel.prototype.dispose = function () {
335
- var _a, _b;
471
+ var _a, _b, _c;
336
472
  this.hide();
337
- (_a = this.accessoryObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
473
+ if (this.compactPromptRaf) {
474
+ cancelAnimationFrame(this.compactPromptRaf);
475
+ this.compactPromptRaf = 0;
476
+ }
477
+ (_a = this.compactPromptObserver) === null || _a === void 0 ? void 0 : _a.disconnect();
478
+ this.compactPromptObserver = undefined;
479
+ (_b = this.accessoryObserver) === null || _b === void 0 ? void 0 : _b.disconnect();
338
480
  this.accessoryObserver = undefined;
339
- (_b = this.helpPanel) === null || _b === void 0 ? void 0 : _b.dispose();
481
+ (_c = this.helpPanel) === null || _c === void 0 ? void 0 : _c.dispose();
340
482
  this.helpPanel = null;
341
483
  this.root.remove();
342
484
  };
@@ -345,9 +487,18 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
345
487
  return this.accessoryContentEl.childElementCount > 0;
346
488
  };
347
489
  /**
348
- * Places the prompt (and keyword chips) in the title row when there is no
349
- * accessory widget; otherwise keeps them on the message row. Compact mode
350
- * keeps widgets when present, otherwise shows a truncated prompt.
490
+ * Places the command prompt vs session accessory on the title row.
491
+ *
492
+ * Expanded:
493
+ * - No accessory widgets → title shows the prompt; chips stay on the message
494
+ * row (second row) when present.
495
+ * - With accessory widgets → title always shows the accessory; the message
496
+ * row shows the prompt and keyword chips together.
497
+ *
498
+ * Compact mode keeps a single row:
499
+ * `[accessory?] [prompt (remaining space)] [expand] [✓ ×]`.
500
+ * Keyword chips never appear. The prompt uses leftover space only (ellipsis
501
+ * on overflow) and is hidden when less than one third of the text fits.
351
502
  */
352
503
  AcUiMobileSessionPanel.prototype.syncPromptPlacement = function (collapsed) {
353
504
  var hasWidgets = this.hasAccessoryWidgets();
@@ -358,24 +509,19 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
358
509
  this.accessoryEl.hidden = false;
359
510
  this.accessoryEl.appendChild(this.titleActions);
360
511
  this.chipsEl.hidden = collapsed || !hasChips;
512
+ this.promptRow.classList.remove('is-in-title');
361
513
  if (collapsed) {
362
- this.promptRow.classList.remove('is-in-title');
363
- if (promptInTitle) {
364
- this.accessoryEl.insertBefore(this.promptEl, this.titleActions);
365
- this.promptEl.hidden = false;
366
- }
367
- else {
368
- this.promptEl.hidden = true;
369
- this.promptRow.appendChild(this.promptEl);
370
- }
514
+ // Compact: prompt sits after accessory content, before expand / actions.
515
+ this.promptEl.hidden = false;
516
+ this.accessoryEl.insertBefore(this.promptEl, this.titleActions);
371
517
  this.promptRow.appendChild(this.chipsEl);
372
- // Keep an empty prompt row out of the compact chrome.
373
518
  if (this.promptRow.parentElement === this.accessoryEl) {
374
519
  this.panel.insertBefore(this.promptRow, this.absGroup);
375
520
  }
376
521
  this.promptRow.hidden = true;
377
522
  this.accessoryEl.appendChild(this.compactActions);
378
523
  this.compactActions.append(this.cancelBtn, this.confirmBtn);
524
+ this.scheduleCompactPromptVisibility();
379
525
  return;
380
526
  }
381
527
  this.promptEl.hidden = false;
@@ -383,19 +529,125 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
383
529
  if (this.compactActions.parentElement === this.accessoryEl) {
384
530
  this.compactActions.remove();
385
531
  }
386
- // Prompt + chips share one flex-wrap cluster (title or message band).
387
- this.promptRow.append(this.promptEl, this.chipsEl);
388
- this.promptRow.hidden = false;
532
+ this.panel.classList.remove('is-compact-prompt-hidden');
533
+ // Message row always sits below the title bar as a panel child.
534
+ if (this.promptRow.parentElement === this.accessoryEl) {
535
+ this.panel.insertBefore(this.promptRow, this.absGroup);
536
+ }
389
537
  if (promptInTitle) {
390
- this.promptRow.classList.add('is-in-title');
391
- this.accessoryEl.insertBefore(this.promptRow, this.titleActions);
538
+ // Title: prompt + help/collapse. Chips (if any) stay on the message row.
539
+ this.accessoryEl.insertBefore(this.promptEl, this.titleActions);
540
+ this.promptRow.appendChild(this.chipsEl);
541
+ this.promptRow.hidden = !hasChips;
392
542
  }
393
543
  else {
394
- this.promptRow.classList.remove('is-in-title');
395
- if (this.promptRow.parentElement === this.accessoryEl) {
396
- this.panel.insertBefore(this.promptRow, this.absGroup);
544
+ // Title: accessory widgets + help/collapse. Message row: prompt + chips.
545
+ this.promptRow.append(this.promptEl, this.chipsEl);
546
+ this.promptRow.hidden = false;
547
+ }
548
+ };
549
+ /** Defers compact prompt show/hide until after flex layout settles. */
550
+ AcUiMobileSessionPanel.prototype.scheduleCompactPromptVisibility = function () {
551
+ var _this = this;
552
+ if (!this.collapsed || !this.open)
553
+ return;
554
+ if (this.compactPromptRaf)
555
+ cancelAnimationFrame(this.compactPromptRaf);
556
+ this.compactPromptRaf = requestAnimationFrame(function () {
557
+ _this.compactPromptRaf = 0;
558
+ _this.syncCompactPromptVisibility();
559
+ });
560
+ };
561
+ /**
562
+ * In compact mode the prompt only uses leftover width after accessory,
563
+ * expand, and ✓/×. Hide it when that width is under one third of the full
564
+ * message text width (partial text uses CSS ellipsis). When hidden, the
565
+ * accessory stays left-aligned and expand / ✓/× stay right-aligned.
566
+ *
567
+ * Avoids temporarily unhiding the prompt to measure — that would thrash
568
+ * layout and re-enter via {@link ResizeObserver} every frame.
569
+ */
570
+ AcUiMobileSessionPanel.prototype.syncCompactPromptVisibility = function () {
571
+ var _a, _b;
572
+ if (!this.collapsed || !this.open) {
573
+ this.panel.classList.remove('is-compact-prompt-hidden');
574
+ return;
575
+ }
576
+ var text = (_b = (_a = this.promptEl.textContent) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
577
+ if (!text) {
578
+ this.applyCompactPromptHidden(true);
579
+ return;
580
+ }
581
+ var fullWidth = this.measurePromptTextWidth();
582
+ if (fullWidth <= 0) {
583
+ this.applyCompactPromptHidden(false);
584
+ return;
585
+ }
586
+ var available = this.measureCompactPromptAvailableWidth();
587
+ this.applyCompactPromptHidden(available < fullWidth / 3);
588
+ };
589
+ /** Applies compact prompt visibility only when the decision changes. */
590
+ AcUiMobileSessionPanel.prototype.applyCompactPromptHidden = function (hide) {
591
+ if (this.promptEl.hidden === hide &&
592
+ this.panel.classList.contains('is-compact-prompt-hidden') === hide) {
593
+ return;
594
+ }
595
+ this.promptEl.hidden = hide;
596
+ this.panel.classList.toggle('is-compact-prompt-hidden', hide);
597
+ };
598
+ /**
599
+ * Leftover width for the compact prompt. Uses the live flex slot when the
600
+ * prompt is visible; otherwise infers space from the row minus siblings so
601
+ * we never flash the prompt back on just to measure.
602
+ */
603
+ AcUiMobileSessionPanel.prototype.measureCompactPromptAvailableWidth = function () {
604
+ var e_1, _a;
605
+ var _this = this;
606
+ if (!this.promptEl.hidden) {
607
+ return this.promptEl.clientWidth;
608
+ }
609
+ var rowWidth = this.accessoryEl.clientWidth;
610
+ var rowStyle = getComputedStyle(this.accessoryEl);
611
+ var gap = parseFloat(rowStyle.columnGap || rowStyle.gap || '0') || 0;
612
+ var siblings = Array.from(this.accessoryEl.children).filter(function (el) { return el !== _this.promptEl && !el.hidden; });
613
+ var used = 0;
614
+ try {
615
+ for (var siblings_1 = __values(siblings), siblings_1_1 = siblings_1.next(); !siblings_1_1.done; siblings_1_1 = siblings_1.next()) {
616
+ var el = siblings_1_1.value;
617
+ used += el.getBoundingClientRect().width;
618
+ }
619
+ }
620
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
621
+ finally {
622
+ try {
623
+ if (siblings_1_1 && !siblings_1_1.done && (_a = siblings_1.return)) _a.call(siblings_1);
397
624
  }
625
+ finally { if (e_1) throw e_1.error; }
398
626
  }
627
+ // Showing the prompt inserts one more flex item → one extra gap.
628
+ return Math.max(0, rowWidth - used - gap * siblings.length);
629
+ };
630
+ /** Intrinsic single-line width of the current prompt text. */
631
+ AcUiMobileSessionPanel.prototype.measurePromptTextWidth = function () {
632
+ var probe = document.createElement('span');
633
+ var style = getComputedStyle(this.promptEl);
634
+ probe.textContent = this.promptEl.textContent;
635
+ // Prefer longhand font props — `font` shorthand is empty in some engines.
636
+ var font = style.font ||
637
+ "".concat(style.fontWeight, " ").concat(style.fontSize, " ").concat(style.fontFamily).trim();
638
+ probe.style.cssText = [
639
+ 'position:absolute',
640
+ 'visibility:hidden',
641
+ 'pointer-events:none',
642
+ 'white-space:nowrap',
643
+ "font:".concat(font),
644
+ "letter-spacing:".concat(style.letterSpacing),
645
+ "text-transform:".concat(style.textTransform)
646
+ ].join(';');
647
+ document.body.appendChild(probe);
648
+ var width = probe.getBoundingClientRect().width;
649
+ probe.remove();
650
+ return width;
399
651
  };
400
652
  AcUiMobileSessionPanel.prototype.refreshCollapseLabel = function () {
401
653
  var t = this.labelsFn();
@@ -426,8 +678,9 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
426
678
  this.hasBasePoint = hasBasePoint;
427
679
  };
428
680
  AcUiMobileSessionPanel.prototype.applyMetricVisibility = function () {
429
- var relative = this.showMetrics && this.hasBasePoint;
430
- var absolute = this.showMetrics && !this.hasBasePoint;
681
+ var stringMode = this.showStringInput;
682
+ var relative = !stringMode && this.showMetrics && this.hasBasePoint;
683
+ var absolute = !stringMode && this.showMetrics && !this.hasBasePoint;
431
684
  var phone = this.isPhoneLayout();
432
685
  var collapsed = this.collapsed;
433
686
  this.metricButtons.length.hidden = !relative;
@@ -438,21 +691,33 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
438
691
  this.metricButtons.y.hidden = !absolute;
439
692
  this.panel.classList.toggle('is-relative', relative && !collapsed);
440
693
  this.panel.classList.toggle('is-absolute', absolute && !collapsed);
441
- this.panel.classList.toggle('is-actions-only', !collapsed && !relative && !absolute);
694
+ this.panel.classList.toggle('is-string-input', stringMode && !collapsed);
695
+ this.panel.classList.toggle('is-actions-only', !collapsed && !relative && !absolute && !stringMode);
442
696
  this.panel.classList.toggle('is-collapsed', collapsed);
443
697
  this.polarGroup.hidden = collapsed || !relative;
444
698
  this.deltaGroup.hidden = collapsed || !relative;
445
699
  this.absStack.hidden = !absolute;
446
700
  this.absGroup.hidden = collapsed
447
701
  ? true
448
- : phone
449
- ? relative
450
- : !absolute;
702
+ : stringMode
703
+ ? true
704
+ : phone
705
+ ? relative
706
+ : !absolute;
707
+ this.stringGroup.hidden = collapsed || !stringMode;
451
708
  this.chipsEl.hidden = collapsed || this.chipsEl.childElementCount === 0;
452
709
  this.syncPromptPlacement(collapsed);
453
710
  if (collapsed) {
454
711
  // Actions already placed by syncPromptPlacement.
455
712
  }
713
+ else if (stringMode) {
714
+ if (phone) {
715
+ this.stringActions.append(this.cancelBtn, this.confirmBtn);
716
+ }
717
+ else {
718
+ this.sharedActions.append(this.cancelBtn, this.confirmBtn);
719
+ }
720
+ }
456
721
  else if (phone && relative) {
457
722
  this.polarActions.appendChild(this.cancelBtn);
458
723
  this.deltaActions.appendChild(this.confirmBtn);
@@ -465,7 +730,7 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
465
730
  }
466
731
  };
467
732
  AcUiMobileSessionPanel.prototype.renderChips = function (keywords) {
468
- var e_1, _a;
733
+ var e_2, _a;
469
734
  var _this = this;
470
735
  this.chipsEl.replaceChildren();
471
736
  this.chipsEl.hidden = this.collapsed || keywords.length === 0;
@@ -493,12 +758,12 @@ var AcUiMobileSessionPanel = /** @class */ (function () {
493
758
  _loop_1(kw);
494
759
  }
495
760
  }
496
- catch (e_1_1) { e_1 = { error: e_1_1 }; }
761
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
497
762
  finally {
498
763
  try {
499
764
  if (keywords_1_1 && !keywords_1_1.done && (_a = keywords_1.return)) _a.call(keywords_1);
500
765
  }
501
- finally { if (e_1) throw e_1.error; }
766
+ finally { if (e_2) throw e_2.error; }
502
767
  }
503
768
  };
504
769
  AcUiMobileSessionPanel.prototype.openHelpPanel = function () {
@@ -553,5 +818,5 @@ function confirmIcon() {
553
818
  return '<svg viewBox="0 0 24 24" width="18" height="18" aria-hidden="true"><path fill="currentColor" d="M9.55 18.2 3.8 12.45l1.4-1.4 4.35 4.36 9.25-9.26 1.4 1.41z"/></svg>';
554
819
  }
555
820
  /** CSS for the shared mobile session panel. */
556
- var MOBILE_CMD_CSS = "\n .ml-mobile-cmd {\n pointer-events: none;\n }\n .ml-mobile-cmd-panel {\n pointer-events: auto;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 40;\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));\n background: var(--ml-ui-bg, rgba(28, 30, 34, 0.96));\n color: var(--ml-ui-text, #e8eaed);\n border-top: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.35);\n box-sizing: border-box;\n }\n .ml-mobile-cmd-panel.is-collapsed {\n height: calc(\n var(--ml-mobile-cmd-collapsed-height, 56px) + env(safe-area-inset-bottom, 0px)\n );\n min-height: calc(\n var(--ml-mobile-cmd-collapsed-height, 56px) + env(safe-area-inset-bottom, 0px)\n );\n padding: 0 12px env(safe-area-inset-bottom, 0px);\n gap: 0;\n justify-content: center;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-accessory {\n padding-bottom: 0;\n border-bottom: 0;\n flex: 1;\n min-width: 0;\n }\n .ml-mobile-cmd-prompt-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n min-width: 0;\n }\n .ml-mobile-cmd-prompt-row[hidden] {\n display: none;\n }\n .ml-mobile-cmd-prompt-row:not([hidden]) {\n box-sizing: border-box;\n min-height: 32px;\n padding-top: 4px;\n padding-bottom: 4px;\n border-bottom: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n }\n .ml-mobile-cmd-prompt-row.is-in-title {\n flex: 1 1 auto;\n min-width: 0;\n min-height: 0;\n padding: 0;\n border-bottom: 0;\n }\n .ml-mobile-cmd-prompt {\n flex: 1 1 10em;\n min-width: min(100%, 8em);\n box-sizing: border-box;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--ml-ui-text, #e8eaed);\n font-size: 12px;\n font-weight: 500;\n line-height: 1.4;\n white-space: normal;\n overflow-wrap: anywhere;\n word-break: break-word;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-prompt {\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-prompt[hidden] {\n display: none;\n }\n .ml-mobile-cmd-actions-compact {\n display: none;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n flex: 0 0 auto;\n margin-left: 8px;\n padding-left: 0;\n border-left: 0;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-actions-compact {\n display: flex;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-help[hidden] {\n display: none;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-title-actions {\n margin-left: 0;\n }\n .ml-mobile-cmd-group {\n display: flex;\n align-items: stretch;\n gap: 8px;\n min-width: 0;\n }\n .ml-mobile-cmd-group[hidden] {\n display: none;\n }\n .ml-mobile-cmd-panel.is-relative .ml-mobile-cmd-group-polar {\n border-bottom: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n padding-bottom: 0;\n }\n .ml-mobile-cmd-group:not(:has(.ml-mobile-cmd-metric-stack:not([hidden]))) {\n justify-content: flex-end;\n }\n .ml-mobile-cmd-metric-stack {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 2px;\n }\n .ml-mobile-cmd-metric-stack[hidden] {\n display: none;\n }\n .ml-mobile-cmd-actions {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 10px;\n flex: 0 0 auto;\n align-self: stretch;\n padding-left: 12px;\n border-left: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n }\n .ml-mobile-cmd-group:not(:has(.ml-mobile-cmd-metric-stack:not([hidden])))\n .ml-mobile-cmd-actions {\n border-left: 0;\n padding-left: 0;\n }\n .ml-mobile-cmd-metric {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n margin: 0;\n padding: 2px 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n min-height: 28px;\n min-width: 0;\n width: 100%;\n }\n .ml-mobile-cmd-metric[hidden] {\n display: none;\n }\n .ml-mobile-cmd-metric-label {\n flex: 0 0 auto;\n color: var(--ml-ui-muted, #9aa0a6);\n font-size: 12px;\n }\n .ml-mobile-cmd-metric-value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: right;\n font-variant-numeric: tabular-nums;\n font-size: 13px;\n }\n .ml-mobile-cmd-accessory {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n min-height: 32px;\n }\n .ml-mobile-cmd-accessory:not([hidden]) {\n padding-bottom: 8px;\n border-bottom: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n }\n .ml-mobile-cmd-accessory[hidden] {\n display: none;\n }\n .ml-mobile-cmd-accessory-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .ml-mobile-cmd-accessory-content:empty {\n display: none;\n }\n .ml-mobile-cmd-panel.is-prompt-in-title .ml-mobile-cmd-prompt {\n flex: 1 1 10em;\n min-width: min(100%, 8em);\n }\n .ml-mobile-cmd-panel.is-prompt-in-title .ml-mobile-cmd-chips {\n flex: 0 1 auto;\n }\n .ml-mobile-cmd-title-actions {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n gap: 0;\n margin-left: auto;\n }\n .ml-mobile-cmd-help,\n .ml-mobile-cmd-collapse {\n box-sizing: border-box;\n flex: 0 0 auto;\n margin: 0;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n color: var(--ml-ui-muted, #9aa0a6);\n cursor: pointer;\n line-height: 0;\n }\n .ml-mobile-cmd-help:hover,\n .ml-mobile-cmd-help:focus-visible,\n .ml-mobile-cmd-collapse:hover,\n .ml-mobile-cmd-collapse:focus-visible {\n color: var(--ml-ui-accent, #08e8de);\n }\n .ml-mobile-cmd-help svg,\n .ml-mobile-cmd-collapse svg {\n display: block;\n width: 18px;\n height: 18px;\n }\n .ml-mobile-cmd-chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n flex: 0 1 auto;\n min-width: 0;\n }\n .ml-mobile-cmd-chips:not([hidden]) {\n padding: 0;\n border: 0;\n }\n .ml-mobile-cmd-chips[hidden] {\n display: none;\n }\n .ml-mobile-cmd-chip {\n min-height: 32px;\n padding: 4px 10px;\n border-radius: 16px;\n border: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.16));\n background: var(--ml-ui-bg-elevated, rgba(255, 255, 255, 0.06));\n color: var(--ml-ui-accent, #08e8de);\n font-size: 13px;\n }\n .ml-mobile-cmd-chip:disabled {\n opacity: 0.45;\n }\n .ml-mobile-cmd-cancel,\n .ml-mobile-cmd-confirm {\n box-sizing: border-box;\n flex: 0 0 36px;\n align-self: center;\n margin: 0;\n width: 36px;\n height: 36px;\n padding: 0;\n border-radius: 50%;\n border: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n cursor: pointer;\n color: #fff;\n }\n .ml-mobile-cmd-cancel svg,\n .ml-mobile-cmd-confirm svg {\n display: block;\n width: 18px;\n height: 18px;\n }\n .ml-mobile-cmd-cancel {\n background: #5c6370;\n }\n .ml-mobile-cmd-confirm {\n background: var(--ml-ui-accent, #1a8cff);\n }\n .ml-mobile-cmd-confirm:disabled {\n opacity: 0.35;\n cursor: default;\n }\n .ml-mobile-cmd-actions-shared {\n display: none;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-actions-shared {\n display: none !important;\n }\n @media (min-width: ".concat(ML_UI_SESSION_PANEL_WIDTH, "px) {\n .ml-mobile-cmd-metric-stack {\n flex-direction: row;\n align-items: center;\n gap: 16px;\n }\n .ml-mobile-cmd-metric {\n flex: 1;\n }\n }\n @media (min-width: ").concat(ML_UI_MOBILE_MAX_WIDTH + 1, "px) {\n .ml-mobile-cmd-panel {\n left: 50%;\n right: auto;\n width: ").concat(ML_UI_SESSION_PANEL_WIDTH, "px;\n max-width: ").concat(ML_UI_SESSION_PANEL_MAX_WIDTH, ";\n transform: translateX(-50%);\n border-radius: 12px 12px 0 0;\n border: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n border-bottom: 0;\n }\n .ml-mobile-cmd-panel.is-collapsed {\n width: ").concat(ML_UI_SESSION_PANEL_WIDTH, "px;\n max-width: ").concat(ML_UI_SESSION_PANEL_MAX_WIDTH, ";\n }\n .ml-mobile-cmd-group .ml-mobile-cmd-actions {\n display: none;\n }\n .ml-mobile-cmd-actions-shared {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n .ml-mobile-cmd-panel.is-absolute .ml-mobile-cmd-group-abs {\n align-items: center;\n }\n .ml-mobile-cmd-panel.is-absolute .ml-mobile-cmd-actions-shared {\n align-self: center;\n }\n .ml-mobile-cmd-panel.is-relative:not([hidden]),\n .ml-mobile-cmd-panel.is-absolute:not([hidden]) {\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: stretch;\n row-gap: 0;\n column-gap: 8px;\n }\n .ml-mobile-cmd-panel.is-relative {\n grid-template-areas:\n 'accessory accessory'\n 'prompt prompt'\n 'polar shared'\n 'delta shared';\n }\n .ml-mobile-cmd-panel.is-absolute {\n grid-template-areas:\n 'accessory accessory'\n 'prompt prompt'\n 'abs shared';\n }\n .ml-mobile-cmd-panel.is-prompt-in-title.is-relative {\n grid-template-areas:\n 'accessory accessory'\n 'polar shared'\n 'delta shared';\n }\n .ml-mobile-cmd-panel.is-prompt-in-title.is-absolute {\n grid-template-areas:\n 'accessory accessory'\n 'abs shared';\n }\n .ml-mobile-cmd-group-polar { grid-area: polar; }\n .ml-mobile-cmd-group-delta { grid-area: delta; }\n .ml-mobile-cmd-group-abs { grid-area: abs; }\n .ml-mobile-cmd-actions-shared { grid-area: shared; }\n .ml-mobile-cmd-accessory { grid-area: accessory; }\n .ml-mobile-cmd-prompt-row { grid-area: prompt; }\n .ml-mobile-cmd-panel.is-relative .ml-mobile-cmd-group-polar {\n padding-bottom: 6px;\n }\n .ml-mobile-cmd-panel.is-relative .ml-mobile-cmd-group-delta {\n padding-top: 6px;\n }\n .ml-mobile-cmd-panel.is-actions-only {\n display: flex;\n flex-direction: column;\n }\n .ml-mobile-cmd-panel.is-actions-only .ml-mobile-cmd-actions-shared {\n border-left: 0;\n padding-left: 0;\n justify-content: flex-end;\n align-self: flex-end;\n }\n .ml-mobile-cmd-panel.is-collapsed {\n display: flex !important;\n flex-direction: row;\n align-items: center;\n transform: translateX(-50%);\n }\n }\n");
821
+ var MOBILE_CMD_CSS = "\n .ml-mobile-cmd {\n pointer-events: none;\n }\n .ml-mobile-cmd-panel {\n pointer-events: auto;\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n z-index: 40;\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 10px 12px calc(10px + env(safe-area-inset-bottom, 0px));\n background: var(--ml-ui-bg, rgba(28, 30, 34, 0.96));\n color: var(--ml-ui-text, #e8eaed);\n border-top: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n box-shadow: 0 -8px 24px rgba(0, 0, 0, 0.35);\n box-sizing: border-box;\n }\n .ml-mobile-cmd-panel.is-collapsed {\n height: calc(\n var(--ml-mobile-cmd-collapsed-height, 56px) + env(safe-area-inset-bottom, 0px)\n );\n min-height: calc(\n var(--ml-mobile-cmd-collapsed-height, 56px) + env(safe-area-inset-bottom, 0px)\n );\n padding: 0 12px env(safe-area-inset-bottom, 0px);\n gap: 0;\n justify-content: center;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-accessory {\n padding-bottom: 0;\n border-bottom: 0;\n flex: 1;\n min-width: 0;\n flex-wrap: nowrap;\n }\n /* Accessory keeps intrinsic width; prompt may not steal space from it. */\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-accessory-content {\n flex: 0 0 auto;\n min-width: 0;\n }\n .ml-mobile-cmd-prompt-row {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n min-width: 0;\n }\n .ml-mobile-cmd-prompt-row[hidden] {\n display: none;\n }\n .ml-mobile-cmd-prompt-row:not([hidden]) {\n box-sizing: border-box;\n min-height: 32px;\n padding-top: 4px;\n padding-bottom: 4px;\n border-bottom: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n }\n .ml-mobile-cmd-prompt {\n flex: 1 1 10em;\n min-width: min(100%, 8em);\n box-sizing: border-box;\n padding: 0;\n border: 0;\n border-radius: 0;\n background: transparent;\n color: var(--ml-ui-text, #e8eaed);\n font-size: 12px;\n font-weight: 500;\n line-height: 1.4;\n white-space: normal;\n overflow-wrap: anywhere;\n word-break: break-word;\n }\n .ml-mobile-cmd-accessory > .ml-mobile-cmd-prompt {\n flex: 1 1 auto;\n min-width: 0;\n }\n /* Compact: fill leftover space only; ellipsis when truncated. */\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-prompt {\n flex: 1 1 0;\n min-width: 0;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n overflow-wrap: normal;\n word-break: normal;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-prompt[hidden] {\n display: none;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-chips {\n display: none !important;\n }\n .ml-mobile-cmd-actions-compact {\n display: none;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 8px;\n flex: 0 0 auto;\n margin-left: 8px;\n padding-left: 0;\n border-left: 0;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-actions-compact {\n display: flex;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-help[hidden] {\n display: none;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-title-actions {\n margin-left: 0;\n flex: 0 0 auto;\n }\n /* No prompt: accessory left, expand + \u2713/\u00D7 right. */\n .ml-mobile-cmd-panel.is-collapsed.is-compact-prompt-hidden .ml-mobile-cmd-title-actions {\n margin-left: auto;\n }\n .ml-mobile-cmd-group {\n display: flex;\n align-items: stretch;\n gap: 8px;\n min-width: 0;\n }\n .ml-mobile-cmd-group[hidden] {\n display: none;\n }\n .ml-mobile-cmd-string-input {\n flex: 1;\n min-width: 0;\n box-sizing: border-box;\n margin: 0;\n padding: 8px 10px;\n border: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.16));\n border-radius: 8px;\n background: var(--ml-ui-bg-elevated, rgba(255, 255, 255, 0.06));\n color: var(--ml-ui-text, #e8eaed);\n font: inherit;\n font-size: 14px;\n line-height: 1.35;\n outline: none;\n resize: none;\n overflow-y: hidden;\n white-space: pre-wrap;\n word-break: break-word;\n /* 1-line floor; JS grows up to 3 lines via syncStringInputHeight. */\n height: calc(1.35em + 16px + 2px);\n }\n .ml-mobile-cmd-string-input:focus {\n border-color: var(--ml-ui-accent, #08e8de);\n }\n .ml-mobile-cmd-string-input::placeholder {\n color: var(--ml-ui-muted, #9aa0a6);\n }\n .ml-mobile-cmd-panel.is-relative .ml-mobile-cmd-group-polar {\n border-bottom: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n padding-bottom: 0;\n }\n .ml-mobile-cmd-group:not(.ml-mobile-cmd-group-string):not(\n :has(.ml-mobile-cmd-metric-stack:not([hidden]))\n ) {\n justify-content: flex-end;\n }\n .ml-mobile-cmd-group-string {\n align-items: stretch;\n }\n .ml-mobile-cmd-group-string .ml-mobile-cmd-actions {\n align-self: stretch;\n align-items: center;\n border-left: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n padding-left: 12px;\n }\n .ml-mobile-cmd-metric-stack {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n justify-content: center;\n gap: 2px;\n }\n .ml-mobile-cmd-metric-stack[hidden] {\n display: none;\n }\n .ml-mobile-cmd-actions {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n gap: 10px;\n flex: 0 0 auto;\n align-self: stretch;\n padding-left: 12px;\n border-left: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n }\n .ml-mobile-cmd-group:not(.ml-mobile-cmd-group-string):not(\n :has(.ml-mobile-cmd-metric-stack:not([hidden]))\n )\n .ml-mobile-cmd-actions {\n border-left: 0;\n padding-left: 0;\n }\n .ml-mobile-cmd-metric {\n display: flex;\n justify-content: space-between;\n align-items: center;\n gap: 8px;\n margin: 0;\n padding: 2px 0;\n border: 0;\n background: transparent;\n color: inherit;\n font: inherit;\n text-align: left;\n min-height: 28px;\n min-width: 0;\n width: 100%;\n }\n .ml-mobile-cmd-metric[hidden] {\n display: none;\n }\n .ml-mobile-cmd-metric-label {\n flex: 0 0 auto;\n color: var(--ml-ui-muted, #9aa0a6);\n font-size: 12px;\n }\n .ml-mobile-cmd-metric-value {\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: right;\n font-variant-numeric: tabular-nums;\n font-size: 13px;\n }\n .ml-mobile-cmd-accessory {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 8px;\n min-height: 32px;\n }\n .ml-mobile-cmd-accessory:not([hidden]) {\n padding-bottom: 8px;\n border-bottom: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n }\n .ml-mobile-cmd-accessory[hidden] {\n display: none;\n }\n .ml-mobile-cmd-accessory-content {\n flex: 1;\n min-width: 0;\n display: flex;\n align-items: center;\n gap: 8px;\n }\n .ml-mobile-cmd-accessory-content:empty {\n display: none;\n }\n .ml-mobile-cmd-title-actions {\n display: flex;\n flex: 0 0 auto;\n align-items: center;\n gap: 0;\n margin-left: auto;\n }\n .ml-mobile-cmd-help,\n .ml-mobile-cmd-collapse {\n box-sizing: border-box;\n flex: 0 0 auto;\n margin: 0;\n width: 32px;\n height: 32px;\n padding: 0;\n border: 0;\n border-radius: 50%;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n background: transparent;\n color: var(--ml-ui-muted, #9aa0a6);\n cursor: pointer;\n line-height: 0;\n }\n .ml-mobile-cmd-help:hover,\n .ml-mobile-cmd-help:focus-visible,\n .ml-mobile-cmd-collapse:hover,\n .ml-mobile-cmd-collapse:focus-visible {\n color: var(--ml-ui-accent, #08e8de);\n }\n .ml-mobile-cmd-help svg,\n .ml-mobile-cmd-collapse svg {\n display: block;\n width: 18px;\n height: 18px;\n }\n .ml-mobile-cmd-chips {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 6px;\n flex: 0 1 auto;\n min-width: 0;\n }\n .ml-mobile-cmd-chips:not([hidden]) {\n padding: 0;\n border: 0;\n }\n .ml-mobile-cmd-chips[hidden] {\n display: none;\n }\n .ml-mobile-cmd-chip {\n min-height: 32px;\n padding: 4px 10px;\n border-radius: 16px;\n border: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.16));\n background: var(--ml-ui-bg-elevated, rgba(255, 255, 255, 0.06));\n color: var(--ml-ui-accent, #08e8de);\n font-size: 13px;\n }\n .ml-mobile-cmd-chip:disabled {\n opacity: 0.45;\n }\n .ml-mobile-cmd-cancel,\n .ml-mobile-cmd-confirm {\n box-sizing: border-box;\n flex: 0 0 36px;\n align-self: center;\n margin: 0;\n width: 36px;\n height: 36px;\n padding: 0;\n border-radius: 50%;\n border: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n cursor: pointer;\n color: #fff;\n }\n .ml-mobile-cmd-cancel svg,\n .ml-mobile-cmd-confirm svg {\n display: block;\n width: 18px;\n height: 18px;\n }\n .ml-mobile-cmd-cancel {\n background: #5c6370;\n }\n .ml-mobile-cmd-confirm {\n background: var(--ml-ui-accent, #1a8cff);\n }\n .ml-mobile-cmd-confirm:disabled {\n opacity: 0.35;\n cursor: default;\n }\n .ml-mobile-cmd-actions-shared {\n display: none;\n }\n .ml-mobile-cmd-panel.is-collapsed .ml-mobile-cmd-actions-shared {\n display: none !important;\n }\n @media (min-width: ".concat(ML_UI_SESSION_PANEL_WIDTH, "px) {\n .ml-mobile-cmd-metric-stack {\n flex-direction: row;\n align-items: center;\n gap: 16px;\n }\n .ml-mobile-cmd-metric {\n flex: 1;\n }\n }\n @media (min-width: ").concat(ML_UI_MOBILE_MAX_WIDTH + 1, "px) {\n .ml-mobile-cmd-panel {\n left: 50%;\n right: auto;\n width: ").concat(ML_UI_SESSION_PANEL_WIDTH, "px;\n max-width: ").concat(ML_UI_SESSION_PANEL_MAX_WIDTH, ";\n transform: translateX(-50%);\n border-radius: 12px 12px 0 0;\n border: 1px solid var(--ml-ui-border, rgba(255, 255, 255, 0.12));\n border-bottom: 0;\n }\n .ml-mobile-cmd-panel.is-collapsed {\n width: ").concat(ML_UI_SESSION_PANEL_WIDTH, "px;\n max-width: ").concat(ML_UI_SESSION_PANEL_MAX_WIDTH, ";\n }\n .ml-mobile-cmd-group .ml-mobile-cmd-actions {\n display: none;\n }\n .ml-mobile-cmd-actions-shared {\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n }\n .ml-mobile-cmd-panel.is-absolute .ml-mobile-cmd-group-abs {\n align-items: center;\n }\n .ml-mobile-cmd-panel.is-absolute .ml-mobile-cmd-actions-shared {\n align-self: center;\n }\n .ml-mobile-cmd-panel.is-relative:not([hidden]),\n .ml-mobile-cmd-panel.is-absolute:not([hidden]) {\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: stretch;\n row-gap: 0;\n column-gap: 8px;\n }\n .ml-mobile-cmd-panel.is-relative {\n grid-template-areas:\n 'accessory accessory'\n 'prompt prompt'\n 'polar shared'\n 'delta shared';\n }\n .ml-mobile-cmd-panel.is-absolute {\n grid-template-areas:\n 'accessory accessory'\n 'prompt prompt'\n 'abs shared';\n }\n .ml-mobile-cmd-panel.is-string-input {\n display: grid;\n grid-template-columns: 1fr auto;\n align-items: stretch;\n row-gap: 0;\n column-gap: 8px;\n grid-template-areas:\n 'accessory accessory'\n 'prompt prompt'\n 'string shared';\n }\n .ml-mobile-cmd-group-polar { grid-area: polar; }\n .ml-mobile-cmd-group-delta { grid-area: delta; }\n .ml-mobile-cmd-group-abs { grid-area: abs; }\n .ml-mobile-cmd-group-string { grid-area: string; }\n .ml-mobile-cmd-actions-shared { grid-area: shared; }\n .ml-mobile-cmd-accessory { grid-area: accessory; }\n .ml-mobile-cmd-prompt-row { grid-area: prompt; }\n .ml-mobile-cmd-panel.is-string-input .ml-mobile-cmd-group-string {\n align-items: stretch;\n }\n .ml-mobile-cmd-panel.is-string-input .ml-mobile-cmd-actions-shared {\n align-self: stretch;\n align-items: center;\n }\n .ml-mobile-cmd-panel.is-relative .ml-mobile-cmd-group-polar {\n padding-bottom: 6px;\n }\n .ml-mobile-cmd-panel.is-relative .ml-mobile-cmd-group-delta {\n padding-top: 6px;\n }\n .ml-mobile-cmd-panel.is-actions-only {\n display: flex;\n flex-direction: column;\n }\n .ml-mobile-cmd-panel.is-actions-only .ml-mobile-cmd-actions-shared {\n border-left: 0;\n padding-left: 0;\n justify-content: flex-end;\n align-self: flex-end;\n }\n .ml-mobile-cmd-panel.is-collapsed {\n display: flex !important;\n flex-direction: row;\n align-items: center;\n transform: translateX(-50%);\n }\n }\n");
557
822
  //# sourceMappingURL=AcUiMobileSessionPanel.js.map