@searpent/react-image-annotate 2.0.50 → 2.0.52
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/Annotator/examplePhotos.js +2 -2
- package/Annotator/index.js +41 -148
- package/Errorer/errorer.css +21 -0
- package/MainLayout/index.js +2 -8
- package/PageSelector/index.js +1 -13
- package/package.json +2 -2
|
@@ -778,7 +778,7 @@ var examplePhotos = [{
|
|
|
778
778
|
"key": "mutation",
|
|
779
779
|
"value": "hřensko"
|
|
780
780
|
}],
|
|
781
|
-
"lockedUntil": ""
|
|
781
|
+
"lockedUntil": "2023-01-28T11:35:00.000Z"
|
|
782
782
|
}, {
|
|
783
783
|
"id": "431fc636-d6d1-4e20-a35b-cc7a201c1833",
|
|
784
784
|
"fullsize": {
|
|
@@ -1330,7 +1330,7 @@ var examplePhotos = [{
|
|
|
1330
1330
|
"key": "pageNumber",
|
|
1331
1331
|
"value": "2"
|
|
1332
1332
|
}],
|
|
1333
|
-
"lockedUntil":
|
|
1333
|
+
"lockedUntil": null
|
|
1334
1334
|
}, {
|
|
1335
1335
|
"id": "45f79ec8-fd2e-4ad8-82f6-007a2eec2b97",
|
|
1336
1336
|
"fullsize": {
|
package/Annotator/index.js
CHANGED
|
@@ -78,8 +78,6 @@ export var Annotator = function Annotator(_ref) {
|
|
|
78
78
|
_ref$clsColors = _ref.clsColors,
|
|
79
79
|
clsColors = _ref$clsColors === void 0 ? {} : _ref$clsColors,
|
|
80
80
|
groupColors = _ref.groupColors,
|
|
81
|
-
onRecalc = _ref.onRecalc,
|
|
82
|
-
onSave = _ref.onSave,
|
|
83
81
|
onSelectedImageChange = _ref.onSelectedImageChange,
|
|
84
82
|
albumMetadata = _ref.albumMetadata,
|
|
85
83
|
metadataConfigs = _ref.metadataConfigs,
|
|
@@ -163,98 +161,6 @@ export var Annotator = function Annotator(_ref) {
|
|
|
163
161
|
});
|
|
164
162
|
});
|
|
165
163
|
|
|
166
|
-
var handleSaveClick =
|
|
167
|
-
/*#__PURE__*/
|
|
168
|
-
function () {
|
|
169
|
-
var _ref2 = _asyncToGenerator(
|
|
170
|
-
/*#__PURE__*/
|
|
171
|
-
_regeneratorRuntime.mark(function _callee(e) {
|
|
172
|
-
var createdAt;
|
|
173
|
-
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
174
|
-
while (1) {
|
|
175
|
-
switch (_context.prev = _context.next) {
|
|
176
|
-
case 0:
|
|
177
|
-
createdAt = new Date();
|
|
178
|
-
e.preventDefault();
|
|
179
|
-
|
|
180
|
-
if (!onSave) {
|
|
181
|
-
_context.next = 6;
|
|
182
|
-
break;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
_context.next = 5;
|
|
186
|
-
return onSave({
|
|
187
|
-
images: state.images,
|
|
188
|
-
albumMetadata: state.albumMetadata,
|
|
189
|
-
createdAt: createdAt,
|
|
190
|
-
selectedImage: state === null || state === void 0 ? void 0 : state.selectedImage
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
case 5:
|
|
194
|
-
dispatchToReducer({
|
|
195
|
-
type: "IMAGES_SAVED",
|
|
196
|
-
savedAt: createdAt
|
|
197
|
-
});
|
|
198
|
-
|
|
199
|
-
case 6:
|
|
200
|
-
case "end":
|
|
201
|
-
return _context.stop();
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
}, _callee);
|
|
205
|
-
}));
|
|
206
|
-
|
|
207
|
-
return function handleSaveClick(_x) {
|
|
208
|
-
return _ref2.apply(this, arguments);
|
|
209
|
-
};
|
|
210
|
-
}();
|
|
211
|
-
|
|
212
|
-
var handleRecalcClick =
|
|
213
|
-
/*#__PURE__*/
|
|
214
|
-
function () {
|
|
215
|
-
var _ref3 = _asyncToGenerator(
|
|
216
|
-
/*#__PURE__*/
|
|
217
|
-
_regeneratorRuntime.mark(function _callee2(e) {
|
|
218
|
-
var createdAt;
|
|
219
|
-
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
220
|
-
while (1) {
|
|
221
|
-
switch (_context2.prev = _context2.next) {
|
|
222
|
-
case 0:
|
|
223
|
-
createdAt = new Date();
|
|
224
|
-
e.preventDefault();
|
|
225
|
-
|
|
226
|
-
if (!onRecalc) {
|
|
227
|
-
_context2.next = 6;
|
|
228
|
-
break;
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
_context2.next = 5;
|
|
232
|
-
return onRecalc({
|
|
233
|
-
images: state.images,
|
|
234
|
-
albumMetadata: state.albumMetadata,
|
|
235
|
-
createdAt: createdAt,
|
|
236
|
-
selectedImage: state === null || state === void 0 ? void 0 : state.selectedImage
|
|
237
|
-
});
|
|
238
|
-
|
|
239
|
-
case 5:
|
|
240
|
-
dispatchToReducer({
|
|
241
|
-
type: "IMAGES_RECALCULATED",
|
|
242
|
-
recalculatedAt: createdAt
|
|
243
|
-
});
|
|
244
|
-
|
|
245
|
-
case 6:
|
|
246
|
-
case "end":
|
|
247
|
-
return _context2.stop();
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
}, _callee2);
|
|
251
|
-
}));
|
|
252
|
-
|
|
253
|
-
return function handleRecalcClick(_x2) {
|
|
254
|
-
return _ref3.apply(this, arguments);
|
|
255
|
-
};
|
|
256
|
-
}();
|
|
257
|
-
|
|
258
164
|
var handleMetadataChange = function handleMetadataChange(params) {
|
|
259
165
|
dispatchToReducer(_objectSpread({
|
|
260
166
|
type: "UPDATE_METADATA"
|
|
@@ -281,21 +187,21 @@ export var Annotator = function Annotator(_ref) {
|
|
|
281
187
|
var saveHandler =
|
|
282
188
|
/*#__PURE__*/
|
|
283
189
|
function () {
|
|
284
|
-
var
|
|
190
|
+
var _ref2 = _asyncToGenerator(
|
|
285
191
|
/*#__PURE__*/
|
|
286
|
-
_regeneratorRuntime.mark(function
|
|
287
|
-
var
|
|
192
|
+
_regeneratorRuntime.mark(function _callee(image, triggerRecalc, albumMetadata) {
|
|
193
|
+
var _ref3, lockedUntil;
|
|
288
194
|
|
|
289
|
-
return _regeneratorRuntime.wrap(function
|
|
195
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
290
196
|
while (1) {
|
|
291
|
-
switch (
|
|
197
|
+
switch (_context.prev = _context.next) {
|
|
292
198
|
case 0:
|
|
293
199
|
dispatchToReducer({
|
|
294
200
|
type: "IMAGE_UPDATE_INIT",
|
|
295
201
|
imageId: image.id
|
|
296
202
|
});
|
|
297
|
-
|
|
298
|
-
|
|
203
|
+
_context.prev = 1;
|
|
204
|
+
_context.next = 4;
|
|
299
205
|
return save({
|
|
300
206
|
image: image,
|
|
301
207
|
triggerRecalc: triggerRecalc,
|
|
@@ -303,35 +209,35 @@ export var Annotator = function Annotator(_ref) {
|
|
|
303
209
|
});
|
|
304
210
|
|
|
305
211
|
case 4:
|
|
306
|
-
|
|
307
|
-
lockedUntil =
|
|
212
|
+
_ref3 = _context.sent;
|
|
213
|
+
lockedUntil = _ref3.lockedUntil;
|
|
308
214
|
dispatchToReducer({
|
|
309
215
|
type: "IMAGE_UPDATE_SUCCESS",
|
|
310
216
|
imageId: image.id,
|
|
311
217
|
lockedUntil: lockedUntil
|
|
312
218
|
});
|
|
313
|
-
|
|
219
|
+
_context.next = 12;
|
|
314
220
|
break;
|
|
315
221
|
|
|
316
222
|
case 9:
|
|
317
|
-
|
|
318
|
-
|
|
223
|
+
_context.prev = 9;
|
|
224
|
+
_context.t0 = _context["catch"](1);
|
|
319
225
|
dispatchToReducer({
|
|
320
226
|
type: "IMAGE_UPDATE_FAIL",
|
|
321
227
|
imageId: image.id,
|
|
322
|
-
error:
|
|
228
|
+
error: _context.t0
|
|
323
229
|
});
|
|
324
230
|
|
|
325
231
|
case 12:
|
|
326
232
|
case "end":
|
|
327
|
-
return
|
|
233
|
+
return _context.stop();
|
|
328
234
|
}
|
|
329
235
|
}
|
|
330
|
-
},
|
|
236
|
+
}, _callee, null, [[1, 9]]);
|
|
331
237
|
}));
|
|
332
238
|
|
|
333
|
-
return function saveHandler(
|
|
334
|
-
return
|
|
239
|
+
return function saveHandler(_x, _x2, _x3) {
|
|
240
|
+
return _ref2.apply(this, arguments);
|
|
335
241
|
};
|
|
336
242
|
}(); // save if previously selected image has any changes
|
|
337
243
|
|
|
@@ -357,7 +263,7 @@ export var Annotator = function Annotator(_ref) {
|
|
|
357
263
|
useEffect(function () {
|
|
358
264
|
if (state.toPollImages.length > 0) {
|
|
359
265
|
var polledImages = state.toPollImages.reduce(function (acc, imageId) {
|
|
360
|
-
function pollImage(
|
|
266
|
+
function pollImage(_x4, _x5) {
|
|
361
267
|
return _pollImage.apply(this, arguments);
|
|
362
268
|
} // make recursive calling of polling function
|
|
363
269
|
|
|
@@ -365,20 +271,20 @@ export var Annotator = function Annotator(_ref) {
|
|
|
365
271
|
function _pollImage() {
|
|
366
272
|
_pollImage = _asyncToGenerator(
|
|
367
273
|
/*#__PURE__*/
|
|
368
|
-
_regeneratorRuntime.mark(function
|
|
274
|
+
_regeneratorRuntime.mark(function _callee2(fetchImage, imageId) {
|
|
369
275
|
var tries,
|
|
370
|
-
|
|
276
|
+
_ref4,
|
|
371
277
|
image,
|
|
372
|
-
|
|
278
|
+
_args2 = arguments;
|
|
373
279
|
|
|
374
|
-
return _regeneratorRuntime.wrap(function
|
|
280
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
375
281
|
while (1) {
|
|
376
|
-
switch (
|
|
282
|
+
switch (_context2.prev = _context2.next) {
|
|
377
283
|
case 0:
|
|
378
|
-
tries =
|
|
284
|
+
tries = _args2.length > 2 && _args2[2] !== undefined ? _args2[2] : 5;
|
|
379
285
|
|
|
380
286
|
if (!(tries === 0)) {
|
|
381
|
-
|
|
287
|
+
_context2.next = 4;
|
|
382
288
|
break;
|
|
383
289
|
}
|
|
384
290
|
|
|
@@ -386,20 +292,20 @@ export var Annotator = function Annotator(_ref) {
|
|
|
386
292
|
type: "IMAGE_POLL_TIMEOUT",
|
|
387
293
|
imageId: imageId
|
|
388
294
|
});
|
|
389
|
-
return
|
|
295
|
+
return _context2.abrupt("return");
|
|
390
296
|
|
|
391
297
|
case 4:
|
|
392
|
-
|
|
298
|
+
_context2.next = 6;
|
|
393
299
|
return fetchImage({
|
|
394
300
|
imageId: imageId
|
|
395
301
|
});
|
|
396
302
|
|
|
397
303
|
case 6:
|
|
398
|
-
|
|
399
|
-
image =
|
|
304
|
+
_ref4 = _context2.sent;
|
|
305
|
+
image = _ref4.image;
|
|
400
306
|
|
|
401
307
|
if (image.lockedUntil) {
|
|
402
|
-
|
|
308
|
+
_context2.next = 11;
|
|
403
309
|
break;
|
|
404
310
|
}
|
|
405
311
|
|
|
@@ -407,25 +313,25 @@ export var Annotator = function Annotator(_ref) {
|
|
|
407
313
|
type: "IMAGE_POLL_SUCCESS",
|
|
408
314
|
image: image
|
|
409
315
|
});
|
|
410
|
-
return
|
|
316
|
+
return _context2.abrupt("return");
|
|
411
317
|
|
|
412
318
|
case 11:
|
|
413
|
-
|
|
319
|
+
_context2.next = 13;
|
|
414
320
|
return sleep(5000);
|
|
415
321
|
|
|
416
322
|
case 13:
|
|
417
|
-
|
|
323
|
+
_context2.next = 15;
|
|
418
324
|
return pollImage(fetchImage, imageId, tries - 1);
|
|
419
325
|
|
|
420
326
|
case 15:
|
|
421
|
-
return
|
|
327
|
+
return _context2.abrupt("return", _context2.sent);
|
|
422
328
|
|
|
423
329
|
case 16:
|
|
424
330
|
case "end":
|
|
425
|
-
return
|
|
331
|
+
return _context2.stop();
|
|
426
332
|
}
|
|
427
333
|
}
|
|
428
|
-
},
|
|
334
|
+
}, _callee2);
|
|
429
335
|
}));
|
|
430
336
|
return _pollImage.apply(this, arguments);
|
|
431
337
|
}
|
|
@@ -438,18 +344,7 @@ export var Annotator = function Annotator(_ref) {
|
|
|
438
344
|
imageIds: polledImages
|
|
439
345
|
});
|
|
440
346
|
}
|
|
441
|
-
}, [fetchImage, state.toPollImages]);
|
|
442
|
-
// useEffect(() => {
|
|
443
|
-
// if (!state.lastAction || !["BEGIN_BOX_TRANSFORM", "CHANGE_REGION", "DELETE_REGION", "DELETE_SELECTED_REGION", "UPDATE_METADATA", "SELECT_CLASSIFICATION"].includes(state.lastAction.type)) { return }
|
|
444
|
-
// if (onImagesChange) {
|
|
445
|
-
// onImagesChange(state.images)
|
|
446
|
-
// }
|
|
447
|
-
// dispatchToReducer({
|
|
448
|
-
// type: "IMAGES_UPDATED",
|
|
449
|
-
// updatedAt: new Date()
|
|
450
|
-
// })
|
|
451
|
-
// }, [onImagesChange, state.images, state.lastAction])
|
|
452
|
-
|
|
347
|
+
}, [fetchImage, state.toPollImages]);
|
|
453
348
|
useEffect(function () {
|
|
454
349
|
if (selectedImage === undefined) return;
|
|
455
350
|
dispatchToReducer({
|
|
@@ -460,10 +355,10 @@ export var Annotator = function Annotator(_ref) {
|
|
|
460
355
|
}, [onImagesChange, selectedImage]);
|
|
461
356
|
if (!images && !videoSrc) return 'Missing required prop "images" or "videoSrc"';
|
|
462
357
|
|
|
463
|
-
var
|
|
464
|
-
|
|
465
|
-
recalcActive =
|
|
466
|
-
saveActive =
|
|
358
|
+
var _ref5 = state.imagesSavedAt < state.imagesUpdatedAt ? [true, true] : [false, false],
|
|
359
|
+
_ref6 = _slicedToArray(_ref5, 2),
|
|
360
|
+
recalcActive = _ref6[0],
|
|
361
|
+
saveActive = _ref6[1];
|
|
467
362
|
|
|
468
363
|
return React.createElement(SettingsProvider, {
|
|
469
364
|
clsColors: clsColors,
|
|
@@ -489,8 +384,6 @@ export var Annotator = function Annotator(_ref) {
|
|
|
489
384
|
hideNotEditingLabel: hideNotEditingLabel,
|
|
490
385
|
showEditor: showEditor,
|
|
491
386
|
showPageSelector: showPageSelector,
|
|
492
|
-
onRecalc: handleRecalcClick,
|
|
493
|
-
onSave: handleSaveClick,
|
|
494
387
|
saveActive: recalcActive,
|
|
495
388
|
recalcActive: saveActive,
|
|
496
389
|
onMetadataChange: handleMetadataChange,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
.errorer {
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: 100%;
|
|
5
|
+
opacity: .75;
|
|
6
|
+
animation: skeleton-loading 1s linear infinite alternate;
|
|
7
|
+
z-index: 1000;
|
|
8
|
+
display: flex;
|
|
9
|
+
justify-content: center;
|
|
10
|
+
align-items: center;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
@keyframes skeleton-loading {
|
|
14
|
+
0% {
|
|
15
|
+
background-color: hsl(0, 20%, 80%);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
100% {
|
|
19
|
+
background-color: hsl(200, 20%, 95%);
|
|
20
|
+
}
|
|
21
|
+
}
|
package/MainLayout/index.js
CHANGED
|
@@ -85,7 +85,7 @@ var EditorWrapper = styled("div")(function (_ref4) {
|
|
|
85
85
|
};
|
|
86
86
|
});
|
|
87
87
|
export var MainLayout = function MainLayout(_ref5) {
|
|
88
|
-
var _state$images$state$s, _state$images$state$s2;
|
|
88
|
+
var _state$images$state$s, _state$images$state$s2, _state$images$state$s3;
|
|
89
89
|
|
|
90
90
|
var state = _ref5.state,
|
|
91
91
|
dispatch = _ref5.dispatch,
|
|
@@ -121,10 +121,6 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
121
121
|
showEditor = _ref5$showEditor === void 0 ? false : _ref5$showEditor,
|
|
122
122
|
_ref5$showPageSelecto = _ref5.showPageSelector,
|
|
123
123
|
showPageSelector = _ref5$showPageSelecto === void 0 ? false : _ref5$showPageSelecto,
|
|
124
|
-
_ref5$onRecalc = _ref5.onRecalc,
|
|
125
|
-
onRecalc = _ref5$onRecalc === void 0 ? function () {} : _ref5$onRecalc,
|
|
126
|
-
_ref5$onSave = _ref5.onSave,
|
|
127
|
-
onSave = _ref5$onSave === void 0 ? function () {} : _ref5$onSave,
|
|
128
124
|
_ref5$recalcActive = _ref5.recalcActive,
|
|
129
125
|
recalcActive = _ref5$recalcActive === void 0 ? false : _ref5$recalcActive,
|
|
130
126
|
_ref5$saveActive = _ref5.saveActive,
|
|
@@ -316,7 +312,7 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
316
312
|
});
|
|
317
313
|
};
|
|
318
314
|
|
|
319
|
-
var isSelectedImageLocked = false;
|
|
315
|
+
var isSelectedImageLocked = ((_state$images$state$s3 = state.images[state.selectedImage]) === null || _state$images$state$s3 === void 0 ? void 0 : _state$images$state$s3.lockedUntil) ? true : false;
|
|
320
316
|
return React.createElement(ThemeProvider, {
|
|
321
317
|
theme: theme
|
|
322
318
|
}, React.createElement(FullScreenContainer, null, React.createElement(FullScreen, {
|
|
@@ -343,8 +339,6 @@ export var MainLayout = function MainLayout(_ref5) {
|
|
|
343
339
|
}, showPageSelector && React.createElement(PageSelector, {
|
|
344
340
|
pages: pages,
|
|
345
341
|
onPageClick: handlePageClick,
|
|
346
|
-
onRecalc: onRecalc,
|
|
347
|
-
onSave: onSave,
|
|
348
342
|
saveActive: saveActive,
|
|
349
343
|
recalcActive: recalcActive,
|
|
350
344
|
onMetadataChange: onMetadataChange,
|
package/PageSelector/index.js
CHANGED
|
@@ -102,8 +102,6 @@ function isLocked(page) {
|
|
|
102
102
|
function PageSelector(_ref3) {
|
|
103
103
|
var pages = _ref3.pages,
|
|
104
104
|
onPageClick = _ref3.onPageClick,
|
|
105
|
-
onRecalc = _ref3.onRecalc,
|
|
106
|
-
onSave = _ref3.onSave,
|
|
107
105
|
recalcActive = _ref3.recalcActive,
|
|
108
106
|
saveActive = _ref3.saveActive,
|
|
109
107
|
onMetadataChange = _ref3.onMetadataChange,
|
|
@@ -120,15 +118,7 @@ function PageSelector(_ref3) {
|
|
|
120
118
|
})
|
|
121
119
|
}, React.createElement("div", {
|
|
122
120
|
className: "top-buttons"
|
|
123
|
-
}, React.createElement("
|
|
124
|
-
onClick: onRecalc,
|
|
125
|
-
disabled: !recalcActive,
|
|
126
|
-
className: "info"
|
|
127
|
-
}, "Recalc"), React.createElement("button", {
|
|
128
|
-
onClick: onSave,
|
|
129
|
-
disabled: !saveActive,
|
|
130
|
-
className: "success"
|
|
131
|
-
}, "Save"), React.createElement("div", {
|
|
121
|
+
}, React.createElement("div", {
|
|
132
122
|
className: "show-metadata-wrapper"
|
|
133
123
|
}, React.createElement("label", {
|
|
134
124
|
className: "switch mr-2"
|
|
@@ -166,8 +156,6 @@ function PageSelector(_ref3) {
|
|
|
166
156
|
|
|
167
157
|
PageSelector.defaultProps = {
|
|
168
158
|
onPageClick: function onPageClick() {},
|
|
169
|
-
onRecalc: function onRecalc() {},
|
|
170
|
-
onSave: function onSave() {},
|
|
171
159
|
recalcActive: false,
|
|
172
160
|
saveActive: false,
|
|
173
161
|
pageNumber: undefined
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@searpent/react-image-annotate",
|
|
3
|
-
"version": "2.0.
|
|
3
|
+
"version": "2.0.52",
|
|
4
4
|
"dependencies": {
|
|
5
5
|
"@editorjs/editorjs": "^2.25.0",
|
|
6
6
|
"@editorjs/paragraph": "^2.8.0",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"storybook": "start-storybook -p 9090 -s public",
|
|
60
60
|
"build": "npm run build:babel && cp ./package.json ./dist/package.json && cp ./README.md ./dist/README.md",
|
|
61
61
|
"dist": "npm run build && cd dist && npm publish",
|
|
62
|
-
"build:babel": "NODE_ENV=production babel ./src --ignore \"src/**/*.story.js\" --out-dir=./dist && rm dist/index.js && cp dist/lib.js dist/index.js && cp src/PageSelector/page-selector.css dist/PageSelector/ && cp src/Locker/locker.css dist/Locker/ && cp src/Editor/annotation-plugin/annotation.css dist/Editor/annotation-plugin",
|
|
62
|
+
"build:babel": "NODE_ENV=production babel ./src --ignore \"src/**/*.story.js\" --out-dir=./dist && rm dist/index.js && cp dist/lib.js dist/index.js && cp src/PageSelector/page-selector.css dist/PageSelector/ && cp src/Locker/locker.css dist/Locker/ && cp src/Errorer/errorer.css dist/Errorer/ && cp src/Editor/annotation-plugin/annotation.css dist/Editor/annotation-plugin",
|
|
63
63
|
"build-storybook": "build-storybook",
|
|
64
64
|
"build:gh-pages": "CI=false react-scripts build && mkdir build/demo && cp build/index.html build/demo/index.html",
|
|
65
65
|
"gh-pages": "npm run build:gh-pages && gh-pages -d build",
|