@multiplatform.one/backoffice 7.28.0 → 7.29.0

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 (759) hide show
  1. package/README.md +1 -1
  2. package/dist/cjs/chrome/BackofficeAwesomebar.native.js +1 -1
  3. package/dist/cjs/chrome/BackofficeAwesomebar.native.js.map +1 -1
  4. package/dist/cjs/chrome/CommandPalette.native.js +1 -1
  5. package/dist/cjs/chrome/CommandPalette.native.js.map +1 -1
  6. package/dist/cjs/chrome/HelpMenu.native.js +1 -1
  7. package/dist/cjs/chrome/HelpMenu.native.js.map +1 -1
  8. package/dist/cjs/chrome/NotificationsButton.native.js +1 -1
  9. package/dist/cjs/chrome/NotificationsButton.native.js.map +1 -1
  10. package/dist/cjs/chrome/UserMenu.native.js +1 -1
  11. package/dist/cjs/chrome/UserMenu.native.js.map +1 -1
  12. package/dist/cjs/chrome/awesomebar-data.native.js.map +1 -1
  13. package/dist/cjs/chrome/command-palette-model.native.js +1 -1
  14. package/dist/cjs/chrome/command-palette-model.native.js.map +1 -1
  15. package/dist/cjs/chrome/help-about-dialog.native.js +1 -1
  16. package/dist/cjs/chrome/help-about-dialog.native.js.map +1 -1
  17. package/dist/cjs/chrome/help-shortcuts-dialog.native.js +1 -1
  18. package/dist/cjs/chrome/help-shortcuts-dialog.native.js.map +1 -1
  19. package/dist/cjs/chrome/notifications-data.native.js.map +1 -1
  20. package/dist/cjs/chrome/notifications-panel.native.js +1 -1
  21. package/dist/cjs/chrome/notifications-panel.native.js.map +1 -1
  22. package/dist/cjs/chrome/notifications-utils.native.js.map +1 -1
  23. package/dist/cjs/chrome/shortcuts.native.js.map +1 -1
  24. package/dist/cjs/chrome/user-session.native.js.map +1 -1
  25. package/dist/cjs/config/BackofficeProvider.native.js +1 -1
  26. package/dist/cjs/config/BackofficeProvider.native.js.map +1 -1
  27. package/dist/cjs/config/capabilities.native.js.map +1 -1
  28. package/dist/cjs/config/events.native.js.map +1 -1
  29. package/dist/cjs/config/slots.native.js.map +1 -1
  30. package/dist/cjs/desk/Desk.native.js.map +1 -1
  31. package/dist/cjs/desk/DeskSurface.native.js.map +1 -1
  32. package/dist/cjs/desk/resolveDeskPath.native.js.map +1 -1
  33. package/dist/cjs/desk/scope.native.js.map +1 -1
  34. package/dist/cjs/desk/target.native.js.map +1 -1
  35. package/dist/cjs/form/DocFormScreen.cjs +167 -224
  36. package/dist/cjs/form/DocFormScreen.native.js +183 -260
  37. package/dist/cjs/form/DocFormScreen.native.js.map +1 -1
  38. package/dist/cjs/form/FormConnections.native.js +1 -1
  39. package/dist/cjs/form/FormConnections.native.js.map +1 -1
  40. package/dist/cjs/form/FormDialogs.native.js +1 -1
  41. package/dist/cjs/form/FormDialogs.native.js.map +1 -1
  42. package/dist/cjs/form/FormErrorBoundary.native.js +1 -1
  43. package/dist/cjs/form/FormErrorBoundary.native.js.map +1 -1
  44. package/dist/cjs/form/FormHeaderCluster.native.js +1 -1
  45. package/dist/cjs/form/FormHeaderCluster.native.js.map +1 -1
  46. package/dist/cjs/form/FormSidebarPanel.native.js +1 -1
  47. package/dist/cjs/form/FormSidebarPanel.native.js.map +1 -1
  48. package/dist/cjs/form/FormTimeline.native.js +1 -1
  49. package/dist/cjs/form/FormTimeline.native.js.map +1 -1
  50. package/dist/cjs/form/FormToolbar.native.js +1 -1
  51. package/dist/cjs/form/FormToolbar.native.js.map +1 -1
  52. package/dist/cjs/form/connections-data.native.js.map +1 -1
  53. package/dist/cjs/form/createPrefill.native.js.map +1 -1
  54. package/dist/cjs/form/dependsOn.native.js.map +1 -1
  55. package/dist/cjs/form/dirtyTracking.native.js.map +1 -1
  56. package/dist/cjs/form/docinfo.native.js.map +1 -1
  57. package/dist/cjs/form/fetchFrom.native.js.map +1 -1
  58. package/dist/cjs/form/fieldPermissions.native.js.map +1 -1
  59. package/dist/cjs/form/formActions.native.js.map +1 -1
  60. package/dist/cjs/form/formLayout.native.js.map +1 -1
  61. package/dist/cjs/form/platformHooks.native.js.map +1 -1
  62. package/dist/cjs/form/sidebar-attachments.native.js +1 -1
  63. package/dist/cjs/form/sidebar-attachments.native.js.map +1 -1
  64. package/dist/cjs/form/sidebar-dialogs.native.js +1 -1
  65. package/dist/cjs/form/sidebar-dialogs.native.js.map +1 -1
  66. package/dist/cjs/form/sidebar-people.native.js +1 -1
  67. package/dist/cjs/form/sidebar-people.native.js.map +1 -1
  68. package/dist/cjs/form/sidebar-rpc.native.js.map +1 -1
  69. package/dist/cjs/form/sidebar-utils.native.js.map +1 -1
  70. package/dist/cjs/form/timeline-entries.native.js.map +1 -1
  71. package/dist/cjs/form/timeline-utils.native.js.map +1 -1
  72. package/dist/cjs/form/useFormEngine.native.js.map +1 -1
  73. package/dist/cjs/i18n/en.cjs +1 -0
  74. package/dist/cjs/i18n/en.native.js +1 -0
  75. package/dist/cjs/i18n/en.native.js.map +1 -1
  76. package/dist/cjs/i18n/index.native.js.map +1 -1
  77. package/dist/cjs/index.native.js +1 -1
  78. package/dist/cjs/index.native.js.map +1 -1
  79. package/dist/cjs/list/AddTagsDialog.native.js +1 -1
  80. package/dist/cjs/list/AddTagsDialog.native.js.map +1 -1
  81. package/dist/cjs/list/AssignToDialog.native.js +1 -1
  82. package/dist/cjs/list/AssignToDialog.native.js.map +1 -1
  83. package/dist/cjs/list/DoctypeListScreen.native.js +1 -1
  84. package/dist/cjs/list/DoctypeListScreen.native.js.map +1 -1
  85. package/dist/cjs/list/ListBulkActionsBar.cjs +30 -18
  86. package/dist/cjs/list/ListBulkActionsBar.native.js +44 -32
  87. package/dist/cjs/list/ListBulkActionsBar.native.js.map +1 -1
  88. package/dist/cjs/list/ListFilterBar.native.js +1 -1
  89. package/dist/cjs/list/ListFilterBar.native.js.map +1 -1
  90. package/dist/cjs/list/ListSidebar.native.js +1 -1
  91. package/dist/cjs/list/ListSidebar.native.js.map +1 -1
  92. package/dist/cjs/list/bulk-edit-dialog.native.js +1 -1
  93. package/dist/cjs/list/bulk-edit-dialog.native.js.map +1 -1
  94. package/dist/cjs/list/bulk-export.native.js.map +1 -1
  95. package/dist/cjs/list/bulk-submit-cancel.native.js.map +1 -1
  96. package/dist/cjs/list/bulkActions.native.js.map +1 -1
  97. package/dist/cjs/list/filter-chips.native.js +1 -1
  98. package/dist/cjs/list/filter-chips.native.js.map +1 -1
  99. package/dist/cjs/list/filter-editor.native.js +1 -1
  100. package/dist/cjs/list/filter-editor.native.js.map +1 -1
  101. package/dist/cjs/list/filter-fields.native.js.map +1 -1
  102. package/dist/cjs/list/filter-saved.native.js +1 -1
  103. package/dist/cjs/list/filter-saved.native.js.map +1 -1
  104. package/dist/cjs/list/filter-sort.native.js +1 -1
  105. package/dist/cjs/list/filter-sort.native.js.map +1 -1
  106. package/dist/cjs/list/filter-standard.native.js.map +1 -1
  107. package/dist/cjs/list/filterConversion.native.js.map +1 -1
  108. package/dist/cjs/list/list-tools-sheet.native.js +1 -1
  109. package/dist/cjs/list/list-tools-sheet.native.js.map +1 -1
  110. package/dist/cjs/list/listColumns.native.js.map +1 -1
  111. package/dist/cjs/list/listFields.native.js.map +1 -1
  112. package/dist/cjs/list/listFormat.native.js.map +1 -1
  113. package/dist/cjs/list/listUrlState.native.js.map +1 -1
  114. package/dist/cjs/list/sidebar-section.cjs +15 -7
  115. package/dist/cjs/list/sidebar-section.native.js +17 -8
  116. package/dist/cjs/list/sidebar-section.native.js.map +1 -1
  117. package/dist/cjs/list/sidebar-stats.native.js.map +1 -1
  118. package/dist/cjs/list/statusColors.native.js.map +1 -1
  119. package/dist/cjs/navigation/navigator.native.js.map +1 -1
  120. package/dist/cjs/navigation/paths.native.js.map +1 -1
  121. package/dist/cjs/oneAdapter/index.native.js.map +1 -1
  122. package/dist/cjs/quickEntry/QuickEntryDialog.native.js +1 -1
  123. package/dist/cjs/quickEntry/QuickEntryDialog.native.js.map +1 -1
  124. package/dist/cjs/quickEntry/quickEntryPlan.native.js.map +1 -1
  125. package/dist/cjs/report/DoctypeReportView.cjs +20 -374
  126. package/dist/cjs/report/DoctypeReportView.native.js +23 -455
  127. package/dist/cjs/report/DoctypeReportView.native.js.map +1 -1
  128. package/dist/cjs/report/QueryReportScreen.cjs +33 -23
  129. package/dist/cjs/report/QueryReportScreen.native.js +34 -24
  130. package/dist/cjs/report/QueryReportScreen.native.js.map +1 -1
  131. package/dist/cjs/report/queryReportColumns.cjs +3 -105
  132. package/dist/cjs/report/queryReportColumns.native.js +2 -129
  133. package/dist/cjs/report/queryReportColumns.native.js.map +1 -1
  134. package/dist/cjs/report/queryReportFilterBar.cjs +3 -4
  135. package/dist/cjs/report/queryReportFilterBar.native.js +4 -5
  136. package/dist/cjs/report/queryReportFilterBar.native.js.map +1 -1
  137. package/dist/cjs/report/queryReportUrlState.cjs +2 -2
  138. package/dist/cjs/report/queryReportUrlState.native.js +2 -2
  139. package/dist/cjs/report/queryReportUrlState.native.js.map +1 -1
  140. package/dist/cjs/report/report-grid.cjs +2 -426
  141. package/dist/cjs/report/report-grid.native.js +1 -479
  142. package/dist/cjs/report/report-grid.native.js.map +1 -1
  143. package/dist/cjs/report/report-toolbar.cjs +2 -228
  144. package/dist/cjs/report/report-toolbar.native.js +1 -274
  145. package/dist/cjs/report/report-toolbar.native.js.map +1 -1
  146. package/dist/cjs/report/reportShapes.cjs +12 -383
  147. package/dist/cjs/report/reportShapes.native.js +12 -501
  148. package/dist/cjs/report/reportShapes.native.js.map +1 -1
  149. package/dist/cjs/report/reportViewModel.cjs +20 -360
  150. package/dist/cjs/report/reportViewModel.native.js +19 -627
  151. package/dist/cjs/report/reportViewModel.native.js.map +1 -1
  152. package/dist/cjs/report/savedReports.cjs +2 -106
  153. package/dist/cjs/report/savedReports.native.js +1 -132
  154. package/dist/cjs/report/savedReports.native.js.map +1 -1
  155. package/dist/cjs/report/useQueryReport.cjs +11 -219
  156. package/dist/cjs/report/useQueryReport.native.js +11 -244
  157. package/dist/cjs/report/useQueryReport.native.js.map +1 -1
  158. package/dist/cjs/shared/deskLinks.native.js.map +1 -1
  159. package/dist/cjs/shared/listNavContext.native.js.map +1 -1
  160. package/dist/cjs/shared/measures.cjs +3 -5
  161. package/dist/cjs/shared/measures.native.js +3 -5
  162. package/dist/cjs/shared/measures.native.js.map +1 -1
  163. package/dist/cjs/shared/types.native.js.map +1 -1
  164. package/dist/cjs/shared/useDocinfo.native.js.map +1 -1
  165. package/dist/cjs/shared/useDoctypeMeta.native.js.map +1 -1
  166. package/dist/cjs/shared/useFrappeApp.native.js.map +1 -1
  167. package/dist/cjs/shared/useRecentVisit.native.js.map +1 -1
  168. package/dist/cjs/shared/useSessionUserId.native.js.map +1 -1
  169. package/dist/cjs/shared/useSlugTarget.native.js.map +1 -1
  170. package/dist/cjs/shared/useUserRoles.native.js.map +1 -1
  171. package/dist/cjs/shell/BackofficeShell.native.js +1 -1
  172. package/dist/cjs/shell/BackofficeShell.native.js.map +1 -1
  173. package/dist/cjs/shell/HomeRedirect.native.js +1 -1
  174. package/dist/cjs/shell/HomeRedirect.native.js.map +1 -1
  175. package/dist/cjs/shell/NotFoundScreen.native.js +1 -1
  176. package/dist/cjs/shell/NotFoundScreen.native.js.map +1 -1
  177. package/dist/cjs/shell/SlugScreen.native.js +1 -1
  178. package/dist/cjs/shell/SlugScreen.native.js.map +1 -1
  179. package/dist/cjs/shell/WorkspaceSidebar.native.js +1 -1
  180. package/dist/cjs/shell/WorkspaceSidebar.native.js.map +1 -1
  181. package/dist/cjs/shell/useWorkspaces.native.js.map +1 -1
  182. package/dist/cjs/shell/workspaceIcons.native.js.map +1 -1
  183. package/dist/cjs/views/CalendarView.native.js +1 -1
  184. package/dist/cjs/views/CalendarView.native.js.map +1 -1
  185. package/dist/cjs/views/DashboardView.native.js +1 -1
  186. package/dist/cjs/views/DashboardView.native.js.map +1 -1
  187. package/dist/cjs/views/DoctypeViewScreen.native.js.map +1 -1
  188. package/dist/cjs/views/ImageView.native.js +1 -1
  189. package/dist/cjs/views/ImageView.native.js.map +1 -1
  190. package/dist/cjs/views/KanbanView.native.js +1 -1
  191. package/dist/cjs/views/KanbanView.native.js.map +1 -1
  192. package/dist/cjs/views/ReportView.cjs +3 -256
  193. package/dist/cjs/views/ReportView.native.js +3 -382
  194. package/dist/cjs/views/ReportView.native.js.map +1 -1
  195. package/dist/cjs/views/TreeView.native.js +1 -1
  196. package/dist/cjs/views/TreeView.native.js.map +1 -1
  197. package/dist/cjs/views/ViewHeader.native.js +1 -1
  198. package/dist/cjs/views/ViewHeader.native.js.map +1 -1
  199. package/dist/cjs/views/ViewStates.native.js +1 -1
  200. package/dist/cjs/views/ViewStates.native.js.map +1 -1
  201. package/dist/cjs/views/ViewSwitcherMenu.native.js +1 -1
  202. package/dist/cjs/views/ViewSwitcherMenu.native.js.map +1 -1
  203. package/dist/cjs/views/calendar-field-selector.native.js +1 -1
  204. package/dist/cjs/views/calendar-field-selector.native.js.map +1 -1
  205. package/dist/cjs/views/connection.native.js.map +1 -1
  206. package/dist/cjs/views/dashboard-data.native.js.map +1 -1
  207. package/dist/cjs/views/deskViewConfigs.native.js.map +1 -1
  208. package/dist/cjs/views/kanban-board-controls.native.js +1 -1
  209. package/dist/cjs/views/kanban-board-controls.native.js.map +1 -1
  210. package/dist/cjs/views/kanban-field-picker.native.js +1 -1
  211. package/dist/cjs/views/kanban-field-picker.native.js.map +1 -1
  212. package/dist/cjs/views/kanbanBoardOps.native.js.map +1 -1
  213. package/dist/cjs/views/report-controls.cjs +6 -6
  214. package/dist/cjs/views/report-controls.native.js +7 -7
  215. package/dist/cjs/views/report-controls.native.js.map +1 -1
  216. package/dist/cjs/views/viewAvailability.native.js.map +1 -1
  217. package/dist/cjs/views/viewMeta.native.js.map +1 -1
  218. package/dist/cjs/workspace/WorkspaceChartBlock.native.js +1 -1
  219. package/dist/cjs/workspace/WorkspaceChartBlock.native.js.map +1 -1
  220. package/dist/cjs/workspace/WorkspaceGrid.native.js.map +1 -1
  221. package/dist/cjs/workspace/WorkspaceLinkCard.native.js +1 -1
  222. package/dist/cjs/workspace/WorkspaceLinkCard.native.js.map +1 -1
  223. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js +1 -1
  224. package/dist/cjs/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  225. package/dist/cjs/workspace/WorkspaceNumberCard.native.js +1 -1
  226. package/dist/cjs/workspace/WorkspaceNumberCard.native.js.map +1 -1
  227. package/dist/cjs/workspace/WorkspaceQuickList.native.js +1 -1
  228. package/dist/cjs/workspace/WorkspaceQuickList.native.js.map +1 -1
  229. package/dist/cjs/workspace/WorkspaceRecents.native.js +1 -1
  230. package/dist/cjs/workspace/WorkspaceRecents.native.js.map +1 -1
  231. package/dist/cjs/workspace/WorkspaceScreen.native.js +1 -1
  232. package/dist/cjs/workspace/WorkspaceScreen.native.js.map +1 -1
  233. package/dist/cjs/workspace/WorkspaceShortcut.native.js +1 -1
  234. package/dist/cjs/workspace/WorkspaceShortcut.native.js.map +1 -1
  235. package/dist/cjs/workspace/parseContent.native.js.map +1 -1
  236. package/dist/cjs/workspace/types.native.js.map +1 -1
  237. package/dist/cjs/workspace/useDashboardChart.native.js.map +1 -1
  238. package/dist/cjs/workspace/useWorkspaceDoc.native.js.map +1 -1
  239. package/dist/esm/chrome/BackofficeAwesomebar.native.js.map +1 -1
  240. package/dist/esm/chrome/CommandPalette.native.js.map +1 -1
  241. package/dist/esm/chrome/HelpMenu.native.js.map +1 -1
  242. package/dist/esm/chrome/NotificationsButton.native.js.map +1 -1
  243. package/dist/esm/chrome/UserMenu.native.js.map +1 -1
  244. package/dist/esm/chrome/awesomebar-data.native.js.map +1 -1
  245. package/dist/esm/chrome/command-palette-model.native.js.map +1 -1
  246. package/dist/esm/chrome/help-about-dialog.native.js.map +1 -1
  247. package/dist/esm/chrome/help-shortcuts-dialog.native.js.map +1 -1
  248. package/dist/esm/chrome/notifications-data.native.js.map +1 -1
  249. package/dist/esm/chrome/notifications-panel.native.js.map +1 -1
  250. package/dist/esm/chrome/notifications-utils.native.js.map +1 -1
  251. package/dist/esm/chrome/shortcuts.native.js.map +1 -1
  252. package/dist/esm/chrome/user-session.native.js.map +1 -1
  253. package/dist/esm/config/BackofficeProvider.native.js.map +1 -1
  254. package/dist/esm/config/capabilities.native.js.map +1 -1
  255. package/dist/esm/config/events.native.js.map +1 -1
  256. package/dist/esm/config/slots.native.js.map +1 -1
  257. package/dist/esm/desk/Desk.native.js.map +1 -1
  258. package/dist/esm/desk/DeskSurface.mjs.map +1 -1
  259. package/dist/esm/desk/DeskSurface.native.js.map +1 -1
  260. package/dist/esm/desk/resolveDeskPath.native.js.map +1 -1
  261. package/dist/esm/desk/scope.native.js.map +1 -1
  262. package/dist/esm/desk/target.native.js.map +1 -1
  263. package/dist/esm/form/DocFormScreen.mjs +169 -226
  264. package/dist/esm/form/DocFormScreen.mjs.map +1 -1
  265. package/dist/esm/form/DocFormScreen.native.js +184 -261
  266. package/dist/esm/form/DocFormScreen.native.js.map +1 -1
  267. package/dist/esm/form/FormConnections.native.js.map +1 -1
  268. package/dist/esm/form/FormDialogs.native.js.map +1 -1
  269. package/dist/esm/form/FormErrorBoundary.native.js.map +1 -1
  270. package/dist/esm/form/FormHeaderCluster.native.js.map +1 -1
  271. package/dist/esm/form/FormSidebarPanel.native.js.map +1 -1
  272. package/dist/esm/form/FormTimeline.native.js.map +1 -1
  273. package/dist/esm/form/FormToolbar.native.js.map +1 -1
  274. package/dist/esm/form/connections-data.native.js.map +1 -1
  275. package/dist/esm/form/createPrefill.native.js.map +1 -1
  276. package/dist/esm/form/dependsOn.native.js.map +1 -1
  277. package/dist/esm/form/dirtyTracking.native.js.map +1 -1
  278. package/dist/esm/form/docinfo.native.js.map +1 -1
  279. package/dist/esm/form/fetchFrom.native.js.map +1 -1
  280. package/dist/esm/form/fieldPermissions.native.js.map +1 -1
  281. package/dist/esm/form/formActions.native.js.map +1 -1
  282. package/dist/esm/form/formLayout.native.js.map +1 -1
  283. package/dist/esm/form/platformHooks.native.js.map +1 -1
  284. package/dist/esm/form/sidebar-attachments.native.js.map +1 -1
  285. package/dist/esm/form/sidebar-dialogs.native.js.map +1 -1
  286. package/dist/esm/form/sidebar-people.native.js.map +1 -1
  287. package/dist/esm/form/sidebar-rpc.native.js.map +1 -1
  288. package/dist/esm/form/sidebar-utils.native.js.map +1 -1
  289. package/dist/esm/form/timeline-entries.native.js.map +1 -1
  290. package/dist/esm/form/timeline-utils.native.js.map +1 -1
  291. package/dist/esm/form/useFormEngine.native.js.map +1 -1
  292. package/dist/esm/i18n/en.mjs +1 -0
  293. package/dist/esm/i18n/en.mjs.map +1 -1
  294. package/dist/esm/i18n/en.native.js +1 -0
  295. package/dist/esm/i18n/en.native.js.map +1 -1
  296. package/dist/esm/i18n/index.native.js.map +1 -1
  297. package/dist/esm/index.native.js.map +1 -1
  298. package/dist/esm/list/AddTagsDialog.native.js.map +1 -1
  299. package/dist/esm/list/AssignToDialog.native.js.map +1 -1
  300. package/dist/esm/list/DoctypeListScreen.native.js.map +1 -1
  301. package/dist/esm/list/ListBulkActionsBar.mjs +31 -19
  302. package/dist/esm/list/ListBulkActionsBar.mjs.map +1 -1
  303. package/dist/esm/list/ListBulkActionsBar.native.js +37 -25
  304. package/dist/esm/list/ListBulkActionsBar.native.js.map +1 -1
  305. package/dist/esm/list/ListFilterBar.native.js.map +1 -1
  306. package/dist/esm/list/ListSidebar.native.js.map +1 -1
  307. package/dist/esm/list/bulk-edit-dialog.native.js.map +1 -1
  308. package/dist/esm/list/bulk-export.native.js.map +1 -1
  309. package/dist/esm/list/bulk-submit-cancel.native.js.map +1 -1
  310. package/dist/esm/list/bulkActions.native.js.map +1 -1
  311. package/dist/esm/list/filter-chips.native.js.map +1 -1
  312. package/dist/esm/list/filter-editor.native.js.map +1 -1
  313. package/dist/esm/list/filter-fields.native.js.map +1 -1
  314. package/dist/esm/list/filter-saved.native.js.map +1 -1
  315. package/dist/esm/list/filter-sort.native.js.map +1 -1
  316. package/dist/esm/list/filter-standard.native.js.map +1 -1
  317. package/dist/esm/list/filterConversion.native.js.map +1 -1
  318. package/dist/esm/list/list-tools-sheet.native.js.map +1 -1
  319. package/dist/esm/list/listColumns.native.js.map +1 -1
  320. package/dist/esm/list/listFields.native.js.map +1 -1
  321. package/dist/esm/list/listFormat.native.js.map +1 -1
  322. package/dist/esm/list/listUrlState.native.js.map +1 -1
  323. package/dist/esm/list/sidebar-section.mjs +16 -8
  324. package/dist/esm/list/sidebar-section.mjs.map +1 -1
  325. package/dist/esm/list/sidebar-section.native.js +17 -8
  326. package/dist/esm/list/sidebar-section.native.js.map +1 -1
  327. package/dist/esm/list/sidebar-stats.native.js.map +1 -1
  328. package/dist/esm/list/statusColors.native.js.map +1 -1
  329. package/dist/esm/navigation/navigator.native.js.map +1 -1
  330. package/dist/esm/navigation/paths.native.js.map +1 -1
  331. package/dist/esm/oneAdapter/index.native.js.map +1 -1
  332. package/dist/esm/quickEntry/QuickEntryDialog.native.js.map +1 -1
  333. package/dist/esm/quickEntry/quickEntryPlan.native.js.map +1 -1
  334. package/dist/esm/report/DoctypeReportView.mjs +21 -375
  335. package/dist/esm/report/DoctypeReportView.mjs.map +1 -1
  336. package/dist/esm/report/DoctypeReportView.native.js +24 -456
  337. package/dist/esm/report/DoctypeReportView.native.js.map +1 -1
  338. package/dist/esm/report/QueryReportScreen.mjs +26 -16
  339. package/dist/esm/report/QueryReportScreen.mjs.map +1 -1
  340. package/dist/esm/report/QueryReportScreen.native.js +26 -16
  341. package/dist/esm/report/QueryReportScreen.native.js.map +1 -1
  342. package/dist/esm/report/queryReportColumns.mjs +1 -103
  343. package/dist/esm/report/queryReportColumns.mjs.map +1 -1
  344. package/dist/esm/report/queryReportColumns.native.js +1 -117
  345. package/dist/esm/report/queryReportColumns.native.js.map +1 -1
  346. package/dist/esm/report/queryReportFilterBar.mjs +1 -2
  347. package/dist/esm/report/queryReportFilterBar.mjs.map +1 -1
  348. package/dist/esm/report/queryReportFilterBar.native.js +1 -2
  349. package/dist/esm/report/queryReportFilterBar.native.js.map +1 -1
  350. package/dist/esm/report/queryReportUrlState.mjs +1 -1
  351. package/dist/esm/report/queryReportUrlState.native.js +1 -1
  352. package/dist/esm/report/queryReportUrlState.native.js.map +1 -1
  353. package/dist/esm/report/report-grid.mjs +1 -425
  354. package/dist/esm/report/report-grid.mjs.map +1 -1
  355. package/dist/esm/report/report-grid.native.js +1 -468
  356. package/dist/esm/report/report-grid.native.js.map +1 -1
  357. package/dist/esm/report/report-toolbar.mjs +2 -228
  358. package/dist/esm/report/report-toolbar.mjs.map +1 -1
  359. package/dist/esm/report/report-toolbar.native.js +2 -264
  360. package/dist/esm/report/report-toolbar.native.js.map +1 -1
  361. package/dist/esm/report/reportShapes.mjs +2 -373
  362. package/dist/esm/report/reportShapes.mjs.map +1 -1
  363. package/dist/esm/report/reportShapes.native.js +2 -491
  364. package/dist/esm/report/reportShapes.native.js.map +1 -1
  365. package/dist/esm/report/reportViewModel.mjs +2 -342
  366. package/dist/esm/report/reportViewModel.mjs.map +1 -1
  367. package/dist/esm/report/reportViewModel.native.js +2 -610
  368. package/dist/esm/report/reportViewModel.native.js.map +1 -1
  369. package/dist/esm/report/savedReports.mjs +1 -105
  370. package/dist/esm/report/savedReports.mjs.map +1 -1
  371. package/dist/esm/report/savedReports.native.js +1 -132
  372. package/dist/esm/report/savedReports.native.js.map +1 -1
  373. package/dist/esm/report/useQueryReport.mjs +2 -210
  374. package/dist/esm/report/useQueryReport.mjs.map +1 -1
  375. package/dist/esm/report/useQueryReport.native.js +2 -235
  376. package/dist/esm/report/useQueryReport.native.js.map +1 -1
  377. package/dist/esm/shared/deskLinks.native.js.map +1 -1
  378. package/dist/esm/shared/listNavContext.native.js.map +1 -1
  379. package/dist/esm/shared/measures.mjs +1 -3
  380. package/dist/esm/shared/measures.mjs.map +1 -1
  381. package/dist/esm/shared/measures.native.js +1 -3
  382. package/dist/esm/shared/measures.native.js.map +1 -1
  383. package/dist/esm/shared/types.native.js.map +1 -1
  384. package/dist/esm/shared/useDocinfo.native.js.map +1 -1
  385. package/dist/esm/shared/useDoctypeMeta.native.js.map +1 -1
  386. package/dist/esm/shared/useFrappeApp.native.js.map +1 -1
  387. package/dist/esm/shared/useRecentVisit.native.js.map +1 -1
  388. package/dist/esm/shared/useSessionUserId.native.js.map +1 -1
  389. package/dist/esm/shared/useSlugTarget.native.js.map +1 -1
  390. package/dist/esm/shared/useUserRoles.native.js.map +1 -1
  391. package/dist/esm/shell/BackofficeShell.native.js.map +1 -1
  392. package/dist/esm/shell/HomeRedirect.native.js.map +1 -1
  393. package/dist/esm/shell/NotFoundScreen.native.js.map +1 -1
  394. package/dist/esm/shell/SlugScreen.native.js.map +1 -1
  395. package/dist/esm/shell/WorkspaceSidebar.native.js.map +1 -1
  396. package/dist/esm/shell/useWorkspaces.native.js.map +1 -1
  397. package/dist/esm/shell/workspaceIcons.native.js.map +1 -1
  398. package/dist/esm/views/CalendarView.native.js.map +1 -1
  399. package/dist/esm/views/DashboardView.native.js.map +1 -1
  400. package/dist/esm/views/DoctypeViewScreen.native.js.map +1 -1
  401. package/dist/esm/views/ImageView.native.js.map +1 -1
  402. package/dist/esm/views/KanbanView.native.js.map +1 -1
  403. package/dist/esm/views/ReportView.mjs +3 -256
  404. package/dist/esm/views/ReportView.mjs.map +1 -1
  405. package/dist/esm/views/ReportView.native.js +3 -382
  406. package/dist/esm/views/ReportView.native.js.map +1 -1
  407. package/dist/esm/views/TreeView.native.js.map +1 -1
  408. package/dist/esm/views/ViewHeader.native.js.map +1 -1
  409. package/dist/esm/views/ViewStates.native.js.map +1 -1
  410. package/dist/esm/views/ViewSwitcherMenu.native.js.map +1 -1
  411. package/dist/esm/views/calendar-field-selector.native.js.map +1 -1
  412. package/dist/esm/views/connection.native.js.map +1 -1
  413. package/dist/esm/views/dashboard-data.native.js.map +1 -1
  414. package/dist/esm/views/deskViewConfigs.native.js.map +1 -1
  415. package/dist/esm/views/kanban-board-controls.native.js.map +1 -1
  416. package/dist/esm/views/kanban-field-picker.native.js.map +1 -1
  417. package/dist/esm/views/kanbanBoardOps.native.js.map +1 -1
  418. package/dist/esm/views/report-controls.mjs +3 -3
  419. package/dist/esm/views/report-controls.mjs.map +1 -1
  420. package/dist/esm/views/report-controls.native.js +3 -3
  421. package/dist/esm/views/report-controls.native.js.map +1 -1
  422. package/dist/esm/views/viewAvailability.native.js.map +1 -1
  423. package/dist/esm/views/viewMeta.native.js.map +1 -1
  424. package/dist/esm/workspace/WorkspaceChartBlock.native.js.map +1 -1
  425. package/dist/esm/workspace/WorkspaceGrid.native.js.map +1 -1
  426. package/dist/esm/workspace/WorkspaceLinkCard.native.js.map +1 -1
  427. package/dist/esm/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  428. package/dist/esm/workspace/WorkspaceNumberCard.native.js.map +1 -1
  429. package/dist/esm/workspace/WorkspaceQuickList.native.js.map +1 -1
  430. package/dist/esm/workspace/WorkspaceRecents.native.js.map +1 -1
  431. package/dist/esm/workspace/WorkspaceScreen.native.js.map +1 -1
  432. package/dist/esm/workspace/WorkspaceShortcut.native.js.map +1 -1
  433. package/dist/esm/workspace/parseContent.native.js.map +1 -1
  434. package/dist/esm/workspace/types.native.js.map +1 -1
  435. package/dist/esm/workspace/useDashboardChart.native.js.map +1 -1
  436. package/dist/esm/workspace/useWorkspaceDoc.native.js.map +1 -1
  437. package/dist/jsx/chrome/BackofficeAwesomebar.native.js +1 -1
  438. package/dist/jsx/chrome/BackofficeAwesomebar.native.js.map +1 -1
  439. package/dist/jsx/chrome/CommandPalette.native.js +1 -1
  440. package/dist/jsx/chrome/CommandPalette.native.js.map +1 -1
  441. package/dist/jsx/chrome/HelpMenu.native.js +1 -1
  442. package/dist/jsx/chrome/HelpMenu.native.js.map +1 -1
  443. package/dist/jsx/chrome/NotificationsButton.native.js +1 -1
  444. package/dist/jsx/chrome/NotificationsButton.native.js.map +1 -1
  445. package/dist/jsx/chrome/UserMenu.native.js +1 -1
  446. package/dist/jsx/chrome/UserMenu.native.js.map +1 -1
  447. package/dist/jsx/chrome/awesomebar-data.native.js.map +1 -1
  448. package/dist/jsx/chrome/command-palette-model.native.js +1 -1
  449. package/dist/jsx/chrome/command-palette-model.native.js.map +1 -1
  450. package/dist/jsx/chrome/help-about-dialog.native.js +1 -1
  451. package/dist/jsx/chrome/help-about-dialog.native.js.map +1 -1
  452. package/dist/jsx/chrome/help-shortcuts-dialog.native.js +1 -1
  453. package/dist/jsx/chrome/help-shortcuts-dialog.native.js.map +1 -1
  454. package/dist/jsx/chrome/notifications-data.native.js.map +1 -1
  455. package/dist/jsx/chrome/notifications-panel.native.js +1 -1
  456. package/dist/jsx/chrome/notifications-panel.native.js.map +1 -1
  457. package/dist/jsx/chrome/notifications-utils.native.js.map +1 -1
  458. package/dist/jsx/chrome/shortcuts.native.js.map +1 -1
  459. package/dist/jsx/chrome/user-session.native.js.map +1 -1
  460. package/dist/jsx/config/BackofficeProvider.native.js +1 -1
  461. package/dist/jsx/config/BackofficeProvider.native.js.map +1 -1
  462. package/dist/jsx/config/capabilities.native.js.map +1 -1
  463. package/dist/jsx/config/events.native.js.map +1 -1
  464. package/dist/jsx/config/slots.native.js.map +1 -1
  465. package/dist/jsx/desk/Desk.native.js.map +1 -1
  466. package/dist/jsx/desk/DeskSurface.mjs.map +1 -1
  467. package/dist/jsx/desk/DeskSurface.native.js.map +1 -1
  468. package/dist/jsx/desk/resolveDeskPath.native.js.map +1 -1
  469. package/dist/jsx/desk/scope.native.js.map +1 -1
  470. package/dist/jsx/desk/target.native.js.map +1 -1
  471. package/dist/jsx/form/DocFormScreen.mjs +169 -226
  472. package/dist/jsx/form/DocFormScreen.mjs.map +1 -1
  473. package/dist/jsx/form/DocFormScreen.native.js +183 -260
  474. package/dist/jsx/form/DocFormScreen.native.js.map +1 -1
  475. package/dist/jsx/form/FormConnections.native.js +1 -1
  476. package/dist/jsx/form/FormConnections.native.js.map +1 -1
  477. package/dist/jsx/form/FormDialogs.native.js +1 -1
  478. package/dist/jsx/form/FormDialogs.native.js.map +1 -1
  479. package/dist/jsx/form/FormErrorBoundary.native.js +1 -1
  480. package/dist/jsx/form/FormErrorBoundary.native.js.map +1 -1
  481. package/dist/jsx/form/FormHeaderCluster.native.js +1 -1
  482. package/dist/jsx/form/FormHeaderCluster.native.js.map +1 -1
  483. package/dist/jsx/form/FormSidebarPanel.native.js +1 -1
  484. package/dist/jsx/form/FormSidebarPanel.native.js.map +1 -1
  485. package/dist/jsx/form/FormTimeline.native.js +1 -1
  486. package/dist/jsx/form/FormTimeline.native.js.map +1 -1
  487. package/dist/jsx/form/FormToolbar.native.js +1 -1
  488. package/dist/jsx/form/FormToolbar.native.js.map +1 -1
  489. package/dist/jsx/form/connections-data.native.js.map +1 -1
  490. package/dist/jsx/form/createPrefill.native.js.map +1 -1
  491. package/dist/jsx/form/dependsOn.native.js.map +1 -1
  492. package/dist/jsx/form/dirtyTracking.native.js.map +1 -1
  493. package/dist/jsx/form/docinfo.native.js.map +1 -1
  494. package/dist/jsx/form/fetchFrom.native.js.map +1 -1
  495. package/dist/jsx/form/fieldPermissions.native.js.map +1 -1
  496. package/dist/jsx/form/formActions.native.js.map +1 -1
  497. package/dist/jsx/form/formLayout.native.js.map +1 -1
  498. package/dist/jsx/form/platformHooks.native.js.map +1 -1
  499. package/dist/jsx/form/sidebar-attachments.native.js +1 -1
  500. package/dist/jsx/form/sidebar-attachments.native.js.map +1 -1
  501. package/dist/jsx/form/sidebar-dialogs.native.js +1 -1
  502. package/dist/jsx/form/sidebar-dialogs.native.js.map +1 -1
  503. package/dist/jsx/form/sidebar-people.native.js +1 -1
  504. package/dist/jsx/form/sidebar-people.native.js.map +1 -1
  505. package/dist/jsx/form/sidebar-rpc.native.js.map +1 -1
  506. package/dist/jsx/form/sidebar-utils.native.js.map +1 -1
  507. package/dist/jsx/form/timeline-entries.native.js.map +1 -1
  508. package/dist/jsx/form/timeline-utils.native.js.map +1 -1
  509. package/dist/jsx/form/useFormEngine.native.js.map +1 -1
  510. package/dist/jsx/i18n/en.mjs +1 -0
  511. package/dist/jsx/i18n/en.mjs.map +1 -1
  512. package/dist/jsx/i18n/en.native.js +1 -0
  513. package/dist/jsx/i18n/en.native.js.map +1 -1
  514. package/dist/jsx/i18n/index.native.js.map +1 -1
  515. package/dist/jsx/index.native.js +1 -1
  516. package/dist/jsx/index.native.js.map +1 -1
  517. package/dist/jsx/list/AddTagsDialog.native.js +1 -1
  518. package/dist/jsx/list/AddTagsDialog.native.js.map +1 -1
  519. package/dist/jsx/list/AssignToDialog.native.js +1 -1
  520. package/dist/jsx/list/AssignToDialog.native.js.map +1 -1
  521. package/dist/jsx/list/DoctypeListScreen.native.js +1 -1
  522. package/dist/jsx/list/DoctypeListScreen.native.js.map +1 -1
  523. package/dist/jsx/list/ListBulkActionsBar.mjs +31 -19
  524. package/dist/jsx/list/ListBulkActionsBar.mjs.map +1 -1
  525. package/dist/jsx/list/ListBulkActionsBar.native.js +44 -32
  526. package/dist/jsx/list/ListBulkActionsBar.native.js.map +1 -1
  527. package/dist/jsx/list/ListFilterBar.native.js +1 -1
  528. package/dist/jsx/list/ListFilterBar.native.js.map +1 -1
  529. package/dist/jsx/list/ListSidebar.native.js +1 -1
  530. package/dist/jsx/list/ListSidebar.native.js.map +1 -1
  531. package/dist/jsx/list/bulk-edit-dialog.native.js +1 -1
  532. package/dist/jsx/list/bulk-edit-dialog.native.js.map +1 -1
  533. package/dist/jsx/list/bulk-export.native.js.map +1 -1
  534. package/dist/jsx/list/bulk-submit-cancel.native.js.map +1 -1
  535. package/dist/jsx/list/bulkActions.native.js.map +1 -1
  536. package/dist/jsx/list/filter-chips.native.js +1 -1
  537. package/dist/jsx/list/filter-chips.native.js.map +1 -1
  538. package/dist/jsx/list/filter-editor.native.js +1 -1
  539. package/dist/jsx/list/filter-editor.native.js.map +1 -1
  540. package/dist/jsx/list/filter-fields.native.js.map +1 -1
  541. package/dist/jsx/list/filter-saved.native.js +1 -1
  542. package/dist/jsx/list/filter-saved.native.js.map +1 -1
  543. package/dist/jsx/list/filter-sort.native.js +1 -1
  544. package/dist/jsx/list/filter-sort.native.js.map +1 -1
  545. package/dist/jsx/list/filter-standard.native.js.map +1 -1
  546. package/dist/jsx/list/filterConversion.native.js.map +1 -1
  547. package/dist/jsx/list/list-tools-sheet.native.js +1 -1
  548. package/dist/jsx/list/list-tools-sheet.native.js.map +1 -1
  549. package/dist/jsx/list/listColumns.native.js.map +1 -1
  550. package/dist/jsx/list/listFields.native.js.map +1 -1
  551. package/dist/jsx/list/listFormat.native.js.map +1 -1
  552. package/dist/jsx/list/listUrlState.native.js.map +1 -1
  553. package/dist/jsx/list/sidebar-section.mjs +16 -8
  554. package/dist/jsx/list/sidebar-section.mjs.map +1 -1
  555. package/dist/jsx/list/sidebar-section.native.js +17 -8
  556. package/dist/jsx/list/sidebar-section.native.js.map +1 -1
  557. package/dist/jsx/list/sidebar-stats.native.js.map +1 -1
  558. package/dist/jsx/list/statusColors.native.js.map +1 -1
  559. package/dist/jsx/navigation/navigator.native.js.map +1 -1
  560. package/dist/jsx/navigation/paths.native.js.map +1 -1
  561. package/dist/jsx/oneAdapter/index.native.js.map +1 -1
  562. package/dist/jsx/quickEntry/QuickEntryDialog.native.js +1 -1
  563. package/dist/jsx/quickEntry/QuickEntryDialog.native.js.map +1 -1
  564. package/dist/jsx/quickEntry/quickEntryPlan.native.js.map +1 -1
  565. package/dist/jsx/report/DoctypeReportView.mjs +21 -375
  566. package/dist/jsx/report/DoctypeReportView.mjs.map +1 -1
  567. package/dist/jsx/report/DoctypeReportView.native.js +23 -455
  568. package/dist/jsx/report/DoctypeReportView.native.js.map +1 -1
  569. package/dist/jsx/report/QueryReportScreen.mjs +26 -16
  570. package/dist/jsx/report/QueryReportScreen.mjs.map +1 -1
  571. package/dist/jsx/report/QueryReportScreen.native.js +34 -24
  572. package/dist/jsx/report/QueryReportScreen.native.js.map +1 -1
  573. package/dist/jsx/report/queryReportColumns.mjs +1 -103
  574. package/dist/jsx/report/queryReportColumns.mjs.map +1 -1
  575. package/dist/jsx/report/queryReportColumns.native.js +2 -129
  576. package/dist/jsx/report/queryReportColumns.native.js.map +1 -1
  577. package/dist/jsx/report/queryReportFilterBar.mjs +1 -2
  578. package/dist/jsx/report/queryReportFilterBar.mjs.map +1 -1
  579. package/dist/jsx/report/queryReportFilterBar.native.js +4 -5
  580. package/dist/jsx/report/queryReportFilterBar.native.js.map +1 -1
  581. package/dist/jsx/report/queryReportUrlState.mjs +1 -1
  582. package/dist/jsx/report/queryReportUrlState.native.js +2 -2
  583. package/dist/jsx/report/queryReportUrlState.native.js.map +1 -1
  584. package/dist/jsx/report/report-grid.mjs +1 -425
  585. package/dist/jsx/report/report-grid.mjs.map +1 -1
  586. package/dist/jsx/report/report-grid.native.js +1 -479
  587. package/dist/jsx/report/report-grid.native.js.map +1 -1
  588. package/dist/jsx/report/report-toolbar.mjs +2 -228
  589. package/dist/jsx/report/report-toolbar.mjs.map +1 -1
  590. package/dist/jsx/report/report-toolbar.native.js +1 -274
  591. package/dist/jsx/report/report-toolbar.native.js.map +1 -1
  592. package/dist/jsx/report/reportShapes.mjs +2 -373
  593. package/dist/jsx/report/reportShapes.mjs.map +1 -1
  594. package/dist/jsx/report/reportShapes.native.js +12 -501
  595. package/dist/jsx/report/reportShapes.native.js.map +1 -1
  596. package/dist/jsx/report/reportViewModel.mjs +2 -342
  597. package/dist/jsx/report/reportViewModel.mjs.map +1 -1
  598. package/dist/jsx/report/reportViewModel.native.js +19 -627
  599. package/dist/jsx/report/reportViewModel.native.js.map +1 -1
  600. package/dist/jsx/report/savedReports.mjs +1 -105
  601. package/dist/jsx/report/savedReports.mjs.map +1 -1
  602. package/dist/jsx/report/savedReports.native.js +1 -132
  603. package/dist/jsx/report/savedReports.native.js.map +1 -1
  604. package/dist/jsx/report/useQueryReport.mjs +2 -210
  605. package/dist/jsx/report/useQueryReport.mjs.map +1 -1
  606. package/dist/jsx/report/useQueryReport.native.js +11 -244
  607. package/dist/jsx/report/useQueryReport.native.js.map +1 -1
  608. package/dist/jsx/shared/deskLinks.native.js.map +1 -1
  609. package/dist/jsx/shared/listNavContext.native.js.map +1 -1
  610. package/dist/jsx/shared/measures.mjs +1 -3
  611. package/dist/jsx/shared/measures.mjs.map +1 -1
  612. package/dist/jsx/shared/measures.native.js +3 -5
  613. package/dist/jsx/shared/measures.native.js.map +1 -1
  614. package/dist/jsx/shared/types.native.js.map +1 -1
  615. package/dist/jsx/shared/useDocinfo.native.js.map +1 -1
  616. package/dist/jsx/shared/useDoctypeMeta.native.js.map +1 -1
  617. package/dist/jsx/shared/useFrappeApp.native.js.map +1 -1
  618. package/dist/jsx/shared/useRecentVisit.native.js.map +1 -1
  619. package/dist/jsx/shared/useSessionUserId.native.js.map +1 -1
  620. package/dist/jsx/shared/useSlugTarget.native.js.map +1 -1
  621. package/dist/jsx/shared/useUserRoles.native.js.map +1 -1
  622. package/dist/jsx/shell/BackofficeShell.native.js +1 -1
  623. package/dist/jsx/shell/BackofficeShell.native.js.map +1 -1
  624. package/dist/jsx/shell/HomeRedirect.native.js +1 -1
  625. package/dist/jsx/shell/HomeRedirect.native.js.map +1 -1
  626. package/dist/jsx/shell/NotFoundScreen.native.js +1 -1
  627. package/dist/jsx/shell/NotFoundScreen.native.js.map +1 -1
  628. package/dist/jsx/shell/SlugScreen.native.js +1 -1
  629. package/dist/jsx/shell/SlugScreen.native.js.map +1 -1
  630. package/dist/jsx/shell/WorkspaceSidebar.native.js +1 -1
  631. package/dist/jsx/shell/WorkspaceSidebar.native.js.map +1 -1
  632. package/dist/jsx/shell/useWorkspaces.native.js.map +1 -1
  633. package/dist/jsx/shell/workspaceIcons.native.js.map +1 -1
  634. package/dist/jsx/views/CalendarView.native.js +1 -1
  635. package/dist/jsx/views/CalendarView.native.js.map +1 -1
  636. package/dist/jsx/views/DashboardView.native.js +1 -1
  637. package/dist/jsx/views/DashboardView.native.js.map +1 -1
  638. package/dist/jsx/views/DoctypeViewScreen.native.js.map +1 -1
  639. package/dist/jsx/views/ImageView.native.js +1 -1
  640. package/dist/jsx/views/ImageView.native.js.map +1 -1
  641. package/dist/jsx/views/KanbanView.native.js +1 -1
  642. package/dist/jsx/views/KanbanView.native.js.map +1 -1
  643. package/dist/jsx/views/ReportView.mjs +3 -256
  644. package/dist/jsx/views/ReportView.mjs.map +1 -1
  645. package/dist/jsx/views/ReportView.native.js +3 -382
  646. package/dist/jsx/views/ReportView.native.js.map +1 -1
  647. package/dist/jsx/views/TreeView.native.js +1 -1
  648. package/dist/jsx/views/TreeView.native.js.map +1 -1
  649. package/dist/jsx/views/ViewHeader.native.js +1 -1
  650. package/dist/jsx/views/ViewHeader.native.js.map +1 -1
  651. package/dist/jsx/views/ViewStates.native.js +1 -1
  652. package/dist/jsx/views/ViewStates.native.js.map +1 -1
  653. package/dist/jsx/views/ViewSwitcherMenu.native.js +1 -1
  654. package/dist/jsx/views/ViewSwitcherMenu.native.js.map +1 -1
  655. package/dist/jsx/views/calendar-field-selector.native.js +1 -1
  656. package/dist/jsx/views/calendar-field-selector.native.js.map +1 -1
  657. package/dist/jsx/views/connection.native.js.map +1 -1
  658. package/dist/jsx/views/dashboard-data.native.js.map +1 -1
  659. package/dist/jsx/views/deskViewConfigs.native.js.map +1 -1
  660. package/dist/jsx/views/kanban-board-controls.native.js +1 -1
  661. package/dist/jsx/views/kanban-board-controls.native.js.map +1 -1
  662. package/dist/jsx/views/kanban-field-picker.native.js +1 -1
  663. package/dist/jsx/views/kanban-field-picker.native.js.map +1 -1
  664. package/dist/jsx/views/kanbanBoardOps.native.js.map +1 -1
  665. package/dist/jsx/views/report-controls.mjs +3 -3
  666. package/dist/jsx/views/report-controls.mjs.map +1 -1
  667. package/dist/jsx/views/report-controls.native.js +7 -7
  668. package/dist/jsx/views/report-controls.native.js.map +1 -1
  669. package/dist/jsx/views/viewAvailability.native.js.map +1 -1
  670. package/dist/jsx/views/viewMeta.native.js.map +1 -1
  671. package/dist/jsx/workspace/WorkspaceChartBlock.native.js +1 -1
  672. package/dist/jsx/workspace/WorkspaceChartBlock.native.js.map +1 -1
  673. package/dist/jsx/workspace/WorkspaceGrid.native.js.map +1 -1
  674. package/dist/jsx/workspace/WorkspaceLinkCard.native.js +1 -1
  675. package/dist/jsx/workspace/WorkspaceLinkCard.native.js.map +1 -1
  676. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js +1 -1
  677. package/dist/jsx/workspace/WorkspaceLinkDirectory.native.js.map +1 -1
  678. package/dist/jsx/workspace/WorkspaceNumberCard.native.js +1 -1
  679. package/dist/jsx/workspace/WorkspaceNumberCard.native.js.map +1 -1
  680. package/dist/jsx/workspace/WorkspaceQuickList.native.js +1 -1
  681. package/dist/jsx/workspace/WorkspaceQuickList.native.js.map +1 -1
  682. package/dist/jsx/workspace/WorkspaceRecents.native.js +1 -1
  683. package/dist/jsx/workspace/WorkspaceRecents.native.js.map +1 -1
  684. package/dist/jsx/workspace/WorkspaceScreen.native.js +1 -1
  685. package/dist/jsx/workspace/WorkspaceScreen.native.js.map +1 -1
  686. package/dist/jsx/workspace/WorkspaceShortcut.native.js +1 -1
  687. package/dist/jsx/workspace/WorkspaceShortcut.native.js.map +1 -1
  688. package/dist/jsx/workspace/parseContent.native.js.map +1 -1
  689. package/dist/jsx/workspace/types.native.js.map +1 -1
  690. package/dist/jsx/workspace/useDashboardChart.native.js.map +1 -1
  691. package/dist/jsx/workspace/useWorkspaceDoc.native.js.map +1 -1
  692. package/package.json +12 -12
  693. package/src/backofficeScreens.designLaw.spec.ts +0 -5
  694. package/src/desk/DeskSurface.tsx +4 -7
  695. package/src/form/DocFormScreen.chrome.spec.ts +77 -0
  696. package/src/form/DocFormScreen.guest.screen.spec.tsx +175 -0
  697. package/src/form/DocFormScreen.rights.spec.tsx +7 -3
  698. package/src/form/DocFormScreen.tsx +214 -315
  699. package/src/i18n/en.ts +1 -0
  700. package/src/list/ListBulkActionsBar.rights.spec.tsx +134 -0
  701. package/src/list/ListBulkActionsBar.screen.spec.tsx +7 -1
  702. package/src/list/ListBulkActionsBar.tsx +76 -57
  703. package/src/list/ListFilterBar.screen.spec.tsx +14 -13
  704. package/src/list/sidebar-section.tsx +11 -3
  705. package/src/report/DoctypeReportView.tsx +28 -550
  706. package/src/report/QueryReportScreen.spec.tsx +75 -1
  707. package/src/report/QueryReportScreen.tsx +38 -22
  708. package/src/report/queryReportColumns.tsx +4 -123
  709. package/src/report/queryReportFilterBar.tsx +3 -5
  710. package/src/report/queryReportUrlState.ts +1 -1
  711. package/src/report/report-grid.tsx +4 -529
  712. package/src/report/report-toolbar.tsx +4 -308
  713. package/src/report/reportShapes.ts +25 -613
  714. package/src/report/reportShim.spec.ts +162 -0
  715. package/src/report/reportViewModel.ts +32 -605
  716. package/src/report/savedReports.ts +4 -161
  717. package/src/report/useQueryReport.ts +9 -347
  718. package/src/shared/measures.ts +3 -11
  719. package/src/views/ReportView.screen.spec.tsx +25 -20
  720. package/src/views/ReportView.tsx +7 -439
  721. package/src/views/report-controls.tsx +12 -20
  722. package/types/desk/DeskSurface.d.ts.map +1 -1
  723. package/types/form/DocFormScreen.d.ts +2 -2
  724. package/types/form/DocFormScreen.d.ts.map +1 -1
  725. package/types/i18n/en.d.ts +1 -0
  726. package/types/i18n/en.d.ts.map +1 -1
  727. package/types/list/ListBulkActionsBar.d.ts.map +1 -1
  728. package/types/list/sidebar-section.d.ts.map +1 -1
  729. package/types/report/DoctypeReportView.d.ts.map +1 -1
  730. package/types/report/QueryReportScreen.d.ts +1 -1
  731. package/types/report/QueryReportScreen.d.ts.map +1 -1
  732. package/types/report/queryReportColumns.d.ts +2 -11
  733. package/types/report/queryReportColumns.d.ts.map +1 -1
  734. package/types/report/queryReportFilterBar.d.ts +1 -1
  735. package/types/report/queryReportFilterBar.d.ts.map +1 -1
  736. package/types/report/queryReportUrlState.d.ts +1 -1
  737. package/types/report/queryReportUrlState.d.ts.map +1 -1
  738. package/types/report/report-grid.d.ts +2 -19
  739. package/types/report/report-grid.d.ts.map +1 -1
  740. package/types/report/report-toolbar.d.ts +2 -29
  741. package/types/report/report-toolbar.d.ts.map +1 -1
  742. package/types/report/reportShapes.d.ts +2 -115
  743. package/types/report/reportShapes.d.ts.map +1 -1
  744. package/types/report/reportViewModel.d.ts +2 -135
  745. package/types/report/reportViewModel.d.ts.map +1 -1
  746. package/types/report/savedReports.d.ts +2 -18
  747. package/types/report/savedReports.d.ts.map +1 -1
  748. package/types/report/useQueryReport.d.ts +2 -35
  749. package/types/report/useQueryReport.d.ts.map +1 -1
  750. package/types/shared/measures.d.ts +1 -2
  751. package/types/shared/measures.d.ts.map +1 -1
  752. package/types/views/ReportView.d.ts +3 -22
  753. package/types/views/ReportView.d.ts.map +1 -1
  754. package/types/views/report-controls.d.ts +2 -5
  755. package/types/views/report-controls.d.ts.map +1 -1
  756. package/src/report/report-grid.spec.tsx +0 -175
  757. package/src/report/report-toolbar.spec.tsx +0 -90
  758. package/src/report/reportShapes.spec.ts +0 -391
  759. package/src/report/reportViewModel.spec.ts +0 -393
@@ -1,613 +1,25 @@
1
- // Pure (dependency-free) query-report wire-shape normalization — kept apart
2
- // from useQueryReport so the node-environment specs can import it without
3
- // dragging in react/frappe packages.
4
- //
5
- // PROBED response shapes (bench v15 — reports "ToDo", "Permitted Documents
6
- // For User", and the SQL query report "Backoffice QR Probe"):
7
- // POST /api/method/frappe.desk.query_report.run {report_name, filters}
8
- // → {message: {columns, result, message, chart, report_summary,
9
- // add_total_row, skip_total_row, execution_time, status}}
10
- // - columns: [{label, fieldname, fieldtype, width?, options?}] — width is
11
- // a STRING ("90"), fieldtype may be "". v15 normalizes even old-style
12
- // SQL alias columns ("Label:Fieldtype/Options:Width") into this dict
13
- // shape server-side; the string + positional-array-row forms are still
14
- // handled here defensively (older benches / custom reports).
15
- // - result: array of objects keyed by fieldname; values may embed HTML
16
- // (e.g. desk anchor tags). The totals row is appended SERVER-side when
17
- // add_total_row=1, so no client aggregation happens here.
18
- // - errors: {exc_type, _server_messages} where _server_messages is a
19
- // JSON-encoded array of JSON-encoded {message} — humanized below.
20
-
21
- export interface QueryReportColumn {
22
- fieldname: string;
23
- label: string;
24
- /** Frappe fieldtype ("Link", "Date", "Currency", … or "" when untyped). */
25
- fieldtype: string;
26
- /** Link target doctype (fieldtype "Link"). */
27
- options?: string;
28
- /** Desk pixel width hint (server sends strings like "90"). */
29
- width?: number;
30
- }
31
-
32
- export type QueryReportRow = Record<string, unknown>;
33
- export type QueryReportFilters = Record<string, unknown>;
34
-
35
- /**
36
- * One report filter's declaration — from the Report doc `filters` child
37
- * table (Report Filter rows) or extracted from the desk-side script module
38
- * (which spells mandatory as `reqd`; both normalize to `mandatory`).
39
- */
40
- export interface QueryReportFilterMeta {
41
- fieldname: string;
42
- label?: string;
43
- fieldtype?: string;
44
- options?: string;
45
- /** Script modules declare numeric/boolean defaults; doc rows are strings. */
46
- default?: string | number;
47
- mandatory?: 0 | 1;
48
- /** Desk wraps this filter's value in `%…%` before the run. */
49
- wildcard_filter?: 0 | 1;
50
- /** Applied (defaults included) but never rendered — desk parity. */
51
- hidden?: 0 | 1;
52
- /**
53
- * Desk `read_only` — the control renders (so the value is honest) but
54
- * cannot be edited. Locked filters must not open pickers (LC-21 family:
55
- * a disabled control opens nothing).
56
- */
57
- read_only?: 0 | 1;
58
- }
59
-
60
- /** Report doc bits the screen cares about (loose — server owns the schema). */
61
- export interface QueryReportMeta {
62
- name: string;
63
- report_name?: string;
64
- ref_doctype?: string;
65
- report_type?: string;
66
- disabled?: 0 | 1;
67
- prepared_report?: 0 | 1;
68
- add_total_row?: 0 | 1;
69
- filters?: QueryReportFilterMeta[];
70
- [key: string]: unknown;
71
- }
72
-
73
- /** Static data for stories/tests — skips every bench RPC. */
74
- export interface QueryReportFixture {
75
- meta?: Partial<QueryReportMeta>;
76
- /** Raw column shapes (dicts or "Label:Fieldtype/Options:Width" strings). */
77
- columns: unknown[];
78
- /** Raw rows (dicts or positional arrays). */
79
- rows: unknown[];
80
- message?: string;
81
- /** Desk-side script module text (get_script response) for filter extraction. */
82
- script?: string;
83
- }
84
-
85
- export interface QueryReportRunMessage {
86
- columns?: unknown[];
87
- result?: unknown[];
88
- message?: string | null;
89
- chart?: unknown;
90
- report_summary?: unknown;
91
- add_total_row?: 0 | 1;
92
- skip_total_row?: 0 | 1;
93
- execution_time?: number;
94
- status?: string | null;
95
- }
96
-
97
- /** frappe.scrub equivalent: "Modified On" → "modified_on". */
98
- export function scrubFieldname(label: string): string {
99
- return label
100
- .toLowerCase()
101
- .replace(/[^a-z0-9]+/g, "_")
102
- .replace(/^_+|_+$/g, "");
103
- }
104
-
105
- /** Best-effort HTML → text for report cell values and server messages. */
106
- export function stripHtml(value: string): string {
107
- if (!value.includes("<") && !value.includes("&")) return value;
108
- return value
109
- .replace(/<[^>]*>/g, "")
110
- .replace(/&nbsp;/g, " ")
111
- .replace(/&amp;/g, "&")
112
- .replace(/&lt;/g, "<")
113
- .replace(/&gt;/g, ">")
114
- .replace(/&quot;/g, '"')
115
- .replace(/&#39;/g, "'")
116
- .replace(/\s+/g, " ")
117
- .trim();
118
- }
119
-
120
- function parseWidth(raw: unknown): number | undefined {
121
- if (typeof raw === "number") return raw > 0 ? raw : undefined;
122
- if (typeof raw === "string" && raw) {
123
- const parsed = Number.parseInt(raw, 10);
124
- if (!Number.isNaN(parsed) && parsed > 0) return parsed;
125
- }
126
- return undefined;
127
- }
128
-
129
- /**
130
- * Normalize run() columns: v15 sends dicts, older/custom reports may send
131
- * "Label:Fieldtype/Options:Width" alias strings. Fieldnames are deduped so
132
- * positional rows always land somewhere addressable.
133
- */
134
- export function normalizeQueryReportColumns(
135
- raw: readonly unknown[] | undefined,
136
- ): QueryReportColumn[] {
137
- const used = new Set<string>();
138
- const columns: QueryReportColumn[] = [];
139
- (raw ?? []).forEach((entry, index) => {
140
- let label = "";
141
- let fieldname = "";
142
- let fieldtype = "";
143
- let options: string | undefined;
144
- let width: number | undefined;
145
- if (typeof entry === "string") {
146
- const [labelPart = "", typePart = "", widthPart = ""] = entry.split(":");
147
- label = labelPart.trim();
148
- const [typeBit = "", optionsBit = ""] = typePart.split("/");
149
- fieldtype = typeBit.trim();
150
- options = optionsBit.trim() || undefined;
151
- width = parseWidth(widthPart.trim());
152
- } else if (entry && typeof entry === "object") {
153
- const column = entry as Record<string, unknown>;
154
- label = typeof column.label === "string" ? column.label : "";
155
- fieldname = typeof column.fieldname === "string" ? column.fieldname : "";
156
- fieldtype = typeof column.fieldtype === "string" ? column.fieldtype : "";
157
- options = typeof column.options === "string" && column.options ? column.options : undefined;
158
- width = parseWidth(column.width);
159
- } else {
160
- return;
161
- }
162
- let id = fieldname || scrubFieldname(label) || `col_${index}`;
163
- if (used.has(id)) id = `${id}_${index}`;
164
- used.add(id);
165
- columns.push({ fieldname: id, label: label || id, fieldtype, options, width });
166
- });
167
- return columns;
168
- }
169
-
170
- /** Normalize run() rows: positional arrays are zipped onto column fieldnames. */
171
- export function normalizeQueryReportRows(
172
- raw: readonly unknown[] | undefined,
173
- columns: readonly QueryReportColumn[],
174
- ): QueryReportRow[] {
175
- const rows: QueryReportRow[] = [];
176
- for (const entry of raw ?? []) {
177
- if (Array.isArray(entry)) {
178
- const row: QueryReportRow = {};
179
- columns.forEach((column, index) => {
180
- row[column.fieldname] = entry[index];
181
- });
182
- rows.push(row);
183
- } else if (entry && typeof entry === "object") {
184
- rows.push(entry as QueryReportRow);
185
- }
186
- }
187
- return rows;
188
- }
189
-
190
- /** Truthy check/flag coercion (accepts 1, "1", true — the wire variants). */
191
- function coerceFlag(raw: unknown): 0 | 1 {
192
- return raw === 1 || raw === "1" || raw === true ? 1 : 0;
193
- }
194
-
195
- /**
196
- * One filter declaration record (a Report Filter doc row or a script-object
197
- * extraction) → normalized meta. Script modules spell mandatory as `reqd`
198
- * and may declare numeric/boolean defaults.
199
- */
200
- function coerceFilterMetaEntry(row: Record<string, unknown>): QueryReportFilterMeta | undefined {
201
- const fieldname =
202
- typeof row.fieldname === "string" && row.fieldname
203
- ? row.fieldname
204
- : typeof row.label === "string" && row.label
205
- ? scrubFieldname(row.label)
206
- : "";
207
- if (!fieldname) return undefined;
208
- let defaultValue: string | number | undefined;
209
- if (typeof row.default === "string" && row.default !== "") defaultValue = row.default;
210
- else if (typeof row.default === "number") defaultValue = row.default;
211
- else if (typeof row.default === "boolean") defaultValue = row.default ? 1 : 0;
212
- return {
213
- fieldname,
214
- label: typeof row.label === "string" ? row.label : undefined,
215
- fieldtype: typeof row.fieldtype === "string" ? row.fieldtype : undefined,
216
- options:
217
- typeof row.options === "string"
218
- ? row.options
219
- : Array.isArray(row.options) && row.options.every((entry) => typeof entry === "string")
220
- ? row.options.join("\n")
221
- : undefined,
222
- default: defaultValue,
223
- mandatory: coerceFlag(row.mandatory) || coerceFlag(row.reqd) ? 1 : 0,
224
- wildcard_filter: coerceFlag(row.wildcard_filter),
225
- hidden: coerceFlag(row.hidden),
226
- read_only: coerceFlag(row.read_only) || coerceFlag(row.readOnly) ? 1 : 0,
227
- };
228
- }
229
-
230
- export function normalizeFilterMeta(raw: unknown): QueryReportFilterMeta[] {
231
- if (!Array.isArray(raw)) return [];
232
- const filters: QueryReportFilterMeta[] = [];
233
- for (const entry of raw) {
234
- if (!entry || typeof entry !== "object") continue;
235
- const meta = coerceFilterMetaEntry(entry as Record<string, unknown>);
236
- if (meta) filters.push(meta);
237
- }
238
- return filters;
239
- }
240
-
241
- export function isEmptyFilterValue(value: unknown): boolean {
242
- return value === undefined || value === null || value === "";
243
- }
244
-
245
- /**
246
- * Draft/applied values → the dict that round-trips through `?filters=` and
247
- * `query_report.run`. Empty values drop; hidden filters keep their values
248
- * so a clear-all on the visible bar does not strip seeded hidden defaults.
249
- */
250
- export function compactQueryReportFilters(
251
- filterMeta: readonly QueryReportFilterMeta[],
252
- values: QueryReportFilters,
253
- ): QueryReportFilters {
254
- const next: QueryReportFilters = {};
255
- for (const filter of filterMeta) {
256
- const value = values[filter.fieldname];
257
- if (!isEmptyFilterValue(value)) next[filter.fieldname] = value;
258
- }
259
- return next;
260
- }
261
-
262
- /** Seedable default values ("" defaults are non-values, desk parity). */
263
- export function defaultFilterValues(
264
- filterMeta: readonly QueryReportFilterMeta[],
265
- ): QueryReportFilters {
266
- const defaults: QueryReportFilters = {};
267
- for (const filter of filterMeta) {
268
- if (filter.default !== undefined && filter.default !== "")
269
- defaults[filter.fieldname] = filter.default;
270
- }
271
- return defaults;
272
- }
273
-
274
- /**
275
- * Filter values → the `filters` dict for frappe.desk.query_report.run.
276
- * Desk parity (query_report.js get_filter_values): falsy values are OMITTED
277
- * (an unchecked Check or empty input sends nothing), `wildcard_filter`
278
- * values wrap in `%…%` unless the user typed their own wildcard, and
279
- * numeric fieldtypes send numbers (script reports do arithmetic on them).
280
- */
281
- export function buildRunFilters(
282
- filterMeta: readonly QueryReportFilterMeta[],
283
- filters: QueryReportFilters,
284
- ): QueryReportFilters {
285
- const metaByField = new Map(filterMeta.map((filter) => [filter.fieldname, filter]));
286
- const out: QueryReportFilters = {};
287
- for (const [fieldname, rawValue] of Object.entries(filters)) {
288
- let value: unknown = rawValue === true ? 1 : rawValue;
289
- if (isEmptyFilterValue(value) || value === false || value === 0) continue;
290
- const meta = metaByField.get(fieldname);
291
- if (meta?.wildcard_filter === 1 && typeof value === "string" && !value.includes("%"))
292
- value = `%${value}%`;
293
- if (
294
- meta?.fieldtype !== undefined &&
295
- NUMERIC_FILTER_FIELDTYPES.has(meta.fieldtype) &&
296
- typeof value === "string" &&
297
- value.trim() !== "" &&
298
- Number.isFinite(Number(value))
299
- )
300
- value = Number(value);
301
- out[fieldname] = value;
302
- }
303
- return out;
304
- }
305
-
306
- // ── Script-declared filters (desk-side report JS modules) ───────
307
- //
308
- // Standard reports declare filters in their desk JS module, reachable only
309
- // as raw text via frappe.desk.query_report.get_script:
310
- // frappe.query_reports["<name>"] = { filters: [{fieldname, label: __("…"),
311
- // fieldtype, options, reqd, default, get_query() {…}}, …] }
312
- // The declarative subset (string/number/boolean values, __() labels, string
313
- // arrays) is extracted WITHOUT eval by a small string/comment-aware scanner;
314
- // function-valued keys (get_query, on_change, formatters) are skipped.
315
- // Entries that don't yield a renderable control count toward `declaredCount`
316
- // so the surface can render an honest "defined in code" gap note.
317
-
318
- export interface ScriptFilterExtraction {
319
- /** True when the module declares a `filters` key (even an empty one). */
320
- declared: boolean;
321
- /** Top-level entries the script declares (parseable or not). */
322
- declaredCount: number;
323
- /** The renderable (declarative) subset, normalized. */
324
- filters: QueryReportFilterMeta[];
325
- }
326
-
327
- const EMPTY_EXTRACTION: ScriptFilterExtraction = { declared: false, declaredCount: 0, filters: [] };
328
-
329
- /** Filter fieldtypes the surface can render (desk-only ones are gaps). */
330
- const RENDERABLE_FILTER_FIELDTYPES = new Set([
331
- "Data",
332
- "Small Text",
333
- "Text",
334
- "Int",
335
- "Float",
336
- "Currency",
337
- "Percent",
338
- "Date",
339
- "Datetime",
340
- "Time",
341
- "Check",
342
- "Select",
343
- "Link",
344
- ]);
345
-
346
- const NUMERIC_FILTER_FIELDTYPES = new Set(["Int", "Float", "Currency", "Percent"]);
347
-
348
- /** Index AFTER the string literal opening at `start` (escape-aware). */
349
- function scanStringEnd(text: string, start: number): number {
350
- const quote = text[start];
351
- let index = start + 1;
352
- while (index < text.length) {
353
- const ch = text[index];
354
- if (ch === "\\") {
355
- index += 2;
356
- continue;
357
- }
358
- if (ch === quote) return index + 1;
359
- index += 1;
360
- }
361
- return index;
362
- }
363
-
364
- /** Index after a line or block comment opening at `start` (start+1 for a bare slash). */
365
- function scanCommentEnd(text: string, start: number): number {
366
- const next = text[start + 1];
367
- if (next === "/") {
368
- const newline = text.indexOf("\n", start);
369
- return newline === -1 ? text.length : newline + 1;
370
- }
371
- if (next === "*") {
372
- const end = text.indexOf("*/", start + 2);
373
- return end === -1 ? text.length : end + 2;
374
- }
375
- return start + 1;
376
- }
377
-
378
- /** Matching close-bracket index for the opener at `open` (-1 when unbalanced). */
379
- function matchBracket(text: string, open: number): number {
380
- const openCh = text[open];
381
- const closeCh = openCh === "[" ? "]" : openCh === "{" ? "}" : openCh === "(" ? ")" : "";
382
- if (!closeCh) return -1;
383
- let depth = 0;
384
- let index = open;
385
- while (index < text.length) {
386
- const ch = text[index];
387
- if (ch === "'" || ch === '"' || ch === "`") {
388
- index = scanStringEnd(text, index);
389
- continue;
390
- }
391
- if (ch === "/") {
392
- index = scanCommentEnd(text, index);
393
- continue;
394
- }
395
- if (ch === openCh) depth += 1;
396
- else if (ch === closeCh) {
397
- depth -= 1;
398
- if (depth === 0) return index;
399
- }
400
- index += 1;
401
- }
402
- return -1;
403
- }
404
-
405
- /** Unescape the common sequences inside a scanned string literal body. */
406
- function unescapeStringBody(body: string): string {
407
- return body.replace(/\\(.)/g, (_, ch: string) =>
408
- ch === "n" ? "\n" : ch === "t" ? "\t" : ch === "r" ? "\r" : ch,
409
- );
410
- }
411
-
412
- /**
413
- * Interpret one raw value slice from a script object literal. Returns
414
- * undefined for anything non-declarative (functions, frappe.* expressions,
415
- * template strings with interpolations, ternaries…).
416
- */
417
- function interpretScriptValue(raw: string): string | number | boolean | string[] | undefined {
418
- const value = raw.trim();
419
- if (!value) return undefined;
420
- const first = value[0];
421
- if (first === "'" || first === '"' || first === "`") {
422
- const end = scanStringEnd(value, 0);
423
- if (end !== value.length) return undefined;
424
- const body = value.slice(1, -1);
425
- if (first === "`" && body.includes("${")) return undefined;
426
- return unescapeStringBody(body);
427
- }
428
- if (/^__\s*\(/.test(value)) {
429
- // Translation call — the first string argument is the label.
430
- const parenIndex = value.indexOf("(");
431
- const rest = value.slice(parenIndex + 1).trim();
432
- const quote = rest[0];
433
- if (quote !== "'" && quote !== '"' && quote !== "`") return undefined;
434
- const quoteIndex = value.indexOf(quote, parenIndex);
435
- const end = scanStringEnd(value, quoteIndex);
436
- return unescapeStringBody(value.slice(quoteIndex + 1, end - 1));
437
- }
438
- if (/^-?\d+(\.\d+)?$/.test(value)) return Number(value);
439
- if (value === "true") return true;
440
- if (value === "false") return false;
441
- if (first === "[") {
442
- const close = matchBracket(value, 0);
443
- if (close !== value.length - 1) return undefined;
444
- const entries: string[] = [];
445
- let index = 1;
446
- while (index < close) {
447
- const ch = value[index];
448
- if (ch === "'" || ch === '"' || ch === "`") {
449
- const end = scanStringEnd(value, index);
450
- const body = value.slice(index + 1, end - 1);
451
- if (ch === "`" && body.includes("${")) return undefined;
452
- entries.push(unescapeStringBody(body));
453
- index = end;
454
- continue;
455
- }
456
- if (ch === "/" && (value[index + 1] === "/" || value[index + 1] === "*")) {
457
- index = scanCommentEnd(value, index);
458
- continue;
459
- }
460
- if (ch === "," || ch === " " || ch === "\t" || ch === "\n" || ch === "\r") {
461
- index += 1;
462
- continue;
463
- }
464
- return undefined; // non-string entry (objects, expressions) — not declarative
465
- }
466
- return entries;
467
- }
468
- return undefined;
469
- }
470
-
471
- /** Parse one `{…}` object literal into declarative key/value pairs. */
472
- function parseScriptObject(source: string): Record<string, unknown> {
473
- const record: Record<string, unknown> = {};
474
- let index = 1; // past the opening brace
475
- const end = source.length - 1; // before the closing brace
476
- while (index < end) {
477
- const ch = source[index];
478
- if (ch === "/" && (source[index + 1] === "/" || source[index + 1] === "*")) {
479
- index = scanCommentEnd(source, index);
480
- continue;
481
- }
482
- if (/\s|,/.test(ch)) {
483
- index += 1;
484
- continue;
485
- }
486
- // Key: identifier or quoted string.
487
- let key = "";
488
- if (ch === "'" || ch === '"') {
489
- const keyEnd = scanStringEnd(source, index);
490
- key = source.slice(index + 1, keyEnd - 1);
491
- index = keyEnd;
492
- } else {
493
- const keyMatch = source.slice(index, index + 64).match(/^[A-Za-z_$][\w$]*/);
494
- if (!keyMatch) break; // not an object key — bail out of this entry
495
- key = keyMatch[0];
496
- index += key.length;
497
- }
498
- while (index < end && /\s/.test(source[index])) index += 1;
499
- if (source[index] !== ":") break; // shorthand/method — not declarative
500
- index += 1;
501
- // Value: scan to the next top-level comma, collecting comment-free text.
502
- let valueRaw = "";
503
- while (index < end) {
504
- const valueCh = source[index];
505
- if (valueCh === "'" || valueCh === '"' || valueCh === "`") {
506
- const stringEnd = scanStringEnd(source, index);
507
- valueRaw += source.slice(index, stringEnd);
508
- index = stringEnd;
509
- continue;
510
- }
511
- if (valueCh === "/" && (source[index + 1] === "/" || source[index + 1] === "*")) {
512
- index = scanCommentEnd(source, index);
513
- continue;
514
- }
515
- if (valueCh === "{" || valueCh === "[" || valueCh === "(") {
516
- const close = matchBracket(source, index);
517
- if (close === -1) return record; // unbalanced — stop parsing
518
- valueRaw += source.slice(index, close + 1);
519
- index = close + 1;
520
- continue;
521
- }
522
- if (valueCh === ",") {
523
- index += 1;
524
- break;
525
- }
526
- valueRaw += valueCh;
527
- index += 1;
528
- }
529
- const interpreted = interpretScriptValue(valueRaw);
530
- if (interpreted !== undefined) record[key] = interpreted;
531
- }
532
- return record;
533
- }
534
-
535
- /**
536
- * Extract the declarative filter subset from a desk report script module.
537
- * Never throws; anything unparseable degrades to a smaller `filters` list
538
- * (the `declaredCount` delta is the honest gap).
539
- */
540
- export function extractScriptFilters(script: string | undefined): ScriptFilterExtraction {
541
- if (!script) return EMPTY_EXTRACTION;
542
- const keyMatch = script.match(/\bfilters\s*:\s*\[/);
543
- if (!keyMatch || keyMatch.index === undefined) return EMPTY_EXTRACTION;
544
- const openBracket = keyMatch.index + keyMatch[0].length - 1;
545
- const closeBracket = matchBracket(script, openBracket);
546
- if (closeBracket === -1) return EMPTY_EXTRACTION;
547
- const filters: QueryReportFilterMeta[] = [];
548
- let declaredCount = 0;
549
- let index = openBracket + 1;
550
- while (index < closeBracket) {
551
- const ch = script[index];
552
- if (ch === "{") {
553
- const close = matchBracket(script, index);
554
- if (close === -1 || close > closeBracket) break;
555
- declaredCount += 1;
556
- const record = parseScriptObject(script.slice(index, close + 1));
557
- const meta = coerceFilterMetaEntry(record);
558
- const fieldtype = meta?.fieldtype ?? "Data";
559
- const needsOptions = fieldtype === "Select" || fieldtype === "Link";
560
- if (
561
- meta &&
562
- RENDERABLE_FILTER_FIELDTYPES.has(fieldtype) &&
563
- (!needsOptions || (meta.options ?? "") !== "")
564
- )
565
- filters.push({ ...meta, fieldtype });
566
- index = close + 1;
567
- continue;
568
- }
569
- if (ch === "'" || ch === '"' || ch === "`") {
570
- index = scanStringEnd(script, index);
571
- continue;
572
- }
573
- if (ch === "/" && (script[index + 1] === "/" || script[index + 1] === "*")) {
574
- index = scanCommentEnd(script, index);
575
- continue;
576
- }
577
- index += 1;
578
- }
579
- return { declared: true, declaredCount, filters };
580
- }
581
-
582
- /** `_server_messages` is a JSON array of JSON-encoded {message} objects. */
583
- function decodeServerMessages(raw: unknown): string | undefined {
584
- if (typeof raw !== "string" || !raw.startsWith("[")) return undefined;
585
- try {
586
- const entries: unknown = JSON.parse(raw);
587
- if (!Array.isArray(entries)) return undefined;
588
- const parts = entries
589
- .map((entry) => {
590
- try {
591
- const decoded: unknown = typeof entry === "string" ? JSON.parse(entry) : entry;
592
- const message = (decoded as { message?: unknown } | null)?.message;
593
- return typeof message === "string" ? stripHtml(message) : String(entry);
594
- } catch {
595
- return String(entry);
596
- }
597
- })
598
- .filter(Boolean);
599
- return parts.length > 0 ? parts.join("\n") : undefined;
600
- } catch {
601
- return undefined;
602
- }
603
- }
604
-
605
- export function humanizeFrappeError(err: unknown): Error {
606
- if (err instanceof Error) {
607
- const data = (err as { data?: unknown }).data as Record<string, unknown> | undefined;
608
- const decoded =
609
- decodeServerMessages(data?._server_messages) ?? decodeServerMessages(err.message);
610
- return decoded ? new Error(decoded) : err;
611
- }
612
- return new Error(String(err));
613
- }
1
+ // The query-report model lives in @multiplatform.one/frappe-ui (MPO-15,
2
+ // GL-28); this path keeps handing out the same names.
3
+ export {
4
+ buildRunFilters,
5
+ compactQueryReportFilters,
6
+ defaultFilterValues,
7
+ extractScriptFilters,
8
+ humanizeFrappeError,
9
+ isEmptyFilterValue,
10
+ normalizeFilterMeta,
11
+ normalizeQueryReportColumns,
12
+ normalizeQueryReportRows,
13
+ scrubFieldname,
14
+ stripReportHtml as stripHtml,
15
+ } from "@multiplatform.one/frappe-ui";
16
+ export type {
17
+ QueryReportColumn,
18
+ QueryReportFilterMeta,
19
+ QueryReportFilters,
20
+ QueryReportFixture,
21
+ QueryReportMeta,
22
+ QueryReportRow,
23
+ QueryReportRunMessage,
24
+ ScriptFilterExtraction,
25
+ } from "@multiplatform.one/frappe-ui";