@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,89 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import { jsx, css } from '@emotion/react';
4
+ import React from 'react';
5
+ import { Button, ButtonGroup, ControlGroup } from '@blueprintjs/core';
6
+ import { Select } from '@riboseinc/paneron-extension-kit/widgets/Sidebar/PropertyView';
7
+ import { isCriteriaGroup, isCriteriaKey } from './models';
8
+ import { CriteriaGroupLabel } from './index';
9
+ import { CRITERIA_CONFIGURATION } from './CRITERIA_CONFIGURATION';
10
+ /**
11
+ * Builds Blueprint’s tree nodes given criteria,
12
+ * callbacks and relevant register configuration.
13
+ */
14
+ export default function criteriaToNodes(cs, opts) {
15
+ const path = opts.path ?? [];
16
+ return [...cs.entries()].map(([idx, c]) => {
17
+ const isRoot = path.length < 1;
18
+ const defaultIcon = isRoot && opts.implied === true
19
+ ? 'manual'
20
+ : undefined;
21
+ const disabled = opts.implied === true;
22
+ const deleteButton = idx < (cs.length - 1) && opts.onDeleteItem
23
+ ? jsx(Button, { minimal: true, small: true, onClick: () => opts.onDeleteItem(path, idx), title: "Delete this criterion or criteria block", disabled: isRoot, icon: "cross" })
24
+ : null;
25
+ const addGroupButton = opts.onAddGroup
26
+ ? jsx(Button, { minimal: true, small: true, title: "Add nested criteria block", icon: "add-to-artifact", onClick: () => opts.onAddGroup([...path, idx]) })
27
+ : null;
28
+ if (isCriteriaGroup(c)) {
29
+ // Render criteria group recursively
30
+ const cg = c;
31
+ return {
32
+ id: `${path.join('-')}-${idx}-${opts.implied}`,
33
+ disabled,
34
+ hasCaret: true,
35
+ isExpanded: true,
36
+ icon: defaultIcon,
37
+ label: jsx(CriteriaGroupLabel, { css: css `margin: 2.5px 0`, criteriaGroup: cg, onUpdate: opts.onEditItem
38
+ ? ((op) => opts.onEditItem(path, idx, { ...cg, require: op }, true))
39
+ : undefined }),
40
+ secondaryLabel: jsx(ButtonGroup, null,
41
+ opts.implied && isRoot ? jsx(React.Fragment, null, "(implied)") : null,
42
+ addGroupButton,
43
+ deleteButton),
44
+ childNodes: criteriaToNodes(opts.onEditItem
45
+ ? [...cg.criteria, { key: 'custom', query: '' }]
46
+ : cg.criteria, { ...opts, path: [...path, idx] }),
47
+ };
48
+ }
49
+ else {
50
+ // Render leaf criterion
51
+ const ci = c;
52
+ const { subregisters, itemClasses } = opts;
53
+ if (!isCriteriaKey(ci.key)) {
54
+ console.error("Invalid criteria key encountered", ci.key);
55
+ throw new Error("Invalid criteria key encountered");
56
+ }
57
+ const cfg = CRITERIA_CONFIGURATION[ci.key];
58
+ if (!cfg) {
59
+ console.error("Missing criterion configuration for key", ci.key);
60
+ throw new Error("Missing criterion configuration");
61
+ }
62
+ const Widget = cfg.widget;
63
+ const data = cfg.fromQuery(ci.query, { subregisters, itemClasses });
64
+ const criterionTypeOptions = Object.entries(CRITERIA_CONFIGURATION).
65
+ map(([key, cfg]) => {
66
+ return { value: key, label: cfg.label };
67
+ });
68
+ const isPlaceholder = ci.key === 'custom' && ci.query === '';
69
+ const label = isPlaceholder
70
+ ? jsx(Button, { small: true, minimal: true, icon: "plus", onClick: () => opts.onEditItem(path, idx, { key: 'custom', query: cfg.toQuery({ customExpression: 'false' }, { subregisters, itemClasses }) }, true) }, "criteria")
71
+ : jsx(ControlGroup, { vertical: true, css: css `margin-bottom: 2.5px;` },
72
+ jsx(Select, { options: criterionTypeOptions, value: ci.key, disabled: !opts.onEditItem, onChange: opts.onEditItem
73
+ ? (evt) => {
74
+ if (evt.currentTarget.value !== '' && isCriteriaKey(evt.currentTarget.value)) {
75
+ opts.onEditItem(path, idx, { key: evt.currentTarget.value, query: '' });
76
+ }
77
+ }
78
+ : undefined }),
79
+ jsx(Widget, { itemClasses: opts.itemClasses, availableClassIDs: opts.availableClassIDs, subregisters: opts.subregisters, data: data, onChange: (val) => opts.onEditItem(path, idx, { key: ci.key, query: cfg.toQuery(val, { subregisters, itemClasses }) }, true) }));
80
+ return {
81
+ id: `${path.join('-')}-${idx}-${opts.implied ? 'implied' : ''}`,
82
+ disabled,
83
+ label,
84
+ secondaryLabel: jsx(ButtonGroup, null, deleteButton),
85
+ };
86
+ }
87
+ });
88
+ }
89
+ //# sourceMappingURL=criteriaToNodes.js.map
@@ -0,0 +1,75 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import { jsx, css } from '@emotion/react';
4
+ import { useEffect, useState } from 'react';
5
+ import { Button, ButtonGroup, Tree } from '@blueprintjs/core';
6
+ import { makeBlankCriteria, COMPOSITION_OPERATORS } from './models';
7
+ import mutateGroup from './mutateGroup';
8
+ import criteriaToNodes from './criteriaToNodes';
9
+ export const SUBREGISTER_PATH_PREFIX = '/subregisters/';
10
+ export const CriteriaTree = function ({ criteria, impliedCriteria, onChange, availableClassIDs, itemClasses, subregisters, className }) {
11
+ const [crit, updateCriteria] = useState(criteria);
12
+ useEffect(() => {
13
+ updateCriteria(criteria);
14
+ }, [JSON.stringify(criteria)]);
15
+ function onAddGroup(parent) {
16
+ const p = reverseArray(parent);
17
+ var newCriteria = JSON.parse(JSON.stringify([crit]));
18
+ const newGroup = makeBlankCriteria();
19
+ mutateGroup(newCriteria, p, { action: 'insert', item: newGroup });
20
+ updateCriteria(newCriteria[0]);
21
+ onChange(newCriteria[0]);
22
+ }
23
+ function onDelete(parent, idx) {
24
+ const p = reverseArray(parent);
25
+ var newCriteria = JSON.parse(JSON.stringify([crit]));
26
+ mutateGroup(newCriteria, p, { action: 'delete', idx });
27
+ updateCriteria(newCriteria[0]);
28
+ onChange(newCriteria[0]);
29
+ }
30
+ function onEditItem(parent, idx, newItem, commit) {
31
+ const p = reverseArray(parent);
32
+ var newCriteria = JSON.parse(JSON.stringify([crit]));
33
+ mutateGroup(newCriteria, p, { action: 'edit', idx, item: newItem });
34
+ updateCriteria(newCriteria[0]);
35
+ if (commit) {
36
+ onChange(newCriteria[0]);
37
+ }
38
+ }
39
+ const nodes = criteriaToNodes([crit], {
40
+ onEditItem: onChange ? onEditItem : undefined,
41
+ onAddGroup: onChange ? onAddGroup : undefined,
42
+ onDeleteItem: onChange ? onDelete : undefined,
43
+ itemClasses,
44
+ subregisters,
45
+ availableClassIDs,
46
+ });
47
+ const implied = impliedCriteria !== undefined
48
+ ? criteriaToNodes([impliedCriteria], {
49
+ implied: true,
50
+ itemClasses,
51
+ subregisters,
52
+ availableClassIDs,
53
+ })
54
+ : [];
55
+ return (jsx(Tree, { contents: [...implied, ...nodes], className: className, css: css `
56
+ .bp4-tree-node-content { height: unset; }
57
+ .bp4-tree-node-label { overflow: unset; }
58
+ .bp4-tree-node-caret, .bp4-tree-node-caret-none { display: none; }
59
+ ` }));
60
+ };
61
+ export default CriteriaTree;
62
+ export const CriteriaGroupLabel = function ({ criteriaGroup, onUpdate, className }) {
63
+ return jsx("div", { className: className },
64
+ onUpdate
65
+ ? jsx(ButtonGroup, null, COMPOSITION_OPERATORS.map(op => jsx(Button, { key: op, small: true, onClick: () => onUpdate ? onUpdate(op) : void 0, active: criteriaGroup.require === op }, op)))
66
+ : jsx("strong", null, criteriaGroup.require),
67
+ " ",
68
+ "of:");
69
+ };
70
+ function reverseArray(arr) {
71
+ var copy = JSON.parse(JSON.stringify(arr));
72
+ copy.reverse();
73
+ return copy;
74
+ }
75
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,28 @@
1
+ export const COMPOSITION_OPERATORS = [
2
+ 'all',
3
+ 'any',
4
+ 'none',
5
+ ];
6
+ // TODO: Can we not hard-code keys here? Would require some smart generic typing.
7
+ const CRITERIA_KEYS = [
8
+ 'item-class',
9
+ 'subregister',
10
+ 'custom',
11
+ 'raw-substring',
12
+ ];
13
+ export function isCriteriaKey(val) {
14
+ return CRITERIA_KEYS.indexOf(val) >= 0;
15
+ }
16
+ export function isCriteriaGroup(val) {
17
+ return val && val.hasOwnProperty('require') && val.hasOwnProperty('criteria');
18
+ }
19
+ // TODO: Deprecate in favour of `BLANK_CRITERIA`?
20
+ export function makeBlankCriteria() {
21
+ return BLANK_CRITERIA;
22
+ }
23
+ /** Useful as no-op default where a valid criteria is required. */
24
+ export const BLANK_CRITERIA = {
25
+ require: 'all',
26
+ criteria: [],
27
+ };
28
+ //# sourceMappingURL=models.js.map
@@ -0,0 +1,53 @@
1
+ /** Mutates given criteria tree in place. */
2
+ export default function mutateGroup(criteria,
3
+ /** Here path must be parent node path in reverse (top-level index coming last). */
4
+ path, mutation) {
5
+ if (path.length < 1 && mutation.action === 'edit') {
6
+ criteria[0].require = mutation.item.require;
7
+ }
8
+ for (const [curIdx, c] of criteria.entries()) {
9
+ if (curIdx === path[path.length - 1]) {
10
+ path.pop();
11
+ let cg;
12
+ if (c.hasOwnProperty('criteria')) {
13
+ // This item is a group, let’s go in and delete descendants
14
+ cg = c;
15
+ }
16
+ else {
17
+ // This item is a predicate string, can’t go in and delete descendants
18
+ throw new Error(`Cannot enter item: not a group at path ${path.join('/')}/${curIdx}: ${c}`);
19
+ }
20
+ if (path.length > 0) {
21
+ mutateGroup(cg.criteria, path, mutation);
22
+ }
23
+ else {
24
+ if (mutation.action === 'delete') {
25
+ cg.criteria.splice(mutation.idx, 1);
26
+ }
27
+ else if (mutation.action === 'insert') {
28
+ cg.criteria.push(mutation.item);
29
+ }
30
+ else if (mutation.action === 'edit') {
31
+ if (cg.criteria[mutation.idx] === undefined && mutation.idx === cg.criteria.length) {
32
+ if (mutation.item.hasOwnProperty('require')) {
33
+ console.error(cg.criteria, mutation);
34
+ throw new Error("Won’t auto-insert new group");
35
+ }
36
+ // It may be that a new item is being appended
37
+ cg.criteria.push(mutation.item);
38
+ }
39
+ const isGroup = cg.criteria[mutation.idx].hasOwnProperty('require');
40
+ if (isGroup) {
41
+ // If it’s a group, only change the predicate operator to preserve nested items:
42
+ cg.criteria[mutation.idx].require =
43
+ mutation.item.require;
44
+ }
45
+ else {
46
+ cg.criteria[mutation.idx] = mutation.item;
47
+ }
48
+ }
49
+ }
50
+ }
51
+ }
52
+ }
53
+ //# sourceMappingURL=mutateGroup.js.map
@@ -0,0 +1,147 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import { jsx, css } from '@emotion/react';
4
+ import { useContext, useState } from 'react';
5
+ import { Button, ButtonGroup, Dialog } from '@blueprintjs/core';
6
+ import { isRegisterItem, } from '../types';
7
+ import { BrowserCtx } from './BrowserCtx';
8
+ import { ChangeRequestContext } from './change-request/ChangeRequestContext';
9
+ import { isDrafted } from '../types/cr';
10
+ import Search from './sidebar/Search';
11
+ import { itemPathToItemRef } from './itemPathUtils';
12
+ import { Protocols } from './protocolRegistry';
13
+ export const GenericRelatedItemView = function ({ itemRef, className, onCreateNew, onClear, onChange, availableClassIDs, onJump,
14
+ // availableSubregisterIDs,
15
+ // itemSorter,
16
+ }) {
17
+ const { useRegisterItemData, getRelatedItemClassConfiguration, jumpTo, } = useContext(BrowserCtx);
18
+ const { changeRequest: activeChangeRequest } = useContext(ChangeRequestContext);
19
+ const { classID, itemID, subregisterID } = itemRef ?? {
20
+ classID: '',
21
+ itemID: '',
22
+ subregisterID: '',
23
+ };
24
+ const itemPathWithClass = `${classID}/${itemID}.yaml`;
25
+ // If curretn register has subregisters, specify subregister-relative path
26
+ const itemPathWithSubregister = subregisterID
27
+ ? `subregisters/${subregisterID}/${itemPathWithClass}`
28
+ : `${itemPathWithClass}`;
29
+ // If a change request is active
30
+ // and this item is among clarifications or additions
31
+ // then use item path relative to the change request
32
+ const affectedByActiveCR = (activeChangeRequest &&
33
+ isDrafted(activeChangeRequest) &&
34
+ activeChangeRequest.items[itemPathWithSubregister]);
35
+ const itemPath = affectedByActiveCR
36
+ ? `/proposals/${activeChangeRequest.id}/items/${itemPathWithSubregister}`
37
+ : `/${itemPathWithSubregister}`;
38
+ const [selectDialogState, setSelectDialogState] = useState(false);
39
+ //log.debug("Rendering generic related item view", itemRef);
40
+ //const { jumpToItem } = useContext(BrowserCtx);
41
+ const itemResult = useRegisterItemData({ itemPaths: [itemPath] });
42
+ const item = (itemResult.value?.[itemPath] || null);
43
+ let classConfigured;
44
+ let cfg;
45
+ try {
46
+ cfg = getRelatedItemClassConfiguration(classID);
47
+ classConfigured = true;
48
+ }
49
+ catch (e) {
50
+ cfg = {
51
+ title: classID,
52
+ itemView: () => jsx("span", null, itemID)
53
+ };
54
+ classConfigured = false;
55
+ }
56
+ const Item = cfg.itemView;
57
+ async function handleCreateNew() {
58
+ if (!onCreateNew) {
59
+ return;
60
+ }
61
+ const itemRef = await onCreateNew();
62
+ console.debug("Created new", itemRef);
63
+ }
64
+ const classIDs = availableClassIDs ?? ((itemRef?.classID ?? '') !== '' ? [itemRef.classID] : []);
65
+ function jump() {
66
+ //jumpToItem?.(classID, itemID, subregisterID);
67
+ onJump
68
+ ? onJump()
69
+ : jumpTo?.(`${Protocols.ITEM_DETAILS}:/${itemPathWithSubregister}`);
70
+ }
71
+ const hasItem = item !== null && classConfigured && isRegisterItem(item);
72
+ const itemIsMissing = itemID !== '' && (item === null && !itemResult.isUpdating);
73
+ const canAutoCreateRelatedItem = itemID === '' && onCreateNew && !itemResult.isUpdating;
74
+ const canChangeRelatedItem = /*classIDs.length >= 1 && */ onChange && !itemResult.isUpdating;
75
+ const canClear = onClear && itemID !== '' && !itemResult.isUpdating;
76
+ const canJump = item !== null && classConfigured && !itemResult.isUpdating && (onJump || jumpTo);
77
+ let itemView;
78
+ let itemButtons = [];
79
+ if (hasItem) {
80
+ itemView = jsx(Item, { itemRef: { classID, itemID, subregisterID }, itemData: item.data });
81
+ }
82
+ else {
83
+ if (canAutoCreateRelatedItem) {
84
+ itemButtons.push({
85
+ onClick: handleCreateNew,
86
+ icon: 'add',
87
+ text: 'Auto create',
88
+ intent: 'primary',
89
+ });
90
+ }
91
+ if (itemIsMissing) {
92
+ itemView = jsx("span", null,
93
+ "Item not found: ",
94
+ itemID ?? 'N/A');
95
+ }
96
+ else {
97
+ itemView = jsx("span", null, "Item not specified");
98
+ }
99
+ }
100
+ const willShowItemView = hasItem || itemIsMissing || !onChange;
101
+ if (canChangeRelatedItem) {
102
+ itemButtons.push({
103
+ onClick: () => setSelectDialogState(true),
104
+ icon: 'edit',
105
+ text: willShowItemView ? undefined : 'Specify',
106
+ intent: 'primary',
107
+ /*disabled: classIDs.length < 1,*/
108
+ });
109
+ }
110
+ if (canClear) {
111
+ itemButtons.push({ onClick: onClear, icon: 'cross', intent: 'danger' });
112
+ }
113
+ //log.debug("Rendering generic related item view: got item", item);
114
+ return (jsx(ButtonGroup, { fill: true, className: className, css: css `.bp4-button-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }` },
115
+ classID
116
+ ? jsx(Button, { alignText: "left", css: css `width: 180px;`, title: `Item class: ${cfg.title ?? "N/A"}`, outlined: true, disabled: true }, cfg.title ?? "Class N/A")
117
+ : null,
118
+ willShowItemView
119
+ ? jsx(Button, { alignText: "left", fill: hasItem, outlined: true, disabled: !canJump, onClick: jump, loading: itemResult.isUpdating, title: hasItem
120
+ ? `${cfg.title} (click to jump to item)`
121
+ : undefined }, itemView)
122
+ : null,
123
+ itemButtons.map((props, idx) => jsx(Button, { key: idx, outlined: true, ...props })),
124
+ onChange
125
+ ? jsx(RelatedItemSelectionDialog, { isOpen: selectDialogState, onClose: () => setSelectDialogState(false), onChange: onChange, availableClassIDs: classIDs })
126
+ : null));
127
+ };
128
+ const RelatedItemSelectionDialog = function ({ isOpen, onClose, onChange, availableClassIDs, }) {
129
+ const { subregisters } = useContext(BrowserCtx);
130
+ const classCriteria = availableClassIDs.map(clsID => ({
131
+ key: 'item-class',
132
+ query: `objPath.indexOf(\"/${clsID}/\") >= 0`,
133
+ }));
134
+ const implicitCriteria = classCriteria.length > 0
135
+ ? {
136
+ require: 'any',
137
+ criteria: classCriteria,
138
+ }
139
+ : undefined;
140
+ return (jsx(Dialog, { isOpen: isOpen, onClose: onClose, enforceFocus: false, style: { padding: '0', width: 'unset' } },
141
+ jsx(Search, { style: { height: '90vh', width: '90vw' }, availableClassIDs: availableClassIDs, implicitCriteria: implicitCriteria, stateName: "superseding-item-selector-search", onOpenItem: (itemPath) => {
142
+ onChange(itemPathToItemRef(subregisters !== undefined, itemPath));
143
+ onClose();
144
+ } })));
145
+ };
146
+ export default GenericRelatedItemView;
147
+ //# sourceMappingURL=GenericRelatedItemView.js.map
@@ -0,0 +1,19 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { jsx, css } from '@emotion/react';
5
+ import { Icon, Tag } from '@blueprintjs/core';
6
+ export const RegisterStakeholderListItem = function ({ stakeholder, isCurrentUser }) {
7
+ return jsx(React.Fragment, null,
8
+ jsx(Icon, { icon: "person" }),
9
+ "\u00A0",
10
+ jsx("span", { css: css `white-space: nowrap;` }, registerStakeholderPlain(stakeholder)),
11
+ "\u00A0",
12
+ isCurrentUser
13
+ ? jsx(Tag, { round: true, minimal: true, intent: "primary", css: css `display: inline;` }, "you")
14
+ : null);
15
+ };
16
+ export function registerStakeholderPlain(stakeholder) {
17
+ return `${stakeholder.name} (${stakeholder.role ?? 'unspecified role'})`;
18
+ }
19
+ //# sourceMappingURL=RegisterStakeholder.js.map
@@ -0,0 +1,20 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React from 'react';
4
+ import { jsx, css } from '@emotion/react';
5
+ import { Tag, Icon } from '@blueprintjs/core';
6
+ import { formatDate } from './util';
7
+ export const RegisterVersion = function ({ version, isCurrent }) {
8
+ return jsx(React.Fragment, null,
9
+ jsx(Icon, { icon: "calendar" }),
10
+ "\u00A0",
11
+ jsx("span", { css: css `white-space: nowrap;` }, registerVersionPlain(version)),
12
+ "\u00A0",
13
+ isCurrent
14
+ ? jsx(Tag, { round: true, intent: "primary", title: "This version is the current published version." }, "current")
15
+ : null);
16
+ };
17
+ export function registerVersionPlain(version) {
18
+ return `${version.id} (published ${formatDate(version.timestamp)})`;
19
+ }
20
+ //# sourceMappingURL=RegisterVersion.js.map
@@ -0,0 +1,58 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import React, { useState, useContext } from 'react';
4
+ import { jsx, css } from '@emotion/react';
5
+ import { Button, ControlGroup, Colors, InputGroup, Tag, ButtonGroup } from '@blueprintjs/core';
6
+ import CriteriaTree from './FilterCriteria';
7
+ import { CUSTOM_CONDITION, RAW_SUBSTRING } from './FilterCriteria/CRITERIA_CONFIGURATION';
8
+ import criteriaGroupToQueryExpression from './FilterCriteria/criteriaGroupToQueryExpression';
9
+ //import criteriaGroupToSummary from './FilterCriteria/criteriaGroupToSummary';
10
+ import { BrowserCtx } from './BrowserCtx';
11
+ const SearchQuery = function ({ rootCriteria, onCriteriaChange, quickSearchString, onQuickSearchStringChange, availableClassIDs, className, }) {
12
+ const { itemClasses, subregisters } = useContext(BrowserCtx);
13
+ const [editingAdvanced, toggleEditingAdvanced] = useState(false);
14
+ const classIDs = availableClassIDs ?? Object.keys(itemClasses);
15
+ const hasAdvancedQuery = rootCriteria.criteria.length > 0;
16
+ function makeDefaultCriteria() {
17
+ if (quickSearchString) {
18
+ return {
19
+ key: 'raw-substring',
20
+ query: RAW_SUBSTRING.toQuery({ substring: quickSearchString }, { itemClasses, subregisters }),
21
+ };
22
+ }
23
+ else {
24
+ return {
25
+ key: 'custom',
26
+ query: CUSTOM_CONDITION.toQuery({ customExpression: 'false' }, { itemClasses, subregisters }),
27
+ };
28
+ }
29
+ }
30
+ return (jsx(ControlGroup, { fill: true, vertical: true, className: className },
31
+ jsx(InputGroup, { fill: true, small: true, disabled: !onQuickSearchStringChange || hasAdvancedQuery, value: hasAdvancedQuery ? '' : quickSearchString, leftIcon: "search", placeholder: "Quick search", title: !hasAdvancedQuery
32
+ ? "Search for a substring occurring anywhere within serialized item data."
33
+ : "Advanced query overrides quick search.", css: css `width: 200px; ${quickSearchString !== '' && !hasAdvancedQuery ? 'input { font-weight: bold; }' : ''}`, rightElement: jsx(Button, { disabled: !onQuickSearchStringChange || quickSearchString === '' || hasAdvancedQuery, onClick: () => onQuickSearchStringChange?.(''), small: true, minimal: true, icon: "cross", title: "Clear quick search" }), onChange: evt => onQuickSearchStringChange?.(evt.currentTarget.value) }),
34
+ jsx(ButtonGroup, { fill: true },
35
+ jsx(Button, { fill: true, small: true, title: "Edit advanced search query", icon: 'filter', onClick: !hasAdvancedQuery
36
+ ? (() => {
37
+ onCriteriaChange({ criteria: [makeDefaultCriteria()], require: 'all' });
38
+ toggleEditingAdvanced(true);
39
+ })
40
+ : () => toggleEditingAdvanced(v => !v), active: editingAdvanced && hasAdvancedQuery, disabled: !hasAdvancedQuery && !onCriteriaChange, rightIcon: rootCriteria.criteria.length > 0
41
+ ? jsx(Tag, { intent: "success", round: true }, "on")
42
+ : jsx(Tag, { round: true }, "off") }, "Advanced")),
43
+ hasAdvancedQuery && editingAdvanced
44
+ ? jsx(React.Fragment, null,
45
+ jsx(CriteriaTree, { key: "tree", criteria: rootCriteria, onChange: onCriteriaChange, itemClasses: itemClasses, availableClassIDs: classIDs, subregisters: subregisters, css: css `max-height: 50vh; overflow-y: auto;` }),
46
+ jsx("div", { key: "query", css: css `
47
+ margin-top: 5px;
48
+ padding: 0 10px 10px 10px;
49
+ color: ${Colors.GRAY3};
50
+ font-size: 90%;
51
+ overflow-wrap: break-word;
52
+ ` },
53
+ "Query used: ",
54
+ jsx("code", null, criteriaGroupToQueryExpression(rootCriteria))))
55
+ : null));
56
+ };
57
+ export default SearchQuery;
58
+ //# sourceMappingURL=SearchQuery.js.map
@@ -0,0 +1,30 @@
1
+ /** @jsx jsx */
2
+ /** @jsxFrag React.Fragment */
3
+ import { jsx } from '@emotion/react';
4
+ import React, { useContext } from 'react';
5
+ import { DatasetContext } from '@riboseinc/paneron-extension-kit/context';
6
+ import { canBeEditedBy } from '../../types/cr';
7
+ import { BrowserCtx } from '../BrowserCtx';
8
+ export const ChangeRequestContext = React.createContext({
9
+ changeRequest: null,
10
+ canEdit: false,
11
+ });
12
+ export const ChangeRequestContextProvider = function ({ changeRequestID, children }) {
13
+ const { useObjectData } = useContext(DatasetContext);
14
+ const { stakeholder } = useContext(BrowserCtx);
15
+ const crPath = changeRequestID
16
+ ? `/proposals/${changeRequestID}/main.yaml`
17
+ : null;
18
+ const changeRequest = useObjectData({
19
+ objectPaths: crPath ? [crPath] : [],
20
+ }).value?.data[crPath ?? ''] ?? (crPath ? undefined : null);
21
+ return (jsx(ChangeRequestContext.Provider, { value: {
22
+ changeRequest,
23
+ canEdit: changeRequest
24
+ && stakeholder
25
+ && canBeEditedBy(stakeholder, changeRequest)
26
+ ? true
27
+ : false,
28
+ } }, children));
29
+ };
30
+ //# sourceMappingURL=ChangeRequestContext.js.map