@riboseinc/paneron-registry-kit 2.0.0 → 2.0.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 (503) hide show
  1. package/LICENSE +21 -0
  2. package/README.adoc +35 -0
  3. package/compiled/common.js +2 -0
  4. package/compiled/index.js +21 -0
  5. package/compiled/migrations/initial.js +8 -0
  6. package/compiled/types/cr.js +131 -0
  7. package/compiled/types/index.js +8 -0
  8. package/compiled/types/item.js +22 -0
  9. package/compiled/types/proposal.js +21 -0
  10. package/compiled/types/register.js +25 -0
  11. package/compiled/types/registry.js +10 -0
  12. package/compiled/types/stakeholder.js +34 -0
  13. package/compiled/types/util.js +3 -0
  14. package/compiled/types/views.js +2 -0
  15. package/compiled/views/AnnotatedChange.js +57 -0
  16. package/compiled/views/BrowserCtx.js +19 -0
  17. package/compiled/views/FilterCriteria/CRITERIA_CONFIGURATION.js +110 -0
  18. package/compiled/views/FilterCriteria/criteriaGroupToQueryExpression.js +40 -0
  19. package/compiled/views/FilterCriteria/criteriaGroupToSummary.js +47 -0
  20. package/compiled/views/FilterCriteria/criteriaToNodes.js +89 -0
  21. package/compiled/views/FilterCriteria/index.js +75 -0
  22. package/compiled/views/FilterCriteria/models.js +28 -0
  23. package/compiled/views/FilterCriteria/mutateGroup.js +53 -0
  24. package/compiled/views/GenericRelatedItemView.js +147 -0
  25. package/compiled/views/RegisterStakeholder.js +19 -0
  26. package/compiled/views/RegisterVersion.js +20 -0
  27. package/compiled/views/SearchQuery.js +58 -0
  28. package/compiled/views/change-request/ChangeRequestContext.js +30 -0
  29. package/compiled/views/change-request/Proposals.js +185 -0
  30. package/compiled/views/change-request/objectChangeset.js +189 -0
  31. package/compiled/views/detail/ChangeRequest/Proposal.js +144 -0
  32. package/compiled/views/detail/ChangeRequest/index.js +140 -0
  33. package/compiled/views/detail/ChangeRequest/transitions.js +418 -0
  34. package/compiled/views/detail/CustomView/index.js +32 -0
  35. package/compiled/views/detail/RegisterHome/index.js +70 -0
  36. package/compiled/views/detail/RegisterItem/RelatedItems.d.ts +14 -0
  37. package/compiled/views/detail/RegisterItem/RelatedItems.js +28 -0
  38. package/compiled/views/detail/RegisterItem/RelatedItems.js.map +1 -0
  39. package/compiled/views/detail/RegisterItem/SupersedingItemMenu.js +27 -0
  40. package/compiled/views/detail/RegisterItem/index.js +277 -0
  41. package/compiled/views/detail/RegisterItem/index.js.map +1 -0
  42. package/compiled/views/detail/RegisterMeta/RegisterMetaForm.js +135 -0
  43. package/compiled/views/detail/RegisterMeta/index.js +61 -0
  44. package/compiled/views/detail/index.js +11 -0
  45. package/compiled/views/diffing/InlineDiff.js +20 -0
  46. package/compiled/views/diffing/StructuredDiff.js +38 -0
  47. package/compiled/views/hooks/useCustomView.js +14 -0
  48. package/compiled/views/hooks/useItemClassConfig.js +14 -0
  49. package/compiled/views/hooks/useItemRef.js +26 -0
  50. package/compiled/views/hooks/useSingleRegisterItemData.js +21 -0
  51. package/compiled/views/index.js +142 -0
  52. package/compiled/views/itemPathUtils.js +115 -0
  53. package/compiled/views/itemQueryUtils.js +42 -0
  54. package/compiled/views/protocolRegistry.js +24 -0
  55. package/compiled/views/sidebar/Browse/index.js +278 -0
  56. package/compiled/views/sidebar/Export/index.js +47 -0
  57. package/compiled/views/sidebar/ListItem.js +23 -0
  58. package/compiled/views/sidebar/Registration/index.js +114 -0
  59. package/compiled/views/sidebar/Search/index.js +100 -0
  60. package/compiled/views/sidebar/index.js +73 -0
  61. package/compiled/views/util.js +63 -0
  62. package/dependencies-local/extension-kit/SettingsContext.d.ts +8 -0
  63. package/dependencies-local/extension-kit/SettingsContext.js +19 -0
  64. package/dependencies-local/extension-kit/SettingsContext.js.map +1 -0
  65. package/dependencies-local/extension-kit/context.d.ts +11 -0
  66. package/dependencies-local/extension-kit/context.js +133 -0
  67. package/dependencies-local/extension-kit/context.js.map +1 -0
  68. package/dependencies-local/extension-kit/i18n/ContextProvider.d.ts +9 -0
  69. package/dependencies-local/extension-kit/i18n/ContextProvider.js +33 -0
  70. package/dependencies-local/extension-kit/i18n/ContextProvider.js.map +1 -0
  71. package/dependencies-local/extension-kit/i18n/context.d.ts +9 -0
  72. package/dependencies-local/extension-kit/i18n/context.js +23 -0
  73. package/dependencies-local/extension-kit/i18n/context.js.map +1 -0
  74. package/dependencies-local/extension-kit/i18n/types.d.ts +10 -0
  75. package/dependencies-local/extension-kit/i18n/types.js.map +1 -0
  76. package/dependencies-local/extension-kit/i18n/widgets.d.ts +16 -0
  77. package/dependencies-local/extension-kit/i18n/widgets.js +56 -0
  78. package/dependencies-local/extension-kit/i18n/widgets.js.map +1 -0
  79. package/dependencies-local/extension-kit/index.d.ts +3 -0
  80. package/dependencies-local/extension-kit/index.js +78 -0
  81. package/dependencies-local/extension-kit/index.js.map +1 -0
  82. package/dependencies-local/extension-kit/object-specs/index.d.ts +2 -0
  83. package/dependencies-local/extension-kit/object-specs/index.js +22 -0
  84. package/dependencies-local/extension-kit/object-specs/index.js.map +1 -0
  85. package/dependencies-local/extension-kit/object-specs/paneron-object.d.ts +6 -0
  86. package/dependencies-local/extension-kit/object-specs/paneron-object.js +161 -0
  87. package/dependencies-local/extension-kit/object-specs/paneron-object.js.map +1 -0
  88. package/dependencies-local/extension-kit/object-specs/ser-des.d.ts +31 -0
  89. package/dependencies-local/extension-kit/object-specs/ser-des.js +187 -0
  90. package/dependencies-local/extension-kit/object-specs/ser-des.js.map +1 -0
  91. package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.d.ts +2 -0
  92. package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.js +42 -0
  93. package/dependencies-local/extension-kit/object-specs/yaml/custom-bool.js.map +1 -0
  94. package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.d.ts +3 -0
  95. package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.js +110 -0
  96. package/dependencies-local/extension-kit/object-specs/yaml/custom-timestamp.js.map +1 -0
  97. package/dependencies-local/extension-kit/object-specs/yaml/index.d.ts +9 -0
  98. package/dependencies-local/extension-kit/object-specs/yaml/index.js +36 -0
  99. package/dependencies-local/extension-kit/object-specs/yaml/index.js.map +1 -0
  100. package/dependencies-local/extension-kit/object-specs/yaml/schema.d.ts +3 -0
  101. package/dependencies-local/extension-kit/object-specs/yaml/schema.js +26 -0
  102. package/dependencies-local/extension-kit/object-specs/yaml/schema.js.map +1 -0
  103. package/dependencies-local/extension-kit/package.json +53 -0
  104. package/dependencies-local/extension-kit/settings.d.ts +6 -0
  105. package/dependencies-local/extension-kit/settings.js +11 -0
  106. package/dependencies-local/extension-kit/settings.js.map +1 -0
  107. package/dependencies-local/extension-kit/types/binary-invocation.d.ts +31 -0
  108. package/dependencies-local/extension-kit/types/binary-invocation.js.map +1 -0
  109. package/dependencies-local/extension-kit/types/buffers.d.ts +17 -0
  110. package/dependencies-local/extension-kit/types/buffers.js +5 -0
  111. package/dependencies-local/extension-kit/types/buffers.js.map +1 -0
  112. package/dependencies-local/extension-kit/types/changes.d.ts +37 -0
  113. package/dependencies-local/extension-kit/types/changes.js +5 -0
  114. package/dependencies-local/extension-kit/types/changes.js.map +1 -0
  115. package/dependencies-local/extension-kit/types/data.d.ts +54 -0
  116. package/dependencies-local/extension-kit/types/data.js +5 -0
  117. package/dependencies-local/extension-kit/types/data.js.map +1 -0
  118. package/dependencies-local/extension-kit/types/dialogs.d.ts +15 -0
  119. package/dependencies-local/extension-kit/types/dialogs.js +5 -0
  120. package/dependencies-local/extension-kit/types/dialogs.js.map +1 -0
  121. package/dependencies-local/extension-kit/types/extension-maker.d.ts +17 -0
  122. package/dependencies-local/extension-kit/types/extension-maker.js +5 -0
  123. package/dependencies-local/extension-kit/types/extension-maker.js.map +1 -0
  124. package/dependencies-local/extension-kit/types/extension.d.ts +27 -0
  125. package/dependencies-local/extension-kit/types/extension.js +5 -0
  126. package/dependencies-local/extension-kit/types/extension.js.map +1 -0
  127. package/dependencies-local/extension-kit/types/index.d.ts +3 -0
  128. package/dependencies-local/extension-kit/types/index.js +41 -0
  129. package/dependencies-local/extension-kit/types/index.js.map +1 -0
  130. package/dependencies-local/extension-kit/types/indexes.d.ts +6 -0
  131. package/dependencies-local/extension-kit/types/indexes.js +15 -0
  132. package/dependencies-local/extension-kit/types/indexes.js.map +1 -0
  133. package/dependencies-local/extension-kit/types/migrations.d.ts +15 -0
  134. package/dependencies-local/extension-kit/types/migrations.js +5 -0
  135. package/dependencies-local/extension-kit/types/migrations.js.map +1 -0
  136. package/dependencies-local/extension-kit/types/object-spec.d.ts +108 -0
  137. package/dependencies-local/extension-kit/types/object-spec.js +23 -0
  138. package/dependencies-local/extension-kit/types/object-spec.js.map +1 -0
  139. package/dependencies-local/extension-kit/types/objects.d.ts +18 -0
  140. package/dependencies-local/extension-kit/types/objects.js +5 -0
  141. package/dependencies-local/extension-kit/types/objects.js.map +1 -0
  142. package/dependencies-local/extension-kit/types/progress.d.ts +5 -0
  143. package/dependencies-local/extension-kit/types/progress.js +5 -0
  144. package/dependencies-local/extension-kit/types/progress.js.map +1 -0
  145. package/dependencies-local/extension-kit/types/renderer.d.ts +495 -0
  146. package/dependencies-local/extension-kit/types/renderer.js +5 -0
  147. package/dependencies-local/extension-kit/types/renderer.js.map +1 -0
  148. package/dependencies-local/extension-kit/useDebounce.d.ts +2 -0
  149. package/dependencies-local/extension-kit/useDebounce.js +27 -0
  150. package/dependencies-local/extension-kit/useDebounce.js.map +1 -0
  151. package/dependencies-local/extension-kit/usePersistentStateReducer.d.ts +35 -0
  152. package/dependencies-local/extension-kit/usePersistentStateReducer.js +91 -0
  153. package/dependencies-local/extension-kit/usePersistentStateReducer.js.map +1 -0
  154. package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.d.ts +48 -0
  155. package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.js +116 -0
  156. package/dependencies-local/extension-kit/useTimeTravelingPersistentStateReducer.js.map +1 -0
  157. package/dependencies-local/extension-kit/util.d.ts +8 -0
  158. package/dependencies-local/extension-kit/util.js +21 -0
  159. package/dependencies-local/extension-kit/util.js.map +1 -0
  160. package/dependencies-local/extension-kit/widgets/ErrorState.d.ts +8 -0
  161. package/dependencies-local/extension-kit/widgets/ErrorState.js +44 -0
  162. package/dependencies-local/extension-kit/widgets/ErrorState.js.map +1 -0
  163. package/dependencies-local/extension-kit/widgets/Grid.d.ts +41 -0
  164. package/dependencies-local/extension-kit/widgets/Grid.js +213 -0
  165. package/dependencies-local/extension-kit/widgets/Grid.js.map +1 -0
  166. package/dependencies-local/extension-kit/widgets/HelpTooltip.d.ts +18 -0
  167. package/dependencies-local/extension-kit/widgets/HelpTooltip.js +84 -0
  168. package/dependencies-local/extension-kit/widgets/HelpTooltip.js.map +1 -0
  169. package/dependencies-local/extension-kit/widgets/ItemCount.d.ts +19 -0
  170. package/dependencies-local/extension-kit/widgets/ItemCount.js +78 -0
  171. package/dependencies-local/extension-kit/widgets/ItemCount.js.map +1 -0
  172. package/dependencies-local/extension-kit/widgets/List.d.ts +40 -0
  173. package/dependencies-local/extension-kit/widgets/List.js +191 -0
  174. package/dependencies-local/extension-kit/widgets/List.js.map +1 -0
  175. package/dependencies-local/extension-kit/widgets/Navbar.d.ts +20 -0
  176. package/dependencies-local/extension-kit/widgets/Navbar.js +75 -0
  177. package/dependencies-local/extension-kit/widgets/Navbar.js.map +1 -0
  178. package/dependencies-local/extension-kit/widgets/SearchResultList.d.ts +24 -0
  179. package/dependencies-local/extension-kit/widgets/SearchResultList.js +201 -0
  180. package/dependencies-local/extension-kit/widgets/SearchResultList.js.map +1 -0
  181. package/dependencies-local/extension-kit/widgets/Sidebar/Block.d.ts +21 -0
  182. package/dependencies-local/extension-kit/widgets/Sidebar/Block.js +94 -0
  183. package/dependencies-local/extension-kit/widgets/Sidebar/Block.js.map +1 -0
  184. package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.d.ts +6 -0
  185. package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.js +22 -0
  186. package/dependencies-local/extension-kit/widgets/Sidebar/BlockStateButtonGroup.js.map +1 -0
  187. package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.d.ts +28 -0
  188. package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.js +148 -0
  189. package/dependencies-local/extension-kit/widgets/Sidebar/PropertyView.js.map +1 -0
  190. package/dependencies-local/extension-kit/widgets/Sidebar/index.d.ts +27 -0
  191. package/dependencies-local/extension-kit/widgets/Sidebar/index.js +178 -0
  192. package/dependencies-local/extension-kit/widgets/Sidebar/index.js.map +1 -0
  193. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.d.ts +13 -0
  194. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.js +82 -0
  195. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/SuperSidebar.js.map +1 -0
  196. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.d.ts +10 -0
  197. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.js +168 -0
  198. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/context.js.map +1 -0
  199. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.d.ts +9 -0
  200. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.js +66 -0
  201. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/detail.js.map +1 -0
  202. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.d.ts +33 -0
  203. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.js +204 -0
  204. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/index.js.map +1 -0
  205. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.d.ts +74 -0
  206. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.js +5 -0
  207. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/types.js.map +1 -0
  208. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.d.ts +1 -0
  209. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.js +14 -0
  210. package/dependencies-local/extension-kit/widgets/TabbedWorkspace/util.js.map +1 -0
  211. package/dependencies-local/extension-kit/widgets/Workspace.d.ts +38 -0
  212. package/dependencies-local/extension-kit/widgets/Workspace.js +99 -0
  213. package/dependencies-local/extension-kit/widgets/Workspace.js.map +1 -0
  214. package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.d.ts +12 -0
  215. package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.js +57 -0
  216. package/dependencies-local/extension-kit/widgets/panels/PanelSeparator.js.map +1 -0
  217. package/dependencies-local/extension-kit/widgets/panels/index.d.ts +28 -0
  218. package/dependencies-local/extension-kit/widgets/panels/index.js +169 -0
  219. package/dependencies-local/extension-kit/widgets/panels/index.js.map +1 -0
  220. package/dist/common.d.ts +1 -0
  221. package/dist/common.js.map +1 -0
  222. package/dist/index.d.ts +6 -0
  223. package/dist/index.js.map +1 -0
  224. package/dist/migrations/initial.d.ts +3 -0
  225. package/dist/migrations/initial.js.map +1 -0
  226. package/dist/package.json +56 -0
  227. package/dist/types/cr.d.ts +216 -0
  228. package/dist/types/cr.js.map +1 -0
  229. package/dist/types/index.d.ts +7 -0
  230. package/dist/types/index.js.map +1 -0
  231. package/dist/types/item.d.ts +59 -0
  232. package/dist/types/item.js.map +1 -0
  233. package/dist/types/proposal.d.ts +64 -0
  234. package/dist/types/proposal.js.map +1 -0
  235. package/dist/types/register.d.ts +18 -0
  236. package/dist/types/register.js.map +1 -0
  237. package/dist/types/registry.d.ts +15 -0
  238. package/dist/types/registry.js.map +1 -0
  239. package/dist/types/stakeholder.d.ts +58 -0
  240. package/dist/types/stakeholder.js.map +1 -0
  241. package/dist/types/util.d.ts +21 -0
  242. package/dist/types/util.js +5 -0
  243. package/dist/types/util.js.map +1 -0
  244. package/dist/types/views.d.ts +157 -0
  245. package/dist/types/views.js +5 -0
  246. package/dist/types/views.js.map +1 -0
  247. package/dist/views/AnnotatedChange.d.ts +7 -0
  248. package/dist/views/AnnotatedChange.js.map +1 -0
  249. package/dist/views/BrowserCtx.d.ts +73 -0
  250. package/dist/views/BrowserCtx.js.map +1 -0
  251. package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +17 -0
  252. package/dist/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -0
  253. package/dist/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +6 -0
  254. package/dist/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -0
  255. package/dist/views/FilterCriteria/criteriaGroupToSummary.d.ts +5 -0
  256. package/dist/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -0
  257. package/dist/views/FilterCriteria/criteriaToNodes.d.ts +24 -0
  258. package/dist/views/FilterCriteria/criteriaToNodes.js.map +1 -0
  259. package/dist/views/FilterCriteria/index.d.ts +23 -0
  260. package/dist/views/FilterCriteria/index.js.map +1 -0
  261. package/dist/views/FilterCriteria/models.d.ts +68 -0
  262. package/dist/views/FilterCriteria/models.js.map +1 -0
  263. package/dist/views/FilterCriteria/mutateGroup.d.ts +17 -0
  264. package/dist/views/FilterCriteria/mutateGroup.js.map +1 -0
  265. package/dist/views/GenericRelatedItemView.d.ts +6 -0
  266. package/dist/views/GenericRelatedItemView.js.map +1 -0
  267. package/dist/views/RegisterStakeholder.d.ts +9 -0
  268. package/dist/views/RegisterStakeholder.js.map +1 -0
  269. package/dist/views/RegisterVersion.d.ts +9 -0
  270. package/dist/views/RegisterVersion.js.map +1 -0
  271. package/dist/views/SearchQuery.d.ts +13 -0
  272. package/dist/views/SearchQuery.js.map +1 -0
  273. package/dist/views/change-request/ChangeRequestContext.d.ts +20 -0
  274. package/dist/views/change-request/ChangeRequestContext.js.map +1 -0
  275. package/dist/views/change-request/Proposals.d.ts +21 -0
  276. package/dist/views/change-request/Proposals.js.map +1 -0
  277. package/dist/views/change-request/objectChangeset.d.ts +31 -0
  278. package/dist/views/change-request/objectChangeset.js.map +1 -0
  279. package/dist/views/detail/ChangeRequest/Proposal.d.ts +0 -0
  280. package/dist/views/detail/ChangeRequest/Proposal.js.map +1 -0
  281. package/dist/views/detail/ChangeRequest/index.d.ts +13 -0
  282. package/dist/views/detail/ChangeRequest/index.js.map +1 -0
  283. package/dist/views/detail/ChangeRequest/transitions.d.ts +28 -0
  284. package/dist/views/detail/ChangeRequest/transitions.js.map +1 -0
  285. package/dist/views/detail/CustomView/index.d.ts +13 -0
  286. package/dist/views/detail/CustomView/index.js.map +1 -0
  287. package/dist/views/detail/RegisterHome/index.d.ts +5 -0
  288. package/dist/views/detail/RegisterHome/index.js.map +1 -0
  289. package/dist/views/detail/RegisterItem/RelatedItems.d.ts +14 -0
  290. package/{views → dist/views}/detail/RegisterItem/RelatedItems.js +5 -5
  291. package/dist/views/detail/RegisterItem/RelatedItems.js.map +1 -0
  292. package/dist/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
  293. package/dist/views/detail/RegisterItem/index.d.ts +13 -0
  294. package/{views → dist/views}/detail/RegisterItem/index.js +3 -2
  295. package/dist/views/detail/RegisterItem/index.js.map +1 -0
  296. package/dist/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
  297. package/dist/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
  298. package/dist/views/detail/RegisterMeta/index.d.ts +10 -0
  299. package/dist/views/detail/RegisterMeta/index.js.map +1 -0
  300. package/dist/views/detail/index.d.ts +1 -0
  301. package/dist/views/detail/index.js.map +1 -0
  302. package/dist/views/diffing/InlineDiff.d.ts +12 -0
  303. package/dist/views/diffing/InlineDiff.js.map +1 -0
  304. package/dist/views/diffing/StructuredDiff.d.ts +11 -0
  305. package/dist/views/diffing/StructuredDiff.js.map +1 -0
  306. package/dist/views/hooks/useCustomView.d.ts +3 -0
  307. package/dist/views/hooks/useCustomView.js.map +1 -0
  308. package/dist/views/hooks/useItemClassConfig.d.ts +3 -0
  309. package/dist/views/hooks/useItemClassConfig.js.map +1 -0
  310. package/dist/views/hooks/useItemRef.d.ts +3 -0
  311. package/dist/views/hooks/useItemRef.js.map +1 -0
  312. package/dist/views/hooks/useSingleRegisterItemData.d.ts +3 -0
  313. package/dist/views/hooks/useSingleRegisterItemData.js.map +1 -0
  314. package/dist/views/index.d.ts +7 -0
  315. package/dist/views/index.js.map +1 -0
  316. package/dist/views/itemPathUtils.d.ts +52 -0
  317. package/dist/views/itemPathUtils.js.map +1 -0
  318. package/dist/views/itemQueryUtils.d.ts +11 -0
  319. package/dist/views/itemQueryUtils.js.map +1 -0
  320. package/dist/views/protocolRegistry.d.ts +12 -0
  321. package/dist/views/protocolRegistry.js.map +1 -0
  322. package/dist/views/sidebar/Browse/index.d.ts +11 -0
  323. package/dist/views/sidebar/Browse/index.js.map +1 -0
  324. package/dist/views/sidebar/Export/index.d.ts +5 -0
  325. package/dist/views/sidebar/Export/index.js.map +1 -0
  326. package/dist/views/sidebar/ListItem.d.ts +10 -0
  327. package/dist/views/sidebar/ListItem.js.map +1 -0
  328. package/dist/views/sidebar/Registration/index.d.ts +5 -0
  329. package/dist/views/sidebar/Registration/index.js.map +1 -0
  330. package/dist/views/sidebar/Search/index.d.ts +18 -0
  331. package/dist/views/sidebar/Search/index.js.map +1 -0
  332. package/dist/views/sidebar/index.d.ts +6 -0
  333. package/dist/views/sidebar/index.js.map +1 -0
  334. package/dist/views/util.d.ts +36 -0
  335. package/dist/views/util.js.map +1 -0
  336. package/package.json +2 -1
  337. package/react-visual-diff.d.ts +9 -0
  338. package/views/detail/RegisterItem/RelatedItems.js.map +0 -1
  339. package/views/detail/RegisterItem/index.js.map +0 -1
  340. /package/{common.d.ts → compiled/common.d.ts} +0 -0
  341. /package/{common.js.map → compiled/common.js.map} +0 -0
  342. /package/{index.d.ts → compiled/index.d.ts} +0 -0
  343. /package/{index.js.map → compiled/index.js.map} +0 -0
  344. /package/{migrations → compiled/migrations}/initial.d.ts +0 -0
  345. /package/{migrations → compiled/migrations}/initial.js.map +0 -0
  346. /package/{types → compiled/types}/cr.d.ts +0 -0
  347. /package/{types → compiled/types}/cr.js.map +0 -0
  348. /package/{types → compiled/types}/index.d.ts +0 -0
  349. /package/{types → compiled/types}/index.js.map +0 -0
  350. /package/{types → compiled/types}/item.d.ts +0 -0
  351. /package/{types → compiled/types}/item.js.map +0 -0
  352. /package/{types → compiled/types}/proposal.d.ts +0 -0
  353. /package/{types → compiled/types}/proposal.js.map +0 -0
  354. /package/{types → compiled/types}/register.d.ts +0 -0
  355. /package/{types → compiled/types}/register.js.map +0 -0
  356. /package/{types → compiled/types}/registry.d.ts +0 -0
  357. /package/{types → compiled/types}/registry.js.map +0 -0
  358. /package/{types → compiled/types}/stakeholder.d.ts +0 -0
  359. /package/{types → compiled/types}/stakeholder.js.map +0 -0
  360. /package/{types → compiled/types}/util.d.ts +0 -0
  361. /package/{types → compiled/types}/util.js.map +0 -0
  362. /package/{types → compiled/types}/views.d.ts +0 -0
  363. /package/{types → compiled/types}/views.js.map +0 -0
  364. /package/{views → compiled/views}/AnnotatedChange.d.ts +0 -0
  365. /package/{views → compiled/views}/AnnotatedChange.js.map +0 -0
  366. /package/{views → compiled/views}/BrowserCtx.d.ts +0 -0
  367. /package/{views → compiled/views}/BrowserCtx.js.map +0 -0
  368. /package/{views → compiled/views}/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +0 -0
  369. /package/{views → compiled/views}/FilterCriteria/CRITERIA_CONFIGURATION.js.map +0 -0
  370. /package/{views → compiled/views}/FilterCriteria/criteriaGroupToQueryExpression.d.ts +0 -0
  371. /package/{views → compiled/views}/FilterCriteria/criteriaGroupToQueryExpression.js.map +0 -0
  372. /package/{views → compiled/views}/FilterCriteria/criteriaGroupToSummary.d.ts +0 -0
  373. /package/{views → compiled/views}/FilterCriteria/criteriaGroupToSummary.js.map +0 -0
  374. /package/{views → compiled/views}/FilterCriteria/criteriaToNodes.d.ts +0 -0
  375. /package/{views → compiled/views}/FilterCriteria/criteriaToNodes.js.map +0 -0
  376. /package/{views → compiled/views}/FilterCriteria/index.d.ts +0 -0
  377. /package/{views → compiled/views}/FilterCriteria/index.js.map +0 -0
  378. /package/{views → compiled/views}/FilterCriteria/models.d.ts +0 -0
  379. /package/{views → compiled/views}/FilterCriteria/models.js.map +0 -0
  380. /package/{views → compiled/views}/FilterCriteria/mutateGroup.d.ts +0 -0
  381. /package/{views → compiled/views}/FilterCriteria/mutateGroup.js.map +0 -0
  382. /package/{views → compiled/views}/GenericRelatedItemView.d.ts +0 -0
  383. /package/{views → compiled/views}/GenericRelatedItemView.js.map +0 -0
  384. /package/{views → compiled/views}/RegisterStakeholder.d.ts +0 -0
  385. /package/{views → compiled/views}/RegisterStakeholder.js.map +0 -0
  386. /package/{views → compiled/views}/RegisterVersion.d.ts +0 -0
  387. /package/{views → compiled/views}/RegisterVersion.js.map +0 -0
  388. /package/{views → compiled/views}/SearchQuery.d.ts +0 -0
  389. /package/{views → compiled/views}/SearchQuery.js.map +0 -0
  390. /package/{views → compiled/views}/change-request/ChangeRequestContext.d.ts +0 -0
  391. /package/{views → compiled/views}/change-request/ChangeRequestContext.js.map +0 -0
  392. /package/{views → compiled/views}/change-request/Proposals.d.ts +0 -0
  393. /package/{views → compiled/views}/change-request/Proposals.js.map +0 -0
  394. /package/{views → compiled/views}/change-request/objectChangeset.d.ts +0 -0
  395. /package/{views → compiled/views}/change-request/objectChangeset.js.map +0 -0
  396. /package/{views → compiled/views}/detail/ChangeRequest/Proposal.d.ts +0 -0
  397. /package/{views → compiled/views}/detail/ChangeRequest/Proposal.js.map +0 -0
  398. /package/{views → compiled/views}/detail/ChangeRequest/index.d.ts +0 -0
  399. /package/{views → compiled/views}/detail/ChangeRequest/index.js.map +0 -0
  400. /package/{views → compiled/views}/detail/ChangeRequest/transitions.d.ts +0 -0
  401. /package/{views → compiled/views}/detail/ChangeRequest/transitions.js.map +0 -0
  402. /package/{views → compiled/views}/detail/CustomView/index.d.ts +0 -0
  403. /package/{views → compiled/views}/detail/CustomView/index.js.map +0 -0
  404. /package/{views → compiled/views}/detail/RegisterHome/index.d.ts +0 -0
  405. /package/{views → compiled/views}/detail/RegisterHome/index.js.map +0 -0
  406. /package/{views → compiled/views}/detail/RegisterItem/SupersedingItemMenu.d.ts +0 -0
  407. /package/{views → compiled/views}/detail/RegisterItem/SupersedingItemMenu.js.map +0 -0
  408. /package/{views → compiled/views}/detail/RegisterItem/index.d.ts +0 -0
  409. /package/{views → compiled/views}/detail/RegisterMeta/RegisterMetaForm.d.ts +0 -0
  410. /package/{views → compiled/views}/detail/RegisterMeta/RegisterMetaForm.js.map +0 -0
  411. /package/{views → compiled/views}/detail/RegisterMeta/index.d.ts +0 -0
  412. /package/{views → compiled/views}/detail/RegisterMeta/index.js.map +0 -0
  413. /package/{views → compiled/views}/detail/index.d.ts +0 -0
  414. /package/{views → compiled/views}/detail/index.js.map +0 -0
  415. /package/{views → compiled/views}/diffing/InlineDiff.d.ts +0 -0
  416. /package/{views → compiled/views}/diffing/InlineDiff.js.map +0 -0
  417. /package/{views → compiled/views}/diffing/StructuredDiff.d.ts +0 -0
  418. /package/{views → compiled/views}/diffing/StructuredDiff.js.map +0 -0
  419. /package/{views → compiled/views}/hooks/useCustomView.d.ts +0 -0
  420. /package/{views → compiled/views}/hooks/useCustomView.js.map +0 -0
  421. /package/{views → compiled/views}/hooks/useItemClassConfig.d.ts +0 -0
  422. /package/{views → compiled/views}/hooks/useItemClassConfig.js.map +0 -0
  423. /package/{views → compiled/views}/hooks/useItemRef.d.ts +0 -0
  424. /package/{views → compiled/views}/hooks/useItemRef.js.map +0 -0
  425. /package/{views → compiled/views}/hooks/useSingleRegisterItemData.d.ts +0 -0
  426. /package/{views → compiled/views}/hooks/useSingleRegisterItemData.js.map +0 -0
  427. /package/{views → compiled/views}/index.d.ts +0 -0
  428. /package/{views → compiled/views}/index.js.map +0 -0
  429. /package/{views → compiled/views}/itemPathUtils.d.ts +0 -0
  430. /package/{views → compiled/views}/itemPathUtils.js.map +0 -0
  431. /package/{views → compiled/views}/itemQueryUtils.d.ts +0 -0
  432. /package/{views → compiled/views}/itemQueryUtils.js.map +0 -0
  433. /package/{views → compiled/views}/protocolRegistry.d.ts +0 -0
  434. /package/{views → compiled/views}/protocolRegistry.js.map +0 -0
  435. /package/{views → compiled/views}/sidebar/Browse/index.d.ts +0 -0
  436. /package/{views → compiled/views}/sidebar/Browse/index.js.map +0 -0
  437. /package/{views → compiled/views}/sidebar/Export/index.d.ts +0 -0
  438. /package/{views → compiled/views}/sidebar/Export/index.js.map +0 -0
  439. /package/{views → compiled/views}/sidebar/ListItem.d.ts +0 -0
  440. /package/{views → compiled/views}/sidebar/ListItem.js.map +0 -0
  441. /package/{views → compiled/views}/sidebar/Registration/index.d.ts +0 -0
  442. /package/{views → compiled/views}/sidebar/Registration/index.js.map +0 -0
  443. /package/{views → compiled/views}/sidebar/Search/index.d.ts +0 -0
  444. /package/{views → compiled/views}/sidebar/Search/index.js.map +0 -0
  445. /package/{views → compiled/views}/sidebar/index.d.ts +0 -0
  446. /package/{views → compiled/views}/sidebar/index.js.map +0 -0
  447. /package/{views → compiled/views}/util.d.ts +0 -0
  448. /package/{views → compiled/views}/util.js.map +0 -0
  449. /package/{types/util.js → dependencies-local/extension-kit/i18n/types.js} +0 -0
  450. /package/{types/views.js → dependencies-local/extension-kit/types/binary-invocation.js} +0 -0
  451. /package/{common.js → dist/common.js} +0 -0
  452. /package/{index.js → dist/index.js} +0 -0
  453. /package/{migrations → dist/migrations}/initial.js +0 -0
  454. /package/{types → dist/types}/cr.js +0 -0
  455. /package/{types → dist/types}/index.js +0 -0
  456. /package/{types → dist/types}/item.js +0 -0
  457. /package/{types → dist/types}/proposal.js +0 -0
  458. /package/{types → dist/types}/register.js +0 -0
  459. /package/{types → dist/types}/registry.js +0 -0
  460. /package/{types → dist/types}/stakeholder.js +0 -0
  461. /package/{views → dist/views}/AnnotatedChange.js +0 -0
  462. /package/{views → dist/views}/BrowserCtx.js +0 -0
  463. /package/{views → dist/views}/FilterCriteria/CRITERIA_CONFIGURATION.js +0 -0
  464. /package/{views → dist/views}/FilterCriteria/criteriaGroupToQueryExpression.js +0 -0
  465. /package/{views → dist/views}/FilterCriteria/criteriaGroupToSummary.js +0 -0
  466. /package/{views → dist/views}/FilterCriteria/criteriaToNodes.js +0 -0
  467. /package/{views → dist/views}/FilterCriteria/index.js +0 -0
  468. /package/{views → dist/views}/FilterCriteria/models.js +0 -0
  469. /package/{views → dist/views}/FilterCriteria/mutateGroup.js +0 -0
  470. /package/{views → dist/views}/GenericRelatedItemView.js +0 -0
  471. /package/{views → dist/views}/RegisterStakeholder.js +0 -0
  472. /package/{views → dist/views}/RegisterVersion.js +0 -0
  473. /package/{views → dist/views}/SearchQuery.js +0 -0
  474. /package/{views → dist/views}/change-request/ChangeRequestContext.js +0 -0
  475. /package/{views → dist/views}/change-request/Proposals.js +0 -0
  476. /package/{views → dist/views}/change-request/objectChangeset.js +0 -0
  477. /package/{views → dist/views}/detail/ChangeRequest/Proposal.js +0 -0
  478. /package/{views → dist/views}/detail/ChangeRequest/index.js +0 -0
  479. /package/{views → dist/views}/detail/ChangeRequest/transitions.js +0 -0
  480. /package/{views → dist/views}/detail/CustomView/index.js +0 -0
  481. /package/{views → dist/views}/detail/RegisterHome/index.js +0 -0
  482. /package/{views/detail/RegisterItem/RelatedItems.d.ts → dist/views/detail/RegisterItem/SupersedingItemMenu.d.ts} +0 -0
  483. /package/{views → dist/views}/detail/RegisterItem/SupersedingItemMenu.js +0 -0
  484. /package/{views → dist/views}/detail/RegisterMeta/RegisterMetaForm.js +0 -0
  485. /package/{views → dist/views}/detail/RegisterMeta/index.js +0 -0
  486. /package/{views → dist/views}/detail/index.js +0 -0
  487. /package/{views → dist/views}/diffing/InlineDiff.js +0 -0
  488. /package/{views → dist/views}/diffing/StructuredDiff.js +0 -0
  489. /package/{views → dist/views}/hooks/useCustomView.js +0 -0
  490. /package/{views → dist/views}/hooks/useItemClassConfig.js +0 -0
  491. /package/{views → dist/views}/hooks/useItemRef.js +0 -0
  492. /package/{views → dist/views}/hooks/useSingleRegisterItemData.js +0 -0
  493. /package/{views → dist/views}/index.js +0 -0
  494. /package/{views → dist/views}/itemPathUtils.js +0 -0
  495. /package/{views → dist/views}/itemQueryUtils.js +0 -0
  496. /package/{views → dist/views}/protocolRegistry.js +0 -0
  497. /package/{views → dist/views}/sidebar/Browse/index.js +0 -0
  498. /package/{views → dist/views}/sidebar/Export/index.js +0 -0
  499. /package/{views → dist/views}/sidebar/ListItem.js +0 -0
  500. /package/{views → dist/views}/sidebar/Registration/index.js +0 -0
  501. /package/{views → dist/views}/sidebar/Search/index.js +0 -0
  502. /package/{views → dist/views}/sidebar/index.js +0 -0
  503. /package/{views → dist/views}/util.js +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"criteriaToNodes.js","sourceRoot":"","sources":["../../../src/views/FilterCriteria/criteriaToNodes.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,WAAW,EAA6B,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,MAAM,EAAE,MAAM,+DAA+D,CAAC;AAEvF,OAAO,EAA4B,eAAe,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACpF,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE;;;GAGG;AACH,MAAM,CAAC,OAAO,UAAU,eAAe,CACrC,EAAiC,EACjC,IAiBC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7B,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,EAAgB,EAAE;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/B,MAAM,WAAW,GAAG,MAAM,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YACjD,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;QACvC,MAAM,YAAY,GAChB,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,YAAY;YACxC,CAAC,CAAC,IAAC,MAAM,IAAC,OAAO,QAAC,KAAK,QACnB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAa,CAAC,IAAI,EAAE,GAAG,CAAC,EAC5C,KAAK,EAAC,yCAAyC,EAC/C,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAC,OAAO,GAAG;YACnB,CAAC,CAAC,IAAI,CAAC;QACX,MAAM,cAAc,GAAuB,IAAI,CAAC,UAAU;YACxD,CAAC,CAAC,IAAC,MAAM,IACL,OAAO,QACP,KAAK,QACL,KAAK,EAAC,2BAA2B,EACjC,IAAI,EAAC,iBAAiB,EACtB,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAW,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,GAAI;YACvD,CAAC,CAAC,IAAI,CAAC;QAET,IAAI,eAAe,CAAC,CAAC,CAAC,EAAE;YAEtB,oCAAoC;YAEpC,MAAM,EAAE,GAAG,CAAkB,CAAC;YAC9B,OAAO;gBACL,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC9C,QAAQ;gBACR,QAAQ,EAAE,IAAI;gBACd,UAAU,EAAE,IAAI;gBAChB,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,IAAC,kBAAkB,IACxB,GAAG,EAAE,GAAG,CAAA,iBAAiB,EACzB,aAAa,EAAE,EAAE,EACjB,QAAQ,EAAE,IAAI,CAAC,UAAU;wBACvB,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,UAAW,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;wBACrE,CAAC,CAAC,SAAS,GAAI;gBACnB,cAAc,EAAE,IAAC,WAAW;oBACzB,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,sCAAc,CAAC,CAAC,CAAC,IAAI;oBAC9C,cAAc;oBACd,YAAY,CACD;gBACd,UAAU,EAAE,eAAe,CACzB,IAAI,CAAC,UAAU;oBACb,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;oBAChD,CAAC,CAAC,EAAE,CAAC,QAAQ,EACf,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;aACrC,CAAC;SAEH;aAAM;YAEL,wBAAwB;YAExB,MAAM,EAAE,GAAG,CAAc,CAAC;YAC1B,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;YAC3C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE;gBAC1B,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBAC1D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;aACrD;YACD,MAAM,GAAG,GAAG,sBAAsB,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,CAAC,GAAG,EAAE;gBACR,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;aACpD;YACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YAC1B,MAAM,IAAI,GAAG,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC;YACpE,MAAM,oBAAoB,GAAkB,MAAM,CAAC,OAAO,CAAC,sBAAsB,CAAC;gBAChF,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE;gBACjB,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;YAC1C,CAAC,CAAC,CAAC;YACL,MAAM,aAAa,GAAG,EAAE,CAAC,GAAG,KAAK,QAAQ,IAAI,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC;YAC7D,MAAM,KAAK,GAAG,aAAa;gBACzB,CAAC,CAAC,IAAC,MAAM,IACH,KAAK,QACL,OAAO,QACP,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,UAAW,CAC7B,IAAI,EACJ,GAAG,EACH,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,gBAAgB,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,EACnG,IAAI,CAAC,eAEF;gBACX,CAAC,CAAC,IAAC,YAAY,IAAC,QAAQ,QAAC,GAAG,EAAE,GAAG,CAAA,uBAAuB;oBACpD,IAAC,MAAM,IACL,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,EAAE,CAAC,GAAG,EACb,QAAQ,EAAE,CAAC,IAAI,CAAC,UAAU,EAC1B,QAAQ,EAAE,IAAI,CAAC,UAAU;4BACvB,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE;gCACR,IAAI,GAAG,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;oCAC5E,IAAI,CAAC,UAAW,CACd,IAAI,EACJ,GAAG,EACH,EAAE,GAAG,EAAE,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAC5C,CAAC;iCACH;4BACH,CAAC;4BACD,CAAC,CAAC,SAAS,GAAI;oBACnB,IAAC,MAAM,IACL,WAAW,EAAE,IAAI,CAAC,WAAW,EAC7B,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EACzC,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,UAAW,CACjC,IAAI,EACJ,GAAG,EACH,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,EAAE,EACvE,IAAI,CAAC,GAAI,CACA,CAAC;YACpB,OAAO;gBACL,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC/D,QAAQ;gBACR,KAAK;gBACL,cAAc,EAAE,IAAC,WAAW,QACzB,YAAY,CACD;aACf,CAAC;SAEH;IAEH,CAAC,CAAC,CAAC;AACL,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx, css } from '@emotion/react';\nimport React from 'react';\nimport { Button, ButtonGroup, OptionProps, TreeNodeInfo, ControlGroup } from '@blueprintjs/core';\nimport { Select } from '@riboseinc/paneron-extension-kit/widgets/Sidebar/PropertyView';\nimport { ItemClassConfigurationSet, Subregisters } from '../../types';\nimport { CriteriaGroup, Criterion, isCriteriaGroup, isCriteriaKey } from './models';\nimport { CriteriaGroupLabel } from './index';\nimport { CRITERIA_CONFIGURATION } from './CRITERIA_CONFIGURATION';\n\n\n/**\n * Builds Blueprint’s tree nodes given criteria,\n * callbacks and relevant register configuration.\n */\nexport default function criteriaToNodes(\n cs: (CriteriaGroup | Criterion)[],\n opts: {\n path?: number[];\n\n /** XXX: This seems to be obsolete. Don’t use, investigate for usefulness. */\n implied?: true;\n\n /**\n * Called when criteria is being edited. `commit` is set to true\n * when change should take effect.\n */\n onEditItem?: (parent: number[], idx: number, newItem: CriteriaGroup | Criterion, commit?: true) => void;\n onDeleteItem?: (parent: number[], idx: number) => void;\n onAddGroup?: (parent: number[]) => void;\n\n itemClasses: ItemClassConfigurationSet;\n availableClassIDs: string[];\n subregisters?: Subregisters;\n }): TreeNodeInfo[] {\n const path = opts.path ?? [];\n\n return [...cs.entries()].map(([idx, c]): TreeNodeInfo => {\n const isRoot = path.length < 1;\n const defaultIcon = isRoot && opts.implied === true\n ? 'manual'\n : undefined;\n\n const disabled = opts.implied === true;\n const deleteButton: JSX.Element | null =\n idx < (cs.length - 1) && opts.onDeleteItem\n ? <Button minimal small\n onClick={() => opts.onDeleteItem!(path, idx)}\n title=\"Delete this criterion or criteria block\"\n disabled={isRoot}\n icon=\"cross\" />\n : null;\n const addGroupButton: JSX.Element | null = opts.onAddGroup\n ? <Button\n minimal\n small\n title=\"Add nested criteria block\"\n icon=\"add-to-artifact\"\n onClick={() => opts.onAddGroup!([...path, idx])} />\n : null;\n\n if (isCriteriaGroup(c)) {\n\n // Render criteria group recursively\n\n const cg = c as CriteriaGroup;\n return {\n id: `${path.join('-')}-${idx}-${opts.implied}`,\n disabled,\n hasCaret: true,\n isExpanded: true,\n icon: defaultIcon,\n label: <CriteriaGroupLabel\n css={css`margin: 2.5px 0`}\n criteriaGroup={cg}\n onUpdate={opts.onEditItem\n ? ((op) => opts.onEditItem!(path, idx, { ...cg, require: op }, true))\n : undefined} />,\n secondaryLabel: <ButtonGroup>\n {opts.implied && isRoot ? <>(implied)</> : null}\n {addGroupButton}\n {deleteButton}\n </ButtonGroup>,\n childNodes: criteriaToNodes(\n opts.onEditItem\n ? [...cg.criteria, { key: 'custom', query: '' }]\n : cg.criteria,\n { ...opts, path: [...path, idx] }),\n };\n\n } else {\n\n // Render leaf criterion\n\n const ci = c as Criterion;\n const { subregisters, itemClasses } = opts;\n if (!isCriteriaKey(ci.key)) {\n console.error(\"Invalid criteria key encountered\", ci.key);\n throw new Error(\"Invalid criteria key encountered\");\n }\n const cfg = CRITERIA_CONFIGURATION[ci.key];\n if (!cfg) {\n console.error(\"Missing criterion configuration for key\", ci.key);\n throw new Error(\"Missing criterion configuration\");\n }\n const Widget = cfg.widget;\n const data = cfg.fromQuery(ci.query, { subregisters, itemClasses });\n const criterionTypeOptions: OptionProps[] = Object.entries(CRITERIA_CONFIGURATION).\n map(([key, cfg]) => {\n return { value: key, label: cfg.label };\n });\n const isPlaceholder = ci.key === 'custom' && ci.query === '';\n const label = isPlaceholder\n ? <Button\n small\n minimal\n icon=\"plus\"\n onClick={() => opts.onEditItem!(\n path,\n idx,\n { key: 'custom', query: cfg.toQuery({ customExpression: 'false' }, { subregisters, itemClasses }) },\n true)}>\n criteria\n </Button>\n : <ControlGroup vertical css={css`margin-bottom: 2.5px;`}>\n <Select\n options={criterionTypeOptions}\n value={ci.key}\n disabled={!opts.onEditItem}\n onChange={opts.onEditItem\n ? (evt) => {\n if (evt.currentTarget.value !== '' && isCriteriaKey(evt.currentTarget.value)) {\n opts.onEditItem!(\n path,\n idx,\n { key: evt.currentTarget.value, query: '' }\n );\n }\n }\n : undefined} />\n <Widget\n itemClasses={opts.itemClasses}\n availableClassIDs={opts.availableClassIDs}\n subregisters={opts.subregisters}\n data={data}\n onChange={(val) => opts.onEditItem!(\n path,\n idx,\n { key: ci.key, query: cfg.toQuery(val, { subregisters, itemClasses }) },\n true)} />\n </ControlGroup>;\n return {\n id: `${path.join('-')}-${idx}-${opts.implied ? 'implied' : ''}`,\n disabled,\n label,\n secondaryLabel: <ButtonGroup>\n {deleteButton}\n </ButtonGroup>,\n };\n\n }\n\n });\n}\n"]}
@@ -0,0 +1,23 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { ItemClassConfigurationSet, Subregisters } from '../../types';
5
+ import { CriteriaGroup, CompositionOperator } from './models';
6
+ export declare const SUBREGISTER_PATH_PREFIX = "/subregisters/";
7
+ interface CriteriaTreeProps {
8
+ impliedCriteria?: CriteriaGroup;
9
+ criteria: CriteriaGroup;
10
+ onChange?: (criteria: CriteriaGroup) => void;
11
+ className?: string;
12
+ availableClassIDs: string[];
13
+ itemClasses: ItemClassConfigurationSet;
14
+ subregisters?: Subregisters;
15
+ }
16
+ export declare const CriteriaTree: React.FC<CriteriaTreeProps>;
17
+ export default CriteriaTree;
18
+ interface CriteriaGroupLabelProps {
19
+ criteriaGroup: CriteriaGroup;
20
+ onUpdate?: (op: CompositionOperator) => void;
21
+ className?: string;
22
+ }
23
+ export declare const CriteriaGroupLabel: React.FC<CriteriaGroupLabelProps>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/FilterCriteria/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx, css } from '@emotion/react';\nimport React, { useEffect, useState } from 'react';\nimport { Button, ButtonGroup, TreeNodeInfo, Tree } from '@blueprintjs/core';\nimport { ItemClassConfigurationSet, Subregisters } from '../../types';\nimport { CriteriaGroup, makeBlankCriteria, Criterion, CompositionOperator, COMPOSITION_OPERATORS } from './models';\nimport mutateGroup from './mutateGroup';\nimport criteriaToNodes from './criteriaToNodes';\n\n\nexport const SUBREGISTER_PATH_PREFIX = '/subregisters/';\n\n\ninterface CriteriaTreeProps {\n impliedCriteria?: CriteriaGroup\n criteria: CriteriaGroup\n onChange?: (criteria: CriteriaGroup) => void\n className?: string\n availableClassIDs: string[]\n\n // TODO: move to context\n itemClasses: ItemClassConfigurationSet\n subregisters?: Subregisters\n}\n\n\nexport const CriteriaTree: React.FC<CriteriaTreeProps> =\nfunction ({ criteria, impliedCriteria, onChange, availableClassIDs, itemClasses, subregisters, className }) {\n const [crit, updateCriteria] = useState<CriteriaGroup>(criteria);\n\n useEffect(() => {\n updateCriteria(criteria);\n }, [JSON.stringify(criteria)]);\n\n function onAddGroup(parent: number[]) {\n const p = reverseArray(parent);\n var newCriteria = JSON.parse(JSON.stringify([crit]));\n const newGroup: CriteriaGroup = makeBlankCriteria();\n mutateGroup(newCriteria, p, { action: 'insert', item: newGroup });\n updateCriteria(newCriteria[0]);\n onChange!(newCriteria[0]);\n }\n\n function onDelete(parent: number[], idx: number) {\n const p = reverseArray(parent);\n var newCriteria = JSON.parse(JSON.stringify([crit]));\n mutateGroup(newCriteria, p, { action: 'delete', idx });\n updateCriteria(newCriteria[0]);\n onChange!(newCriteria[0]);\n }\n\n function onEditItem(parent: number[], idx: number, newItem: CriteriaGroup | Criterion, commit?: true) {\n const p = reverseArray(parent);\n var newCriteria = JSON.parse(JSON.stringify([crit]));\n mutateGroup(newCriteria, p, { action: 'edit', idx, item: newItem });\n updateCriteria(newCriteria[0]);\n if (commit) {\n onChange!(newCriteria[0]);\n }\n }\n\n const nodes: TreeNodeInfo[] = criteriaToNodes([crit], {\n onEditItem: onChange ? onEditItem : undefined,\n onAddGroup: onChange ? onAddGroup : undefined,\n onDeleteItem: onChange ? onDelete : undefined,\n itemClasses,\n subregisters,\n availableClassIDs,\n });\n\n const implied: TreeNodeInfo[] = impliedCriteria !== undefined\n ? criteriaToNodes([impliedCriteria], {\n implied: true,\n itemClasses,\n subregisters,\n availableClassIDs,\n })\n : [];\n\n return (\n <Tree\n contents={[ ...implied, ...nodes ]}\n className={className}\n css={css`\n .bp4-tree-node-content { height: unset; }\n .bp4-tree-node-label { overflow: unset; }\n .bp4-tree-node-caret, .bp4-tree-node-caret-none { display: none; }\n `}\n />\n );\n}\n\nexport default CriteriaTree;\n\n\n/* Displaying criteria group labels */\n\ninterface CriteriaGroupLabelProps {\n criteriaGroup: CriteriaGroup\n onUpdate?: (op: CompositionOperator) => void\n className?: string\n}\nexport const CriteriaGroupLabel: React.FC<CriteriaGroupLabelProps> =\nfunction ({ criteriaGroup, onUpdate, className }) {\n return <div className={className}>\n {onUpdate\n ? <ButtonGroup>\n {COMPOSITION_OPERATORS.map(op =>\n <Button\n key={op}\n small\n onClick={() => onUpdate ? onUpdate(op) : void 0}\n active={criteriaGroup.require === op}>\n {op}\n </Button>\n )}\n </ButtonGroup>\n : <strong>{criteriaGroup.require}</strong>}\n {\" \"}\n of:\n </div>;\n}\n\n\nfunction reverseArray<T>(arr: T[]): T[] {\n var copy = JSON.parse(JSON.stringify(arr));\n copy.reverse();\n return copy;\n}\n"]}
@@ -0,0 +1,68 @@
1
+ import type React from 'react';
2
+ import { IconName } from '@blueprintjs/core';
3
+ import type { ItemClassConfigurationSet, Subregisters } from '../../types';
4
+ /**
5
+ * Defines how to display a search criterion.
6
+ * T: criteria data structure.
7
+ */
8
+ export interface CriterionConfiguration<T extends Record<string, any>> {
9
+ icon?: IconName;
10
+ label: string;
11
+ /**
12
+ * Widget that displays and optionally allows editing
13
+ * criteria data structure.
14
+ */
15
+ widget: CriteriaWidget<T>;
16
+ /**
17
+ * Determines whether to enable this search criteria based on
18
+ * registry configuration.
19
+ */
20
+ isEnabled?: (opts: CommonOpts) => boolean;
21
+ /** Summarizes criteria in a human-readable way. */
22
+ toSummary: (data: T, opts: CommonOpts) => string | JSX.Element;
23
+ /**
24
+ * Coverts criteria structure to a string
25
+ * that can be passed to filtering backend.
26
+ */
27
+ toQuery: (data: T, opts: CommonOpts) => string;
28
+ /** Converts a query string to criteria structure. */
29
+ fromQuery: (query: string, opts: CommonOpts) => T;
30
+ }
31
+ export declare type CriteriaConfiguration = {
32
+ [key in CriterionKey]: CriterionConfiguration<Record<string, unknown>>;
33
+ };
34
+ export declare type CriteriaTransformer = (existing: CriteriaGroup) => CriteriaGroup;
35
+ export declare const COMPOSITION_OPERATORS: readonly ["all", "any", "none"];
36
+ export declare type CompositionOperator = typeof COMPOSITION_OPERATORS[number];
37
+ declare const CRITERIA_KEYS: readonly ["item-class", "subregister", "custom", "raw-substring"];
38
+ declare type CriterionKey = typeof CRITERIA_KEYS[number];
39
+ export declare function isCriteriaKey(val: string): val is CriterionKey;
40
+ declare type CriteriaWidget<T extends Record<string, any>> = React.FC<{
41
+ data: T;
42
+ onChange?: (newData: T) => void;
43
+ availableClassIDs: string[];
44
+ itemClasses: ItemClassConfigurationSet;
45
+ subregisters?: Subregisters;
46
+ className?: string;
47
+ style?: React.CSSProperties;
48
+ }>;
49
+ export interface Criterion {
50
+ /** Specific criterion as a string. */
51
+ query: string;
52
+ /** Key in criteria configuration that defines how to work with this criterion. */
53
+ key: CriterionKey;
54
+ }
55
+ /** Register metadata that may be needed to display filter criteria. */
56
+ export interface CommonOpts {
57
+ subregisters?: Subregisters;
58
+ itemClasses: ItemClassConfigurationSet;
59
+ }
60
+ export interface CriteriaGroup {
61
+ require: 'all' | 'any' | 'none';
62
+ criteria: (CriteriaGroup | Criterion)[];
63
+ }
64
+ export declare function isCriteriaGroup(val: any): val is CriteriaGroup;
65
+ export declare function makeBlankCriteria(): CriteriaGroup;
66
+ /** Useful as no-op default where a valid criteria is required. */
67
+ export declare const BLANK_CRITERIA: CriteriaGroup;
68
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../../src/views/FilterCriteria/models.ts"],"names":[],"mappings":"AA4CA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK;IACL,KAAK;IACL,MAAM;CACE,CAAC;AAGX,iFAAiF;AACjF,MAAM,aAAa,GAAG;IACpB,YAAY;IACZ,aAAa;IACb,QAAQ;IACR,eAAe;CACP,CAAC;AAGX,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,aAAa,CAAC,OAAO,CAAC,GAAmB,CAAC,IAAI,CAAC,CAAC;AACzD,CAAC;AA+BD,MAAM,UAAU,eAAe,CAAC,GAAQ;IACtC,OAAO,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;AAChF,CAAC;AAED,iDAAiD;AACjD,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,EAAE;CACb,CAAC","sourcesContent":["import type React from 'react';\nimport { IconName } from '@blueprintjs/core';\nimport type { ItemClassConfigurationSet, Subregisters } from '../../types';\n\n\n/**\n * Defines how to display a search criterion.\n * T: criteria data structure.\n */\nexport interface CriterionConfiguration<T extends Record<string, any>> {\n icon?: IconName\n label: string;\n\n /**\n * Widget that displays and optionally allows editing\n * criteria data structure.\n */\n widget: CriteriaWidget<T>;\n\n /**\n * Determines whether to enable this search criteria based on \n * registry configuration.\n */\n isEnabled?: (opts: CommonOpts) => boolean\n\n /** Summarizes criteria in a human-readable way. */\n toSummary: (data: T, opts: CommonOpts) => string | JSX.Element;\n\n /**\n * Coverts criteria structure to a string\n * that can be passed to filtering backend.\n */\n toQuery: (data: T, opts: CommonOpts) => string;\n\n /** Converts a query string to criteria structure. */\n fromQuery: (query: string, opts: CommonOpts) => T;\n}\n\nexport type CriteriaConfiguration = {\n [key in CriterionKey]: CriterionConfiguration<Record<string, unknown>>;\n};\n\nexport type CriteriaTransformer = (existing: CriteriaGroup) => CriteriaGroup;\n\nexport const COMPOSITION_OPERATORS = [\n 'all',\n 'any',\n 'none',\n] as const;\nexport type CompositionOperator = typeof COMPOSITION_OPERATORS[number];\n\n// TODO: Can we not hard-code keys here? Would require some smart generic typing.\nconst CRITERIA_KEYS = [\n 'item-class',\n 'subregister',\n 'custom',\n 'raw-substring',\n] as const;\ntype CriterionKey = typeof CRITERIA_KEYS[number];\n\nexport function isCriteriaKey(val: string): val is CriterionKey {\n return CRITERIA_KEYS.indexOf(val as CriterionKey) >= 0;\n}\n\ntype CriteriaWidget<T extends Record<string, any>> = React.FC<{\n data: T;\n onChange?: (newData: T) => void;\n availableClassIDs: string[];\n itemClasses: ItemClassConfigurationSet;\n subregisters?: Subregisters;\n className?: string;\n style?: React.CSSProperties;\n}>;\n\nexport interface Criterion {\n /** Specific criterion as a string. */\n query: string;\n\n /** Key in criteria configuration that defines how to work with this criterion. */\n key: CriterionKey;\n}\n\n/** Register metadata that may be needed to display filter criteria. */\nexport interface CommonOpts {\n subregisters?: Subregisters;\n itemClasses: ItemClassConfigurationSet;\n}\n\nexport interface CriteriaGroup {\n require: 'all' | 'any' | 'none';\n criteria: (CriteriaGroup | Criterion)[];\n}\n\nexport function isCriteriaGroup(val: any): val is CriteriaGroup {\n return val && val.hasOwnProperty('require') && val.hasOwnProperty('criteria');\n}\n\n// TODO: Deprecate in favour of `BLANK_CRITERIA`?\nexport function makeBlankCriteria(): CriteriaGroup {\n return BLANK_CRITERIA;\n}\n\n/** Useful as no-op default where a valid criteria is required. */\nexport const BLANK_CRITERIA: CriteriaGroup = {\n require: 'all',\n criteria: [],\n};\n"]}
@@ -0,0 +1,17 @@
1
+ import { CriteriaGroup, Criterion } from './models';
2
+ declare type TreeMutation<T> = {
3
+ action: 'delete';
4
+ idx: number;
5
+ } | {
6
+ action: 'insert';
7
+ item: T;
8
+ } | {
9
+ action: 'edit';
10
+ idx: number;
11
+ item: T;
12
+ };
13
+ /** Mutates given criteria tree in place. */
14
+ export default function mutateGroup(criteria: (CriteriaGroup | Criterion)[],
15
+ /** Here path must be parent node path in reverse (top-level index coming last). */
16
+ path: number[], mutation: TreeMutation<CriteriaGroup | Criterion>): void;
17
+ export {};
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutateGroup.js","sourceRoot":"","sources":["../../../src/views/FilterCriteria/mutateGroup.ts"],"names":[],"mappings":"AASA,4CAA4C;AAC5C,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,QAAuC;AAEvC,mFAAmF;AACnF,IAAc,EAEd,QAAiD;IAGjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;QAChD,QAAQ,CAAC,CAAC,CAAmB,CAAC,OAAO,GAAI,QAAQ,CAAC,IAAsB,CAAC,OAAO,CAAC;KACnF;IACD,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,QAAQ,CAAC,OAAO,EAAE,EAAE;QAC5C,IAAI,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE;YACpC,IAAI,CAAC,GAAG,EAAE,CAAC;YAEX,IAAI,EAAiB,CAAC;YACtB,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBAChC,2DAA2D;gBAC3D,EAAE,GAAG,CAAkB,CAAC;aACzB;iBAAM;gBACL,sEAAsE;gBACtE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC,CAAC;aAC7F;YAED,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;aAC1C;iBAAM;gBACL,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;oBAChC,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBACrC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE;oBACvC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBACjC;qBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,EAAE;oBACrC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,KAAK,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE;wBAClF,IAAI,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;4BAC3C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;4BACrC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;yBAChD;wBACD,8CAA8C;wBAC9C,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBACjC;oBACD,MAAM,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;oBACpE,IAAI,OAAO,EAAE;wBACX,gFAAgF;wBAC/E,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAmB,CAAC,OAAO;4BACjD,QAAQ,CAAC,IAAsB,CAAC,OAAO,CAAC;qBAC5C;yBAAM;wBACL,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC;qBAC3C;iBACF;aACF;SACF;KACF;AACH,CAAC","sourcesContent":["import { CriteriaGroup, Criterion } from './models';\n\n\ntype TreeMutation<T> =\n { action: 'delete'; idx: number; } |\n { action: 'insert'; item: T; } |\n { action: 'edit'; idx: number; item: T; };\n\n\n/** Mutates given criteria tree in place. */\nexport default function mutateGroup(\n criteria: (CriteriaGroup | Criterion)[],\n\n /** Here path must be parent node path in reverse (top-level index coming last). */\n path: number[],\n\n mutation: TreeMutation<CriteriaGroup | Criterion>,\n) {\n\n if (path.length < 1 && mutation.action === 'edit') {\n (criteria[0] as CriteriaGroup).require = (mutation.item as CriteriaGroup).require;\n }\n for (const [curIdx, c] of criteria.entries()) {\n if (curIdx === path[path.length - 1]) {\n path.pop();\n\n let cg: CriteriaGroup;\n if (c.hasOwnProperty('criteria')) {\n // This item is a group, let’s go in and delete descendants\n cg = c as CriteriaGroup;\n } else {\n // This item is a predicate string, can’t go in and delete descendants\n throw new Error(`Cannot enter item: not a group at path ${path.join('/')}/${curIdx}: ${c}`);\n }\n\n if (path.length > 0) {\n mutateGroup(cg.criteria, path, mutation);\n } else {\n if (mutation.action === 'delete') {\n cg.criteria.splice(mutation.idx, 1);\n } else if (mutation.action === 'insert') {\n cg.criteria.push(mutation.item);\n } else if (mutation.action === 'edit') {\n if (cg.criteria[mutation.idx] === undefined && mutation.idx === cg.criteria.length) {\n if (mutation.item.hasOwnProperty('require')) {\n console.error(cg.criteria, mutation);\n throw new Error(\"Won’t auto-insert new group\");\n }\n // It may be that a new item is being appended\n cg.criteria.push(mutation.item);\n }\n const isGroup = cg.criteria[mutation.idx].hasOwnProperty('require');\n if (isGroup) {\n // If it’s a group, only change the predicate operator to preserve nested items:\n (cg.criteria[mutation.idx] as CriteriaGroup).require =\n (mutation.item as CriteriaGroup).require;\n } else {\n cg.criteria[mutation.idx] = mutation.item;\n }\n }\n }\n }\n }\n}\n"]}
@@ -0,0 +1,6 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { type GenericRelatedItemViewProps } from '../types';
5
+ export declare const GenericRelatedItemView: React.FC<GenericRelatedItemViewProps>;
6
+ export default GenericRelatedItemView;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GenericRelatedItemView.js","sourceRoot":"","sources":["../../src/views/GenericRelatedItemView.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx, css } from '@emotion/react';\nimport React, { useContext, useState } from 'react';\nimport { Button, ButtonGroup, ButtonProps, Dialog } from '@blueprintjs/core';\nimport {\n type GenericRelatedItemViewProps,\n type InternalItemReference,\n type RelatedItemClassConfiguration,\n isRegisterItem,\n} from '../types';\nimport { BrowserCtx } from './BrowserCtx';\nimport { ChangeRequestContext } from './change-request/ChangeRequestContext';\nimport { isDrafted } from '../types/cr';\nimport Search from './sidebar/Search';\nimport { itemPathToItemRef } from './itemPathUtils';\nimport type { Criterion, CriteriaGroup } from './FilterCriteria/models';\nimport { Protocols } from './protocolRegistry';\n\n\nexport const GenericRelatedItemView: React.FC<GenericRelatedItemViewProps> = function ({\n itemRef, className,\n onCreateNew, onClear, onChange,\n availableClassIDs,\n onJump,\n // availableSubregisterIDs,\n // itemSorter,\n}) {\n const {\n useRegisterItemData,\n getRelatedItemClassConfiguration,\n jumpTo,\n } = useContext(BrowserCtx);\n const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);\n const { classID, itemID, subregisterID } = itemRef ?? {\n classID: '',\n itemID: '',\n subregisterID: '',\n };\n\n const itemPathWithClass = `${classID}/${itemID}.yaml`;\n // If curretn register has subregisters, specify subregister-relative path\n const itemPathWithSubregister = subregisterID\n ? `subregisters/${subregisterID}/${itemPathWithClass}`\n : `${itemPathWithClass}`;\n // If a change request is active\n // and this item is among clarifications or additions\n // then use item path relative to the change request\n const affectedByActiveCR = (\n activeChangeRequest &&\n isDrafted(activeChangeRequest) &&\n activeChangeRequest.items[itemPathWithSubregister]\n );\n const itemPath = affectedByActiveCR\n ? `/proposals/${activeChangeRequest.id}/items/${itemPathWithSubregister}`\n : `/${itemPathWithSubregister}`;\n\n const [selectDialogState, setSelectDialogState] = useState(false);\n\n //log.debug(\"Rendering generic related item view\", itemRef);\n //const { jumpToItem } = useContext(BrowserCtx);\n\n const itemResult = useRegisterItemData({ itemPaths: [itemPath] });\n const item = (itemResult.value?.[itemPath] || null);\n\n let classConfigured: boolean;\n let cfg: RelatedItemClassConfiguration;\n try {\n cfg = getRelatedItemClassConfiguration(classID);\n classConfigured = true;\n } catch (e) {\n cfg = {\n title: classID,\n itemView: () => <span>{itemID}</span>\n };\n classConfigured = false;\n }\n\n const Item = cfg.itemView;\n\n async function handleCreateNew() {\n if (!onCreateNew) { return; }\n const itemRef = await onCreateNew();\n console.debug(\"Created new\", itemRef);\n }\n\n const classIDs = availableClassIDs ?? ((itemRef?.classID ?? '') !== '' ? [itemRef!.classID] : []);\n\n function jump() {\n //jumpToItem?.(classID, itemID, subregisterID);\n onJump\n ? onJump()\n : jumpTo?.(`${Protocols.ITEM_DETAILS}:/${itemPathWithSubregister}`);\n }\n\n const hasItem = item !== null && classConfigured && isRegisterItem(item);\n const itemIsMissing = itemID !== '' && (item === null && !itemResult.isUpdating);\n const canAutoCreateRelatedItem = itemID === '' && onCreateNew && !itemResult.isUpdating;\n const canChangeRelatedItem = /*classIDs.length >= 1 && */onChange && !itemResult.isUpdating;\n const canClear = onClear && itemID !== '' && !itemResult.isUpdating;\n const canJump = item !== null && classConfigured && !itemResult.isUpdating && (onJump || jumpTo);\n\n let itemView: JSX.Element | null;\n let itemButtons: ButtonProps[] = [];\n\n if (hasItem) {\n itemView = <Item\n itemRef={{ classID, itemID, subregisterID }}\n itemData={item.data}\n />;\n } else {\n if (canAutoCreateRelatedItem) {\n itemButtons.push({\n onClick: handleCreateNew,\n icon: 'add',\n text: 'Auto create',\n intent: 'primary',\n });\n }\n if (itemIsMissing) {\n itemView = <span>Item not found: {itemID ?? 'N/A'}</span>;\n } else {\n itemView = <span>Item not specified</span>;\n }\n }\n\n const willShowItemView = hasItem || itemIsMissing || !onChange;\n\n if (canChangeRelatedItem) {\n itemButtons.push({\n onClick: () => setSelectDialogState(true),\n icon: 'edit',\n text: willShowItemView ? undefined : 'Specify',\n intent: 'primary',\n /*disabled: classIDs.length < 1,*/\n });\n }\n\n if (canClear) {\n itemButtons.push({ onClick: onClear, icon: 'cross', intent: 'danger' });\n }\n\n //log.debug(\"Rendering generic related item view: got item\", item);\n return (\n <ButtonGroup\n fill\n className={className}\n css={css`.bp4-button-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }`}>\n {classID\n ? <Button\n alignText=\"left\"\n css={css`width: 180px;`}\n title={`Item class: ${cfg.title ?? \"N/A\"}`}\n outlined disabled>\n {cfg.title ?? \"Class N/A\"}\n </Button>\n : null}\n {willShowItemView\n ? <Button\n alignText=\"left\"\n fill={hasItem} outlined\n disabled={!canJump}\n onClick={jump}\n loading={itemResult.isUpdating}\n title={hasItem\n ? `${cfg.title} (click to jump to item)`\n : undefined}>\n {itemView}\n </Button>\n : null}\n\n {itemButtons.map((props, idx) =>\n <Button key={idx} outlined {...props} />\n )}\n\n {onChange\n ? <RelatedItemSelectionDialog\n isOpen={selectDialogState}\n onClose={() => setSelectDialogState(false)}\n onChange={onChange}\n availableClassIDs={classIDs}\n />\n : null}\n </ButtonGroup>\n );\n};\n\n\nconst RelatedItemSelectionDialog: React.FC<{\n isOpen: boolean\n onClose: () => void\n onChange: (itemRef: InternalItemReference) => void\n availableClassIDs: string[]\n}> = function ({\n isOpen, onClose, onChange,\n availableClassIDs,\n}) {\n const { subregisters } = useContext(BrowserCtx);\n\n const classCriteria: Criterion[] = availableClassIDs.map(clsID => ({\n key: 'item-class',\n query: `objPath.indexOf(\\\"/${clsID}/\\\") >= 0`,\n }));\n\n const implicitCriteria: CriteriaGroup | undefined = classCriteria.length > 0\n ? {\n require: 'any',\n criteria: classCriteria,\n }\n : undefined;\n\n return (\n <Dialog\n isOpen={isOpen}\n onClose={onClose}\n enforceFocus={false}\n style={{ padding: '0', width: 'unset' }}>\n <Search\n style={{ height: '90vh', width: '90vw' }}\n availableClassIDs={availableClassIDs}\n implicitCriteria={implicitCriteria}\n stateName=\"superseding-item-selector-search\"\n onOpenItem={(itemPath) => {\n onChange(itemPathToItemRef(subregisters !== undefined, itemPath));\n onClose();\n }}\n />\n </Dialog>\n );\n}\n\n\nexport default GenericRelatedItemView;\n"]}
@@ -0,0 +1,9 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { RegisterStakeholder } from '../types';
5
+ export declare const RegisterStakeholderListItem: React.FC<{
6
+ stakeholder: RegisterStakeholder;
7
+ isCurrentUser?: true;
8
+ }>;
9
+ export declare function registerStakeholderPlain(stakeholder: RegisterStakeholder): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegisterStakeholder.js","sourceRoot":"","sources":["../../src/views/RegisterStakeholder.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAI9C,MAAM,CAAC,MAAM,2BAA2B,GAIxC,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE;IACtC,OAAO;QACL,IAAC,IAAI,IAAC,IAAI,EAAC,QAAQ,GAAG;;QAEtB,cAAM,GAAG,EAAE,GAAG,CAAA,sBAAsB,IAAG,wBAAwB,CAAC,WAAW,CAAC,CAAQ;;QAEnF,aAAa;YACZ,CAAC,CAAC,IAAC,GAAG,IAAC,KAAK,QAAC,OAAO,QAAC,MAAM,EAAC,SAAS,EAAC,GAAG,EAAE,GAAG,CAAA,kBAAkB,UAExD;YACR,CAAC,CAAC,IAAI,CACP,CAAC;AACN,CAAC,CAAA;AAGD,MAAM,UAAU,wBAAwB,CAAC,WAAgC;IACvE,OAAO,GAAG,WAAW,CAAC,IAAI,KAAK,WAAW,CAAC,IAAI,IAAI,kBAAkB,GAAG,CAAC;AAC3E,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { Icon, Tag } from '@blueprintjs/core';\nimport type { RegisterStakeholder } from '../types';\n\n\nexport const RegisterStakeholderListItem: React.FC<{\n stakeholder: RegisterStakeholder\n isCurrentUser?: true\n}> =\nfunction ({ stakeholder, isCurrentUser }) {\n return <>\n <Icon icon=\"person\" />\n &nbsp;\n <span css={css`white-space: nowrap;`}>{registerStakeholderPlain(stakeholder)}</span>\n &nbsp;\n {isCurrentUser\n ? <Tag round minimal intent=\"primary\" css={css`display: inline;`}>\n you\n </Tag>\n : null}\n </>;\n}\n\n\nexport function registerStakeholderPlain(stakeholder: RegisterStakeholder): string {\n return `${stakeholder.name} (${stakeholder.role ?? 'unspecified role'})`;\n}\n"]}
@@ -0,0 +1,9 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { Version } from '../types';
5
+ export declare const RegisterVersion: React.FC<{
6
+ version: Version;
7
+ isCurrent?: true;
8
+ }>;
9
+ export declare function registerVersionPlain(version: Version): string;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RegisterVersion.js","sourceRoot":"","sources":["../../src/views/RegisterVersion.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAGpC,MAAM,CAAC,MAAM,eAAe,GAI5B,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE;IAC9B,OAAO;QACL,IAAC,IAAI,IAAC,IAAI,EAAC,UAAU,GAAG;;QAExB,cAAM,GAAG,EAAE,GAAG,CAAA,sBAAsB,IAAG,oBAAoB,CAAC,OAAO,CAAC,CAAQ;;QAE3E,SAAS;YACR,CAAC,CAAC,IAAC,GAAG,IAAC,KAAK,QAAC,MAAM,EAAC,SAAS,EAAC,KAAK,EAAC,gDAAgD,cAE5E;YACR,CAAC,CAAC,IAAI,CACP,CAAC;AACN,CAAC,CAAA;AAGD,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACnD,OAAO,GAAG,OAAO,CAAC,EAAE,eAAe,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC;AACtE,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { Tag, Icon } from '@blueprintjs/core';\nimport type { Version } from '../types';\nimport { formatDate } from './util';\n\n\nexport const RegisterVersion: React.FC<{\n version: Version\n isCurrent?: true\n}> =\nfunction ({ version, isCurrent }) {\n return <>\n <Icon icon=\"calendar\" />\n &nbsp;\n <span css={css`white-space: nowrap;`}>{registerVersionPlain(version)}</span>\n &nbsp;\n {isCurrent\n ? <Tag round intent=\"primary\" title=\"This version is the current published version.\">\n current\n </Tag>\n : null}\n </>;\n}\n\n\nexport function registerVersionPlain(version: Version): string {\n return `${version.id} (published ${formatDate(version.timestamp)})`;\n}\n"]}
@@ -0,0 +1,13 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { CriteriaGroup } from './FilterCriteria/models';
5
+ declare const SearchQuery: React.FC<{
6
+ rootCriteria: CriteriaGroup;
7
+ onCriteriaChange?: (rootCriteria: CriteriaGroup) => void;
8
+ quickSearchString: string;
9
+ onQuickSearchStringChange?: (searchString: string) => void;
10
+ availableClassIDs?: string[];
11
+ className?: string;
12
+ }>;
13
+ export default SearchQuery;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchQuery.js","sourceRoot":"","sources":["../../src/views/SearchQuery.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useState, useContext } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport { Button, ControlGroup, Colors, InputGroup, Tag, ButtonGroup } from '@blueprintjs/core';\nimport CriteriaTree from './FilterCriteria';\nimport { CUSTOM_CONDITION, RAW_SUBSTRING } from './FilterCriteria/CRITERIA_CONFIGURATION';\nimport { CriteriaGroup, Criterion } from './FilterCriteria/models';\nimport criteriaGroupToQueryExpression from './FilterCriteria/criteriaGroupToQueryExpression';\n//import criteriaGroupToSummary from './FilterCriteria/criteriaGroupToSummary';\nimport { BrowserCtx } from './BrowserCtx';\n\n\n\nconst SearchQuery: React.FC<{\n rootCriteria: CriteriaGroup;\n onCriteriaChange?: (rootCriteria: CriteriaGroup) => void;\n\n quickSearchString: string;\n onQuickSearchStringChange?: (searchString: string) => void;\n\n availableClassIDs?: string[];\n className?: string;\n}> = function ({\n rootCriteria,\n onCriteriaChange,\n quickSearchString,\n onQuickSearchStringChange,\n availableClassIDs,\n className,\n}) {\n const { itemClasses, subregisters } = useContext(BrowserCtx);\n\n const [ editingAdvanced, toggleEditingAdvanced ] = useState<boolean>(false);\n\n const classIDs = availableClassIDs ?? Object.keys(itemClasses);\n\n const hasAdvancedQuery = rootCriteria.criteria.length > 0;\n\n function makeDefaultCriteria(): Criterion {\n if (quickSearchString) {\n return {\n key: 'raw-substring',\n query: RAW_SUBSTRING.toQuery(\n { substring: quickSearchString },\n { itemClasses, subregisters },\n ),\n }\n } else {\n return {\n key: 'custom',\n query: CUSTOM_CONDITION.toQuery(\n { customExpression: 'false' },\n { itemClasses, subregisters },\n ),\n }\n }\n }\n\n return (\n <ControlGroup fill vertical className={className}>\n <InputGroup\n fill\n small\n disabled={!onQuickSearchStringChange || hasAdvancedQuery}\n value={hasAdvancedQuery ? '' : quickSearchString}\n leftIcon=\"search\"\n placeholder=\"Quick search\"\n title={!hasAdvancedQuery\n ? \"Search for a substring occurring anywhere within serialized item data.\"\n : \"Advanced query overrides quick search.\"}\n css={css`width: 200px; ${quickSearchString !== '' && !hasAdvancedQuery ? 'input { font-weight: bold; }' : ''}`}\n rightElement={<Button\n disabled={!onQuickSearchStringChange || quickSearchString === '' || hasAdvancedQuery}\n onClick={() => onQuickSearchStringChange?.('')}\n small\n minimal\n icon=\"cross\"\n title=\"Clear quick search\" />}\n onChange={evt => onQuickSearchStringChange?.(evt.currentTarget.value)} />\n <ButtonGroup fill>\n <Button\n fill\n small\n title=\"Edit advanced search query\"\n icon='filter'\n onClick={!hasAdvancedQuery\n ? (() => {\n onCriteriaChange!({ criteria: [makeDefaultCriteria()], require: 'all' });\n toggleEditingAdvanced(true);\n })\n : () => toggleEditingAdvanced(v => !v)}\n active={editingAdvanced && hasAdvancedQuery}\n disabled={!hasAdvancedQuery && !onCriteriaChange}\n rightIcon={rootCriteria.criteria.length > 0\n ? <Tag intent=\"success\" round>on</Tag>\n : <Tag round>off</Tag>}>\n Advanced\n </Button>\n </ButtonGroup>\n {hasAdvancedQuery && editingAdvanced\n ? <>\n <CriteriaTree\n key=\"tree\"\n criteria={rootCriteria}\n onChange={onCriteriaChange}\n itemClasses={itemClasses}\n availableClassIDs={classIDs}\n subregisters={subregisters}\n css={css`max-height: 50vh; overflow-y: auto;`} />\n <div\n key=\"query\"\n css={css`\n margin-top: 5px;\n padding: 0 10px 10px 10px;\n color: ${Colors.GRAY3};\n font-size: 90%;\n overflow-wrap: break-word;\n `}>\n Query used: <code>{criteriaGroupToQueryExpression(rootCriteria)}</code>\n </div>\n </>\n : null}\n </ControlGroup>\n );\n };\n\nexport default SearchQuery;\n"]}
@@ -0,0 +1,20 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { type SomeCR as CR } from '../../types/cr';
5
+ export interface ChangeRequestContextSpec {
6
+ /**
7
+ * Change request object, undefined if not available/loading,
8
+ * null if not expected (i.e. changeRequestID is not given).
9
+ */
10
+ changeRequest?: CR | null;
11
+ /**
12
+ * Current user can edit the contents of this CR.
13
+ * Always false if `changeRequest` is not defined or `null`.
14
+ */
15
+ canEdit: boolean;
16
+ }
17
+ export declare const ChangeRequestContext: React.Context<ChangeRequestContextSpec>;
18
+ export declare const ChangeRequestContextProvider: React.FC<{
19
+ changeRequestID: string | null;
20
+ }>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ChangeRequestContext.js","sourceRoot":"","sources":["../../../src/views/change-request/ChangeRequestContext.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,EAAqB,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAiB3C,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,aAAa,CAA2B;IAChF,aAAa,EAAE,IAAI;IACnB,OAAO,EAAE,KAAK;CACf,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,4BAA4B,GAEpC,UAAU,EAAE,eAAe,EAAE,QAAQ,EAAE;IAC1C,MAAM,EAAE,aAAa,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAErD,MAAM,EAAE,WAAW,EAAE,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IAE/C,MAAM,MAAM,GAAG,eAAe;QAC5B,CAAC,CAAC,cAAc,eAAe,YAAY;QAC3C,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,aAAa,GAAG,aAAa,CAAC;QAClC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;KACpC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE,CAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IAElE,OAAO,CACL,IAAC,oBAAoB,CAAC,QAAQ,IAAC,KAAK,EAAE;YACpC,aAAa;YACb,OAAO,EACL,aAAa;mBACV,WAAW;mBACX,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC;gBAC1C,CAAC,CAAC,IAAI;gBACN,CAAC,CAAC,KAAK;SACZ,IACE,QAAQ,CACqB,CACjC,CAAC;AACJ,CAAC,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React, { useContext } from 'react';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { type SomeCR as CR, canBeEditedBy } from '../../types/cr';\nimport { BrowserCtx } from '../BrowserCtx';\n\n\nexport interface ChangeRequestContextSpec {\n /**\n * Change request object, undefined if not available/loading,\n * null if not expected (i.e. changeRequestID is not given).\n */\n changeRequest?: CR | null\n\n /**\n * Current user can edit the contents of this CR.\n * Always false if `changeRequest` is not defined or `null`.\n */\n canEdit: boolean\n}\n\nexport const ChangeRequestContext = React.createContext<ChangeRequestContextSpec>({\n changeRequest: null,\n canEdit: false,\n});\n\nexport const ChangeRequestContextProvider: React.FC<{\n changeRequestID: string | null\n}> = function ({ changeRequestID, children }) {\n const { useObjectData } = useContext(DatasetContext);\n\n const { stakeholder } = useContext(BrowserCtx);\n\n const crPath = changeRequestID\n ? `/proposals/${changeRequestID}/main.yaml`\n : null;\n\n const changeRequest = useObjectData({\n objectPaths: crPath ? [crPath] : [],\n }).value?.data[crPath ?? ''] as CR ?? (crPath ? undefined : null);\n\n return (\n <ChangeRequestContext.Provider value={{\n changeRequest,\n canEdit:\n changeRequest\n && stakeholder\n && canBeEditedBy(stakeholder, changeRequest)\n ? true\n : false,\n }}>\n {children}\n </ChangeRequestContext.Provider>\n );\n};\n"]}
@@ -0,0 +1,21 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import type { ChangeProposal, Clarification, InternalItemReference, Payload } from '../../types';
5
+ import type { Drafted } from '../../types/cr';
6
+ declare const Proposals: React.FC<{
7
+ proposals: Drafted['items'];
8
+ className?: string;
9
+ }>;
10
+ interface ProposalProps<P extends ChangeProposal> {
11
+ proposal: P;
12
+ showDiff?: boolean;
13
+ showOnlyChanged?: boolean;
14
+ itemRef: InternalItemReference;
15
+ itemData: Payload;
16
+ itemDataBefore: P extends Clarification ? Payload : undefined;
17
+ onChange?: (newProposal: P) => void;
18
+ }
19
+ export declare const ProposalDetail: React.FC<ProposalProps<ChangeProposal>>;
20
+ export declare const ProposalSummary: React.FC<ProposalProps<ChangeProposal>>;
21
+ export default Proposals;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Proposals.js","sourceRoot":"","sources":["../../../src/views/change-request/Proposals.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext, useEffect, useState } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n ControlGroup,\n ButtonGroup,\n Switch,\n Button,\n Classes,\n MenuItem,\n NonIdealState,\n IconName,\n} from '@blueprintjs/core';\nimport { ItemRenderer, Select2 as Select } from '@blueprintjs/select';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport type {\n Addition,\n ChangeProposal,\n Clarification,\n InternalItemReference,\n Retirement,\n Supersession,\n Invalidation,\n Payload,\n} from '../../types';\nimport type { Drafted } from '../../types/cr';\nimport { Protocols, type Protocol } from '../protocolRegistry';\nimport { PROPOSAL_TYPES, AMENDMENT_TYPES } from '../../types/proposal';\nimport { BrowserCtx, type BrowserCtx as BrowserCtxType } from '../BrowserCtx';\nimport { itemPathToItemRef, itemRefToItemPath } from '../itemPathUtils';\nimport StructuredDiff from '../diffing/StructuredDiff';\nimport registerItemDetailView from '../detail/RegisterItem';\n\n\ninterface ChangeProposalItem {\n itemPath: string\n itemRef: InternalItemReference\n proposal: ChangeProposal\n itemData: Payload\n itemDataBefore: Payload | undefined\n}\n\n\nconst Proposals: React.FC<{\n proposals: Drafted['items']\n className?: string\n}> = function ({ proposals, className }) {\n const [ _selectedProposal, selectProposal ] = useState<string | null>(null);\n const [ showDiff, setShowDiff ] = useState(false);\n const [ showOnlyChanged, setShowOnlyChanged ] = useState(true);\n\n const outerBrowserCtx = useContext(BrowserCtx);\n const { jumpTo, subregisters, useRegisterItemData } = outerBrowserCtx;\n const proposalBrowserCtx: BrowserCtxType = {\n ...outerBrowserCtx,\n jumpTo: handleCRJump,\n };\n\n /**\n * When jumping to an item affected by current CR,\n * jump in-CR instead of spawning tab.\n */\n function handleCRJump(uri: `${Protocol}:${string}`): void {\n if (uri.startsWith(Protocols.ITEM_DETAILS)) {\n const itemPath = uri.split(':')[1];\n if (proposals[itemPath]) {\n selectProposal(itemPath);\n } else {\n jumpTo?.(uri);\n }\n }\n }\n\n const firstProposal: string | undefined = Object.keys(proposals)[0];\n\n // Effective selected proposal\n const selectedProposal: string | undefined =\n ((_selectedProposal && proposals[_selectedProposal]) ? _selectedProposal : null)\n ?? firstProposal\n ?? undefined;\n\n // Force select available proposal\n useEffect(() => {\n if (firstProposal && (_selectedProposal === null || !proposals[_selectedProposal])) {\n selectProposal(firstProposal);\n }\n }, [firstProposal, _selectedProposal, JSON.stringify(proposals)]);\n\n const selectedItemRef = selectedProposal\n ? itemPathToItemRef(subregisters !== undefined, selectedProposal)\n : null;\n\n\n // Data for proposed items\n const proposedItemPaths = Object.entries(proposals).map(([itemPath, proposal]) => {\n if (proposal.type === 'clarification' || proposal.type === 'addition') {\n return itemPath;\n } else {\n return undefined;\n }\n }).filter(s => s !== undefined) as string[];\n const proposedItemDataReq = useRegisterItemData({\n itemPaths: proposedItemPaths,\n });\n\n // Data for pre-existing items\n const currentItemDataReq = useRegisterItemData({\n itemPaths: Object.keys(proposals),\n ignoreActiveCR: true,\n });\n\n const getCurrentItemData = (itemPath: string) => currentItemDataReq.value[itemPath]?.data ?? null;\n const getProposedItemData = (itemPath: string) => proposedItemDataReq.value[itemPath]?.data ?? null;\n\n const selectedItemCurrentData = getCurrentItemData(selectedProposal);\n const selectedItemProposedData = getProposedItemData(selectedProposal);\n\n if (\n selectedProposal\n && selectedItemRef\n && proposals[selectedProposal]\n && !currentItemDataReq.isUpdating\n && !proposedItemDataReq.isUpdating\n ) {\n if (selectedItemCurrentData || selectedItemProposedData) {\n const selectedItemSummary = <ProposalSummary\n itemRef={selectedItemRef}\n itemData={(selectedItemProposedData ?? selectedItemCurrentData)!}\n itemDataBefore={selectedItemCurrentData ?? undefined}\n proposal={proposals[selectedProposal]}\n />\n\n return (\n <div css={css`display: flex; flex-flow: column nowrap;`} className={className}>\n <div>\n <ControlGroup>\n <Switch\n checked={showDiff}\n onChange={evt => setShowDiff(evt.currentTarget.checked)}\n label=\"View source\"\n css={css`margin-right: 1em !important`}\n />\n <Switch\n checked={showDiff && showOnlyChanged}\n disabled={!showDiff}\n onChange={evt => setShowOnlyChanged(evt.currentTarget.checked)}\n label=\"Show clarified properties only\"\n />\n </ControlGroup>\n <ButtonGroup>\n <Button\n disabled={!jumpTo || proposals[selectedProposal]?.type === 'addition'}\n icon='locate'\n onClick={() => jumpTo?.(`${Protocols.ITEM_DETAILS}:${selectedProposal}`)}\n title=\"Open selected item in a new tab (not applicable to proposed additions)\">\n Reveal in registry\n </Button>\n {Object.keys(proposals).length > 1\n ? <Select<ChangeProposalItem>\n filterable={false}\n itemsEqual={(i1, i2) => JSON.stringify(i1) === JSON.stringify(i2)}\n activeItem={{\n itemPath: selectedProposal,\n proposal: proposals[selectedProposal],\n itemData: (selectedItemProposedData ?? selectedItemCurrentData)!,\n itemDataBefore: selectedItemCurrentData ?? undefined,\n itemRef: itemPathToItemRef(subregisters !== undefined, selectedProposal),\n }} // TODO: First time selection is broken\n items={\n Object.entries(proposals).map(([itemPath, proposal]) => ({\n itemPath,\n proposal,\n itemData: (getProposedItemData(itemPath) ?? getCurrentItemData(itemPath))! ?? null,\n itemDataBefore: undefined,\n itemRef: itemPathToItemRef(subregisters !== undefined, itemPath),\n })).filter(item => item.itemData !== null)}\n popoverProps={{ minimal: true }}\n fill\n itemRenderer={ChangeProposalItemView}\n onItemSelect={(item) => selectProposal(item.itemPath)}>\n <Button rightIcon=\"chevron-down\" icon={getProposalIcon(proposals[selectedProposal])}>\n {selectedItemSummary}\n </Button>\n </Select>\n : <Button\n fill\n alignText=\"left\"\n icon={getProposalIcon(proposals[selectedProposal])}\n rightIcon=\"chevron-down\">\n {selectedItemSummary}\n </Button>}\n </ButtonGroup>\n </div>\n <div css={css`position: relative; flex: 1;`}>\n <BrowserCtx.Provider value={proposalBrowserCtx}>\n <ProposalDetail\n itemRef={selectedItemRef}\n showDiff={showDiff}\n showOnlyChanged={showOnlyChanged}\n itemData={(selectedItemProposedData ?? selectedItemCurrentData)!}\n itemDataBefore={selectedItemCurrentData ?? undefined}\n proposal={proposals[selectedProposal]}\n />\n </BrowserCtx.Provider>\n </div>\n </div>\n );\n } else {\n return <NonIdealState\n icon='warning-sign'\n className={className}\n title=\"Unable to retrieve proposed item data\"\n description={<div css={css`text-align: left;`}>\n There appears to be a data integrity issue.\n <br />\n This might be caused by a problem in the application, or repository contents having been edited outside of the application.\n <br />\n The data should be recoverable by inspecting version control system commit history.\n </div>}\n />;\n }\n } else {\n return <NonIdealState\n icon='clean'\n className={className}\n title=\"Nothing is proposed here yet.\"\n />;\n }\n};\n\n\nconst ChangeProposalItemView: ItemRenderer<ChangeProposalItem> =\n(item, { handleClick, modifiers, query }) => {\n const proposalConfig = \n item.proposal.type === 'amendment'\n ? PROPOSAL_VIEWS[item.proposal.amendmentType]\n : PROPOSAL_VIEWS[item.proposal.type];\n const ProposalTypeLabel: React.FC<ProposalProps<any>> = proposalConfig.summary;\n return (\n <MenuItem\n active={modifiers.active}\n disabled={modifiers.disabled}\n labelElement={<>\n <ProposalTypeLabel {...item} />\n {\" \"}\n <HelpTooltip content={<>Proposed to be {proposalConfig.hint}</>} />\n </>}\n key={item.itemPath}\n onClick={handleClick}\n icon={getProposalIcon(item.proposal)}\n text={<ProposalSummary {...item} />} />\n );\n}\n\n\ninterface ProposalProps<P extends ChangeProposal> {\n proposal: P\n showDiff?: boolean\n showOnlyChanged?: boolean\n itemRef: InternalItemReference\n itemData: Payload\n itemDataBefore: P extends Clarification ? Payload : undefined\n onChange?: (newProposal: P) => void\n}\nexport const ProposalDetail: React.FC<ProposalProps<ChangeProposal>> =\nfunction ({ proposal, showDiff, showOnlyChanged, itemRef, itemData, itemDataBefore, onChange }) {\n const ItemView = registerItemDetailView.main;\n\n const view: JSX.Element = showDiff\n ? <MaximizedStructuredDiff\n item1={itemDataBefore ?? {}}\n item2={itemData}\n showUnchanged={!showOnlyChanged}\n css={css`background: white; border-radius: 2.5px; padding: 10px 0; margin: 10px 0;`}\n className={Classes.ELEVATION_2}\n />\n : <ItemView uri={itemRefToItemPath(itemRef)} key={JSON.stringify(itemRef)} />\n\n return <div css={css`position: absolute; inset: 0; display: flex; flex-flow: column;`}>\n {view}\n </div>;\n};\nexport const ProposalSummary: React.FC<ProposalProps<ChangeProposal>> =\nfunction ({ proposal, itemRef, itemData, itemDataBefore, onChange }) {\n const { itemClasses } = useContext(BrowserCtx);\n const { classID } = itemRef;\n const ListItemView = itemClasses[classID].views.listItemView;\n\n return <ListItemView\n itemRef={itemRef}\n itemData={itemData}\n />;\n};\n\n\ninterface ProposalViewConfig<P extends ChangeProposal> {\n summary: React.FC<ProposalProps<P>>\n hint: JSX.Element | string\n}\n\n\nconst clarification: ProposalViewConfig<Clarification> = {\n hint: <>\n altered to represent the same concept more clearly.\n </>,\n summary: ({ proposal, itemData, itemRef }) => <>Clarification</>,\n};\n\n\nconst addition: ProposalViewConfig<Addition> = {\n hint: <>added to this register.</>,\n summary: ({ proposal, itemData, itemRef }) => <>Addition</>,\n};\n\n\nconst retirement: ProposalViewConfig<Retirement> = {\n hint: <>\n marked as no longer current.\n (Note that this register is append-only, so the item cannot be removed altogether.)\n </>,\n summary: ({ proposal, itemRef, itemData }) => <>Retirement</>,\n};\n\n\nconst supersession: ProposalViewConfig<Supersession> = {\n hint: <>\n removed from the register with another item recommended for use in its place.\n A relation between the superseding and superseded item will be created,\n though the exact semantics of that relation depend on the register.\n </>,\n summary: ({ proposal, itemRef, itemData }) => <>Supersession</>,\n};\n\n\nconst invalidation: ProposalViewConfig<Invalidation> = {\n hint: <>\n marked as invalid. The exact semantics of invalidation depend on the register.\n </>,\n summary: ({ proposal, itemRef, itemData }) => <>Invalidation</>,\n}\n\n\nconst MaximizedStructuredDiff = styled(StructuredDiff)`\n position: absolute;\n inset: 0;\n`;\n\n\ntype ProposalOrAmendmentType =\n | Exclude<typeof PROPOSAL_TYPES[number], 'amendment'>\n | typeof AMENDMENT_TYPES[number];\n\n\nconst PROPOSAL_VIEWS: { [type in ProposalOrAmendmentType]: ProposalViewConfig<any> } = {\n clarification,\n addition,\n retirement,\n supersession,\n invalidation,\n};\n\n\nfunction getProposalIcon(proposal: ChangeProposal): IconName {\n return proposal.type === 'addition'\n ? 'add'\n : proposal.type === 'clarification'\n ? 'edit'\n : 'ban-circle'\n}\n\n\nexport default Proposals;\n"]}
@@ -0,0 +1,31 @@
1
+ import type { ObjectChangeset } from '@riboseinc/paneron-extension-kit/types/objects';
2
+ import type { RegisterItem, ChangeRequest, ChangeProposal } from '../../types';
3
+ import type { Version as RegisterVersion } from '../../types/register';
4
+ import { type Drafted, type ReturnedForClarificationByManager, type ReturnedForClarificationByControlBody } from '../../types/cr';
5
+ /** Takes a justification and ID, returns an object changeset. */
6
+ export declare function newCRObjectChangeset(id: string, justification: string, registerVersion: RegisterVersion, stakeholderGitServerUsername: string): ObjectChangeset;
7
+ /**
8
+ * Returns an object changeset to update CR with new given proposal items.
9
+ * Only applicable to CR at draft edit stage.
10
+ */
11
+ export declare function updateCRObjectChangeset(
12
+ /**
13
+ * Change request data.
14
+ */
15
+ cr: Drafted | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody,
16
+ /**
17
+ * Proposals by item path.
18
+ * Will be merged with those already existing in `cr`.
19
+ * If a proposal is undefined, it will be removed.
20
+ */
21
+ proposalItems: Record<string, ChangeProposal | null>,
22
+ /**
23
+ * New item data must be provided for additions and clarifications,
24
+ * keyed by item path.
25
+ */
26
+ itemData?: Record<string, RegisterItem<any>>): ObjectChangeset;
27
+ /**
28
+ * Given change proposals, returns applicable changes
29
+ * to objects in the dataset.
30
+ */
31
+ export declare function proposalsToObjectChangeset(crID: string, hasSubregisters: boolean, proposals: ChangeRequest["proposals"], itemData: Record<string, RegisterItem<any> | null>, newItemData: Record<string, RegisterItem<any> | null>): Promise<ObjectChangeset>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"objectChangeset.js","sourceRoot":"","sources":["../../../src/views/change-request/objectChangeset.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Change, Changeset } from '@riboseinc/paneron-extension-kit/types/changes';\nimport type { ObjectChangeset } from '@riboseinc/paneron-extension-kit/types/objects';\nimport type {\n InternalItemReference,\n RegisterItem,\n ChangeRequest,\n ChangeProposal,\n Amendment,\n Supersession,\n} from '../../types';\nimport { isRegisterItem } from '../../types';\nimport type { Version as RegisterVersion } from '../../types/register';\nimport {\n State,\n type Drafted,\n type ReturnedForClarificationByManager,\n type ReturnedForClarificationByControlBody,\n} from '../../types/cr';\nimport { crIDToCRPath, itemPathInCR, itemPathToItemRef, itemRefToItemPath } from '../itemPathUtils';\n\n\n/** Takes a justification and ID, returns an object changeset. */\nexport function newCRObjectChangeset(\n id: string,\n justification: string,\n registerVersion: RegisterVersion,\n stakeholderGitServerUsername: string,\n): ObjectChangeset {\n\n const timeStarted = new Date();\n const cr: Drafted = {\n id,\n timeStarted,\n timeEdited: timeStarted,\n justification,\n submittingStakeholderGitServerUsername: stakeholderGitServerUsername,\n items: {},\n state: State.DRAFT,\n registerVersion: registerVersion!.id,\n };\n const crObjectPath = crIDToCRPath(id);\n return {\n [crObjectPath]: {\n oldValue: null,\n newValue: cr,\n },\n }\n}\n\n\n/**\n * Returns an object changeset to update CR with new given proposal items.\n * Only applicable to CR at draft edit stage.\n */\nexport function updateCRObjectChangeset(\n /**\n * Change request data.\n */\n cr: Drafted | ReturnedForClarificationByManager | ReturnedForClarificationByControlBody,\n\n /**\n * Proposals by item path.\n * Will be merged with those already existing in `cr`.\n * If a proposal is undefined, it will be removed.\n */\n proposalItems: Record<string, ChangeProposal | null>,\n\n /**\n * New item data must be provided for additions and clarifications,\n * keyed by item path.\n */\n itemData: Record<string, RegisterItem<any>> = {},\n): ObjectChangeset {\n const changeset: ObjectChangeset = {};\n const newItems = { ...cr.items };\n for (const [itemPath, proposal] of Object.entries(proposalItems)) {\n // Update proposals on CR\n if (proposal !== null) {\n newItems[itemPath] = proposal;\n } else if (newItems[itemPath]) {\n delete newItems[itemPath];\n }\n // Add/remove item data\n if (proposal?.type === 'addition' || proposal?.type === 'clarification') {\n const proposedItemData = itemData[itemPath];\n if (proposedItemData === null || !isRegisterItem(proposedItemData)) {\n console.error(\"Unable to convert proposals to object changeset: original item data is missing\", itemPath);\n throw new Error(\"Unable to convert proposals to object changeset: original item data is missing\");\n }\n changeset[itemPathInCR(itemPath, cr.id)] = {\n // When editing a draft, we don’t care\n // about overwriting proposed item data so we omit oldValue.\n newValue: proposedItemData,\n };\n } else {\n changeset[itemPathInCR(itemPath, cr.id)] = {\n // When editing a draft, we don’t care\n // about overwriting proposed item data so we omit oldValue.\n newValue: null,\n };\n }\n }\n // Update main CR data\n const crPath = crIDToCRPath(cr.id);\n changeset[crPath] = {\n oldValue: cr,\n newValue: { ...cr, items: newItems, timeEdited: new Date() },\n };\n return changeset;\n}\n\n\n/**\n * Given change proposals, returns applicable changes\n * to objects in the dataset.\n */\nexport async function proposalsToObjectChangeset(\n crID: string,\n hasSubregisters: boolean,\n proposals: ChangeRequest[\"proposals\"],\n itemData: Record<string, RegisterItem<any> | null>,\n newItemData: Record<string, RegisterItem<any> | null>,\n): Promise<ObjectChangeset> {\n const cs: ObjectChangeset = {};\n\n for (const [itemPath, proposal] of Object.entries(proposals)) {\n //const originalItem: RegisterItem<any> | undefined = (itemData[itemPath] ?? undefined);\n const itemRef = itemPathToItemRef(hasSubregisters, itemPath);\n\n if (proposal.type !== 'addition') {\n if (itemData[itemPath] === undefined) {\n console.error(\"Unable to convert proposals to object changeset: original item data is missing\", itemPath);\n throw new Error(\"Unable to convert proposals to object changeset: original item data is missing\");\n }\n if (proposal.type === 'amendment' && proposal.amendmentType === 'supersession') {\n Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));\n } else {\n Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));\n }\n } else {\n Object.assign(cs, await proposalToObjectChangeset(crID, proposal, itemRef, itemPath, itemData, newItemData));\n }\n }\n\n return cs;\n}\n\n// TODO: Refactor out the business logic of proposal approval.\n/**\n * Given a change proposal, returns applicable changes\n * to objects in the dataset.\n * Core logic of approving a proposal.\n * Takes a proposal and extra options (depending on proposal type).\n * Returns a Changeset containing register items at appropriate paths.\n */\nasync function proposalToObjectChangeset(\n crID: string,\n proposal: ChangeProposal,\n itemRef: InternalItemReference,\n itemPath: string,\n itemData: Record<string, RegisterItem<any> | null>,\n newItemData: Record<string, RegisterItem<any> | null>,\n): Promise<Changeset<Change<RegisterItem<any>>>> {\n let updatedItem: RegisterItem<any>;\n const changeset: Changeset<Change<RegisterItem<any>>> = {};\n\n const origItem = itemData[itemPath] ?? null;\n const newItem = newItemData[itemPathInCR(itemPath, crID)] ?? null;\n\n if (proposal.type !== 'addition') {\n if (origItem === null) {\n throw new Error(\"proposalToObjectChangeset() requires original item data for non-additions\");\n }\n\n updatedItem = { ...origItem };\n\n switch (proposal.type) {\n case 'clarification':\n if (newItem === null) {\n throw new Error(\"proposalToObjectChangeset() requires new item data for clarifications\");\n }\n //const clarification = proposal as Clarification;\n updatedItem.data = newItem.data //clarification.payload;\n break;\n case 'amendment':\n const amendment = proposal as Amendment;\n updatedItem.amendedInCR = crID;\n\n switch (amendment.amendmentType) {\n case 'retirement':\n updatedItem.status = 'retired';\n break;\n case 'invalidation':\n updatedItem.status = 'invalid';\n break;\n case 'supersession':\n const supersession = proposal as Supersession;\n updatedItem.status = 'superseded';\n updatedItem.supersededBy = supersession.supersedingItemIDs.map(itemID => ({\n itemID,\n classID: itemRef.classID,\n subregisterID: itemRef.subregisterID,\n }));\n for (const supersedingItemPath of updatedItem.supersededBy.map(ip => itemRefToItemPath(ip))) {\n const supersedingItemData = itemData[supersedingItemPath];\n if (supersedingItemData) {\n changeset[supersedingItemPath] = {\n oldValue: supersedingItemData,\n newValue: {\n ...supersedingItemData,\n supersedes: [ ...(supersedingItemData.supersedes ?? []), itemRef ],\n },\n };\n }\n }\n break;\n }\n break;\n }\n } else {\n if (newItem === null) {\n throw new Error(\"proposalToObjectChangeset() requires new item data for additions\");\n }\n updatedItem = {\n id: itemRef.itemID,\n data: newItem.data,\n status: 'valid',\n dateAccepted: new Date(),\n };\n }\n\n changeset[itemPath] = {\n oldValue: origItem,\n newValue: updatedItem,\n };\n\n return changeset;\n}\n"]}
File without changes
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Proposal.js","sourceRoot":"","sources":["../../../../src/views/detail/ChangeRequest/Proposal.tsx"],"names":[],"mappings":";AAAA,kBAAkB;AAClB,iCAAiC;AACjC,GAAG;AACH,GAAG;AACH,6BAA6B;AAC7B,GAAG;AACH,6CAA6C;AAC7C,GAAG;AACH,WAAW;AACX,eAAe;AACf,gBAAgB;AAChB,mBAAmB;AACnB,gBAAgB;AAChB,QAAQ;AACR,8BAA8B;AAC9B,GAAG;AACH,mEAAmE;AACnE,GAAG;AACH,gBAAgB;AAChB,oBAAoB;AACpB,aAAa;AACb,2BAA2B;AAC3B,2BAA2B;AAC3B,GAAG;AACH,mDAAmD;AACnD,GAAG;AACH,GAAG;AACH,oCAAoC;AACpC,mCAAmC;AACnC,6BAA6B;AAC7B,GAAG;AACH,+BAA+B;AAC/B,GAAG;AACH,uDAAuD;AACvD,6CAA6C;AAC7C,0BAA0B;AAC1B,mBAAmB;AACnB,aAAa;AACb,cAAc;AACd,cAAc;AACd,sBAAsB;AACtB,OAAO;AACP,kGAAkG;AAClG,mCAAmC;AACnC,GAAG;AACH,+BAA+B;AAC/B,gDAAgD;AAChD,GAAG;AACH,yCAAyC;AACzC,6BAA6B;AAC7B,mDAAmD;AACnD,sBAAsB;AACtB,gGAAgG;AAChG,iCAAiC;AACjC,kCAAkC;AAClC,+BAA+B;AAC/B,8DAA8D;AAC9D,6CAA6C;AAC7C,0DAA0D;AAC1D,8CAA8C;AAC9C,wFAAwF;AACxF,0EAA0E;AAC1E,2BAA2B;AAC3B,yGAAyG;AACzG,oBAAoB;AACpB,kBAAkB;AAClB,6BAA6B;AAC7B,qBAAqB;AACrB,SAAS;AACT,aAAa;AACb,iCAAiC;AACjC,MAAM;AACN,GAAG;AACH,uEAAuE;AACvE,yBAAyB;AACzB,0BAA0B;AAC1B,GAAG;AACH,gDAAgD;AAChD,4FAA4F;AAC5F,4DAA4D;AAC5D,yEAAyE;AACzE,2BAA2B;AAC3B,0BAA0B;AAC1B,4BAA4B;AAC5B,2BAA2B;AAC3B,gFAAgF;AAChF,2BAA2B;AAC3B,aAAa;AACb,4GAA4G;AAC5G,6BAA6B;AAC7B,0BAA0B;AAC1B,gCAAgC;AAChC,MAAM;AACN,GAAG;AACH,gEAAgE;AAChE,GAAG;AACH,8CAA8C;AAC9C,wDAAwD;AACxD,GAAG;AACH,sDAAsD;AACtD,kHAAkH;AAClH,GAAG;AACH,gCAAgC;AAChC,oCAAoC;AACpC,8BAA8B;AAC9B,iDAAiD;AACjD,+BAA+B;AAC/B,aAAa;AACb,eAAe;AACf,oCAAoC;AACpC,8BAA8B;AAC9B,qCAAqC;AACrC,aAAa;AACb,QAAQ;AACR,MAAM;AACN,GAAG;AACH,aAAa;AACb,yEAAyE;AACzE,yHAAyH;AACzH,sBAAsB;AACtB,2EAA2E;AAC3E,iEAAiE;AACjE,kCAAkC;AAClC,6FAA6F;AAC7F,4FAA4F;AAC5F,mEAAmE;AACnE,8BAA8B;AAC9B,iBAAiB;AACjB,eAAe;AACf,iBAAiB;AACjB,sFAAsF;AACtF,+BAA+B;AAC/B,eAAe;AACf,GAAG;AACH,oDAAoD;AACpD,qBAAqB;AACrB,eAAe;AACf,aAAa;AACb,OAAO;AACP,KAAK;AACL,GAAG;AACH,kCAAkC","sourcesContent":["// /** @jsx jsx */\n// /** @jsxFrag React.Fragment */\n// \n// \n// import React from 'react';\n// \n// import { jsx, css } from '@emotion/react';\n// \n// import {\n// FormGroup,\n// InputGroup,\n// NonIdealState,\n// HTMLSelect,\n// H4,\n// } from '@blueprintjs/core';\n// \n// import useItemClassConfig from '../../hooks/useItemClassConfig';\n// \n// import type {\n// ChangeProposal,\n// Payload,\n// InternalItemReference,\n// } from '../../../types';\n// \n// import { PROPOSAL_TYPES } from '../../../types';\n// \n// \n// const ProposalDetails: React.FC<{\n// itemRef: InternalItemReference\n// proposal: ChangeProposal\n// \n// existingItemData?: Payload\n// \n// onAccept?: (itemID: string, clsID: string) => void\n// onChange?: (val: ChangeProposal) => void\n// onDelete?: () => void\n// }> = function ({\n// itemRef,\n// proposal,\n// onChange,\n// existingItemData,\n// }) {\n// const { value: classConfig } = useItemClassConfig(itemRef.classID ?? 'NONEXISTENT_CLASS_ID');\n// const itemClass = classConfig;\n// \n// let itemView: JSX.Element;\n// let proposalProperties: JSX.Element | null;\n// \n// if (proposal.type === 'amendment') {\n// proposalProperties = (\n// <FormGroup inline label=\"Supersede with:\">\n// <InputGroup\n// value={proposal.amendmentType === 'supersession' ? proposal.supersedingItemID : ''}\n// disabled={!onChange}\n// placeholder=\"Item ID\"\n// onChange={onChange\n// ? (evt: React.FormEvent<HTMLInputElement>) => {\n// if (!onChange) { return; }\n// const itemID = evt.currentTarget.value;\n// if (itemID.trim() === '') {\n// const newVal = update(proposal, { $unset: ['supersedingItemID'] });\n// onChange({ ...newVal, amendmentType: 'retirement' });\n// } else {\n// onChange({ ...proposal, amendmentType: 'supersession', supersedingItemID: itemID });\n// }\n// }\n// : undefined}/>\n// </FormGroup>\n// );\n// } else {\n// proposalProperties = null;\n// }\n// \n// const itemData: Payload | undefined = proposal.type === 'addition'\n// ? proposal.payload\n// : existingItemData;\n// \n// if (itemData === undefined || !itemClass) {\n// itemView = <NonIdealState icon=\"heart-broken\" title=\"Unable to display this item\" />;\n// } else if (onChange && proposal.type !== 'amendment') {\n// const EditView = itemClass.views.editView;// as ItemEditView<any>;\n// itemView = <EditView\n// itemRef={itemRef}\n// itemData={itemData}\n// onChange={onChange\n// ? (payload) => onChange ? onChange({ ...proposal, payload }) : void 0\n// : undefined} />;\n// } else {\n// const DetailView = itemClass.views.detailView ?? itemClass!.views.editView;// as ItemDetailView<any>;\n// itemView = <DetailView\n// itemRef={itemRef}\n// itemData={itemData} />;\n// }\n// \n// const canChangeProposalType = proposal.type !== 'addition';\n// \n// function handleTypeChange(type: string) {\n// const pt = type as typeof PROPOSAL_TYPES[number];\n// \n// if (PROPOSAL_TYPES.indexOf(pt) < 0) { return; }\n// if (!onChange || !canChangeProposalType || pt === 'addition' || existingItemData === undefined) { return; }\n// \n// if (pt === 'amendment') {\n// onChange(update(proposal, {\n// type: { $set: pt },\n// amendmentType: { $set: 'retirement' },\n// $unset: ['payload'],\n// }));\n// } else {\n// onChange(update(proposal, {\n// type: { $set: pt },\n// payload: existingItemData,\n// }));\n// }\n// }\n// \n// return (\n// <div css={css`flex: 1; display: flex; flex-flow: column nowrap;`}>\n// <div css={css`flex-shrink: 0; display: flex; flex-flow: row nowrap; align-items: center; margin-bottom: 1rem;`}>\n// <HTMLSelect\n// options={PROPOSAL_TYPES.map(pt => ({ value: pt, label: pt }))}\n// //iconProps={{ icon: PROPOSAL_ICON[proposal.type] }}\n// value={proposal.type}\n// disabled={!onChange || !canChangeProposalType || existingItemData === undefined}\n// onChange={(onChange && canChangeProposalType && existingItemData !== undefined)\n// ? (evt) => handleTypeChange(evt.currentTarget.value)\n// : undefined} />\n// &ensp;\n// of a\n// &ensp;\n// <H4 css={css`margin: 0;`}>{classConfig?.meta.title ?? 'unknown class'}</H4>\n// {proposalProperties}\n// </div>\n// \n// <div css={css`flex: 1; overflow-y: auto;`}>\n// {itemView}\n// </div>\n// </div>\n// );\n// };\n// \n// export default ProposalDetails;\n"]}
@@ -0,0 +1,13 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ declare const _default: {
5
+ main: React.FC<{
6
+ uri: string;
7
+ }>;
8
+ title: React.FC<{
9
+ uri: string;
10
+ }>;
11
+ plainTitle: (uri: string) => Promise<string>;
12
+ };
13
+ export default _default;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/ChangeRequest/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useContext } from 'react';\nimport { jsx, css } from '@emotion/react';\nimport {\n Button,\n Card,\n FormGroup,\n Colors,\n NonIdealState,\n Spinner,\n H5,\n UL,\n Tag,\n Divider,\n Classes,\n} from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { crPathToCRID } from '../../itemPathUtils';\nimport {\n ChangeRequestContextProvider,\n ChangeRequestContext,\n} from '../../change-request/ChangeRequestContext';\nimport Proposals from '../../change-request/Proposals';\nimport { hadBeenProposed, isDisposed } from '../../../types/cr';\nimport { RegisterStakeholderListItem } from '../../RegisterStakeholder';\nimport {\n TabContentsWithActions,\n RegisterHelmet as Helmet,\n maybeEllipsizeString,\n Datestamp,\n} from '../../util';\nimport { TransitionOptions, getPastTransitions, getTransitions } from './transitions';\n\n\nconst View: React.FC<{ uri: string }> = function ({ uri }) {\n const crID = crPathToCRID(uri);\n\n return (\n <ChangeRequestContextProvider changeRequestID={crID}>\n <ChangeRequestDetails css={css`\n position: absolute;\n inset: 0;\n overflow-y: auto;\n `} />\n </ChangeRequestContextProvider>\n );\n};\n\n\nconst ChangeRequestDetails:\nReact.VoidFunctionComponent<{ className?: string }> =\nfunction ({ className }) {\n const { changeRequest: cr, canEdit } = useContext(ChangeRequestContext);\n const {\n registerMetadata,\n stakeholder,\n activeChangeRequestID,\n setActiveChangeRequestID,\n } = useContext(BrowserCtx);\n\n const helmet = \n <Helmet>\n <title>Viewing proposal: {cr?.justification ?? \"N/A\"}</title>\n </Helmet>;\n\n if (cr) {\n const isActive = activeChangeRequestID === cr.id;\n const anotherIsActive = activeChangeRequestID && activeChangeRequestID !== cr.id;\n const canTransition = stakeholder && getTransitions(cr, stakeholder).length > 0;\n\n const crStakeholder = (registerMetadata?.stakeholders ?? []).\n find(s => s.gitServerUsername === cr.submittingStakeholderGitServerUsername);\n\n return (\n <TabContentsWithActions\n className={className}\n actions={<>\n <FormGroup\n inline\n labelInfo={<HelpTooltip\n icon='info-sign'\n content={<>\n <UL>\n <li>Proposal ID: {cr.id}</li>\n </UL>\n </>}\n />}\n label={<strong>Proposal</strong>}\n css={css`margin: 0; .bp4-form-content { display: flex; flex-flow: row wrap; gap: 10px; }`}>\n <CRActivation\n isActive={isActive}\n htmlTitle={anotherIsActive\n ? \"You are in another proposal so you can’t enter this one. \"\n : canEdit && !isActive\n ? \"Enter proposal to preview or add to proposed changes. \"\n : !isActive\n ? \"Enter proposal to preview the register as proposed.\"\n : \"You’re previewing the register with this proposal applied.\"}\n onChangeActiveStatus={!anotherIsActive && setActiveChangeRequestID\n ? ((active) => active\n ? setActiveChangeRequestID?.(cr.id)\n : setActiveChangeRequestID?.(null)\n )\n : undefined}\n />\n </FormGroup>\n </>}\n main={\n <div\n css={css`\n display: flex;\n flex-flow: row wrap;\n padding: 10px;\n gap: 10px;\n align-content: flex-start;\n align-items: flex-start;\n `}\n className={className}>\n {helmet}\n\n <Card elevation={0} css={css`\n flex: 100%;\n background: ${Colors.LIGHT_GRAY3};\n padding: 11px;\n display: flex;\n min-height: 70vh;\n `}>\n <Proposals\n proposals={cr.items}\n css={css`flex: 1;`}\n />\n </Card>\n\n <Card elevation={1} css={css`flex: 30%; padding: 11px;`}>\n\n {crStakeholder\n ? <div>\n Author: <RegisterStakeholderListItem\n stakeholder={crStakeholder}\n isCurrentUser={cr.submittingStakeholderGitServerUsername === stakeholder?.gitServerUsername\n ? true\n : undefined}\n />\n </div>\n : null}\n\n <Divider />\n <div>\n To register version: <strong>{cr.registerVersion ?? 'N/A'}</strong>\n {\" \"}\n {cr.registerVersion === registerMetadata?.version?.id\n ? <Tag css={css`display: inline;`} intent='success' minimal round>current</Tag>\n : <Tag css={css`display: inline;`} intent='warning' minimal round>\n not current\n {\" \"}\n <HelpTooltip intent='warning' icon='warning-sign' content={<>\n Register is currently at version <strong>{registerMetadata?.version?.id ?? 'N/A'}</strong>,\n {\" \"}\n which is different from version proposal author may have had in mind.\n {\" \"}\n It is recommended that proposed changes are reviewed to avoid unintentionally\n {\" \"}\n undoing a prior change.\n </>} />\n </Tag>}\n </div>\n <Divider />\n <div>Edited: <Datestamp date={cr.timeEdited} /></div>\n <Divider />\n <div>Proposed: {hadBeenProposed(cr) ? <Datestamp date={cr.timeProposed} /> : 'not yet'}</div>\n <Divider />\n <div>Disposed: {isDisposed(cr) ? <Datestamp date={cr.timeDisposed} /> : 'not yet'}</div>\n <Divider />\n\n <H5>\n {cr.state?.replaceAll('-', ' ') || 'N/A'}\n </H5>\n </Card>\n\n <Card elevation={1} css={css`flex: 30%; padding: 11px;`}>\n {getPastTransitions(cr).map(([key, el], idx) =>\n <React.Fragment key={key}>\n {idx !== 0 ? <Divider /> : null}\n <FormGroup label={`${key}:`}>\n <div\n css={css`white-space: pre-wrap;`}\n className={Classes.RUNNING_TEXT}>\n {el}\n </div>\n </FormGroup>\n </React.Fragment>\n )}\n </Card>\n\n {canTransition\n ? <Card elevation={3} css={css`flex: 30%; padding: 11px;`}>\n <TransitionOptions cr={cr} />\n </Card>\n : null}\n </div>}\n />\n );\n } else {\n return <NonIdealState\n icon={<Spinner />}\n className={className}\n description={helmet}\n />;\n }\n};\n\n\nconst CRActivation: React.FC<{\n isActive: boolean;\n htmlTitle?: string;\n\n /** Labels for the “activate” and “deactivate” buttons. */\n labels?: { activate?: string, deactivate?: string };\n\n onChangeActiveStatus?: (newStatus: boolean) => void;\n}> = function ({ isActive, htmlTitle, labels, onChangeActiveStatus }) {\n return onChangeActiveStatus && isActive\n ? <Button\n title={htmlTitle}\n intent=\"warning\"\n disabled={!onChangeActiveStatus}\n onClick={() => onChangeActiveStatus?.(false)}>\n {labels?.deactivate ?? \"Exit proposal\"}\n </Button>\n : <Button\n title={htmlTitle}\n intent={onChangeActiveStatus ? 'primary' : undefined}\n disabled={!onChangeActiveStatus}\n onClick={() => onChangeActiveStatus?.(true)}>\n {labels?.activate ?? \"Enter proposal\"}\n </Button>;\n};\n\n\nconst CRTitle: React.FC<{ uri: string }> = function ({ uri }) {\n const { useObjectData } = useContext(DatasetContext);\n const justification = useObjectData({ objectPaths: [uri] }).value.data?.[uri]?.justification;\n return <>Proposal “{maybeEllipsizeString(justification ?? uri)}”</>;\n}\n\nexport default { main: View, title: CRTitle, plainTitle: async (uri: string) => `proposal ${uri}` };\n"]}
@@ -0,0 +1,28 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { Intent } from '@blueprintjs/core';
5
+ import type { RegisterStakeholder } from '../../../types';
6
+ import * as CR from '../../../types/cr';
7
+ export declare const TransitionOptions: React.FC<{
8
+ cr: CR.Base;
9
+ className?: string;
10
+ }>;
11
+ export declare function getPastTransitions(cr: CR.Base): [key: string, el: JSX.Element][];
12
+ declare type PossibleTransitionForCR<CR extends CR.Base> = [
13
+ targetState: CR.StateType,
14
+ cfg: CR.TransitionConfig<CR, CR.SomeCR, any>
15
+ ];
16
+ /**
17
+ * Returns a list of transitions
18
+ * that can be performed on given CR by given stakeholder.
19
+ */
20
+ export declare function getTransitions<CR extends CR.Base>(cr: CR, stakeholder: RegisterStakeholder): PossibleTransitionForCR<CR>[];
21
+ /**
22
+ * Returns True if there is no possible transition for given state.
23
+ */
24
+ export declare function isFinalState(state: CR.StateType): boolean;
25
+ export declare const STATE_INTENT: {
26
+ [key in CR.StateType]?: Intent;
27
+ };
28
+ export {};