@riboseinc/paneron-registry-kit 2.0.0-dev9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/common.d.ts +1 -1
- package/common.js +1 -1
- package/common.js.map +1 -1
- package/index.d.ts +3 -3
- package/index.js +3 -3
- package/index.js.map +1 -1
- package/package.json +26 -19
- package/types/cr.d.ts +216 -0
- package/types/cr.js +175 -0
- package/types/cr.js.map +1 -0
- package/types/index.d.ts +1 -0
- package/types/index.js +19 -0
- package/types/index.js.map +1 -1
- package/types/item.d.ts +13 -3
- package/types/item.js +11 -1
- package/types/item.js.map +1 -1
- package/types/proposal.d.ts +31 -14
- package/types/proposal.js +1 -1
- package/types/proposal.js.map +1 -1
- package/types/register.d.ts +6 -5
- package/types/register.js +19 -1
- package/types/register.js.map +1 -1
- package/types/registry.d.ts +8 -3
- package/types/registry.js +8 -1
- package/types/registry.js.map +1 -1
- package/types/stakeholder.d.ts +40 -16
- package/types/stakeholder.js +47 -3
- package/types/stakeholder.js.map +1 -1
- package/types/views.d.ts +98 -24
- package/types/views.js.map +1 -1
- package/views/AnnotatedChange.d.ts +7 -0
- package/views/AnnotatedChange.js +91 -0
- package/views/AnnotatedChange.js.map +1 -0
- package/views/BrowserCtx.d.ts +66 -2
- package/views/BrowserCtx.js +13 -2
- package/views/BrowserCtx.js.map +1 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.d.ts +13 -1
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js +178 -85
- package/views/FilterCriteria/CRITERIA_CONFIGURATION.js.map +1 -1
- package/views/FilterCriteria/criteriaGroupToQueryExpression.d.ts +4 -0
- package/views/FilterCriteria/criteriaGroupToQueryExpression.js +10 -3
- package/views/FilterCriteria/criteriaGroupToQueryExpression.js.map +1 -1
- package/views/FilterCriteria/criteriaGroupToSummary.js +7 -7
- package/views/FilterCriteria/criteriaGroupToSummary.js.map +1 -1
- package/views/FilterCriteria/criteriaToNodes.d.ts +9 -0
- package/views/FilterCriteria/criteriaToNodes.js +42 -28
- package/views/FilterCriteria/criteriaToNodes.js.map +1 -1
- package/views/FilterCriteria/index.d.ts +1 -0
- package/views/FilterCriteria/index.js +29 -21
- package/views/FilterCriteria/index.js.map +1 -1
- package/views/FilterCriteria/models.d.ts +29 -2
- package/views/FilterCriteria/models.js +17 -10
- package/views/FilterCriteria/models.js.map +1 -1
- package/views/FilterCriteria/mutateGroup.d.ts +4 -1
- package/views/FilterCriteria/mutateGroup.js +4 -3
- package/views/FilterCriteria/mutateGroup.js.map +1 -1
- package/views/GenericRelatedItemView.d.ts +1 -1
- package/views/GenericRelatedItemView.js +142 -102
- package/views/GenericRelatedItemView.js.map +1 -1
- package/views/RegisterStakeholder.d.ts +9 -0
- package/views/RegisterStakeholder.js +40 -0
- package/views/RegisterStakeholder.js.map +1 -0
- package/views/RegisterVersion.d.ts +9 -0
- package/views/RegisterVersion.js +41 -0
- package/views/RegisterVersion.js.map +1 -0
- package/views/SearchQuery.d.ts +13 -0
- package/views/SearchQuery.js +137 -0
- package/views/SearchQuery.js.map +1 -0
- package/views/change-request/ChangeRequestContext.d.ts +20 -0
- package/views/change-request/ChangeRequestContext.js +56 -0
- package/views/change-request/ChangeRequestContext.js.map +1 -0
- package/views/change-request/Proposals.d.ts +21 -0
- package/views/change-request/Proposals.js +331 -0
- package/views/change-request/Proposals.js.map +1 -0
- package/views/change-request/objectChangeset.d.ts +31 -0
- package/views/change-request/objectChangeset.js +229 -0
- package/views/change-request/objectChangeset.js.map +1 -0
- package/views/detail/ChangeRequest/Proposal.d.ts +0 -0
- package/views/detail/ChangeRequest/Proposal.js +142 -0
- package/views/detail/ChangeRequest/Proposal.js.map +1 -0
- package/views/detail/ChangeRequest/index.d.ts +13 -0
- package/views/detail/ChangeRequest/index.js +207 -0
- package/views/detail/ChangeRequest/index.js.map +1 -0
- package/views/detail/ChangeRequest/transitions.d.ts +28 -0
- package/views/detail/ChangeRequest/transitions.js +530 -0
- package/views/detail/ChangeRequest/transitions.js.map +1 -0
- package/views/detail/CustomView/index.d.ts +13 -0
- package/views/detail/CustomView/index.js +68 -0
- package/views/detail/CustomView/index.js.map +1 -0
- package/views/detail/RegisterHome/index.d.ts +5 -0
- package/views/detail/RegisterHome/index.js +128 -0
- package/views/detail/RegisterHome/index.js.map +1 -0
- package/views/detail/RegisterItem/RelatedItems.d.ts +13 -0
- package/views/detail/RegisterItem/RelatedItems.js +61 -0
- package/views/detail/RegisterItem/RelatedItems.js.map +1 -0
- package/views/detail/RegisterItem/SupersedingItemMenu.d.ts +13 -0
- package/views/detail/RegisterItem/SupersedingItemMenu.js +56 -0
- package/views/detail/RegisterItem/SupersedingItemMenu.js.map +1 -0
- package/views/detail/RegisterItem/index.d.ts +13 -0
- package/views/detail/RegisterItem/index.js +356 -0
- package/views/detail/RegisterItem/index.js.map +1 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.d.ts +10 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.js +331 -0
- package/views/detail/RegisterMeta/RegisterMetaForm.js.map +1 -0
- package/views/detail/RegisterMeta/index.d.ts +10 -0
- package/views/detail/RegisterMeta/index.js +111 -0
- package/views/detail/RegisterMeta/index.js.map +1 -0
- package/views/detail/index.d.ts +1 -0
- package/views/detail/index.js +24 -0
- package/views/detail/index.js.map +1 -0
- package/views/diffing/InlineDiff.d.ts +12 -0
- package/views/diffing/InlineDiff.js +58 -0
- package/views/diffing/InlineDiff.js.map +1 -0
- package/views/diffing/StructuredDiff.d.ts +11 -0
- package/views/diffing/StructuredDiff.js +65 -0
- package/views/diffing/StructuredDiff.js.map +1 -0
- package/views/hooks/useCustomView.d.ts +3 -0
- package/views/hooks/useCustomView.js +24 -0
- package/views/hooks/useCustomView.js.map +1 -0
- package/views/hooks/useItemClassConfig.d.ts +3 -0
- package/views/hooks/useItemClassConfig.js +24 -0
- package/views/hooks/useItemClassConfig.js.map +1 -0
- package/views/hooks/useItemRef.d.ts +3 -0
- package/views/hooks/useItemRef.js +39 -0
- package/views/hooks/useItemRef.js.map +1 -0
- package/views/hooks/useSingleRegisterItemData.d.ts +3 -0
- package/views/hooks/useSingleRegisterItemData.js +32 -0
- package/views/hooks/useSingleRegisterItemData.js.map +1 -0
- package/views/index.d.ts +2 -2
- package/views/index.js +161 -130
- package/views/index.js.map +1 -1
- package/views/itemPathUtils.d.ts +45 -2
- package/views/itemPathUtils.js +101 -14
- package/views/itemPathUtils.js.map +1 -1
- package/views/itemQueryUtils.d.ts +11 -0
- package/views/itemQueryUtils.js +48 -0
- package/views/itemQueryUtils.js.map +1 -0
- package/views/protocolRegistry.d.ts +12 -0
- package/views/protocolRegistry.js +42 -0
- package/views/protocolRegistry.js.map +1 -0
- package/views/sidebar/Browse/index.d.ts +11 -0
- package/views/sidebar/Browse/index.js +453 -0
- package/views/sidebar/Browse/index.js.map +1 -0
- package/views/sidebar/Export/index.d.ts +5 -0
- package/views/sidebar/Export/index.js +94 -0
- package/views/sidebar/Export/index.js.map +1 -0
- package/views/sidebar/ListItem.d.ts +10 -0
- package/views/sidebar/ListItem.js +43 -0
- package/views/sidebar/ListItem.js.map +1 -0
- package/views/sidebar/Registration/index.d.ts +5 -0
- package/views/sidebar/Registration/index.js +163 -0
- package/views/sidebar/Registration/index.js.map +1 -0
- package/views/sidebar/Search/index.d.ts +18 -0
- package/views/sidebar/Search/index.js +177 -0
- package/views/sidebar/Search/index.js.map +1 -0
- package/views/sidebar/index.d.ts +6 -0
- package/views/sidebar/index.js +104 -0
- package/views/sidebar/index.js.map +1 -0
- package/views/util.d.ts +29 -5
- package/views/util.js +92 -6
- package/views/util.js.map +1 -1
- package/views/ChangeRequest.d.ts +0 -12
- package/views/ChangeRequest.js +0 -689
- package/views/ChangeRequest.js.map +0 -1
- package/views/ItemBrowser.d.ts +0 -12
- package/views/ItemBrowser.js +0 -258
- package/views/ItemBrowser.js.map +0 -1
- package/views/ItemDetails.d.ts +0 -14
- package/views/ItemDetails.js +0 -128
- package/views/ItemDetails.js.map +0 -1
- package/views/MainView.d.ts +0 -8
- package/views/MainView.js +0 -34
- package/views/MainView.js.map +0 -1
- package/views/RegisterInformation.d.ts +0 -7
- package/views/RegisterInformation.js +0 -264
- package/views/RegisterInformation.js.map +0 -1
- package/views/RegisterItemGrid.d.ts +0 -25
- package/views/RegisterItemGrid.js +0 -276
- package/views/RegisterItemGrid.js.map +0 -1
|
@@ -0,0 +1,331 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _immutabilityHelper = _interopRequireDefault(require("immutability-helper"));
|
|
9
|
+
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _react2 = require("@emotion/react");
|
|
13
|
+
|
|
14
|
+
var _styled = _interopRequireDefault(require("@emotion/styled"));
|
|
15
|
+
|
|
16
|
+
var _core = require("@blueprintjs/core");
|
|
17
|
+
|
|
18
|
+
var _datetime = require("@blueprintjs/datetime");
|
|
19
|
+
|
|
20
|
+
var _HelpTooltip = _interopRequireDefault(require("@riboseinc/paneron-extension-kit/widgets/HelpTooltip"));
|
|
21
|
+
|
|
22
|
+
var _types = require("../../../types");
|
|
23
|
+
|
|
24
|
+
var _stakeholder = require("../../../types/stakeholder");
|
|
25
|
+
|
|
26
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
27
|
+
|
|
28
|
+
/** @jsx jsx */
|
|
29
|
+
|
|
30
|
+
/** @jsxFrag React.Fragment */
|
|
31
|
+
const DUMMY_VERSION = {
|
|
32
|
+
id: '',
|
|
33
|
+
timestamp: new Date()
|
|
34
|
+
};
|
|
35
|
+
const DUMMY_CONTACT = {
|
|
36
|
+
label: 'email',
|
|
37
|
+
value: ''
|
|
38
|
+
};
|
|
39
|
+
const DUMMY_PARTY = {
|
|
40
|
+
name: '',
|
|
41
|
+
contacts: [DUMMY_CONTACT]
|
|
42
|
+
};
|
|
43
|
+
const DUMMY_STAKEHOLDER = {
|
|
44
|
+
role: _stakeholder.StakeholderRole.Submitter,
|
|
45
|
+
name: '',
|
|
46
|
+
gitServerUsername: undefined,
|
|
47
|
+
parties: [DUMMY_PARTY]
|
|
48
|
+
};
|
|
49
|
+
|
|
50
|
+
const RegisterMetaForm = function ({
|
|
51
|
+
value,
|
|
52
|
+
onChange,
|
|
53
|
+
className
|
|
54
|
+
}) {
|
|
55
|
+
var _value$operatingLangu, _value$operatingLangu2, _value$operatingLangu3, _value$version, _value$version2;
|
|
56
|
+
|
|
57
|
+
function handleOperatingLanguageChange(fieldName) {
|
|
58
|
+
return evt => {
|
|
59
|
+
const newValue = (0, _immutabilityHelper.default)(value, {
|
|
60
|
+
operatingLanguage: op => (0, _immutabilityHelper.default)(op ?? {}, {
|
|
61
|
+
[fieldName]: {
|
|
62
|
+
$set: evt.currentTarget.value
|
|
63
|
+
}
|
|
64
|
+
})
|
|
65
|
+
});
|
|
66
|
+
onChange(newValue);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
function makeFormEventHandler(func) {
|
|
71
|
+
return evt => {
|
|
72
|
+
const spec = func(evt.currentTarget.value);
|
|
73
|
+
|
|
74
|
+
if (spec) {
|
|
75
|
+
onChange((0, _immutabilityHelper.default)(value, spec));
|
|
76
|
+
}
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
const stakeholders = value.stakeholders ?? [];
|
|
81
|
+
|
|
82
|
+
function makeStakeholderChangeHandler(idx, func) {
|
|
83
|
+
return makeFormEventHandler(val => ({
|
|
84
|
+
stakeholders: {
|
|
85
|
+
[idx]: func(val)
|
|
86
|
+
}
|
|
87
|
+
}));
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function handleStakeholderAdd() {
|
|
91
|
+
onChange({ ...value,
|
|
92
|
+
stakeholders: [...stakeholders, DUMMY_STAKEHOLDER]
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
return (0, _react2.jsx)("div", {
|
|
97
|
+
css: (0, _react2.css)`display: flex; flex-flow: row wrap; align-content: flex-start; align-items: flex-start; gap: 10px;`,
|
|
98
|
+
className: className
|
|
99
|
+
}, (0, _react2.jsx)(SuperFormGroup, {
|
|
100
|
+
label: "Basics:"
|
|
101
|
+
}, (0, _react2.jsx)(FormGroup, {
|
|
102
|
+
label: "Name:"
|
|
103
|
+
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
104
|
+
fill: true,
|
|
105
|
+
value: value.name || '',
|
|
106
|
+
readOnly: !onChange,
|
|
107
|
+
onChange: makeFormEventHandler(val => ({
|
|
108
|
+
name: {
|
|
109
|
+
$set: val
|
|
110
|
+
}
|
|
111
|
+
}))
|
|
112
|
+
})), (0, _react2.jsx)(FormGroup, {
|
|
113
|
+
label: "Uniform resource identifier:"
|
|
114
|
+
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
115
|
+
fill: true,
|
|
116
|
+
type: "url",
|
|
117
|
+
value: value.uniformResourceIdentifier || '',
|
|
118
|
+
readOnly: !onChange,
|
|
119
|
+
onChange: makeFormEventHandler(val => ({
|
|
120
|
+
uniformResourceIdentifier: {
|
|
121
|
+
$set: val
|
|
122
|
+
}
|
|
123
|
+
}))
|
|
124
|
+
})), (0, _react2.jsx)(FormGroup, {
|
|
125
|
+
label: "Content summary:"
|
|
126
|
+
}, (0, _react2.jsx)(_core.TextArea, {
|
|
127
|
+
fill: true,
|
|
128
|
+
value: value.contentSummary || '',
|
|
129
|
+
readOnly: !onChange,
|
|
130
|
+
onChange: makeFormEventHandler(val => ({
|
|
131
|
+
contentSummary: {
|
|
132
|
+
$set: val
|
|
133
|
+
}
|
|
134
|
+
}))
|
|
135
|
+
})), (0, _react2.jsx)(FormGroup, {
|
|
136
|
+
label: "Operating language (locale):",
|
|
137
|
+
helperText: "Name, country and ISO 639-2 language code."
|
|
138
|
+
}, (0, _react2.jsx)(_core.ControlGroup, {
|
|
139
|
+
vertical: true
|
|
140
|
+
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
141
|
+
readOnly: !onChange,
|
|
142
|
+
placeholder: "E.g., Welsh",
|
|
143
|
+
value: ((_value$operatingLangu = value.operatingLanguage) === null || _value$operatingLangu === void 0 ? void 0 : _value$operatingLangu.name) ?? '',
|
|
144
|
+
onChange: handleOperatingLanguageChange('name')
|
|
145
|
+
}), (0, _react2.jsx)(_core.InputGroup, {
|
|
146
|
+
readOnly: !onChange,
|
|
147
|
+
placeholder: "3-character numerical country code from ISO 3166-1",
|
|
148
|
+
value: ((_value$operatingLangu2 = value.operatingLanguage) === null || _value$operatingLangu2 === void 0 ? void 0 : _value$operatingLangu2.country) ?? '',
|
|
149
|
+
onChange: handleOperatingLanguageChange('country')
|
|
150
|
+
}), (0, _react2.jsx)(_core.InputGroup, {
|
|
151
|
+
readOnly: !onChange,
|
|
152
|
+
placeholder: "3-character language code from ISO 639-2",
|
|
153
|
+
value: ((_value$operatingLangu3 = value.operatingLanguage) === null || _value$operatingLangu3 === void 0 ? void 0 : _value$operatingLangu3.languageCode) ?? '',
|
|
154
|
+
onChange: handleOperatingLanguageChange('languageCode')
|
|
155
|
+
})))), (0, _react2.jsx)(SuperFormGroup, {
|
|
156
|
+
label: "Version: ",
|
|
157
|
+
css: (0, _react2.css)`padding-bottom: 0;`
|
|
158
|
+
}, (0, _react2.jsx)(FormGroup, {
|
|
159
|
+
label: "Identifier: "
|
|
160
|
+
}, (0, _react2.jsx)(_core.InputGroup, {
|
|
161
|
+
value: ((_value$version = value.version) === null || _value$version === void 0 ? void 0 : _value$version.id) ?? '',
|
|
162
|
+
readOnly: !onChange,
|
|
163
|
+
placeholder: "E.g., 1.2",
|
|
164
|
+
onChange: makeFormEventHandler(val => ({
|
|
165
|
+
version: v => (0, _immutabilityHelper.default)(v ?? DUMMY_VERSION, {
|
|
166
|
+
id: {
|
|
167
|
+
$set: val
|
|
168
|
+
}
|
|
169
|
+
})
|
|
170
|
+
}))
|
|
171
|
+
})), (0, _react2.jsx)(FormGroup, {
|
|
172
|
+
label: "Published on: ",
|
|
173
|
+
helperText: (0, _react2.jsx)(_react.default.Fragment, null, "Date and time are", (0, _react2.jsx)("br", null), "in ", Intl.DateTimeFormat().resolvedOptions().timeZone, ".", " ", (0, _react2.jsx)(_HelpTooltip.default, {
|
|
174
|
+
content: (0, _react2.jsx)(_react.default.Fragment, null, "Times are in your computer\u2019s current time zone.", onChange ? " When specifying, make sure to offset accordingly if it is different than register publication time zone." : null)
|
|
175
|
+
}))
|
|
176
|
+
}, (0, _react2.jsx)(_datetime.DatePicker, {
|
|
177
|
+
css: (0, _react2.css)`margin: 0 -${PADDING};`,
|
|
178
|
+
timePrecision: _datetime.TimePrecision.MINUTE,
|
|
179
|
+
value: ((_value$version2 = value.version) === null || _value$version2 === void 0 ? void 0 : _value$version2.timestamp) ?? null,
|
|
180
|
+
showActionsBar: onChange ? true : false,
|
|
181
|
+
onChange: val => onChange((0, _immutabilityHelper.default)(value, val !== null ? {
|
|
182
|
+
version: v => (0, _immutabilityHelper.default)(v ?? DUMMY_VERSION, {
|
|
183
|
+
timestamp: {
|
|
184
|
+
$set: val
|
|
185
|
+
}
|
|
186
|
+
})
|
|
187
|
+
} : {
|
|
188
|
+
$unset: ['version']
|
|
189
|
+
}))
|
|
190
|
+
}))), (0, _react2.jsx)(SuperFormGroup, {
|
|
191
|
+
label: "Stakeholders:",
|
|
192
|
+
helperText: onChange ? (0, _react2.jsx)(_core.Button, {
|
|
193
|
+
onClick: handleStakeholderAdd,
|
|
194
|
+
icon: "add"
|
|
195
|
+
}, "Add") : null
|
|
196
|
+
}, stakeholders.length > 0 ? (0, _react2.jsx)(_core.HTMLTable, {
|
|
197
|
+
css: (0, _react2.css)`margin: 0 -${PADDING};`
|
|
198
|
+
}, (0, _react2.jsx)("thead", null, (0, _react2.jsx)("tr", {
|
|
199
|
+
css: (0, _react2.css)`& > * { white-space: nowrap }`
|
|
200
|
+
}, (0, _react2.jsx)("th", null, "Role"), (0, _react2.jsx)("th", null, "Name"), (0, _react2.jsx)("th", null, "Git server username"), (0, _react2.jsx)("th", null, "Parties"), (0, _react2.jsx)("th", null, "Name"), (0, _react2.jsx)("th", null, "Email"))), (0, _react2.jsx)("tbody", null, [...stakeholders.entries()].map(([idx, s]) => (0, _react2.jsx)("tr", {
|
|
201
|
+
key: idx
|
|
202
|
+
}, (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.HTMLSelect, {
|
|
203
|
+
options: _stakeholder.STAKEHOLDER_ROLES.map(r => ({
|
|
204
|
+
value: r,
|
|
205
|
+
label: r
|
|
206
|
+
})),
|
|
207
|
+
disabled: !onChange,
|
|
208
|
+
onChange: makeStakeholderChangeHandler(idx, val => (0, _types.isStakeholderRole)(val) ? {
|
|
209
|
+
role: {
|
|
210
|
+
$set: val
|
|
211
|
+
}
|
|
212
|
+
} // Why do we need to cast this
|
|
213
|
+
: {}),
|
|
214
|
+
value: s.role
|
|
215
|
+
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
216
|
+
readOnly: !onChange,
|
|
217
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
218
|
+
name: {
|
|
219
|
+
$set: val
|
|
220
|
+
}
|
|
221
|
+
})),
|
|
222
|
+
value: s.name
|
|
223
|
+
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.InputGroup, {
|
|
224
|
+
readOnly: !onChange,
|
|
225
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
226
|
+
gitServerUsername: {
|
|
227
|
+
$set: val || undefined
|
|
228
|
+
}
|
|
229
|
+
})),
|
|
230
|
+
value: s.gitServerUsername || ''
|
|
231
|
+
})), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.ControlGroup, {
|
|
232
|
+
vertical: s.parties.length > 1
|
|
233
|
+
}, s.parties.map((party, partyIdx) => (0, _react2.jsx)(_core.ButtonGroup, {
|
|
234
|
+
key: partyIdx
|
|
235
|
+
}, (0, _react2.jsx)(_core.Button, {
|
|
236
|
+
key: "delete",
|
|
237
|
+
outlined: true,
|
|
238
|
+
disabled: !onChange || s.parties.length < 2 || party.name !== '',
|
|
239
|
+
title: "Delete this party",
|
|
240
|
+
onClick: () => onChange((0, _immutabilityHelper.default)(value, {
|
|
241
|
+
stakeholders: {
|
|
242
|
+
[idx]: {
|
|
243
|
+
parties: {
|
|
244
|
+
$splice: [[partyIdx, 1]]
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
})),
|
|
249
|
+
icon: "cross"
|
|
250
|
+
}), partyIdx === s.parties.length - 1 ? (0, _react2.jsx)(_core.Button, {
|
|
251
|
+
key: "add",
|
|
252
|
+
outlined: true,
|
|
253
|
+
disabled: !onChange,
|
|
254
|
+
onClick: () => onChange((0, _immutabilityHelper.default)(value, {
|
|
255
|
+
stakeholders: {
|
|
256
|
+
[idx]: {
|
|
257
|
+
parties: {
|
|
258
|
+
$push: [DUMMY_PARTY]
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
})),
|
|
263
|
+
title: "Append a party",
|
|
264
|
+
icon: "plus"
|
|
265
|
+
}) : null)))), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.ControlGroup, {
|
|
266
|
+
vertical: s.parties.length > 1
|
|
267
|
+
}, s.parties.map((party, partyIdx) => (0, _react2.jsx)(_core.InputGroup, {
|
|
268
|
+
key: partyIdx,
|
|
269
|
+
readOnly: !onChange,
|
|
270
|
+
placeholder: "Individual or organization",
|
|
271
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
272
|
+
parties: {
|
|
273
|
+
[partyIdx]: {
|
|
274
|
+
name: {
|
|
275
|
+
$set: val
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
})),
|
|
280
|
+
value: party.name
|
|
281
|
+
})))), (0, _react2.jsx)("td", null, (0, _react2.jsx)(_core.ControlGroup, {
|
|
282
|
+
vertical: s.parties.length > 1
|
|
283
|
+
}, s.parties.map((party, partyIdx) => (0, _react2.jsx)(_core.InputGroup, {
|
|
284
|
+
key: partyIdx,
|
|
285
|
+
type: "email",
|
|
286
|
+
placeholder: "Contact email",
|
|
287
|
+
readOnly: !onChange,
|
|
288
|
+
onChange: makeStakeholderChangeHandler(idx, val => ({
|
|
289
|
+
parties: {
|
|
290
|
+
[partyIdx]: {
|
|
291
|
+
contacts: {
|
|
292
|
+
0: {
|
|
293
|
+
value: {
|
|
294
|
+
$set: val
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
})),
|
|
301
|
+
value: party.contacts[0].value || ''
|
|
302
|
+
})))))))) : null));
|
|
303
|
+
};
|
|
304
|
+
|
|
305
|
+
const PADDING = '11px';
|
|
306
|
+
const FormGroup = (0, _styled.default)(_core.FormGroup)`
|
|
307
|
+
margin: 0;
|
|
308
|
+
`;
|
|
309
|
+
const SuperFormGroup_ = (0, _styled.default)(FormGroup)`
|
|
310
|
+
border-radius: 5px;
|
|
311
|
+
padding: ${PADDING};
|
|
312
|
+
background: white;
|
|
313
|
+
> label.bp4-label {
|
|
314
|
+
font-weight: bold;
|
|
315
|
+
margin-bottom: ${PADDING};
|
|
316
|
+
}
|
|
317
|
+
> .bp4-form-content {
|
|
318
|
+
display: flex;
|
|
319
|
+
flex-flow: column nowrap;
|
|
320
|
+
gap: ${PADDING};
|
|
321
|
+
}
|
|
322
|
+
`;
|
|
323
|
+
|
|
324
|
+
const SuperFormGroup = function (props) {
|
|
325
|
+
return (0, _react2.jsx)(SuperFormGroup_, { ...props,
|
|
326
|
+
className: _core.Classes.ELEVATION_3
|
|
327
|
+
});
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
var _default = RegisterMetaForm;
|
|
331
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RegisterMetaForm.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/RegisterMetaForm.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport update, { Spec } from 'immutability-helper';\nimport React from 'react';\nimport { jsx, css } from '@emotion/react';\nimport styled from '@emotion/styled';\nimport {\n FormGroupProps,\n FormGroup as BaseFormGroup,\n Classes,\n ControlGroup,\n InputGroup,\n TextArea,\n HTMLTable,\n HTMLSelect,\n Button,\n ButtonGroup,\n} from '@blueprintjs/core';\nimport { DatePicker, TimePrecision } from '@blueprintjs/datetime';\nimport HelpTooltip from '@riboseinc/paneron-extension-kit/widgets/HelpTooltip';\nimport type { Register, RegisterStakeholder, Locale } from '../../../types';\nimport { isStakeholderRole } from '../../../types';\nimport { STAKEHOLDER_ROLES, StakeholderRole } from '../../../types/stakeholder';\n\n\n\nconst DUMMY_VERSION: Register[\"version\"] = { id: '', timestamp: new Date() };\nconst DUMMY_CONTACT: Register[\"stakeholders\"][number][\"parties\"][number][\"contacts\"][number] = {\n label: 'email',\n value: ''\n}\nconst DUMMY_PARTY: Register[\"stakeholders\"][number][\"parties\"][number] = {\n name: '',\n contacts: [DUMMY_CONTACT],\n};\nconst DUMMY_STAKEHOLDER: Register[\"stakeholders\"][number] = {\n role: StakeholderRole.Submitter,\n name: '',\n gitServerUsername: undefined,\n parties: [DUMMY_PARTY],\n};\n\n\nconst RegisterMetaForm: React.FC<{\n value: Register;\n onChange?: (newMeta: Register) => void;\n className?: string;\n}> = function ({ value, onChange, className }) {\n\n function handleOperatingLanguageChange(fieldName: keyof Omit<Locale, 'characterEncoding'>) {\n return (evt: React.FormEvent<HTMLInputElement>) => {\n const newValue = update(value, { operatingLanguage: op => update(op ?? {}, { [fieldName]: { $set: evt.currentTarget.value } }) });\n onChange!(newValue);\n }\n }\n\n function makeFormEventHandler\n <T extends HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement = HTMLInputElement>\n (func: (val: string) => Spec<typeof value>) {\n return (evt: React.FormEvent<T>) => {\n const spec = func(evt.currentTarget.value);\n if (spec) {\n onChange!(update(value, spec));\n }\n };\n }\n\n const stakeholders = value.stakeholders ?? [];\n function makeStakeholderChangeHandler<T extends HTMLInputElement | HTMLSelectElement>(\n idx: number,\n func: (val: string) => Spec<typeof value[\"stakeholders\"][number]>,\n ) {\n return makeFormEventHandler<T>(val => ({ stakeholders: { [idx]: func(val) } }));\n }\n function handleStakeholderAdd() {\n onChange!({ ...value, stakeholders: [ ...stakeholders, DUMMY_STAKEHOLDER ] });\n }\n return (\n <div css={css`display: flex; flex-flow: row wrap; align-content: flex-start; align-items: flex-start; gap: 10px;`} className={className}>\n\n <SuperFormGroup label=\"Basics:\">\n <FormGroup label=\"Name:\">\n <InputGroup\n fill\n value={value.name || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ name: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Uniform resource identifier:\">\n <InputGroup\n fill\n type=\"url\"\n value={value.uniformResourceIdentifier || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler(val => ({ uniformResourceIdentifier: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Content summary:\">\n <TextArea\n fill\n value={value.contentSummary || ''}\n readOnly={!onChange}\n onChange={makeFormEventHandler<HTMLTextAreaElement>(val => ({ contentSummary: { $set: val } }))}\n />\n </FormGroup>\n\n <FormGroup label=\"Operating language (locale):\" helperText=\"Name, country and ISO 639-2 language code.\">\n <ControlGroup vertical>\n <InputGroup\n readOnly={!onChange}\n placeholder=\"E.g., Welsh\"\n value={value.operatingLanguage?.name ?? ''}\n onChange={handleOperatingLanguageChange('name')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character numerical country code from ISO 3166-1\"\n value={value.operatingLanguage?.country ?? ''}\n onChange={handleOperatingLanguageChange('country')} />\n <InputGroup\n readOnly={!onChange}\n placeholder=\"3-character language code from ISO 639-2\"\n value={value.operatingLanguage?.languageCode ?? ''}\n onChange={handleOperatingLanguageChange('languageCode')} />\n </ControlGroup>\n </FormGroup>\n </SuperFormGroup>\n\n <SuperFormGroup label=\"Version: \" css={css`padding-bottom: 0;`}>\n <FormGroup label=\"Identifier: \">\n <InputGroup\n value={value.version?.id ?? ''}\n readOnly={!onChange}\n placeholder=\"E.g., 1.2\"\n onChange={makeFormEventHandler(val =>\n ({ version: v => update(v ?? DUMMY_VERSION, { id: { $set: val } }) })\n )}\n />\n </FormGroup>\n <FormGroup\n label=\"Published on: \"\n helperText={\n <>\n Date and time are\n <br />\n in {Intl.DateTimeFormat().resolvedOptions().timeZone}.\n {\" \"}\n <HelpTooltip content={<>\n Times are in your computer’s current time zone.\n {onChange\n ? \" When specifying, make sure to offset accordingly if it is different than register publication time zone.\"\n : null}\n </>} />\n </>}>\n <DatePicker\n css={css`margin: 0 -${PADDING};`}\n timePrecision={TimePrecision.MINUTE}\n value={value.version?.timestamp ?? null}\n showActionsBar={onChange ? true : false}\n onChange={(val: Date | null) =>\n onChange!(update(value, val !== null\n ? { version: v => update(v ?? DUMMY_VERSION, { timestamp: { $set: val } }) }\n : { $unset: ['version'] }))\n }\n />\n </FormGroup>\n </SuperFormGroup>\n\n <SuperFormGroup\n label=\"Stakeholders:\"\n helperText={onChange\n ? <Button onClick={handleStakeholderAdd} icon=\"add\">Add</Button>\n : null}>\n {stakeholders.length > 0\n ? <HTMLTable css={css`margin: 0 -${PADDING};`}>\n <thead>\n <tr css={css`& > * { white-space: nowrap }`}>\n <th>Role</th>\n <th>Name</th>\n <th>Git server username</th>\n <th>Parties</th>\n <th>Name</th>\n <th>Email</th>\n </tr>\n </thead>\n <tbody>\n {[ ...stakeholders.entries() ].map(([idx, s]) =>\n <tr key={idx}>\n <td>\n <HTMLSelect\n options={STAKEHOLDER_ROLES.map(r => ({ value: r, label: r }))}\n disabled={!onChange}\n onChange={makeStakeholderChangeHandler<HTMLSelectElement>(idx, (val) =>\n isStakeholderRole(val)\n ? { role: { $set: val } } as Spec<RegisterStakeholder> // Why do we need to cast this\n : {}\n )}\n value={s.role} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ name: { $set: val } })\n )}\n value={s.name} />\n </td>\n <td>\n <InputGroup\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ gitServerUsername: { $set: val || undefined } })\n )}\n value={s.gitServerUsername || ''} />\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <ButtonGroup key={partyIdx}>\n <Button\n key=\"delete\"\n outlined\n disabled={!onChange || s.parties.length < 2 || party.name !== ''}\n title=\"Delete this party\"\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $splice: [[ partyIdx, 1 ]] } } } }))}\n icon=\"cross\"\n />\n {partyIdx === s.parties.length - 1\n ? <Button\n key=\"add\"\n outlined\n disabled={!onChange}\n onClick={() => onChange!(update(value, { stakeholders: { [idx]: { parties: { $push: [DUMMY_PARTY] } } } }))}\n title=\"Append a party\"\n icon=\"plus\"\n />\n : null}\n </ButtonGroup>\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n readOnly={!onChange}\n placeholder=\"Individual or organization\"\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { name: { $set: val } } } })\n )}\n value={(party as { name: string }).name}\n />\n )}\n </ControlGroup>\n </td>\n <td>\n <ControlGroup vertical={s.parties.length > 1}>\n {s.parties.map((party, partyIdx) =>\n <InputGroup\n key={partyIdx}\n type=\"email\"\n placeholder=\"Contact email\"\n readOnly={!onChange}\n onChange={makeStakeholderChangeHandler(idx, (val) =>\n ({ parties: { [partyIdx]: { contacts: { 0: { value: { $set: val } } } } } })\n )}\n value={party.contacts[0].value || ''} />\n )}\n </ControlGroup>\n </td>\n </tr>)}\n </tbody>\n </HTMLTable>\n : null}\n </SuperFormGroup>\n </div>\n );\n};\n\n\nconst PADDING = '11px';\nconst FormGroup = styled(BaseFormGroup)`\n margin: 0;\n`;\nconst SuperFormGroup_ = styled(FormGroup)`\n border-radius: 5px;\n padding: ${PADDING};\n background: white;\n > label.bp4-label {\n font-weight: bold;\n margin-bottom: ${PADDING};\n }\n > .bp4-form-content {\n display: flex;\n flex-flow: column nowrap;\n gap: ${PADDING};\n }\n`;\n\nconst SuperFormGroup: React.FC<FormGroupProps> = function (props) {\n return <SuperFormGroup_ {...props} className={Classes.ELEVATION_3} />\n}\n\n\nexport default RegisterMetaForm;\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { jsx } from '@emotion/react';
|
|
5
|
+
declare const _default: {
|
|
6
|
+
main: React.FC<Record<never, never>>;
|
|
7
|
+
title: () => jsx.JSX.Element;
|
|
8
|
+
plainTitle: () => Promise<string>;
|
|
9
|
+
};
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
|
|
10
|
+
var _react2 = require("@emotion/react");
|
|
11
|
+
|
|
12
|
+
var _core = require("@blueprintjs/core");
|
|
13
|
+
|
|
14
|
+
var _context = require("@riboseinc/paneron-extension-kit/context");
|
|
15
|
+
|
|
16
|
+
var _BrowserCtx = require("../../BrowserCtx");
|
|
17
|
+
|
|
18
|
+
var _types = require("../../../types");
|
|
19
|
+
|
|
20
|
+
var _stakeholder = require("../../../types/stakeholder");
|
|
21
|
+
|
|
22
|
+
var _common = require("../../../common");
|
|
23
|
+
|
|
24
|
+
var _util = require("../../util");
|
|
25
|
+
|
|
26
|
+
var _RegisterMetaForm = _interopRequireDefault(require("./RegisterMetaForm"));
|
|
27
|
+
|
|
28
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
29
|
+
|
|
30
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
31
|
+
|
|
32
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
33
|
+
|
|
34
|
+
/** @jsx jsx */
|
|
35
|
+
|
|
36
|
+
/** @jsxFrag React.Fragment */
|
|
37
|
+
const RegisterMeta = function () {
|
|
38
|
+
const {
|
|
39
|
+
updateObjects,
|
|
40
|
+
performOperation
|
|
41
|
+
} = (0, _react.useContext)(_context.DatasetContext);
|
|
42
|
+
const {
|
|
43
|
+
registerMetadata,
|
|
44
|
+
stakeholder
|
|
45
|
+
} = (0, _react.useContext)(_BrowserCtx.BrowserCtx);
|
|
46
|
+
const [editedMetadata, setEditedMetadata] = (0, _react.useState)(null);
|
|
47
|
+
const canChange = updateObjects ? true : false;
|
|
48
|
+
const didChange = registerMetadata && editedMetadata && JSON.stringify(editedMetadata) !== JSON.stringify(registerMetadata);
|
|
49
|
+
|
|
50
|
+
function handleClear() {
|
|
51
|
+
setEditedMetadata(null);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
async function handleSave() {
|
|
55
|
+
if (!updateObjects) {
|
|
56
|
+
throw new Error("Dataset is read-only");
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (!stakeholder || !(0, _stakeholder.isOwner)(stakeholder)) {
|
|
60
|
+
throw new Error("Register meta is only meant to be edited by owner");
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (!(0, _types.isRegisterMetadata)(editedMetadata)) {
|
|
64
|
+
throw new Error("Invalid register metadata");
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
await performOperation('saving register meta', updateObjects)({
|
|
68
|
+
commitMessage: "edited register metadata",
|
|
69
|
+
objectChangeset: {
|
|
70
|
+
[_common.REGISTER_METADATA_FILENAME]: {
|
|
71
|
+
oldValue: registerMetadata,
|
|
72
|
+
newValue: editedMetadata
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
setEditedMetadata(null);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (registerMetadata) {
|
|
80
|
+
return (0, _react2.jsx)(_util.TabContentsWithActions, {
|
|
81
|
+
actions: (0, _react2.jsx)(_react.default.Fragment, null, (0, _react2.jsx)(_core.ButtonGroup, null, (0, _react2.jsx)(_core.Button, {
|
|
82
|
+
onClick: handleSave,
|
|
83
|
+
disabled: !didChange || !canChange,
|
|
84
|
+
intent: didChange && canChange ? "primary" : undefined
|
|
85
|
+
}, "Save"), (0, _react2.jsx)(_core.Button, {
|
|
86
|
+
onClick: handleClear,
|
|
87
|
+
disabled: !didChange || !canChange
|
|
88
|
+
}, "Clear changes"))),
|
|
89
|
+
main: (0, _react2.jsx)(_RegisterMetaForm.default, {
|
|
90
|
+
value: editedMetadata ?? registerMetadata,
|
|
91
|
+
onChange: updateObjects ? setEditedMetadata : undefined
|
|
92
|
+
})
|
|
93
|
+
});
|
|
94
|
+
} else if (registerMetadata === undefined) {
|
|
95
|
+
return (0, _react2.jsx)(_core.NonIdealState, {
|
|
96
|
+
icon: (0, _react2.jsx)(_core.Spinner, null)
|
|
97
|
+
});
|
|
98
|
+
} else {
|
|
99
|
+
return (0, _react2.jsx)(_core.NonIdealState, {
|
|
100
|
+
icon: "heart-broken",
|
|
101
|
+
description: "Failed to read registry metadata."
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
var _default = {
|
|
107
|
+
main: RegisterMeta,
|
|
108
|
+
title: () => (0, _react2.jsx)(_react.default.Fragment, null, "Register Metadata"),
|
|
109
|
+
plainTitle: async () => "register metadata"
|
|
110
|
+
};
|
|
111
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/views/detail/RegisterMeta/index.tsx"],"names":[],"mappings":"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","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport React, { useState, useContext } from 'react';\nimport { jsx } from '@emotion/react';\nimport { Button, ButtonGroup, NonIdealState, Spinner } from '@blueprintjs/core';\nimport { DatasetContext } from '@riboseinc/paneron-extension-kit/context';\nimport { BrowserCtx } from '../../BrowserCtx';\nimport { isRegisterMetadata, type Register } from '../../../types';\nimport { isOwner } from '../../../types/stakeholder';\nimport { REGISTER_METADATA_FILENAME } from '../../../common';\nimport { TabContentsWithActions } from '../../util';\nimport RegisterMetaForm from './RegisterMetaForm';\n\n\nconst RegisterMeta: React.FC<Record<never, never>> = function () {\n const { updateObjects, performOperation } = useContext(DatasetContext);\n const { registerMetadata, stakeholder } = useContext(BrowserCtx);\n\n const [ editedMetadata, setEditedMetadata ] = useState<Register | null>(null);\n\n const canChange = updateObjects ? true : false;\n const didChange = registerMetadata && editedMetadata && JSON.stringify(editedMetadata) !== JSON.stringify(registerMetadata);\n\n function handleClear() {\n setEditedMetadata(null);\n }\n async function handleSave() {\n if (!updateObjects) {\n throw new Error(\"Dataset is read-only\");\n }\n if (!stakeholder || !isOwner(stakeholder)) {\n throw new Error(\"Register meta is only meant to be edited by owner\");\n }\n if (!isRegisterMetadata(editedMetadata)) {\n throw new Error(\"Invalid register metadata\");\n }\n await performOperation('saving register meta', updateObjects)({\n commitMessage: \"edited register metadata\",\n objectChangeset: {\n [REGISTER_METADATA_FILENAME]: {\n oldValue: registerMetadata,\n newValue: editedMetadata,\n },\n },\n });\n setEditedMetadata(null);\n }\n\n if (registerMetadata) {\n return (\n <TabContentsWithActions\n actions={<>\n <ButtonGroup>\n <Button\n onClick={handleSave}\n disabled={!didChange || !canChange}\n intent={didChange && canChange ? \"primary\" : undefined}>\n Save\n </Button>\n <Button\n onClick={handleClear}\n disabled={!didChange || !canChange}>\n Clear changes\n </Button>\n </ButtonGroup>\n </>}\n main={\n <RegisterMetaForm\n value={editedMetadata ?? registerMetadata}\n onChange={updateObjects ? setEditedMetadata : undefined}\n />\n }\n />\n );\n } else if (registerMetadata === undefined) {\n return <NonIdealState icon={<Spinner />} />\n } else {\n return <NonIdealState icon=\"heart-broken\" description=\"Failed to read registry metadata.\" />\n }\n};\n\nexport default {\n main: RegisterMeta,\n title: () => <>Register Metadata</>,\n plainTitle: async () => \"register metadata\",\n};\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function getPlainTitle(uri: string): Promise<string>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPlainTitle = getPlainTitle;
|
|
7
|
+
|
|
8
|
+
var _protocolRegistry = _interopRequireWildcard(require("../protocolRegistry"));
|
|
9
|
+
|
|
10
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
11
|
+
|
|
12
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
13
|
+
|
|
14
|
+
async function getPlainTitle(uri) {
|
|
15
|
+
const [proto, _path] = uri.split(':');
|
|
16
|
+
|
|
17
|
+
if ((0, _protocolRegistry.isValidProtocol)(proto)) {
|
|
18
|
+
var _protocolRegistry$pro, _protocolRegistry$pro2;
|
|
19
|
+
|
|
20
|
+
return (await ((_protocolRegistry$pro = (_protocolRegistry$pro2 = _protocolRegistry.default[proto]).plainTitle) === null || _protocolRegistry$pro === void 0 ? void 0 : _protocolRegistry$pro.call(_protocolRegistry$pro2, _path))) ?? 'N/A';
|
|
21
|
+
} else {
|
|
22
|
+
throw new Error("Invalid protocol");
|
|
23
|
+
}
|
|
24
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/views/detail/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,EAAE,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAExE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,GAAW;IAC7C,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE;QAC1B,OAAO,MAAM,gBAAgB,CAAC,KAAK,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;KACnE;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;KACrC;AACH,CAAC","sourcesContent":["import protocolRegistry, { isValidProtocol } from '../protocolRegistry';\n\nexport async function getPlainTitle(uri: string): Promise<string> {\n const [proto, _path] = uri.split(':');\n if (isValidProtocol(proto)) {\n return await protocolRegistry[proto].plainTitle?.(_path) ?? 'N/A';\n } else {\n throw new Error(\"Invalid protocol\");\n }\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { InternalItemReference, RegisterItem, Payload } from '../../types/item';
|
|
5
|
+
import { ItemDetailView } from '../../types/views';
|
|
6
|
+
declare const InlineDiff: React.FC<{
|
|
7
|
+
DetailView: ItemDetailView<Payload>;
|
|
8
|
+
sharedRefComponents: Omit<InternalItemReference, 'itemID'>;
|
|
9
|
+
item1: RegisterItem<any>["data"];
|
|
10
|
+
item2: RegisterItem<any>["data"];
|
|
11
|
+
}>;
|
|
12
|
+
export default InlineDiff;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
|
|
8
|
+
var _react = require("@emotion/react");
|
|
9
|
+
|
|
10
|
+
var _react2 = _interopRequireDefault(require("react"));
|
|
11
|
+
|
|
12
|
+
var _server = _interopRequireDefault(require("react-dom/server"));
|
|
13
|
+
|
|
14
|
+
var _reactVisualDiff = _interopRequireDefault(require("react-visual-diff"));
|
|
15
|
+
|
|
16
|
+
var _AnnotatedChange = _interopRequireDefault(require("../AnnotatedChange"));
|
|
17
|
+
|
|
18
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
19
|
+
|
|
20
|
+
/** @jsx jsx */
|
|
21
|
+
|
|
22
|
+
/** @jsxFrag React.Fragment */
|
|
23
|
+
const InlineDiff = _react2.default.memo(({
|
|
24
|
+
DetailView,
|
|
25
|
+
sharedRefComponents,
|
|
26
|
+
item1,
|
|
27
|
+
item2
|
|
28
|
+
}) => {
|
|
29
|
+
// TODO: Make VisualDiff work. Currently, it doesn’t apparently when item detail views use hooks.
|
|
30
|
+
// Which is often. Either make item views hook-free
|
|
31
|
+
// (which means primarily eliminating useRegisterItemData() by inferring and pre-fetching
|
|
32
|
+
// related item data), or work out another way to diff two React elements.
|
|
33
|
+
console.debug(item1.description, item2.description);
|
|
34
|
+
const left = (0, _react.jsx)("div", {
|
|
35
|
+
dangerouslySetInnerHTML: {
|
|
36
|
+
__html: _server.default.renderToString((0, _react.jsx)(DetailView, {
|
|
37
|
+
itemRef: sharedRefComponents,
|
|
38
|
+
itemData: item1
|
|
39
|
+
}))
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
const right = (0, _react.jsx)("div", {
|
|
43
|
+
dangerouslySetInnerHTML: {
|
|
44
|
+
__html: _server.default.renderToString((0, _react.jsx)(DetailView, {
|
|
45
|
+
itemRef: sharedRefComponents,
|
|
46
|
+
itemData: item2
|
|
47
|
+
}))
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return (0, _react.jsx)(_reactVisualDiff.default, {
|
|
51
|
+
left: left,
|
|
52
|
+
right: right,
|
|
53
|
+
renderChange: _AnnotatedChange.default
|
|
54
|
+
});
|
|
55
|
+
}, (prevProps, nextProps) => JSON.stringify(prevProps.item2) === JSON.stringify(nextProps.item2) && JSON.stringify(prevProps.item1) === JSON.stringify(nextProps.item1));
|
|
56
|
+
|
|
57
|
+
var _default = InlineDiff;
|
|
58
|
+
exports.default = _default;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InlineDiff.js","sourceRoot":"","sources":["../../../src/views/diffing/InlineDiff.tsx"],"names":[],"mappings":"AAAA,eAAe;AACf,8BAA8B;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AACrC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,kBAAkB,CAAC;AACxC,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAG3C,OAAO,eAAe,MAAM,oBAAoB,CAAC;AAGjD,MAAM,UAAU,GAKX,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,mBAAmB,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE;IACpE,iGAAiG;IACjG,mDAAmD;IACnD,yFAAyF;IACzF,0EAA0E;IAE1E,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;IAEpD,MAAM,IAAI,GAAG,aAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAC,UAAU,IACpF,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,KAAK,GACf,CAAC,EAAE,GAAI,CAAA;IACX,MAAM,KAAK,GAAG,aAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,IAAC,UAAU,IACrF,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,KAAK,GACf,CAAC,EAAE,GAAI,CAAA;IAEX,OAAO,IAAC,UAAU,IAChB,IAAI,EAAE,IAAI,EACV,KAAK,EAAE,KAAK,EACZ,YAAY,EAAE,eAAe,GAAI,CAAC;AACtC,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAC1B,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CACpE,CAAC;AAGF,eAAe,UAAU,CAAC","sourcesContent":["/** @jsx jsx */\n/** @jsxFrag React.Fragment */\n\nimport { jsx } from '@emotion/react';\nimport React from 'react';\nimport ReactDOM from 'react-dom/server';\nimport VisualDiff from 'react-visual-diff';\nimport { InternalItemReference, RegisterItem, Payload } from '../../types/item';\nimport { ItemDetailView } from '../../types/views';\nimport AnnotatedChange from '../AnnotatedChange';\n\n\nconst InlineDiff: React.FC<{\n DetailView: ItemDetailView<Payload>\n sharedRefComponents: Omit<InternalItemReference, 'itemID'>\n item1: RegisterItem<any>[\"data\"]\n item2: RegisterItem<any>[\"data\"]\n}> = React.memo(({ DetailView, sharedRefComponents, item1, item2 }) => {\n // TODO: Make VisualDiff work. Currently, it doesn’t apparently when item detail views use hooks.\n // Which is often. Either make item views hook-free\n // (which means primarily eliminating useRegisterItemData() by inferring and pre-fetching\n // related item data), or work out another way to diff two React elements.\n\n console.debug(item1.description, item2.description);\n \n const left = <div dangerouslySetInnerHTML={{ __html: ReactDOM.renderToString(<DetailView\n itemRef={sharedRefComponents}\n itemData={item1}\n />) }} />\n const right = <div dangerouslySetInnerHTML={{ __html: ReactDOM.renderToString(<DetailView\n itemRef={sharedRefComponents}\n itemData={item2}\n />) }} />\n\n return <VisualDiff\n left={left}\n right={right}\n renderChange={AnnotatedChange} />;\n}, (prevProps, nextProps) =>\n JSON.stringify(prevProps.item2) === JSON.stringify(nextProps.item2) &&\n JSON.stringify(prevProps.item1) === JSON.stringify(nextProps.item1)\n);\n\n\nexport default InlineDiff;\n"]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** @jsx jsx */
|
|
2
|
+
/** @jsxFrag React.Fragment */
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { RegisterItem } from '../../types/item';
|
|
5
|
+
declare const StructuredDiff: React.FC<{
|
|
6
|
+
item1: RegisterItem<any>["data"];
|
|
7
|
+
item2: RegisterItem<any>["data"];
|
|
8
|
+
showUnchanged?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
}>;
|
|
11
|
+
export default StructuredDiff;
|