@genesislcap/foundation-entity-management 14.424.1 → 14.425.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/dist/custom-elements.json +49 -49
- package/dist/react.cjs +197 -43
- package/dist/react.mjs +197 -43
- package/package.json +24 -25
|
@@ -3448,6 +3448,55 @@
|
|
|
3448
3448
|
}
|
|
3449
3449
|
]
|
|
3450
3450
|
},
|
|
3451
|
+
{
|
|
3452
|
+
"kind": "javascript-module",
|
|
3453
|
+
"path": "src/layouts/default.ts",
|
|
3454
|
+
"declarations": [
|
|
3455
|
+
{
|
|
3456
|
+
"kind": "variable",
|
|
3457
|
+
"name": "loginLayout",
|
|
3458
|
+
"default": "new GenesisElementLayout(\n html`\n <div class=\"container\">\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `,\n baseLayoutCss,\n)"
|
|
3459
|
+
},
|
|
3460
|
+
{
|
|
3461
|
+
"kind": "variable",
|
|
3462
|
+
"name": "defaultLayout",
|
|
3463
|
+
"default": "new GenesisElementLayout(\n html`\n <div class=\"container\">\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `,\n css`\n ${baseLayoutCss}\n `,\n)"
|
|
3464
|
+
}
|
|
3465
|
+
],
|
|
3466
|
+
"exports": [
|
|
3467
|
+
{
|
|
3468
|
+
"kind": "js",
|
|
3469
|
+
"name": "loginLayout",
|
|
3470
|
+
"declaration": {
|
|
3471
|
+
"name": "loginLayout",
|
|
3472
|
+
"module": "src/layouts/default.ts"
|
|
3473
|
+
}
|
|
3474
|
+
},
|
|
3475
|
+
{
|
|
3476
|
+
"kind": "js",
|
|
3477
|
+
"name": "defaultLayout",
|
|
3478
|
+
"declaration": {
|
|
3479
|
+
"name": "defaultLayout",
|
|
3480
|
+
"module": "src/layouts/default.ts"
|
|
3481
|
+
}
|
|
3482
|
+
}
|
|
3483
|
+
]
|
|
3484
|
+
},
|
|
3485
|
+
{
|
|
3486
|
+
"kind": "javascript-module",
|
|
3487
|
+
"path": "src/layouts/index.ts",
|
|
3488
|
+
"declarations": [],
|
|
3489
|
+
"exports": [
|
|
3490
|
+
{
|
|
3491
|
+
"kind": "js",
|
|
3492
|
+
"name": "*",
|
|
3493
|
+
"declaration": {
|
|
3494
|
+
"name": "*",
|
|
3495
|
+
"package": "./default"
|
|
3496
|
+
}
|
|
3497
|
+
}
|
|
3498
|
+
]
|
|
3499
|
+
},
|
|
3451
3500
|
{
|
|
3452
3501
|
"kind": "javascript-module",
|
|
3453
3502
|
"path": "src/main/index.ts",
|
|
@@ -3592,55 +3641,6 @@
|
|
|
3592
3641
|
}
|
|
3593
3642
|
]
|
|
3594
3643
|
},
|
|
3595
|
-
{
|
|
3596
|
-
"kind": "javascript-module",
|
|
3597
|
-
"path": "src/layouts/default.ts",
|
|
3598
|
-
"declarations": [
|
|
3599
|
-
{
|
|
3600
|
-
"kind": "variable",
|
|
3601
|
-
"name": "loginLayout",
|
|
3602
|
-
"default": "new GenesisElementLayout(\n html`\n <div class=\"container\">\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `,\n baseLayoutCss,\n)"
|
|
3603
|
-
},
|
|
3604
|
-
{
|
|
3605
|
-
"kind": "variable",
|
|
3606
|
-
"name": "defaultLayout",
|
|
3607
|
-
"default": "new GenesisElementLayout(\n html`\n <div class=\"container\">\n <div class=\"content\">\n <slot></slot>\n </div>\n </div>\n `,\n css`\n ${baseLayoutCss}\n `,\n)"
|
|
3608
|
-
}
|
|
3609
|
-
],
|
|
3610
|
-
"exports": [
|
|
3611
|
-
{
|
|
3612
|
-
"kind": "js",
|
|
3613
|
-
"name": "loginLayout",
|
|
3614
|
-
"declaration": {
|
|
3615
|
-
"name": "loginLayout",
|
|
3616
|
-
"module": "src/layouts/default.ts"
|
|
3617
|
-
}
|
|
3618
|
-
},
|
|
3619
|
-
{
|
|
3620
|
-
"kind": "js",
|
|
3621
|
-
"name": "defaultLayout",
|
|
3622
|
-
"declaration": {
|
|
3623
|
-
"name": "defaultLayout",
|
|
3624
|
-
"module": "src/layouts/default.ts"
|
|
3625
|
-
}
|
|
3626
|
-
}
|
|
3627
|
-
]
|
|
3628
|
-
},
|
|
3629
|
-
{
|
|
3630
|
-
"kind": "javascript-module",
|
|
3631
|
-
"path": "src/layouts/index.ts",
|
|
3632
|
-
"declarations": [],
|
|
3633
|
-
"exports": [
|
|
3634
|
-
{
|
|
3635
|
-
"kind": "js",
|
|
3636
|
-
"name": "*",
|
|
3637
|
-
"declaration": {
|
|
3638
|
-
"name": "*",
|
|
3639
|
-
"package": "./default"
|
|
3640
|
-
}
|
|
3641
|
-
}
|
|
3642
|
-
]
|
|
3643
|
-
},
|
|
3644
3644
|
{
|
|
3645
3645
|
"kind": "javascript-module",
|
|
3646
3646
|
"path": "src/routes/config.ts",
|
package/dist/react.cjs
CHANGED
|
@@ -5,62 +5,216 @@
|
|
|
5
5
|
|
|
6
6
|
'use strict';
|
|
7
7
|
|
|
8
|
-
const { provideReactWrapper } = require('@microsoft/fast-react-wrapper');
|
|
9
8
|
const React = require('react');
|
|
10
9
|
const { EntityManagement: EntityManagementWC } = require('./esm/entities/entities.js');
|
|
11
10
|
const { SmartFormModal: SmartFormModalWC } = require('./esm/entities/smartFormModal.js');
|
|
12
11
|
const { List: ListWC } = require('./esm/list/list.js');
|
|
13
12
|
const { EntityManagementDemo: EntityManagementDemoWC } = require('./esm/routes/demo/entity-management.js');
|
|
14
13
|
|
|
15
|
-
|
|
14
|
+
function _mergeRefs(...refs) {
|
|
15
|
+
return (value) => {
|
|
16
|
+
for (const ref of refs) {
|
|
17
|
+
if (typeof ref === 'function') ref(value);
|
|
18
|
+
else if (ref != null) ref.current = value;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
}
|
|
16
22
|
|
|
17
|
-
const EntityManagement =
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
23
|
+
const EntityManagement = React.forwardRef(function EntityManagement(props, ref) {
|
|
24
|
+
const { onRequestChanged, onCriteriaChanged, onCreateEntity, onEditEntity, onDeleteEntity, onSubmitFailure, onSubmitSuccess, onRowClick, onRowDblClick, onRowSelected, onSelectionChanged, children, ...rest } = props;
|
|
25
|
+
const _innerRef = React.useRef(null);
|
|
26
|
+
const _onRequestChangedRef = React.useRef(onRequestChanged);
|
|
27
|
+
_onRequestChangedRef.current = onRequestChanged;
|
|
28
|
+
const _onCriteriaChangedRef = React.useRef(onCriteriaChanged);
|
|
29
|
+
_onCriteriaChangedRef.current = onCriteriaChanged;
|
|
30
|
+
const _onCreateEntityRef = React.useRef(onCreateEntity);
|
|
31
|
+
_onCreateEntityRef.current = onCreateEntity;
|
|
32
|
+
const _onEditEntityRef = React.useRef(onEditEntity);
|
|
33
|
+
_onEditEntityRef.current = onEditEntity;
|
|
34
|
+
const _onDeleteEntityRef = React.useRef(onDeleteEntity);
|
|
35
|
+
_onDeleteEntityRef.current = onDeleteEntity;
|
|
36
|
+
const _onSubmitFailureRef = React.useRef(onSubmitFailure);
|
|
37
|
+
_onSubmitFailureRef.current = onSubmitFailure;
|
|
38
|
+
const _onSubmitSuccessRef = React.useRef(onSubmitSuccess);
|
|
39
|
+
_onSubmitSuccessRef.current = onSubmitSuccess;
|
|
40
|
+
const _onRowClickRef = React.useRef(onRowClick);
|
|
41
|
+
_onRowClickRef.current = onRowClick;
|
|
42
|
+
const _onRowDblClickRef = React.useRef(onRowDblClick);
|
|
43
|
+
_onRowDblClickRef.current = onRowDblClick;
|
|
44
|
+
const _onRowSelectedRef = React.useRef(onRowSelected);
|
|
45
|
+
_onRowSelectedRef.current = onRowSelected;
|
|
46
|
+
const _onSelectionChangedRef = React.useRef(onSelectionChanged);
|
|
47
|
+
_onSelectionChangedRef.current = onSelectionChanged;
|
|
48
|
+
React.useLayoutEffect(() => {
|
|
49
|
+
const el = _innerRef.current;
|
|
50
|
+
if (!el) return;
|
|
51
|
+
const _onRequestChangedFn = (e) => _onRequestChangedRef.current?.(e);
|
|
52
|
+
el.addEventListener('request-changed', _onRequestChangedFn);
|
|
53
|
+
const _onCriteriaChangedFn = (e) => _onCriteriaChangedRef.current?.(e);
|
|
54
|
+
el.addEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
55
|
+
const _onCreateEntityFn = (e) => _onCreateEntityRef.current?.(e);
|
|
56
|
+
el.addEventListener('create-entity', _onCreateEntityFn);
|
|
57
|
+
const _onEditEntityFn = (e) => _onEditEntityRef.current?.(e);
|
|
58
|
+
el.addEventListener('edit-entity', _onEditEntityFn);
|
|
59
|
+
const _onDeleteEntityFn = (e) => _onDeleteEntityRef.current?.(e);
|
|
60
|
+
el.addEventListener('delete-entity', _onDeleteEntityFn);
|
|
61
|
+
const _onSubmitFailureFn = (e) => _onSubmitFailureRef.current?.(e);
|
|
62
|
+
el.addEventListener('submit-failure', _onSubmitFailureFn);
|
|
63
|
+
const _onSubmitSuccessFn = (e) => _onSubmitSuccessRef.current?.(e);
|
|
64
|
+
el.addEventListener('submit-success', _onSubmitSuccessFn);
|
|
65
|
+
const _onRowClickFn = (e) => _onRowClickRef.current?.(e);
|
|
66
|
+
el.addEventListener('rowClick', _onRowClickFn);
|
|
67
|
+
const _onRowDblClickFn = (e) => _onRowDblClickRef.current?.(e);
|
|
68
|
+
el.addEventListener('rowDblClick', _onRowDblClickFn);
|
|
69
|
+
const _onRowSelectedFn = (e) => _onRowSelectedRef.current?.(e);
|
|
70
|
+
el.addEventListener('rowSelected', _onRowSelectedFn);
|
|
71
|
+
const _onSelectionChangedFn = (e) => _onSelectionChangedRef.current?.(e);
|
|
72
|
+
el.addEventListener('selectionChanged', _onSelectionChangedFn);
|
|
73
|
+
return () => {
|
|
74
|
+
el.removeEventListener('request-changed', _onRequestChangedFn);
|
|
75
|
+
el.removeEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
76
|
+
el.removeEventListener('create-entity', _onCreateEntityFn);
|
|
77
|
+
el.removeEventListener('edit-entity', _onEditEntityFn);
|
|
78
|
+
el.removeEventListener('delete-entity', _onDeleteEntityFn);
|
|
79
|
+
el.removeEventListener('submit-failure', _onSubmitFailureFn);
|
|
80
|
+
el.removeEventListener('submit-success', _onSubmitSuccessFn);
|
|
81
|
+
el.removeEventListener('rowClick', _onRowClickFn);
|
|
82
|
+
el.removeEventListener('rowDblClick', _onRowDblClickFn);
|
|
83
|
+
el.removeEventListener('rowSelected', _onRowSelectedFn);
|
|
84
|
+
el.removeEventListener('selectionChanged', _onSelectionChangedFn);
|
|
85
|
+
};
|
|
86
|
+
}, []);
|
|
87
|
+
return React.createElement(customElements.getName(EntityManagementWC) ?? 'entity-management', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
31
88
|
});
|
|
32
89
|
|
|
33
|
-
const SmartFormModal =
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
90
|
+
const SmartFormModal = React.forwardRef(function SmartFormModal(props, ref) {
|
|
91
|
+
const { onRequestChanged, onCriteriaChanged, onCreateEntity, onEditEntity, onDeleteEntity, onSubmitFailure, onSubmitSuccess, onRowClick, onRowDblClick, onRowSelected, onSelectionChanged, children, ...rest } = props;
|
|
92
|
+
const _innerRef = React.useRef(null);
|
|
93
|
+
const _onRequestChangedRef = React.useRef(onRequestChanged);
|
|
94
|
+
_onRequestChangedRef.current = onRequestChanged;
|
|
95
|
+
const _onCriteriaChangedRef = React.useRef(onCriteriaChanged);
|
|
96
|
+
_onCriteriaChangedRef.current = onCriteriaChanged;
|
|
97
|
+
const _onCreateEntityRef = React.useRef(onCreateEntity);
|
|
98
|
+
_onCreateEntityRef.current = onCreateEntity;
|
|
99
|
+
const _onEditEntityRef = React.useRef(onEditEntity);
|
|
100
|
+
_onEditEntityRef.current = onEditEntity;
|
|
101
|
+
const _onDeleteEntityRef = React.useRef(onDeleteEntity);
|
|
102
|
+
_onDeleteEntityRef.current = onDeleteEntity;
|
|
103
|
+
const _onSubmitFailureRef = React.useRef(onSubmitFailure);
|
|
104
|
+
_onSubmitFailureRef.current = onSubmitFailure;
|
|
105
|
+
const _onSubmitSuccessRef = React.useRef(onSubmitSuccess);
|
|
106
|
+
_onSubmitSuccessRef.current = onSubmitSuccess;
|
|
107
|
+
const _onRowClickRef = React.useRef(onRowClick);
|
|
108
|
+
_onRowClickRef.current = onRowClick;
|
|
109
|
+
const _onRowDblClickRef = React.useRef(onRowDblClick);
|
|
110
|
+
_onRowDblClickRef.current = onRowDblClick;
|
|
111
|
+
const _onRowSelectedRef = React.useRef(onRowSelected);
|
|
112
|
+
_onRowSelectedRef.current = onRowSelected;
|
|
113
|
+
const _onSelectionChangedRef = React.useRef(onSelectionChanged);
|
|
114
|
+
_onSelectionChangedRef.current = onSelectionChanged;
|
|
115
|
+
React.useLayoutEffect(() => {
|
|
116
|
+
const el = _innerRef.current;
|
|
117
|
+
if (!el) return;
|
|
118
|
+
const _onRequestChangedFn = (e) => _onRequestChangedRef.current?.(e);
|
|
119
|
+
el.addEventListener('request-changed', _onRequestChangedFn);
|
|
120
|
+
const _onCriteriaChangedFn = (e) => _onCriteriaChangedRef.current?.(e);
|
|
121
|
+
el.addEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
122
|
+
const _onCreateEntityFn = (e) => _onCreateEntityRef.current?.(e);
|
|
123
|
+
el.addEventListener('create-entity', _onCreateEntityFn);
|
|
124
|
+
const _onEditEntityFn = (e) => _onEditEntityRef.current?.(e);
|
|
125
|
+
el.addEventListener('edit-entity', _onEditEntityFn);
|
|
126
|
+
const _onDeleteEntityFn = (e) => _onDeleteEntityRef.current?.(e);
|
|
127
|
+
el.addEventListener('delete-entity', _onDeleteEntityFn);
|
|
128
|
+
const _onSubmitFailureFn = (e) => _onSubmitFailureRef.current?.(e);
|
|
129
|
+
el.addEventListener('submit-failure', _onSubmitFailureFn);
|
|
130
|
+
const _onSubmitSuccessFn = (e) => _onSubmitSuccessRef.current?.(e);
|
|
131
|
+
el.addEventListener('submit-success', _onSubmitSuccessFn);
|
|
132
|
+
const _onRowClickFn = (e) => _onRowClickRef.current?.(e);
|
|
133
|
+
el.addEventListener('rowClick', _onRowClickFn);
|
|
134
|
+
const _onRowDblClickFn = (e) => _onRowDblClickRef.current?.(e);
|
|
135
|
+
el.addEventListener('rowDblClick', _onRowDblClickFn);
|
|
136
|
+
const _onRowSelectedFn = (e) => _onRowSelectedRef.current?.(e);
|
|
137
|
+
el.addEventListener('rowSelected', _onRowSelectedFn);
|
|
138
|
+
const _onSelectionChangedFn = (e) => _onSelectionChangedRef.current?.(e);
|
|
139
|
+
el.addEventListener('selectionChanged', _onSelectionChangedFn);
|
|
140
|
+
return () => {
|
|
141
|
+
el.removeEventListener('request-changed', _onRequestChangedFn);
|
|
142
|
+
el.removeEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
143
|
+
el.removeEventListener('create-entity', _onCreateEntityFn);
|
|
144
|
+
el.removeEventListener('edit-entity', _onEditEntityFn);
|
|
145
|
+
el.removeEventListener('delete-entity', _onDeleteEntityFn);
|
|
146
|
+
el.removeEventListener('submit-failure', _onSubmitFailureFn);
|
|
147
|
+
el.removeEventListener('submit-success', _onSubmitSuccessFn);
|
|
148
|
+
el.removeEventListener('rowClick', _onRowClickFn);
|
|
149
|
+
el.removeEventListener('rowDblClick', _onRowDblClickFn);
|
|
150
|
+
el.removeEventListener('rowSelected', _onRowSelectedFn);
|
|
151
|
+
el.removeEventListener('selectionChanged', _onSelectionChangedFn);
|
|
152
|
+
};
|
|
153
|
+
}, []);
|
|
154
|
+
return React.createElement(customElements.getName(SmartFormModalWC) ?? 'smart-form-modal', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
47
155
|
});
|
|
48
156
|
|
|
49
|
-
const List =
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
157
|
+
const List = React.forwardRef(function List(props, ref) {
|
|
158
|
+
const { onSubmitFailure, onSubmitSuccess, onRowClick, onRowDblClick, onRowSelected, onSelectionChanged, onEditEntity, onDeleteEntity, onCustomAction, children, ...rest } = props;
|
|
159
|
+
const _innerRef = React.useRef(null);
|
|
160
|
+
const _onSubmitFailureRef = React.useRef(onSubmitFailure);
|
|
161
|
+
_onSubmitFailureRef.current = onSubmitFailure;
|
|
162
|
+
const _onSubmitSuccessRef = React.useRef(onSubmitSuccess);
|
|
163
|
+
_onSubmitSuccessRef.current = onSubmitSuccess;
|
|
164
|
+
const _onRowClickRef = React.useRef(onRowClick);
|
|
165
|
+
_onRowClickRef.current = onRowClick;
|
|
166
|
+
const _onRowDblClickRef = React.useRef(onRowDblClick);
|
|
167
|
+
_onRowDblClickRef.current = onRowDblClick;
|
|
168
|
+
const _onRowSelectedRef = React.useRef(onRowSelected);
|
|
169
|
+
_onRowSelectedRef.current = onRowSelected;
|
|
170
|
+
const _onSelectionChangedRef = React.useRef(onSelectionChanged);
|
|
171
|
+
_onSelectionChangedRef.current = onSelectionChanged;
|
|
172
|
+
const _onEditEntityRef = React.useRef(onEditEntity);
|
|
173
|
+
_onEditEntityRef.current = onEditEntity;
|
|
174
|
+
const _onDeleteEntityRef = React.useRef(onDeleteEntity);
|
|
175
|
+
_onDeleteEntityRef.current = onDeleteEntity;
|
|
176
|
+
const _onCustomActionRef = React.useRef(onCustomAction);
|
|
177
|
+
_onCustomActionRef.current = onCustomAction;
|
|
178
|
+
React.useLayoutEffect(() => {
|
|
179
|
+
const el = _innerRef.current;
|
|
180
|
+
if (!el) return;
|
|
181
|
+
const _onSubmitFailureFn = (e) => _onSubmitFailureRef.current?.(e);
|
|
182
|
+
el.addEventListener('submit-failure', _onSubmitFailureFn);
|
|
183
|
+
const _onSubmitSuccessFn = (e) => _onSubmitSuccessRef.current?.(e);
|
|
184
|
+
el.addEventListener('submit-success', _onSubmitSuccessFn);
|
|
185
|
+
const _onRowClickFn = (e) => _onRowClickRef.current?.(e);
|
|
186
|
+
el.addEventListener('rowClick', _onRowClickFn);
|
|
187
|
+
const _onRowDblClickFn = (e) => _onRowDblClickRef.current?.(e);
|
|
188
|
+
el.addEventListener('rowDblClick', _onRowDblClickFn);
|
|
189
|
+
const _onRowSelectedFn = (e) => _onRowSelectedRef.current?.(e);
|
|
190
|
+
el.addEventListener('rowSelected', _onRowSelectedFn);
|
|
191
|
+
const _onSelectionChangedFn = (e) => _onSelectionChangedRef.current?.(e);
|
|
192
|
+
el.addEventListener('selectionChanged', _onSelectionChangedFn);
|
|
193
|
+
const _onEditEntityFn = (e) => _onEditEntityRef.current?.(e);
|
|
194
|
+
el.addEventListener('edit-entity', _onEditEntityFn);
|
|
195
|
+
const _onDeleteEntityFn = (e) => _onDeleteEntityRef.current?.(e);
|
|
196
|
+
el.addEventListener('delete-entity', _onDeleteEntityFn);
|
|
197
|
+
const _onCustomActionFn = (e) => _onCustomActionRef.current?.(e);
|
|
198
|
+
el.addEventListener('custom-action', _onCustomActionFn);
|
|
199
|
+
return () => {
|
|
200
|
+
el.removeEventListener('submit-failure', _onSubmitFailureFn);
|
|
201
|
+
el.removeEventListener('submit-success', _onSubmitSuccessFn);
|
|
202
|
+
el.removeEventListener('rowClick', _onRowClickFn);
|
|
203
|
+
el.removeEventListener('rowDblClick', _onRowDblClickFn);
|
|
204
|
+
el.removeEventListener('rowSelected', _onRowSelectedFn);
|
|
205
|
+
el.removeEventListener('selectionChanged', _onSelectionChangedFn);
|
|
206
|
+
el.removeEventListener('edit-entity', _onEditEntityFn);
|
|
207
|
+
el.removeEventListener('delete-entity', _onDeleteEntityFn);
|
|
208
|
+
el.removeEventListener('custom-action', _onCustomActionFn);
|
|
209
|
+
};
|
|
210
|
+
}, []);
|
|
211
|
+
return React.createElement(customElements.getName(ListWC) ?? 'entity-list', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
61
212
|
});
|
|
62
213
|
|
|
63
|
-
const EntityManagementDemo =
|
|
214
|
+
const EntityManagementDemo = React.forwardRef(function EntityManagementDemo(props, ref) {
|
|
215
|
+
const { children, ...rest } = props;
|
|
216
|
+
return React.createElement(customElements.getName(EntityManagementDemoWC) ?? 'entity-management-demo', { ...rest, ref }, children);
|
|
217
|
+
});
|
|
64
218
|
|
|
65
219
|
module.exports = {
|
|
66
220
|
EntityManagement,
|
package/dist/react.mjs
CHANGED
|
@@ -3,59 +3,213 @@
|
|
|
3
3
|
* Generated from custom-elements manifest.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { provideReactWrapper } from '@microsoft/fast-react-wrapper';
|
|
7
6
|
import React from 'react';
|
|
8
7
|
import { EntityManagement as EntityManagementWC } from './esm/entities/entities.js';
|
|
9
8
|
import { SmartFormModal as SmartFormModalWC } from './esm/entities/smartFormModal.js';
|
|
10
9
|
import { List as ListWC } from './esm/list/list.js';
|
|
11
10
|
import { EntityManagementDemo as EntityManagementDemoWC } from './esm/routes/demo/entity-management.js';
|
|
12
11
|
|
|
13
|
-
|
|
12
|
+
function _mergeRefs(...refs) {
|
|
13
|
+
return (value) => {
|
|
14
|
+
for (const ref of refs) {
|
|
15
|
+
if (typeof ref === 'function') ref(value);
|
|
16
|
+
else if (ref != null) ref.current = value;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
}
|
|
14
20
|
|
|
15
|
-
export const EntityManagement =
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
21
|
+
export const EntityManagement = React.forwardRef(function EntityManagement(props, ref) {
|
|
22
|
+
const { onRequestChanged, onCriteriaChanged, onCreateEntity, onEditEntity, onDeleteEntity, onSubmitFailure, onSubmitSuccess, onRowClick, onRowDblClick, onRowSelected, onSelectionChanged, children, ...rest } = props;
|
|
23
|
+
const _innerRef = React.useRef(null);
|
|
24
|
+
const _onRequestChangedRef = React.useRef(onRequestChanged);
|
|
25
|
+
_onRequestChangedRef.current = onRequestChanged;
|
|
26
|
+
const _onCriteriaChangedRef = React.useRef(onCriteriaChanged);
|
|
27
|
+
_onCriteriaChangedRef.current = onCriteriaChanged;
|
|
28
|
+
const _onCreateEntityRef = React.useRef(onCreateEntity);
|
|
29
|
+
_onCreateEntityRef.current = onCreateEntity;
|
|
30
|
+
const _onEditEntityRef = React.useRef(onEditEntity);
|
|
31
|
+
_onEditEntityRef.current = onEditEntity;
|
|
32
|
+
const _onDeleteEntityRef = React.useRef(onDeleteEntity);
|
|
33
|
+
_onDeleteEntityRef.current = onDeleteEntity;
|
|
34
|
+
const _onSubmitFailureRef = React.useRef(onSubmitFailure);
|
|
35
|
+
_onSubmitFailureRef.current = onSubmitFailure;
|
|
36
|
+
const _onSubmitSuccessRef = React.useRef(onSubmitSuccess);
|
|
37
|
+
_onSubmitSuccessRef.current = onSubmitSuccess;
|
|
38
|
+
const _onRowClickRef = React.useRef(onRowClick);
|
|
39
|
+
_onRowClickRef.current = onRowClick;
|
|
40
|
+
const _onRowDblClickRef = React.useRef(onRowDblClick);
|
|
41
|
+
_onRowDblClickRef.current = onRowDblClick;
|
|
42
|
+
const _onRowSelectedRef = React.useRef(onRowSelected);
|
|
43
|
+
_onRowSelectedRef.current = onRowSelected;
|
|
44
|
+
const _onSelectionChangedRef = React.useRef(onSelectionChanged);
|
|
45
|
+
_onSelectionChangedRef.current = onSelectionChanged;
|
|
46
|
+
React.useLayoutEffect(() => {
|
|
47
|
+
const el = _innerRef.current;
|
|
48
|
+
if (!el) return;
|
|
49
|
+
const _onRequestChangedFn = (e) => _onRequestChangedRef.current?.(e);
|
|
50
|
+
el.addEventListener('request-changed', _onRequestChangedFn);
|
|
51
|
+
const _onCriteriaChangedFn = (e) => _onCriteriaChangedRef.current?.(e);
|
|
52
|
+
el.addEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
53
|
+
const _onCreateEntityFn = (e) => _onCreateEntityRef.current?.(e);
|
|
54
|
+
el.addEventListener('create-entity', _onCreateEntityFn);
|
|
55
|
+
const _onEditEntityFn = (e) => _onEditEntityRef.current?.(e);
|
|
56
|
+
el.addEventListener('edit-entity', _onEditEntityFn);
|
|
57
|
+
const _onDeleteEntityFn = (e) => _onDeleteEntityRef.current?.(e);
|
|
58
|
+
el.addEventListener('delete-entity', _onDeleteEntityFn);
|
|
59
|
+
const _onSubmitFailureFn = (e) => _onSubmitFailureRef.current?.(e);
|
|
60
|
+
el.addEventListener('submit-failure', _onSubmitFailureFn);
|
|
61
|
+
const _onSubmitSuccessFn = (e) => _onSubmitSuccessRef.current?.(e);
|
|
62
|
+
el.addEventListener('submit-success', _onSubmitSuccessFn);
|
|
63
|
+
const _onRowClickFn = (e) => _onRowClickRef.current?.(e);
|
|
64
|
+
el.addEventListener('rowClick', _onRowClickFn);
|
|
65
|
+
const _onRowDblClickFn = (e) => _onRowDblClickRef.current?.(e);
|
|
66
|
+
el.addEventListener('rowDblClick', _onRowDblClickFn);
|
|
67
|
+
const _onRowSelectedFn = (e) => _onRowSelectedRef.current?.(e);
|
|
68
|
+
el.addEventListener('rowSelected', _onRowSelectedFn);
|
|
69
|
+
const _onSelectionChangedFn = (e) => _onSelectionChangedRef.current?.(e);
|
|
70
|
+
el.addEventListener('selectionChanged', _onSelectionChangedFn);
|
|
71
|
+
return () => {
|
|
72
|
+
el.removeEventListener('request-changed', _onRequestChangedFn);
|
|
73
|
+
el.removeEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
74
|
+
el.removeEventListener('create-entity', _onCreateEntityFn);
|
|
75
|
+
el.removeEventListener('edit-entity', _onEditEntityFn);
|
|
76
|
+
el.removeEventListener('delete-entity', _onDeleteEntityFn);
|
|
77
|
+
el.removeEventListener('submit-failure', _onSubmitFailureFn);
|
|
78
|
+
el.removeEventListener('submit-success', _onSubmitSuccessFn);
|
|
79
|
+
el.removeEventListener('rowClick', _onRowClickFn);
|
|
80
|
+
el.removeEventListener('rowDblClick', _onRowDblClickFn);
|
|
81
|
+
el.removeEventListener('rowSelected', _onRowSelectedFn);
|
|
82
|
+
el.removeEventListener('selectionChanged', _onSelectionChangedFn);
|
|
83
|
+
};
|
|
84
|
+
}, []);
|
|
85
|
+
return React.createElement(customElements.getName(EntityManagementWC) ?? 'entity-management', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
29
86
|
});
|
|
30
87
|
|
|
31
|
-
export const SmartFormModal =
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
88
|
+
export const SmartFormModal = React.forwardRef(function SmartFormModal(props, ref) {
|
|
89
|
+
const { onRequestChanged, onCriteriaChanged, onCreateEntity, onEditEntity, onDeleteEntity, onSubmitFailure, onSubmitSuccess, onRowClick, onRowDblClick, onRowSelected, onSelectionChanged, children, ...rest } = props;
|
|
90
|
+
const _innerRef = React.useRef(null);
|
|
91
|
+
const _onRequestChangedRef = React.useRef(onRequestChanged);
|
|
92
|
+
_onRequestChangedRef.current = onRequestChanged;
|
|
93
|
+
const _onCriteriaChangedRef = React.useRef(onCriteriaChanged);
|
|
94
|
+
_onCriteriaChangedRef.current = onCriteriaChanged;
|
|
95
|
+
const _onCreateEntityRef = React.useRef(onCreateEntity);
|
|
96
|
+
_onCreateEntityRef.current = onCreateEntity;
|
|
97
|
+
const _onEditEntityRef = React.useRef(onEditEntity);
|
|
98
|
+
_onEditEntityRef.current = onEditEntity;
|
|
99
|
+
const _onDeleteEntityRef = React.useRef(onDeleteEntity);
|
|
100
|
+
_onDeleteEntityRef.current = onDeleteEntity;
|
|
101
|
+
const _onSubmitFailureRef = React.useRef(onSubmitFailure);
|
|
102
|
+
_onSubmitFailureRef.current = onSubmitFailure;
|
|
103
|
+
const _onSubmitSuccessRef = React.useRef(onSubmitSuccess);
|
|
104
|
+
_onSubmitSuccessRef.current = onSubmitSuccess;
|
|
105
|
+
const _onRowClickRef = React.useRef(onRowClick);
|
|
106
|
+
_onRowClickRef.current = onRowClick;
|
|
107
|
+
const _onRowDblClickRef = React.useRef(onRowDblClick);
|
|
108
|
+
_onRowDblClickRef.current = onRowDblClick;
|
|
109
|
+
const _onRowSelectedRef = React.useRef(onRowSelected);
|
|
110
|
+
_onRowSelectedRef.current = onRowSelected;
|
|
111
|
+
const _onSelectionChangedRef = React.useRef(onSelectionChanged);
|
|
112
|
+
_onSelectionChangedRef.current = onSelectionChanged;
|
|
113
|
+
React.useLayoutEffect(() => {
|
|
114
|
+
const el = _innerRef.current;
|
|
115
|
+
if (!el) return;
|
|
116
|
+
const _onRequestChangedFn = (e) => _onRequestChangedRef.current?.(e);
|
|
117
|
+
el.addEventListener('request-changed', _onRequestChangedFn);
|
|
118
|
+
const _onCriteriaChangedFn = (e) => _onCriteriaChangedRef.current?.(e);
|
|
119
|
+
el.addEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
120
|
+
const _onCreateEntityFn = (e) => _onCreateEntityRef.current?.(e);
|
|
121
|
+
el.addEventListener('create-entity', _onCreateEntityFn);
|
|
122
|
+
const _onEditEntityFn = (e) => _onEditEntityRef.current?.(e);
|
|
123
|
+
el.addEventListener('edit-entity', _onEditEntityFn);
|
|
124
|
+
const _onDeleteEntityFn = (e) => _onDeleteEntityRef.current?.(e);
|
|
125
|
+
el.addEventListener('delete-entity', _onDeleteEntityFn);
|
|
126
|
+
const _onSubmitFailureFn = (e) => _onSubmitFailureRef.current?.(e);
|
|
127
|
+
el.addEventListener('submit-failure', _onSubmitFailureFn);
|
|
128
|
+
const _onSubmitSuccessFn = (e) => _onSubmitSuccessRef.current?.(e);
|
|
129
|
+
el.addEventListener('submit-success', _onSubmitSuccessFn);
|
|
130
|
+
const _onRowClickFn = (e) => _onRowClickRef.current?.(e);
|
|
131
|
+
el.addEventListener('rowClick', _onRowClickFn);
|
|
132
|
+
const _onRowDblClickFn = (e) => _onRowDblClickRef.current?.(e);
|
|
133
|
+
el.addEventListener('rowDblClick', _onRowDblClickFn);
|
|
134
|
+
const _onRowSelectedFn = (e) => _onRowSelectedRef.current?.(e);
|
|
135
|
+
el.addEventListener('rowSelected', _onRowSelectedFn);
|
|
136
|
+
const _onSelectionChangedFn = (e) => _onSelectionChangedRef.current?.(e);
|
|
137
|
+
el.addEventListener('selectionChanged', _onSelectionChangedFn);
|
|
138
|
+
return () => {
|
|
139
|
+
el.removeEventListener('request-changed', _onRequestChangedFn);
|
|
140
|
+
el.removeEventListener('criteria-changed', _onCriteriaChangedFn);
|
|
141
|
+
el.removeEventListener('create-entity', _onCreateEntityFn);
|
|
142
|
+
el.removeEventListener('edit-entity', _onEditEntityFn);
|
|
143
|
+
el.removeEventListener('delete-entity', _onDeleteEntityFn);
|
|
144
|
+
el.removeEventListener('submit-failure', _onSubmitFailureFn);
|
|
145
|
+
el.removeEventListener('submit-success', _onSubmitSuccessFn);
|
|
146
|
+
el.removeEventListener('rowClick', _onRowClickFn);
|
|
147
|
+
el.removeEventListener('rowDblClick', _onRowDblClickFn);
|
|
148
|
+
el.removeEventListener('rowSelected', _onRowSelectedFn);
|
|
149
|
+
el.removeEventListener('selectionChanged', _onSelectionChangedFn);
|
|
150
|
+
};
|
|
151
|
+
}, []);
|
|
152
|
+
return React.createElement(customElements.getName(SmartFormModalWC) ?? 'smart-form-modal', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
45
153
|
});
|
|
46
154
|
|
|
47
|
-
export const List =
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
155
|
+
export const List = React.forwardRef(function List(props, ref) {
|
|
156
|
+
const { onSubmitFailure, onSubmitSuccess, onRowClick, onRowDblClick, onRowSelected, onSelectionChanged, onEditEntity, onDeleteEntity, onCustomAction, children, ...rest } = props;
|
|
157
|
+
const _innerRef = React.useRef(null);
|
|
158
|
+
const _onSubmitFailureRef = React.useRef(onSubmitFailure);
|
|
159
|
+
_onSubmitFailureRef.current = onSubmitFailure;
|
|
160
|
+
const _onSubmitSuccessRef = React.useRef(onSubmitSuccess);
|
|
161
|
+
_onSubmitSuccessRef.current = onSubmitSuccess;
|
|
162
|
+
const _onRowClickRef = React.useRef(onRowClick);
|
|
163
|
+
_onRowClickRef.current = onRowClick;
|
|
164
|
+
const _onRowDblClickRef = React.useRef(onRowDblClick);
|
|
165
|
+
_onRowDblClickRef.current = onRowDblClick;
|
|
166
|
+
const _onRowSelectedRef = React.useRef(onRowSelected);
|
|
167
|
+
_onRowSelectedRef.current = onRowSelected;
|
|
168
|
+
const _onSelectionChangedRef = React.useRef(onSelectionChanged);
|
|
169
|
+
_onSelectionChangedRef.current = onSelectionChanged;
|
|
170
|
+
const _onEditEntityRef = React.useRef(onEditEntity);
|
|
171
|
+
_onEditEntityRef.current = onEditEntity;
|
|
172
|
+
const _onDeleteEntityRef = React.useRef(onDeleteEntity);
|
|
173
|
+
_onDeleteEntityRef.current = onDeleteEntity;
|
|
174
|
+
const _onCustomActionRef = React.useRef(onCustomAction);
|
|
175
|
+
_onCustomActionRef.current = onCustomAction;
|
|
176
|
+
React.useLayoutEffect(() => {
|
|
177
|
+
const el = _innerRef.current;
|
|
178
|
+
if (!el) return;
|
|
179
|
+
const _onSubmitFailureFn = (e) => _onSubmitFailureRef.current?.(e);
|
|
180
|
+
el.addEventListener('submit-failure', _onSubmitFailureFn);
|
|
181
|
+
const _onSubmitSuccessFn = (e) => _onSubmitSuccessRef.current?.(e);
|
|
182
|
+
el.addEventListener('submit-success', _onSubmitSuccessFn);
|
|
183
|
+
const _onRowClickFn = (e) => _onRowClickRef.current?.(e);
|
|
184
|
+
el.addEventListener('rowClick', _onRowClickFn);
|
|
185
|
+
const _onRowDblClickFn = (e) => _onRowDblClickRef.current?.(e);
|
|
186
|
+
el.addEventListener('rowDblClick', _onRowDblClickFn);
|
|
187
|
+
const _onRowSelectedFn = (e) => _onRowSelectedRef.current?.(e);
|
|
188
|
+
el.addEventListener('rowSelected', _onRowSelectedFn);
|
|
189
|
+
const _onSelectionChangedFn = (e) => _onSelectionChangedRef.current?.(e);
|
|
190
|
+
el.addEventListener('selectionChanged', _onSelectionChangedFn);
|
|
191
|
+
const _onEditEntityFn = (e) => _onEditEntityRef.current?.(e);
|
|
192
|
+
el.addEventListener('edit-entity', _onEditEntityFn);
|
|
193
|
+
const _onDeleteEntityFn = (e) => _onDeleteEntityRef.current?.(e);
|
|
194
|
+
el.addEventListener('delete-entity', _onDeleteEntityFn);
|
|
195
|
+
const _onCustomActionFn = (e) => _onCustomActionRef.current?.(e);
|
|
196
|
+
el.addEventListener('custom-action', _onCustomActionFn);
|
|
197
|
+
return () => {
|
|
198
|
+
el.removeEventListener('submit-failure', _onSubmitFailureFn);
|
|
199
|
+
el.removeEventListener('submit-success', _onSubmitSuccessFn);
|
|
200
|
+
el.removeEventListener('rowClick', _onRowClickFn);
|
|
201
|
+
el.removeEventListener('rowDblClick', _onRowDblClickFn);
|
|
202
|
+
el.removeEventListener('rowSelected', _onRowSelectedFn);
|
|
203
|
+
el.removeEventListener('selectionChanged', _onSelectionChangedFn);
|
|
204
|
+
el.removeEventListener('edit-entity', _onEditEntityFn);
|
|
205
|
+
el.removeEventListener('delete-entity', _onDeleteEntityFn);
|
|
206
|
+
el.removeEventListener('custom-action', _onCustomActionFn);
|
|
207
|
+
};
|
|
208
|
+
}, []);
|
|
209
|
+
return React.createElement(customElements.getName(ListWC) ?? 'entity-list', { ...rest, ref: _mergeRefs(_innerRef, ref) }, children);
|
|
59
210
|
});
|
|
60
211
|
|
|
61
|
-
export const EntityManagementDemo =
|
|
212
|
+
export const EntityManagementDemo = React.forwardRef(function EntityManagementDemo(props, ref) {
|
|
213
|
+
const { children, ...rest } = props;
|
|
214
|
+
return React.createElement(customElements.getName(EntityManagementDemoWC) ?? 'entity-management-demo', { ...rest, ref }, children);
|
|
215
|
+
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@genesislcap/foundation-entity-management",
|
|
3
3
|
"description": "Genesis Foundation Entity Management",
|
|
4
|
-
"version": "14.
|
|
4
|
+
"version": "14.425.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"license": "SEE LICENSE IN license.txt",
|
|
7
7
|
"main": "dist/esm/index.js",
|
|
@@ -54,33 +54,32 @@
|
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
56
|
"devDependencies": {
|
|
57
|
-
"@genesislcap/foundation-testing": "14.
|
|
58
|
-
"@genesislcap/genx": "14.
|
|
59
|
-
"@genesislcap/rollup-builder": "14.
|
|
60
|
-
"@genesislcap/ts-builder": "14.
|
|
61
|
-
"@genesislcap/uvu-playwright-builder": "14.
|
|
62
|
-
"@genesislcap/vite-builder": "14.
|
|
63
|
-
"@genesislcap/webpack-builder": "14.
|
|
57
|
+
"@genesislcap/foundation-testing": "14.425.0",
|
|
58
|
+
"@genesislcap/genx": "14.425.0",
|
|
59
|
+
"@genesislcap/rollup-builder": "14.425.0",
|
|
60
|
+
"@genesislcap/ts-builder": "14.425.0",
|
|
61
|
+
"@genesislcap/uvu-playwright-builder": "14.425.0",
|
|
62
|
+
"@genesislcap/vite-builder": "14.425.0",
|
|
63
|
+
"@genesislcap/webpack-builder": "14.425.0"
|
|
64
64
|
},
|
|
65
65
|
"peerDependencies": {
|
|
66
|
-
"@ag-grid-community/core": "29.2.0"
|
|
67
|
-
"@microsoft/fast-react-wrapper": ">=0.3.0"
|
|
66
|
+
"@ag-grid-community/core": "29.2.0"
|
|
68
67
|
},
|
|
69
68
|
"dependencies": {
|
|
70
|
-
"@genesislcap/foundation-ai": "14.
|
|
71
|
-
"@genesislcap/foundation-comms": "14.
|
|
72
|
-
"@genesislcap/foundation-errors": "14.
|
|
73
|
-
"@genesislcap/foundation-events": "14.
|
|
74
|
-
"@genesislcap/foundation-forms": "14.
|
|
75
|
-
"@genesislcap/foundation-logger": "14.
|
|
76
|
-
"@genesislcap/foundation-login": "14.
|
|
77
|
-
"@genesislcap/foundation-notifications": "14.
|
|
78
|
-
"@genesislcap/foundation-ui": "14.
|
|
79
|
-
"@genesislcap/foundation-utils": "14.
|
|
80
|
-
"@genesislcap/foundation-zero": "14.
|
|
81
|
-
"@genesislcap/foundation-zero-grid-pro": "14.
|
|
82
|
-
"@genesislcap/grid-pro": "14.
|
|
83
|
-
"@genesislcap/web-core": "14.
|
|
69
|
+
"@genesislcap/foundation-ai": "14.425.0",
|
|
70
|
+
"@genesislcap/foundation-comms": "14.425.0",
|
|
71
|
+
"@genesislcap/foundation-errors": "14.425.0",
|
|
72
|
+
"@genesislcap/foundation-events": "14.425.0",
|
|
73
|
+
"@genesislcap/foundation-forms": "14.425.0",
|
|
74
|
+
"@genesislcap/foundation-logger": "14.425.0",
|
|
75
|
+
"@genesislcap/foundation-login": "14.425.0",
|
|
76
|
+
"@genesislcap/foundation-notifications": "14.425.0",
|
|
77
|
+
"@genesislcap/foundation-ui": "14.425.0",
|
|
78
|
+
"@genesislcap/foundation-utils": "14.425.0",
|
|
79
|
+
"@genesislcap/foundation-zero": "14.425.0",
|
|
80
|
+
"@genesislcap/foundation-zero-grid-pro": "14.425.0",
|
|
81
|
+
"@genesislcap/grid-pro": "14.425.0",
|
|
82
|
+
"@genesislcap/web-core": "14.425.0",
|
|
84
83
|
"change-case": "^4.1.2"
|
|
85
84
|
},
|
|
86
85
|
"repository": {
|
|
@@ -103,5 +102,5 @@
|
|
|
103
102
|
"require": "./dist/react.cjs"
|
|
104
103
|
}
|
|
105
104
|
},
|
|
106
|
-
"gitHead": "
|
|
105
|
+
"gitHead": "c49bb94fbc3a74e84f18c7445398af116e1a58bb"
|
|
107
106
|
}
|