@searpent/react-image-annotate 2.0.11 → 2.0.12
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 +6 -0
- package/Annotator/reducers/general-reducer.js +9 -0
- package/GroupsEditorSidebarBox/index.js +1 -12
- package/ImageCanvas/index.js +3 -0
- package/MainLayout/index.js +8 -5
- package/PageSelector/index.js +60 -10
- package/RegionLabel/index.js +22 -3
- package/RegionShapes/index.js +1 -1
- package/RegionTags/index.js +2 -0
- package/package.json +1 -1
- package/Editor/annotation-plugin/annotation.css +0 -46
- package/PageSelector/page-selector.css +0 -96
- package/site.css +0 -5
|
@@ -776,6 +776,12 @@ var examplePhotos = [{
|
|
|
776
776
|
"metadata": [{
|
|
777
777
|
"key": "page",
|
|
778
778
|
"value": "1"
|
|
779
|
+
}, {
|
|
780
|
+
"key": "section",
|
|
781
|
+
"value": "lokální zpravodajství"
|
|
782
|
+
}, {
|
|
783
|
+
"key": "mutation",
|
|
784
|
+
"value": "hřensko"
|
|
779
785
|
}]
|
|
780
786
|
}, {
|
|
781
787
|
"id": "431fc636-d6d1-4e20-a35b-cc7a201c1833",
|
|
@@ -926,6 +926,15 @@ export default (function (state, action) {
|
|
|
926
926
|
}));
|
|
927
927
|
}
|
|
928
928
|
|
|
929
|
+
case "DELETE_GROUP":
|
|
930
|
+
{
|
|
931
|
+
var groupId = action.groupId;
|
|
932
|
+
if (groupId === null || groupId === undefined) return state;
|
|
933
|
+
return setIn(state, [].concat(_toConsumableArray(pathToActiveImage), ["regions"]), (activeImage.regions || []).filter(function (r) {
|
|
934
|
+
return r.groupId !== groupId;
|
|
935
|
+
}));
|
|
936
|
+
}
|
|
937
|
+
|
|
929
938
|
case "DELETE_SELECTED_REGION":
|
|
930
939
|
{
|
|
931
940
|
return setIn(state, [].concat(_toConsumableArray(pathToActiveImage), ["regions"]), (activeImage.regions || []).filter(function (r) {
|
|
@@ -22,11 +22,6 @@ var GroupItemDiv = styled("div")(function (_ref) {
|
|
|
22
22
|
|
|
23
23
|
var GroupItem = function GroupItem(_ref2) {
|
|
24
24
|
var group = _ref2.group;
|
|
25
|
-
// const handleDelete = e => {
|
|
26
|
-
// e.preventDefault()
|
|
27
|
-
// const { value } = e.target
|
|
28
|
-
// console.log("deleting group:", value)
|
|
29
|
-
// }
|
|
30
25
|
return React.createElement(GroupItemDiv, null, group);
|
|
31
26
|
};
|
|
32
27
|
|
|
@@ -44,13 +39,7 @@ var AddGroupFormDiv = styled("div")(function (_ref4) {
|
|
|
44
39
|
var theme = _ref4.theme;
|
|
45
40
|
return {
|
|
46
41
|
display: "flex",
|
|
47
|
-
flexDirection: "row"
|
|
48
|
-
// "& > label": {
|
|
49
|
-
// fontSize: "1rem",
|
|
50
|
-
// marginBottom: ".5rem",
|
|
51
|
-
// textTransform: "capitalize"
|
|
52
|
-
// }
|
|
53
|
-
|
|
42
|
+
flexDirection: "row"
|
|
54
43
|
};
|
|
55
44
|
});
|
|
56
45
|
|
package/ImageCanvas/index.js
CHANGED
|
@@ -96,6 +96,7 @@ export var ImageCanvas = function ImageCanvas(_ref2) {
|
|
|
96
96
|
onSelectRegion = _ref2.onSelectRegion,
|
|
97
97
|
onBeginMovePoint = _ref2.onBeginMovePoint,
|
|
98
98
|
onDeleteRegion = _ref2.onDeleteRegion,
|
|
99
|
+
onDeleteGroup = _ref2.onDeleteGroup,
|
|
99
100
|
onChangeVideoTime = _ref2.onChangeVideoTime,
|
|
100
101
|
onChangeVideoPlaying = _ref2.onChangeVideoPlaying,
|
|
101
102
|
onRegionClassAdded = _ref2.onRegionClassAdded,
|
|
@@ -349,6 +350,7 @@ export var ImageCanvas = function ImageCanvas(_ref2) {
|
|
|
349
350
|
onChangeRegion: onChangeRegion,
|
|
350
351
|
onCloseRegionEdit: onCloseRegionEdit,
|
|
351
352
|
onDeleteRegion: onDeleteRegion,
|
|
353
|
+
onDeleteGroup: onDeleteGroup,
|
|
352
354
|
layoutParams: layoutParams,
|
|
353
355
|
imageSrc: imageSrc,
|
|
354
356
|
RegionEditLabel: RegionEditLabel,
|
|
@@ -365,6 +367,7 @@ export var ImageCanvas = function ImageCanvas(_ref2) {
|
|
|
365
367
|
allowedTags: regionTagList,
|
|
366
368
|
onChange: onChangeRegion,
|
|
367
369
|
onDelete: onDeleteRegion,
|
|
370
|
+
onDeleteGroup: onDeleteGroup,
|
|
368
371
|
editing: true,
|
|
369
372
|
region: highlightedRegion,
|
|
370
373
|
imageSrc: imageSrc,
|
package/MainLayout/index.js
CHANGED
|
@@ -33,7 +33,7 @@ import { useSettings } from "../SettingsProvider";
|
|
|
33
33
|
import { withHotKeys } from "react-hotkeys";
|
|
34
34
|
import Editor from "../Editor";
|
|
35
35
|
import regionsToBlocks from '../utils/regions-to-blocks';
|
|
36
|
-
import
|
|
36
|
+
import PageSelector from "../PageSelector"; // import Fullscreen from "../Fullscreen"
|
|
37
37
|
|
|
38
38
|
var emptyArr = [];
|
|
39
39
|
var theme = createTheme();
|
|
@@ -209,6 +209,7 @@ export var MainLayout = function MainLayout(_ref4) {
|
|
|
209
209
|
onBeginRegionEdit: action("OPEN_REGION_EDITOR", "region"),
|
|
210
210
|
onCloseRegionEdit: action("CLOSE_REGION_EDITOR", "region"),
|
|
211
211
|
onDeleteRegion: action("DELETE_REGION", "region"),
|
|
212
|
+
onDeleteGroup: action("DELETE_GROUP", "groupId"),
|
|
212
213
|
onBeginBoxTransform: action("BEGIN_BOX_TRANSFORM", "box", "directions"),
|
|
213
214
|
onBeginMovePolygonPoint: action("BEGIN_MOVE_POLYGON_POINT", "polygon", "pointIndex"),
|
|
214
215
|
onBeginMoveKeypoint: action("BEGIN_MOVE_KEYPOINT", "region", "keypointId"),
|
|
@@ -280,7 +281,8 @@ export var MainLayout = function MainLayout(_ref4) {
|
|
|
280
281
|
isActive: idx === state.selectedImage,
|
|
281
282
|
pageNumber: (i === null || i === void 0 ? void 0 : (_i$metadata = i.metadata) === null || _i$metadata === void 0 ? void 0 : _i$metadata.find(function (md) {
|
|
282
283
|
return md.key === "page";
|
|
283
|
-
}).value) || null
|
|
284
|
+
}).value) || null,
|
|
285
|
+
metadata: i.metadata || []
|
|
284
286
|
};
|
|
285
287
|
});
|
|
286
288
|
|
|
@@ -314,13 +316,14 @@ export var MainLayout = function MainLayout(_ref4) {
|
|
|
314
316
|
display: 'flex',
|
|
315
317
|
flexDirection: 'row'
|
|
316
318
|
}
|
|
317
|
-
}, showPageSelector && React.createElement(
|
|
319
|
+
}, showPageSelector && React.createElement(PageSelector, {
|
|
318
320
|
pages: pages,
|
|
319
321
|
onPageClick: handlePageClick,
|
|
320
322
|
onRecalc: onRecalc,
|
|
321
323
|
onSave: onSave,
|
|
322
324
|
saveActive: saveActive,
|
|
323
|
-
recalcActive: recalcActive
|
|
325
|
+
recalcActive: recalcActive,
|
|
326
|
+
onMetadataChange: onMetadataChange
|
|
324
327
|
}), React.createElement(Workspace, {
|
|
325
328
|
allowFullscreen: true,
|
|
326
329
|
iconDictionary: iconDictionary,
|
|
@@ -356,7 +359,7 @@ export var MainLayout = function MainLayout(_ref4) {
|
|
|
356
359
|
onClickHeaderItem: onClickHeaderItem,
|
|
357
360
|
onClickIconSidebarItem: onClickIconSidebarItem,
|
|
358
361
|
selectedTools: [state.selectedTool, state.showTags && "show-tags", state.showMask && "show-mask"].filter(Boolean),
|
|
359
|
-
iconSidebarItems: [{
|
|
362
|
+
iconSidebarItems: !state.enabledTools ? [] : [{
|
|
360
363
|
name: "select",
|
|
361
364
|
helperText: "Select" + getHotkeyHelpText("select_tool"),
|
|
362
365
|
alwaysShowing: true
|
package/PageSelector/index.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import
|
|
1
|
+
import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
|
|
2
|
+
import React, { useState } from 'react';
|
|
2
3
|
import classnames from "classnames";
|
|
3
4
|
|
|
4
5
|
require('./page-selector.css').toString();
|
|
@@ -25,17 +26,26 @@ function PageThumbnail(_ref) {
|
|
|
25
26
|
}, pageNumber)));
|
|
26
27
|
}
|
|
27
28
|
|
|
28
|
-
function
|
|
29
|
+
function PageSelector(_ref2) {
|
|
29
30
|
var pages = _ref2.pages,
|
|
30
31
|
onPageClick = _ref2.onPageClick,
|
|
31
32
|
onRecalc = _ref2.onRecalc,
|
|
32
33
|
onSave = _ref2.onSave,
|
|
33
34
|
recalcActive = _ref2.recalcActive,
|
|
34
|
-
saveActive = _ref2.saveActive
|
|
35
|
+
saveActive = _ref2.saveActive,
|
|
36
|
+
onMetadataChange = _ref2.onMetadataChange;
|
|
37
|
+
|
|
38
|
+
var _useState = useState(false),
|
|
39
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
40
|
+
showMetadata = _useState2[0],
|
|
41
|
+
setShowMetadata = _useState2[1];
|
|
42
|
+
|
|
35
43
|
return React.createElement("div", {
|
|
36
|
-
className:
|
|
44
|
+
className: classnames('page-selector', {
|
|
45
|
+
'page-selector--opened': showMetadata
|
|
46
|
+
})
|
|
37
47
|
}, React.createElement("div", {
|
|
38
|
-
className: "
|
|
48
|
+
className: "top-buttons"
|
|
39
49
|
}, React.createElement("button", {
|
|
40
50
|
onClick: onRecalc,
|
|
41
51
|
disabled: !recalcActive,
|
|
@@ -47,18 +57,58 @@ function PagesSelector(_ref2) {
|
|
|
47
57
|
}, "Save")), React.createElement("div", {
|
|
48
58
|
className: "pages"
|
|
49
59
|
}, pages.map(function (page, idx) {
|
|
50
|
-
|
|
60
|
+
var _page$metadata;
|
|
61
|
+
|
|
62
|
+
return React.createElement("div", {
|
|
63
|
+
className: "page-thumbnail__wrapper"
|
|
64
|
+
}, React.createElement(PageThumbnail, {
|
|
51
65
|
key: page.id,
|
|
52
66
|
src: page.src,
|
|
53
67
|
isActive: page.isActive,
|
|
54
68
|
onClick: function onClick() {
|
|
55
69
|
return onPageClick(idx);
|
|
56
70
|
}
|
|
57
|
-
})
|
|
58
|
-
|
|
71
|
+
}), showMetadata && React.createElement("div", {
|
|
72
|
+
className: "page-thumbnail__metadata"
|
|
73
|
+
}, React.createElement("h5", null, "Metadata"), page === null || page === void 0 ? void 0 : (_page$metadata = page.metadata) === null || _page$metadata === void 0 ? void 0 : _page$metadata.map(function (_ref3) {
|
|
74
|
+
var key = _ref3.key,
|
|
75
|
+
value = _ref3.value;
|
|
76
|
+
return React.createElement(React.Fragment, null, React.createElement("label", {
|
|
77
|
+
htmlFor: key
|
|
78
|
+
}, key), React.createElement("input", {
|
|
79
|
+
id: key,
|
|
80
|
+
type: "text",
|
|
81
|
+
value: value,
|
|
82
|
+
onChange: function onChange(e) {
|
|
83
|
+
return onMetadataChange({
|
|
84
|
+
name: key,
|
|
85
|
+
value: e.target.value,
|
|
86
|
+
imageIndex: idx
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}));
|
|
90
|
+
})));
|
|
91
|
+
})), React.createElement("div", {
|
|
92
|
+
className: "bottom-buttons"
|
|
93
|
+
}, React.createElement("div", {
|
|
94
|
+
className: "show-metadata-wrapper"
|
|
95
|
+
}, React.createElement("label", {
|
|
96
|
+
className: "switch mr-2"
|
|
97
|
+
}, React.createElement("input", {
|
|
98
|
+
id: "show-metadata",
|
|
99
|
+
type: "checkbox",
|
|
100
|
+
value: showMetadata,
|
|
101
|
+
onChange: function onChange() {
|
|
102
|
+
return setShowMetadata(function (prev) {
|
|
103
|
+
return !prev;
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
}), React.createElement("span", {
|
|
107
|
+
className: "slider round"
|
|
108
|
+
})), React.createElement("label", null, "Metadata"))));
|
|
59
109
|
}
|
|
60
110
|
|
|
61
|
-
|
|
111
|
+
PageSelector.defaultProps = {
|
|
62
112
|
onPageClick: function onPageClick() {},
|
|
63
113
|
onRecalc: function onRecalc() {},
|
|
64
114
|
onSave: function onSave() {},
|
|
@@ -66,4 +116,4 @@ PagesSelector.defaultProps = {
|
|
|
66
116
|
saveActive: false,
|
|
67
117
|
pageNumber: undefined
|
|
68
118
|
};
|
|
69
|
-
export default
|
|
119
|
+
export default PageSelector;
|
package/RegionLabel/index.js
CHANGED
|
@@ -8,7 +8,8 @@ import styles from "./styles";
|
|
|
8
8
|
import classnames from "classnames";
|
|
9
9
|
import IconButton from "@mui/material/IconButton";
|
|
10
10
|
import Button from "@mui/material/Button";
|
|
11
|
-
import
|
|
11
|
+
import DeleteOutlineIcon from '@mui/icons-material/DeleteOutline';
|
|
12
|
+
import DeleteForeverIcon from '@mui/icons-material/DeleteForever';
|
|
12
13
|
import CheckIcon from "@mui/icons-material/Check";
|
|
13
14
|
import TextField from "@mui/material/TextField";
|
|
14
15
|
import Select from "react-select";
|
|
@@ -30,7 +31,8 @@ export var RegionLabel = function RegionLabel(_ref) {
|
|
|
30
31
|
onRegionClassAdded = _ref.onRegionClassAdded,
|
|
31
32
|
allowComments = _ref.allowComments,
|
|
32
33
|
hideNotEditingLabel = _ref.hideNotEditingLabel,
|
|
33
|
-
allowedGroups = _ref.allowedGroups
|
|
34
|
+
allowedGroups = _ref.allowedGroups,
|
|
35
|
+
onDeleteGroup = _ref.onDeleteGroup;
|
|
34
36
|
var classes = useStyles();
|
|
35
37
|
var commentInputRef = useRef(null);
|
|
36
38
|
|
|
@@ -106,7 +108,24 @@ export var RegionLabel = function RegionLabel(_ref) {
|
|
|
106
108
|
},
|
|
107
109
|
size: "small",
|
|
108
110
|
variant: "outlined"
|
|
109
|
-
}, React.createElement(
|
|
111
|
+
}, React.createElement(DeleteOutlineIcon, {
|
|
112
|
+
style: {
|
|
113
|
+
marginTop: -8,
|
|
114
|
+
width: 16,
|
|
115
|
+
height: 16
|
|
116
|
+
}
|
|
117
|
+
})), React.createElement(IconButton, {
|
|
118
|
+
onClick: function onClick() {
|
|
119
|
+
return onDeleteGroup(region.groupId);
|
|
120
|
+
},
|
|
121
|
+
tabIndex: -1,
|
|
122
|
+
style: {
|
|
123
|
+
width: 22,
|
|
124
|
+
height: 22
|
|
125
|
+
},
|
|
126
|
+
size: "small",
|
|
127
|
+
variant: "outlined"
|
|
128
|
+
}, React.createElement(DeleteForeverIcon, {
|
|
110
129
|
style: {
|
|
111
130
|
marginTop: -8,
|
|
112
131
|
width: 16,
|
package/RegionShapes/index.js
CHANGED
|
@@ -56,7 +56,7 @@ var RegionComponents = {
|
|
|
56
56
|
width: Math.max(region.w * iw, 0),
|
|
57
57
|
height: Math.max(region.h * ih, 0),
|
|
58
58
|
stroke: colorAlpha(clsColor(region.cls), 0.85),
|
|
59
|
-
fill: region.groupHighlighted ? colorAlpha(
|
|
59
|
+
fill: region.groupHighlighted ? colorAlpha(clsColor(region.cls), 0.15) : colorAlpha(groupColor(region.groupId), 0.5)
|
|
60
60
|
}));
|
|
61
61
|
} else {
|
|
62
62
|
return React.createElement("g", {
|
package/RegionTags/index.js
CHANGED
|
@@ -29,6 +29,7 @@ export var RegionTags = function RegionTags(_ref) {
|
|
|
29
29
|
onChangeRegion = _ref.onChangeRegion,
|
|
30
30
|
onCloseRegionEdit = _ref.onCloseRegionEdit,
|
|
31
31
|
onDeleteRegion = _ref.onDeleteRegion,
|
|
32
|
+
onDeleteGroup = _ref.onDeleteGroup,
|
|
32
33
|
layoutParams = _ref.layoutParams,
|
|
33
34
|
imageSrc = _ref.imageSrc,
|
|
34
35
|
RegionEditLabel = _ref.RegionEditLabel,
|
|
@@ -128,6 +129,7 @@ export var RegionTags = function RegionTags(_ref) {
|
|
|
128
129
|
onChange: onChangeRegion,
|
|
129
130
|
onClose: onCloseRegionEdit,
|
|
130
131
|
onDelete: onDeleteRegion,
|
|
132
|
+
onDeleteGroup: onDeleteGroup,
|
|
131
133
|
editing: region.editingLabels,
|
|
132
134
|
region: region,
|
|
133
135
|
regions: regions,
|
package/package.json
CHANGED
|
@@ -1,46 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin styles
|
|
3
|
-
*/
|
|
4
|
-
.ce-header {
|
|
5
|
-
padding: 0.6em 0 3px;
|
|
6
|
-
margin: 0;
|
|
7
|
-
line-height: 1.25em;
|
|
8
|
-
outline: none;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
.ce-header p,
|
|
12
|
-
.ce-header div {
|
|
13
|
-
padding: 0 !important;
|
|
14
|
-
margin: 0 !important;
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* Styles for Plugin icon in Toolbar
|
|
19
|
-
*/
|
|
20
|
-
.ce-header__icon {}
|
|
21
|
-
|
|
22
|
-
.ce-header[contentEditable=true][data-placeholder]::before {
|
|
23
|
-
position: absolute;
|
|
24
|
-
content: attr(data-placeholder);
|
|
25
|
-
color: #707684;
|
|
26
|
-
font-weight: normal;
|
|
27
|
-
display: none;
|
|
28
|
-
cursor: text;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
.ce-header[contentEditable=true][data-placeholder]:empty::before {
|
|
32
|
-
display: block;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
.ce-header[contentEditable=true][data-placeholder]:empty:focus::before {
|
|
36
|
-
display: none;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/* Custom overwrite */
|
|
40
|
-
.cdx-settings-button {
|
|
41
|
-
width: 100% !important;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
.ce-settings__plugin-zone {
|
|
45
|
-
padding: 0 .25rem;
|
|
46
|
-
}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
.page-selector {
|
|
2
|
-
height: 100vh;
|
|
3
|
-
overflow-y: scroll;
|
|
4
|
-
width: 10%;
|
|
5
|
-
}
|
|
6
|
-
|
|
7
|
-
.pages {
|
|
8
|
-
list-style: none;
|
|
9
|
-
padding: 1rem;
|
|
10
|
-
}
|
|
11
|
-
|
|
12
|
-
.page-thumbnail {
|
|
13
|
-
margin-bottom: 1rem;
|
|
14
|
-
border-radius: .25rem !important;
|
|
15
|
-
overflow: hidden;
|
|
16
|
-
filter: grayscale(1);
|
|
17
|
-
transition: transform .2s;
|
|
18
|
-
opacity: .5;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.page-thumbnail:hover {
|
|
22
|
-
box-shadow: 0 0 2rem 0 #8898aa !important;
|
|
23
|
-
filter: grayscale(0);
|
|
24
|
-
cursor: pointer;
|
|
25
|
-
opacity: 1;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.page-thumbnail-is-active {
|
|
29
|
-
filter: grayscale(0);
|
|
30
|
-
opacity: 1;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.page-thumbnail img {
|
|
34
|
-
width: 100%;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.bottom-buttons {
|
|
38
|
-
background: linear-gradient(#8898aa, rgba(255, 255, 255, 0));
|
|
39
|
-
position: sticky;
|
|
40
|
-
top: 0;
|
|
41
|
-
display: flex;
|
|
42
|
-
flex-direction: column;
|
|
43
|
-
padding: 1rem;
|
|
44
|
-
margin-bottom: 1rem;
|
|
45
|
-
z-index: 100;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.bottom-buttons button {
|
|
49
|
-
margin-bottom: 1rem;
|
|
50
|
-
width: 100%;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
.bottom-buttons button:hover {
|
|
54
|
-
cursor: pointer;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
.bottom-buttons button:disabled {
|
|
58
|
-
pointer-events: none;
|
|
59
|
-
opacity: .5;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
.bottom-buttons button.info {
|
|
63
|
-
background-color: transparent;
|
|
64
|
-
border-radius: 0.5rem;
|
|
65
|
-
background-image: linear-gradient(310deg, #627594, #a8b8d8);
|
|
66
|
-
color: white;
|
|
67
|
-
border: none;
|
|
68
|
-
padding: 0.5rem 0;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
.bottom-buttons button.success {
|
|
72
|
-
color: white;
|
|
73
|
-
background-image: linear-gradient(310deg, #2dce89, #2dcecc);
|
|
74
|
-
border-radius: 0.5rem;
|
|
75
|
-
border: none;
|
|
76
|
-
padding: 0.5rem 0;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
.page-number-wrapper {
|
|
81
|
-
position: absolute;
|
|
82
|
-
bottom: 0;
|
|
83
|
-
width: 100%;
|
|
84
|
-
height: 10%;
|
|
85
|
-
z-index: 100;
|
|
86
|
-
display: flex;
|
|
87
|
-
justify-content: center;
|
|
88
|
-
align-items: center;
|
|
89
|
-
background: linear-gradient(rgba(255, 255, 255, 0), #8898aa);
|
|
90
|
-
padding: .5rem 0;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
.page-number {
|
|
94
|
-
font-size: 1.5rem;
|
|
95
|
-
font-weight: 800;
|
|
96
|
-
}
|