@cu-mkp/editioncrafter 1.3.0-beta.1 → 1.3.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/README.md +7 -0
  2. package/dist/editioncrafter.js +34747 -31554
  3. package/dist/es/src/EditionCrafter/component/DiploMatic.js +19 -17
  4. package/dist/es/src/EditionCrafter/component/DocumentView.js +13 -9
  5. package/dist/es/src/EditionCrafter/component/EmptyPaneView.js +22 -0
  6. package/dist/es/src/EditionCrafter/component/ImageView.js +61 -40
  7. package/dist/es/src/EditionCrafter/component/Navigation.js +1 -0
  8. package/dist/es/src/EditionCrafter/component/SplitPaneView.js +10 -9
  9. package/dist/es/src/EditionCrafter/component/TagToolbar.jsx +14 -4
  10. package/dist/es/src/EditionCrafter/context/TagFilter.jsx +22 -11
  11. package/dist/es/src/EditionCrafter/context/TagFilterContext.js +2 -1
  12. package/dist/es/src/EditionCrafter/index.jsx +31 -0
  13. package/dist/es/src/EditionCrafter/model/Folio.js +27 -1
  14. package/dist/es/src/EditionCrafter/saga/RouteListenerSaga.js +22 -7
  15. package/dist/es/src/EditionCrafter/scss/_imageView.scss +1 -1
  16. package/dist/es/src/RecordList/component/PhraseListTable.jsx +108 -0
  17. package/dist/es/src/RecordList/component/Record.jsx +38 -2
  18. package/dist/es/src/RecordList/component/RecordListView.jsx +1 -1
  19. package/dist/es/src/RecordList/component/Sidebar.jsx +1 -1
  20. package/dist/es/src/RecordList/component/SidebarTagList.jsx +1 -1
  21. package/dist/es/src/RecordList/index.jsx +10 -5
  22. package/dist/es/src/RecordList/styles/base.css +2 -17
  23. package/dist/es/src/RecordList/styles/record.css +92 -4
  24. package/dist/es/src/TagExplore/assets/InsertLeft.jsx +18 -0
  25. package/dist/es/src/TagExplore/assets/InsertRight.jsx +18 -0
  26. package/dist/es/src/TagExplore/assets/Left.jsx +17 -0
  27. package/dist/es/src/TagExplore/assets/Right.jsx +17 -0
  28. package/dist/es/src/TagExplore/assets/insert_left.svg +12 -0
  29. package/dist/es/src/TagExplore/assets/insert_right.svg +12 -0
  30. package/dist/es/src/TagExplore/assets/left.svg +11 -0
  31. package/dist/es/src/TagExplore/assets/right.svg +11 -0
  32. package/dist/es/src/TagExplore/components/DocumentDetail.jsx +224 -0
  33. package/dist/es/src/TagExplore/components/NarrowSidebar.jsx +35 -0
  34. package/dist/es/src/TagExplore/components/SurfaceBrowser.jsx +176 -0
  35. package/dist/es/src/TagExplore/components/TagExploreSidebar.jsx +55 -0
  36. package/dist/es/src/TagExplore/components/TagFilters.jsx +106 -0
  37. package/dist/es/src/TagExplore/index.jsx +109 -0
  38. package/dist/es/src/TagExplore/styles/base.css +192 -0
  39. package/dist/es/src/{RecordList/component → common/components}/Pill.jsx +2 -0
  40. package/dist/es/src/common/components/Pill.style.css +16 -0
  41. package/dist/es/src/index.jsx +3 -27
  42. package/package.json +2 -28
  43. /package/dist/es/src/{RecordList/component → common/components}/Loading.jsx +0 -0
  44. /package/dist/es/src/{RecordList → common}/lib/sql.js +0 -0
@@ -0,0 +1,108 @@
1
+ import { useContext, useMemo, useState } from 'react'
2
+ import Pill from '../../common/components/Pill'
3
+ import FilterContext from '../context/FilterContext'
4
+
5
+ const MAX_PHRASE_LENGTH = 20
6
+
7
+ function PhraseList(props) {
8
+ const phraseStr = useMemo(() => {
9
+ const arr = []
10
+
11
+ props.phrases.forEach((phrase) => {
12
+ if (phrase.layer !== props.layer) {
13
+ return
14
+ }
15
+
16
+ if (arr.includes(phrase.name)) {
17
+ return
18
+ }
19
+
20
+ if (phrase.name.length > MAX_PHRASE_LENGTH) {
21
+ arr.push(`${phrase.name.slice(0, MAX_PHRASE_LENGTH)}...`)
22
+ }
23
+ else {
24
+ arr.push(phrase.name)
25
+ }
26
+ })
27
+
28
+ return arr.join('; ')
29
+ }, [props.layer, props.phrases])
30
+
31
+ return <p>{phraseStr}</p>
32
+ }
33
+
34
+ function PhraseListTable(props) {
35
+ const ctx = useContext(FilterContext)
36
+
37
+ const [layer, setLayer] = useState(Object.keys(ctx.layers)[0])
38
+
39
+ const tagsToShow = useMemo(
40
+ () => Object.keys(props.tagCounts).filter(tagName => props.tagCounts[tagName].phrases.some(phrase => phrase.layer === layer)),
41
+ [layer, props.tagCounts],
42
+ )
43
+
44
+ return (
45
+ <div
46
+ className="phrase-list-table-container"
47
+ style={{ display: props.visible ? 'initial' : 'none' }}
48
+ >
49
+ <div className="layer-select-container">
50
+ <span>Layer</span>
51
+ <select
52
+ className="layer-select"
53
+ onChange={e => setLayer(e.target.value)}
54
+ >
55
+ {Object.keys(ctx.layers).map(xmlId => (
56
+ <option
57
+ key={xmlId}
58
+ value={xmlId}
59
+ >
60
+ {ctx.layers[xmlId]}
61
+ </option>
62
+ ))}
63
+ </select>
64
+ </div>
65
+ <table className="phrase-list-table">
66
+ <thead>
67
+ <tr>
68
+ <th>Tags for phrases</th>
69
+ <th>
70
+ <span>References in this layer</span>
71
+ </th>
72
+ </tr>
73
+ </thead>
74
+ <tbody>
75
+ {tagsToShow.length === 0 && (
76
+ <tr>
77
+ <td colSpan={2}>
78
+ <div className="empty-table-container">
79
+ No tags in this layer.
80
+ </div>
81
+ </td>
82
+ </tr>
83
+ )}
84
+ {tagsToShow.map(tag => (
85
+ <tr key={tag}>
86
+ <td>
87
+ <Pill
88
+ label={tag}
89
+ isActive={ctx.tags.includes(props.tagCounts[tag].id)}
90
+ >
91
+ <span className="tag-count">{props.tagCounts[tag].count}</span>
92
+ </Pill>
93
+ </td>
94
+ <td>
95
+ <PhraseList
96
+ layer={layer}
97
+ phrases={props.tagCounts[tag].phrases}
98
+ />
99
+ </td>
100
+ </tr>
101
+ ))}
102
+ </tbody>
103
+ </table>
104
+ </div>
105
+ )
106
+ }
107
+
108
+ export default PhraseListTable
@@ -1,6 +1,8 @@
1
- import { useContext, useMemo } from 'react'
1
+ import { useContext, useMemo, useState } from 'react'
2
+ import { IoChevronDownOutline, IoChevronUpOutline } from 'react-icons/io5'
3
+ import Pill from '../../common/components/Pill'
2
4
  import FilterContext from '../context/FilterContext'
3
- import Pill from './Pill'
5
+ import PhraseList from './PhraseListTable'
4
6
 
5
7
  function getRecordName(div) {
6
8
  if (div.element_name) {
@@ -22,7 +24,24 @@ function getSurfaceLink(baseUrl, div, cats, tags) {
22
24
  )
23
25
  }
24
26
 
27
+ function PhraseToggle(props) {
28
+ return (
29
+ <button
30
+ aria-label="Toggle phrases"
31
+ className="phrase-toggle"
32
+ onClick={props.onClick}
33
+ type="button"
34
+ >
35
+ {props.toggled
36
+ ? <IoChevronUpOutline />
37
+ : <IoChevronDownOutline />}
38
+ </button>
39
+ )
40
+ }
41
+
25
42
  function Record(props) {
43
+ const [showPhrases, setShowPhrases] = useState(false)
44
+
26
45
  const ctx = useContext(FilterContext)
27
46
 
28
47
  const categories = useMemo(
@@ -38,11 +57,19 @@ function Record(props) {
38
57
  tags.forEach((tag) => {
39
58
  if (result[tag.name]) {
40
59
  result[tag.name].count++
60
+ result[tag.name].phrases.push({
61
+ name: el.element_name,
62
+ layer: el.layer_xml_id,
63
+ })
41
64
  }
42
65
  else {
43
66
  result[tag.name] = {
44
67
  id: tag.xml_id,
45
68
  count: 1,
69
+ phrases: [{
70
+ name: el.element_name,
71
+ layer: el.layer_xml_id,
72
+ }],
46
73
  }
47
74
  }
48
75
  })
@@ -74,7 +101,16 @@ function Record(props) {
74
101
  <span className="tag-count">{tagCounts[tagName].count}</span>
75
102
  </Pill>
76
103
  ))}
104
+ <PhraseToggle
105
+ toggled={showPhrases}
106
+ onClick={() => setShowPhrases(!showPhrases)}
107
+ />
77
108
  </div>
109
+ <PhraseList
110
+ tagCounts={tagCounts}
111
+ elements={props.childElements}
112
+ visible={showPhrases}
113
+ />
78
114
  </div>
79
115
  )
80
116
  }
@@ -1,6 +1,6 @@
1
1
  import { useContext, useMemo } from 'react'
2
+ import { getObjs } from '../../common/lib/sql'
2
3
  import FilterContext from '../context/FilterContext'
3
- import { getObjs } from '../lib/sql'
4
4
  import Record from './Record'
5
5
 
6
6
  function cleanUpTagIds(obj) {
@@ -1,5 +1,5 @@
1
1
  import { useMemo } from 'react'
2
- import { getObjs } from '../lib/sql'
2
+ import { getObjs } from '../../common/lib/sql'
3
3
  import CollapsibleMenu from './CollapsibleMenu'
4
4
  import SidebarTagList from './SidebarTagList'
5
5
 
@@ -1,7 +1,7 @@
1
1
  import { useContext, useMemo } from 'react'
2
2
  import { IoCheckmarkSharp } from 'react-icons/io5'
3
+ import Pill from '../../common/components/Pill'
3
4
  import FilterContext from '../context/FilterContext'
4
- import Pill from './Pill'
5
5
 
6
6
  function TagPill(props) {
7
7
  const { categories, toggleCategoryFilter, tags, toggleTagFilter } = useContext(FilterContext)
@@ -1,9 +1,9 @@
1
1
  import { useCallback, useEffect, useMemo, useState } from 'react'
2
2
  import initSqlJs from 'sql.js'
3
- import Loading from './component/Loading'
3
+ import sqlJsInfo from 'sql.js/package.json'
4
+ import Loading from '../common/components/Loading'
4
5
  import RecordListView from './component/RecordListView'
5
6
  import Sidebar from './component/Sidebar'
6
-
7
7
  import FilterContext from './context/FilterContext'
8
8
 
9
9
  import './styles/base.css'
@@ -26,7 +26,7 @@ async function initDb(url) {
26
26
  const arr = new Uint8Array(buf)
27
27
 
28
28
  const SQL = await initSqlJs({
29
- locateFile: file => `https://sql.js.org/dist/${file}`,
29
+ locateFile: file => `https://cdnjs.cloudflare.com/ajax/libs/sql.js/${sqlJsInfo.version}/${file}`,
30
30
  })
31
31
 
32
32
  const db = new SQL.Database(arr)
@@ -56,7 +56,8 @@ function RecordList(props) {
56
56
  ...filters,
57
57
  toggleCategoryFilter,
58
58
  toggleTagFilter,
59
- }), [filters, toggleCategoryFilter, toggleTagFilter])
59
+ layers: props.layers,
60
+ }), [filters, toggleCategoryFilter, toggleTagFilter, props.layers])
60
61
 
61
62
  useEffect(() => {
62
63
  const loadDb = async () => {
@@ -83,7 +84,11 @@ function RecordList(props) {
83
84
  <FilterContext.Provider value={initialContext}>
84
85
  <div className="editioncrafter-record-list">
85
86
  <Sidebar db={db} />
86
- <RecordListView db={db} recordLabel={props.recordLabel} viewerUrl={props.viewerUrl} />
87
+ <RecordListView
88
+ db={db}
89
+ recordLabel={props.recordLabel}
90
+ viewerUrl={props.viewerUrl}
91
+ />
87
92
  </div>
88
93
  </FilterContext.Provider>
89
94
  )
@@ -3,7 +3,8 @@
3
3
  .editioncrafter-record-list {
4
4
  width: 100%;
5
5
  height: 100%;
6
- display: flex;
6
+ display: grid;
7
+ grid-template-columns: auto 1fr;
7
8
  gap: 20px;
8
9
  font-family: 'Inter', sans-serif;
9
10
  margin: 0;
@@ -60,19 +61,3 @@
60
61
  background-color: #ffffff;
61
62
  }
62
63
 
63
- .editioncrafter-record-list .pill {
64
- appearance: none;
65
- display: flex;
66
- height: 32px;
67
- padding: 4px 12px;
68
- justify-content: center;
69
- align-items: center;
70
- gap: 4px;
71
- border-radius: 50px;
72
- border: 1px solid #CEDAE7;
73
- background: #CEDAE7;
74
- color: #0A0A0A;
75
- font-family: Inter;
76
- font-size: 14px;
77
- font-weight: 500;
78
- }
@@ -36,13 +36,34 @@
36
36
  align-items: center;
37
37
  font-size: 14px;
38
38
  font-weight: 500;
39
+ position: relative;
39
40
  }
40
41
 
41
42
  .editioncrafter-record-list .record-list-view .record-box .tag-list .tag-list-label {
42
43
  font-weight: 600;
43
44
  }
44
45
 
45
- .editioncrafter-record-list .record-list-view .record-box .tag-list .pill {
46
+ .editioncrafter-record-list .record-list-view .record-box .phrase-toggle {
47
+ position: absolute;
48
+ right: 0;
49
+ bottom: 2px;
50
+ background: #07529A;
51
+ border: none;
52
+ border-radius: 5px;
53
+ color: white;
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ padding: 6px;
58
+ }
59
+
60
+ .editioncrafter-record-list .record-list-view .record-box .phrase-toggle svg {
61
+ height: 18px;
62
+ width: 18px;
63
+ }
64
+
65
+ .editioncrafter-record-list .record-list-view .record-box .tag-list .pill,
66
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table .pill {
46
67
  background: #ffffff;
47
68
  display: flex;
48
69
  height: 32px;
@@ -59,7 +80,7 @@
59
80
  color: #ffffff
60
81
  }
61
82
 
62
- .editioncrafter-record-list .record-list-view .record-box .tag-list .pill .tag-count {
83
+ .editioncrafter-record-list .record-list-view .record-box .pill .tag-count {
63
84
  display: inline-flex;
64
85
  height: 24px;
65
86
  min-width: 24px;
@@ -73,12 +94,79 @@
73
94
  background: #B5C8DC99;
74
95
  }
75
96
 
76
- .editioncrafter-record-list .record-list-view .record-box .tag-list .pill.active {
97
+ .editioncrafter-record-list .record-list-view .record-box .pill.active {
77
98
  border: 1px solid #07529A;
78
99
  color: #07529A;
79
100
  }
80
101
 
81
- .editioncrafter-record-list .record-list-view .record-box .tag-list .pill.active .tag-count {
102
+ .editioncrafter-record-list .record-list-view .record-box .pill.active .tag-count {
82
103
  background: #07529A;
83
104
  color: #ffffff;
84
105
  }
106
+
107
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table-container {
108
+ position: relative;
109
+ }
110
+
111
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table-container .layer-select-container {
112
+ position: absolute;
113
+ right: 10px;
114
+ top: 0;
115
+ display: flex;
116
+ align-items: center;
117
+ justify-content: center;
118
+ gap: 12px;
119
+ font-size: 13px;
120
+ font-style: normal;
121
+ font-weight: 400;
122
+ line-height: 140%;
123
+ }
124
+
125
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table-container button:hover {
126
+ cursor: default;
127
+ }
128
+
129
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table-container .layer-select {
130
+ display: flex;
131
+ height: 32px;
132
+ padding: 0px 12px;
133
+ justify-content: space-between;
134
+ align-items: center;
135
+ font-size: 14px;
136
+ border-radius: 4px;
137
+ border: 1px solid#E1E3E6;
138
+ background:#F3F4F7;
139
+ }
140
+
141
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table-container .layer-select:hover {
142
+ cursor: pointer;
143
+ }
144
+
145
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table th {
146
+ font-weight: 600;
147
+ }
148
+
149
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table {
150
+ text-align: left;
151
+ border-collapse: collapse;
152
+ font-size: 14px;
153
+ width: 100%;
154
+ }
155
+
156
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table tr {
157
+ border-bottom: 1px solid #E1E3E6;
158
+ }
159
+
160
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table td,
161
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table th {
162
+ padding: 12px;
163
+
164
+ }
165
+
166
+ .editioncrafter-record-list .record-list-view .record-box .phrase-list-table .empty-table-container {
167
+ height: 80px;
168
+ width: 100%;
169
+ display: flex;
170
+ align-items: center;
171
+ justify-content: center;
172
+ }
@@ -0,0 +1,18 @@
1
+ function InsertLeft() {
2
+ return (
3
+ <svg width="28" height="21" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
4
+ <g id="fluent:document-one-page-20-regular" clipPath="url(#clip0_527_47401)">
5
+ <path id="Vector" d="M1.26984 0H6.34921C6.68599 0 7.00898 0.158035 7.24712 0.43934C7.48526 0.720644 7.61905 1.10218 7.61905 1.5V10.5C7.61905 10.8978 7.48526 11.2794 7.24712 11.5607C7.00898 11.842 6.68599 12 6.34921 12H1.26984C0.933058 12 0.610069 11.842 0.371928 11.5607C0.133786 11.2794 0 10.8978 0 10.5V1.5C0 1.10218 0.133786 0.720644 0.371928 0.43934C0.610069 0.158035 0.933058 0 1.26984 0ZM1.26984 0.75C1.10145 0.75 0.939955 0.829018 0.820885 0.96967C0.701814 1.11032 0.634921 1.30109 0.634921 1.5V10.5C0.634921 10.6989 0.701814 10.8897 0.820885 11.0303C0.939955 11.171 1.10145 11.25 1.26984 11.25H6.34921C6.5176 11.25 6.67909 11.171 6.79816 11.0303C6.91723 10.8897 6.98413 10.6989 6.98413 10.5V1.5C6.98413 1.30109 6.91723 1.11032 6.79816 0.96967C6.67909 0.829018 6.5176 0.75 6.34921 0.75H1.26984Z" fill="white" />
6
+ <path id="Vector_2" opacity="0.4" d="M9.6507 0H14.7301C15.0668 0 15.3898 0.158035 15.628 0.43934C15.8661 0.720644 15.9999 1.10218 15.9999 1.5V10.5C15.9999 10.8978 15.8661 11.2794 15.628 11.5607C15.3898 11.842 15.0668 12 14.7301 12H9.6507C9.31392 12 8.99093 11.842 8.75279 11.5607C8.51465 11.2794 8.38086 10.8978 8.38086 10.5V1.5C8.38086 1.10218 8.51465 0.720644 8.75279 0.43934C8.99093 0.158035 9.31392 0 9.6507 0ZM9.6507 0.75C9.48231 0.75 9.32081 0.829018 9.20174 0.96967C9.08267 1.11032 9.01578 1.30109 9.01578 1.5V10.5C9.01578 10.6989 9.08267 10.8897 9.20174 11.0303C9.32081 11.171 9.48231 11.25 9.6507 11.25H14.7301C14.8985 11.25 15.06 11.171 15.179 11.0303C15.2981 10.8897 15.365 10.6989 15.365 10.5V1.5C15.365 1.30109 15.2981 1.11032 15.179 0.96967C15.06 0.829018 14.8985 0.75 14.7301 0.75H9.6507Z" fill="white" />
7
+ <path id="Vector_3" d="M5.82826 6.11765C5.82826 6.16445 5.81101 6.20934 5.7803 6.24243C5.74959 6.27553 5.70794 6.29412 5.66451 6.29412H4.02709V8.05882C4.02709 8.10563 4.00984 8.15051 3.97913 8.18361C3.94842 8.2167 3.90677 8.23529 3.86335 8.23529C3.81992 8.23529 3.77827 8.2167 3.74756 8.18361C3.71686 8.15051 3.6996 8.10563 3.6996 8.05882V6.29412H2.06218C2.01875 6.29412 1.9771 6.27553 1.9464 6.24243C1.91569 6.20934 1.89844 6.16445 1.89844 6.11765C1.89844 6.07084 1.91569 6.02596 1.9464 5.99286C1.9771 5.95977 2.01875 5.94118 2.06218 5.94118H3.6996V4.17647C3.6996 4.12967 3.71686 4.08478 3.74756 4.05169C3.77827 4.01859 3.81992 4 3.86335 4C3.90677 4 3.94842 4.01859 3.97913 4.05169C4.00984 4.08478 4.02709 4.12967 4.02709 4.17647V5.94118H5.66451C5.70794 5.94118 5.74959 5.95977 5.7803 5.99286C5.81101 6.02596 5.82826 6.07084 5.82826 6.11765Z" fill="white" />
8
+ </g>
9
+ <defs>
10
+ <clipPath id="clip0_527_47401">
11
+ <rect width="16" height="12" fill="white" />
12
+ </clipPath>
13
+ </defs>
14
+ </svg>
15
+ )
16
+ }
17
+
18
+ export default InsertLeft
@@ -0,0 +1,18 @@
1
+ function InsertRight() {
2
+ return (
3
+ <svg width="28" height="21" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
4
+ <g clipPath="url(#clip0_527_47406)">
5
+ <path opacity="0.4" d="M1.27 0H6.35C6.68682 0 7.00985 0.158035 7.24802 0.43934C7.4862 0.720644 7.62 1.10218 7.62 1.5V10.5C7.62 10.8978 7.4862 11.2794 7.24802 11.5607C7.00985 11.842 6.68682 12 6.35 12H1.27C0.933175 12 0.610146 11.842 0.371974 11.5607C0.133803 11.2794 0 10.8978 0 10.5V1.5C0 1.10218 0.133803 0.720644 0.371974 0.43934C0.610146 0.158035 0.933175 0 1.27 0ZM1.27 0.75C1.10159 0.75 0.940073 0.829018 0.820987 0.96967C0.701902 1.11032 0.635 1.30109 0.635 1.5V10.5C0.635 10.6989 0.701902 10.8897 0.820987 11.0303C0.940073 11.171 1.10159 11.25 1.27 11.25H6.35C6.51841 11.25 6.67993 11.171 6.79901 11.0303C6.9181 10.8897 6.985 10.6989 6.985 10.5V1.5C6.985 1.30109 6.9181 1.11032 6.79901 0.96967C6.67993 0.829018 6.51841 0.75 6.35 0.75H1.27Z" fill="white" />
6
+ <path d="M9.64988 0H14.7299C15.0667 0 15.3897 0.158035 15.6279 0.43934C15.8661 0.720644 15.9999 1.10218 15.9999 1.5V10.5C15.9999 10.8978 15.8661 11.2794 15.6279 11.5607C15.3897 11.842 15.0667 12 14.7299 12H9.64988C9.31306 12 8.99003 11.842 8.75186 11.5607C8.51369 11.2794 8.37988 10.8978 8.37988 10.5V1.5C8.37988 1.10218 8.51369 0.720644 8.75186 0.43934C8.99003 0.158035 9.31306 0 9.64988 0ZM9.64988 0.75C9.48147 0.75 9.31996 0.829018 9.20087 0.96967C9.08178 1.11032 9.01488 1.30109 9.01488 1.5V10.5C9.01488 10.6989 9.08178 10.8897 9.20087 11.0303C9.31996 11.171 9.48147 11.25 9.64988 11.25H14.7299C14.8983 11.25 15.0598 11.171 15.1789 11.0303C15.298 10.8897 15.3649 10.6989 15.3649 10.5V1.5C15.3649 1.30109 15.298 1.11032 15.1789 0.96967C15.0598 0.829018 14.8983 0.75 14.7299 0.75H9.64988Z" fill="white" />
7
+ <path d="M14.2096 6.10028C14.2096 6.1404 14.1924 6.17887 14.1616 6.20724C14.1309 6.23561 14.0893 6.25154 14.0458 6.25154H12.4082V7.76415C12.4082 7.80426 12.391 7.84274 12.3603 7.87111C12.3295 7.89947 12.2879 7.91541 12.2445 7.91541C12.201 7.91541 12.1594 7.89947 12.1287 7.87111C12.0979 7.84274 12.0807 7.80426 12.0807 7.76415V6.25154H10.4431C10.3996 6.25154 10.358 6.23561 10.3273 6.20724C10.2966 6.17887 10.2793 6.1404 10.2793 6.10028C10.2793 6.06017 10.2966 6.02169 10.3273 5.99332C10.358 5.96496 10.3996 5.94902 10.4431 5.94902H12.0807V4.43642C12.0807 4.3963 12.0979 4.35783 12.1287 4.32946C12.1594 4.30109 12.201 4.28516 12.2445 4.28516C12.2879 4.28516 12.3295 4.30109 12.3603 4.32946C12.391 4.35783 12.4082 4.3963 12.4082 4.43642V5.94902H14.0458C14.0893 5.94902 14.1309 5.96496 14.1616 5.99332C14.1924 6.02169 14.2096 6.06017 14.2096 6.10028Z" fill="white" />
8
+ </g>
9
+ <defs>
10
+ <clipPath id="clip0_527_47406">
11
+ <rect width="16" height="12" fill="white" />
12
+ </clipPath>
13
+ </defs>
14
+ </svg>
15
+ )
16
+ }
17
+
18
+ export default InsertRight
@@ -0,0 +1,17 @@
1
+ function Left() {
2
+ return (
3
+ <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg">
4
+ <g clipPath="url(#clip0_527_47371)">
5
+ <path d="M1.57302 0H6.01747C6.31215 0 6.59477 0.144866 6.80314 0.402728C7.01152 0.660591 7.12858 1.01033 7.12858 1.375V9.625C7.12858 9.98967 7.01152 10.3394 6.80314 10.5973C6.59477 10.8551 6.31215 11 6.01747 11H1.57302C1.27834 11 0.995725 10.8551 0.787351 10.5973C0.578977 10.3394 0.461914 9.98967 0.461914 9.625V1.375C0.461914 1.01033 0.578977 0.660591 0.787351 0.402728C0.995725 0.144866 1.27834 0 1.57302 0ZM1.57302 0.6875C1.42568 0.6875 1.28437 0.759933 1.18019 0.888864C1.076 1.0178 1.01747 1.19266 1.01747 1.375V9.625C1.01747 9.80734 1.076 9.98221 1.18019 10.1111C1.28437 10.2401 1.42568 10.3125 1.57302 10.3125H6.01747C6.16481 10.3125 6.30612 10.2401 6.41031 10.1111C6.51449 9.98221 6.57302 9.80734 6.57302 9.625V1.375C6.57302 1.19266 6.51449 1.0178 6.41031 0.888864C6.30612 0.759933 6.16481 0.6875 6.01747 0.6875H1.57302Z" fill="white" />
6
+ <path opacity="0.4" d="M8.90603 0H13.3505C13.6452 0 13.9278 0.144866 14.1362 0.402728C14.3445 0.660591 14.4616 1.01033 14.4616 1.375V9.625C14.4616 9.98967 14.3445 10.3394 14.1362 10.5973C13.9278 10.8551 13.6452 11 13.3505 11H8.90603C8.61135 11 8.32873 10.8551 8.12036 10.5973C7.91198 10.3394 7.79492 9.98967 7.79492 9.625V1.375C7.79492 1.01033 7.91198 0.660591 8.12036 0.402728C8.32873 0.144866 8.61135 0 8.90603 0ZM8.90603 0.6875C8.75869 0.6875 8.61738 0.759933 8.5132 0.888864C8.40901 1.0178 8.35048 1.19266 8.35048 1.375V9.625C8.35048 9.80734 8.40901 9.98221 8.5132 10.1111C8.61738 10.2401 8.75869 10.3125 8.90603 10.3125H13.3505C13.4978 10.3125 13.6391 10.2401 13.7433 10.1111C13.8475 9.98221 13.906 9.80734 13.906 9.625V1.375C13.906 1.19266 13.8475 1.0178 13.7433 0.888864C13.6391 0.759933 13.4978 0.6875 13.3505 0.6875H8.90603Z" fill="white" />
7
+ </g>
8
+ <defs>
9
+ <clipPath id="clip0_527_47371">
10
+ <rect width="14" height="11" fill="white" transform="translate(0.461914)" />
11
+ </clipPath>
12
+ </defs>
13
+ </svg>
14
+ )
15
+ }
16
+
17
+ export default Left
@@ -0,0 +1,17 @@
1
+ function Right() {
2
+ return (
3
+ <svg width="14" height="11" viewBox="0 0 14 11" fill="none" xmlns="http://www.w3.org/2000/svg">
4
+ <g clipPath="url(#clip0_527_47381)">
5
+ <path opacity="0.4" d="M1.11111 0H5.55555C5.85024 0 6.13285 0.144866 6.34123 0.402728C6.5496 0.660591 6.66667 1.01033 6.66667 1.375V9.625C6.66667 9.98967 6.5496 10.3394 6.34123 10.5973C6.13285 10.8551 5.85024 11 5.55555 11H1.11111C0.816426 11 0.533811 10.8551 0.325437 10.5973C0.117063 10.3394 0 9.98967 0 9.625V1.375C0 1.01033 0.117063 0.660591 0.325437 0.402728C0.533811 0.144866 0.816426 0 1.11111 0ZM1.11111 0.6875C0.963768 0.6875 0.822461 0.759933 0.718274 0.888864C0.614087 1.0178 0.555555 1.19266 0.555555 1.375V9.625C0.555555 9.80734 0.614087 9.98221 0.718274 10.1111C0.822461 10.2401 0.963768 10.3125 1.11111 10.3125H5.55555C5.7029 10.3125 5.8442 10.2401 5.94839 10.1111C6.05258 9.98221 6.11111 9.80734 6.11111 9.625V1.375C6.11111 1.19266 6.05258 1.0178 5.94839 0.888864C5.8442 0.759933 5.7029 0.6875 5.55555 0.6875H1.11111Z" fill="white" />
6
+ <path d="M8.44412 0H12.8886C13.1832 0 13.4659 0.144866 13.6742 0.402728C13.8826 0.660591 13.9997 1.01033 13.9997 1.375V9.625C13.9997 9.98967 13.8826 10.3394 13.6742 10.5973C13.4659 10.8551 13.1832 11 12.8886 11H8.44412C8.14943 11 7.86682 10.8551 7.65844 10.5973C7.45007 10.3394 7.33301 9.98967 7.33301 9.625V1.375C7.33301 1.01033 7.45007 0.660591 7.65844 0.402728C7.86682 0.144866 8.14943 0 8.44412 0ZM8.44412 0.6875C8.29678 0.6875 8.15547 0.759933 8.05128 0.888864C7.94709 1.0178 7.88856 1.19266 7.88856 1.375V9.625C7.88856 9.80734 7.94709 9.98221 8.05128 10.1111C8.15547 10.2401 8.29678 10.3125 8.44412 10.3125H12.8886C13.0359 10.3125 13.1772 10.2401 13.2814 10.1111C13.3856 9.98221 13.4441 9.80734 13.4441 9.625V1.375C13.4441 1.19266 13.3856 1.0178 13.2814 0.888864C13.1772 0.759933 13.0359 0.6875 12.8886 0.6875H8.44412Z" fill="white" />
7
+ </g>
8
+ <defs>
9
+ <clipPath id="clip0_527_47381">
10
+ <rect width="14" height="11" fill="white" />
11
+ </clipPath>
12
+ </defs>
13
+ </svg>
14
+ )
15
+ }
16
+
17
+ export default Right
@@ -0,0 +1,12 @@
1
+ <svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="fluent:document-one-page-20-regular" clip-path="url(#clip0_527_47401)">
3
+ <path id="Vector" d="M1.26984 0H6.34921C6.68599 0 7.00898 0.158035 7.24712 0.43934C7.48526 0.720644 7.61905 1.10218 7.61905 1.5V10.5C7.61905 10.8978 7.48526 11.2794 7.24712 11.5607C7.00898 11.842 6.68599 12 6.34921 12H1.26984C0.933058 12 0.610069 11.842 0.371928 11.5607C0.133786 11.2794 0 10.8978 0 10.5V1.5C0 1.10218 0.133786 0.720644 0.371928 0.43934C0.610069 0.158035 0.933058 0 1.26984 0ZM1.26984 0.75C1.10145 0.75 0.939955 0.829018 0.820885 0.96967C0.701814 1.11032 0.634921 1.30109 0.634921 1.5V10.5C0.634921 10.6989 0.701814 10.8897 0.820885 11.0303C0.939955 11.171 1.10145 11.25 1.26984 11.25H6.34921C6.5176 11.25 6.67909 11.171 6.79816 11.0303C6.91723 10.8897 6.98413 10.6989 6.98413 10.5V1.5C6.98413 1.30109 6.91723 1.11032 6.79816 0.96967C6.67909 0.829018 6.5176 0.75 6.34921 0.75H1.26984Z" fill="white"/>
4
+ <path id="Vector_2" opacity="0.4" d="M9.6507 0H14.7301C15.0668 0 15.3898 0.158035 15.628 0.43934C15.8661 0.720644 15.9999 1.10218 15.9999 1.5V10.5C15.9999 10.8978 15.8661 11.2794 15.628 11.5607C15.3898 11.842 15.0668 12 14.7301 12H9.6507C9.31392 12 8.99093 11.842 8.75279 11.5607C8.51465 11.2794 8.38086 10.8978 8.38086 10.5V1.5C8.38086 1.10218 8.51465 0.720644 8.75279 0.43934C8.99093 0.158035 9.31392 0 9.6507 0ZM9.6507 0.75C9.48231 0.75 9.32081 0.829018 9.20174 0.96967C9.08267 1.11032 9.01578 1.30109 9.01578 1.5V10.5C9.01578 10.6989 9.08267 10.8897 9.20174 11.0303C9.32081 11.171 9.48231 11.25 9.6507 11.25H14.7301C14.8985 11.25 15.06 11.171 15.179 11.0303C15.2981 10.8897 15.365 10.6989 15.365 10.5V1.5C15.365 1.30109 15.2981 1.11032 15.179 0.96967C15.06 0.829018 14.8985 0.75 14.7301 0.75H9.6507Z" fill="white"/>
5
+ <path id="Vector_3" d="M5.82826 6.11765C5.82826 6.16445 5.81101 6.20934 5.7803 6.24243C5.74959 6.27553 5.70794 6.29412 5.66451 6.29412H4.02709V8.05882C4.02709 8.10563 4.00984 8.15051 3.97913 8.18361C3.94842 8.2167 3.90677 8.23529 3.86335 8.23529C3.81992 8.23529 3.77827 8.2167 3.74756 8.18361C3.71686 8.15051 3.6996 8.10563 3.6996 8.05882V6.29412H2.06218C2.01875 6.29412 1.9771 6.27553 1.9464 6.24243C1.91569 6.20934 1.89844 6.16445 1.89844 6.11765C1.89844 6.07084 1.91569 6.02596 1.9464 5.99286C1.9771 5.95977 2.01875 5.94118 2.06218 5.94118H3.6996V4.17647C3.6996 4.12967 3.71686 4.08478 3.74756 4.05169C3.77827 4.01859 3.81992 4 3.86335 4C3.90677 4 3.94842 4.01859 3.97913 4.05169C4.00984 4.08478 4.02709 4.12967 4.02709 4.17647V5.94118H5.66451C5.70794 5.94118 5.74959 5.95977 5.7803 5.99286C5.81101 6.02596 5.82826 6.07084 5.82826 6.11765Z" fill="white"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_527_47401">
9
+ <rect width="16" height="12" fill="white"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>
@@ -0,0 +1,12 @@
1
+ <svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_527_47406)">
3
+ <path opacity="0.4" d="M1.27 0H6.35C6.68682 0 7.00985 0.158035 7.24802 0.43934C7.4862 0.720644 7.62 1.10218 7.62 1.5V10.5C7.62 10.8978 7.4862 11.2794 7.24802 11.5607C7.00985 11.842 6.68682 12 6.35 12H1.27C0.933175 12 0.610146 11.842 0.371974 11.5607C0.133803 11.2794 0 10.8978 0 10.5V1.5C0 1.10218 0.133803 0.720644 0.371974 0.43934C0.610146 0.158035 0.933175 0 1.27 0ZM1.27 0.75C1.10159 0.75 0.940073 0.829018 0.820987 0.96967C0.701902 1.11032 0.635 1.30109 0.635 1.5V10.5C0.635 10.6989 0.701902 10.8897 0.820987 11.0303C0.940073 11.171 1.10159 11.25 1.27 11.25H6.35C6.51841 11.25 6.67993 11.171 6.79901 11.0303C6.9181 10.8897 6.985 10.6989 6.985 10.5V1.5C6.985 1.30109 6.9181 1.11032 6.79901 0.96967C6.67993 0.829018 6.51841 0.75 6.35 0.75H1.27Z" fill="white"/>
4
+ <path d="M9.64988 0H14.7299C15.0667 0 15.3897 0.158035 15.6279 0.43934C15.8661 0.720644 15.9999 1.10218 15.9999 1.5V10.5C15.9999 10.8978 15.8661 11.2794 15.6279 11.5607C15.3897 11.842 15.0667 12 14.7299 12H9.64988C9.31306 12 8.99003 11.842 8.75186 11.5607C8.51369 11.2794 8.37988 10.8978 8.37988 10.5V1.5C8.37988 1.10218 8.51369 0.720644 8.75186 0.43934C8.99003 0.158035 9.31306 0 9.64988 0ZM9.64988 0.75C9.48147 0.75 9.31996 0.829018 9.20087 0.96967C9.08178 1.11032 9.01488 1.30109 9.01488 1.5V10.5C9.01488 10.6989 9.08178 10.8897 9.20087 11.0303C9.31996 11.171 9.48147 11.25 9.64988 11.25H14.7299C14.8983 11.25 15.0598 11.171 15.1789 11.0303C15.298 10.8897 15.3649 10.6989 15.3649 10.5V1.5C15.3649 1.30109 15.298 1.11032 15.1789 0.96967C15.0598 0.829018 14.8983 0.75 14.7299 0.75H9.64988Z" fill="white"/>
5
+ <path d="M14.2096 6.10028C14.2096 6.1404 14.1924 6.17887 14.1616 6.20724C14.1309 6.23561 14.0893 6.25154 14.0458 6.25154H12.4082V7.76415C12.4082 7.80426 12.391 7.84274 12.3603 7.87111C12.3295 7.89947 12.2879 7.91541 12.2445 7.91541C12.201 7.91541 12.1594 7.89947 12.1287 7.87111C12.0979 7.84274 12.0807 7.80426 12.0807 7.76415V6.25154H10.4431C10.3996 6.25154 10.358 6.23561 10.3273 6.20724C10.2966 6.17887 10.2793 6.1404 10.2793 6.10028C10.2793 6.06017 10.2966 6.02169 10.3273 5.99332C10.358 5.96496 10.3996 5.94902 10.4431 5.94902H12.0807V4.43642C12.0807 4.3963 12.0979 4.35783 12.1287 4.32946C12.1594 4.30109 12.201 4.28516 12.2445 4.28516C12.2879 4.28516 12.3295 4.30109 12.3603 4.32946C12.391 4.35783 12.4082 4.3963 12.4082 4.43642V5.94902H14.0458C14.0893 5.94902 14.1309 5.96496 14.1616 5.99332C14.1924 6.02169 14.2096 6.06017 14.2096 6.10028Z" fill="white"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_527_47406">
9
+ <rect width="16" height="12" fill="white"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg width="15" height="11" viewBox="0 0 15 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_527_47371)">
3
+ <path d="M1.57302 0H6.01747C6.31215 0 6.59477 0.144866 6.80314 0.402728C7.01152 0.660591 7.12858 1.01033 7.12858 1.375V9.625C7.12858 9.98967 7.01152 10.3394 6.80314 10.5973C6.59477 10.8551 6.31215 11 6.01747 11H1.57302C1.27834 11 0.995725 10.8551 0.787351 10.5973C0.578977 10.3394 0.461914 9.98967 0.461914 9.625V1.375C0.461914 1.01033 0.578977 0.660591 0.787351 0.402728C0.995725 0.144866 1.27834 0 1.57302 0ZM1.57302 0.6875C1.42568 0.6875 1.28437 0.759933 1.18019 0.888864C1.076 1.0178 1.01747 1.19266 1.01747 1.375V9.625C1.01747 9.80734 1.076 9.98221 1.18019 10.1111C1.28437 10.2401 1.42568 10.3125 1.57302 10.3125H6.01747C6.16481 10.3125 6.30612 10.2401 6.41031 10.1111C6.51449 9.98221 6.57302 9.80734 6.57302 9.625V1.375C6.57302 1.19266 6.51449 1.0178 6.41031 0.888864C6.30612 0.759933 6.16481 0.6875 6.01747 0.6875H1.57302Z" fill="white"/>
4
+ <path opacity="0.4" d="M8.90603 0H13.3505C13.6452 0 13.9278 0.144866 14.1362 0.402728C14.3445 0.660591 14.4616 1.01033 14.4616 1.375V9.625C14.4616 9.98967 14.3445 10.3394 14.1362 10.5973C13.9278 10.8551 13.6452 11 13.3505 11H8.90603C8.61135 11 8.32873 10.8551 8.12036 10.5973C7.91198 10.3394 7.79492 9.98967 7.79492 9.625V1.375C7.79492 1.01033 7.91198 0.660591 8.12036 0.402728C8.32873 0.144866 8.61135 0 8.90603 0ZM8.90603 0.6875C8.75869 0.6875 8.61738 0.759933 8.5132 0.888864C8.40901 1.0178 8.35048 1.19266 8.35048 1.375V9.625C8.35048 9.80734 8.40901 9.98221 8.5132 10.1111C8.61738 10.2401 8.75869 10.3125 8.90603 10.3125H13.3505C13.4978 10.3125 13.6391 10.2401 13.7433 10.1111C13.8475 9.98221 13.906 9.80734 13.906 9.625V1.375C13.906 1.19266 13.8475 1.0178 13.7433 0.888864C13.6391 0.759933 13.4978 0.6875 13.3505 0.6875H8.90603Z" fill="white"/>
5
+ </g>
6
+ <defs>
7
+ <clipPath id="clip0_527_47371">
8
+ <rect width="14" height="11" fill="white" transform="translate(0.461914)"/>
9
+ </clipPath>
10
+ </defs>
11
+ </svg>
@@ -0,0 +1,11 @@
1
+ <svg width="14" height="11" viewBox="0 0 14 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_527_47381)">
3
+ <path opacity="0.4" d="M1.11111 0H5.55555C5.85024 0 6.13285 0.144866 6.34123 0.402728C6.5496 0.660591 6.66667 1.01033 6.66667 1.375V9.625C6.66667 9.98967 6.5496 10.3394 6.34123 10.5973C6.13285 10.8551 5.85024 11 5.55555 11H1.11111C0.816426 11 0.533811 10.8551 0.325437 10.5973C0.117063 10.3394 0 9.98967 0 9.625V1.375C0 1.01033 0.117063 0.660591 0.325437 0.402728C0.533811 0.144866 0.816426 0 1.11111 0ZM1.11111 0.6875C0.963768 0.6875 0.822461 0.759933 0.718274 0.888864C0.614087 1.0178 0.555555 1.19266 0.555555 1.375V9.625C0.555555 9.80734 0.614087 9.98221 0.718274 10.1111C0.822461 10.2401 0.963768 10.3125 1.11111 10.3125H5.55555C5.7029 10.3125 5.8442 10.2401 5.94839 10.1111C6.05258 9.98221 6.11111 9.80734 6.11111 9.625V1.375C6.11111 1.19266 6.05258 1.0178 5.94839 0.888864C5.8442 0.759933 5.7029 0.6875 5.55555 0.6875H1.11111Z" fill="white"/>
4
+ <path d="M8.44412 0H12.8886C13.1832 0 13.4659 0.144866 13.6742 0.402728C13.8826 0.660591 13.9997 1.01033 13.9997 1.375V9.625C13.9997 9.98967 13.8826 10.3394 13.6742 10.5973C13.4659 10.8551 13.1832 11 12.8886 11H8.44412C8.14943 11 7.86682 10.8551 7.65844 10.5973C7.45007 10.3394 7.33301 9.98967 7.33301 9.625V1.375C7.33301 1.01033 7.45007 0.660591 7.65844 0.402728C7.86682 0.144866 8.14943 0 8.44412 0ZM8.44412 0.6875C8.29678 0.6875 8.15547 0.759933 8.05128 0.888864C7.94709 1.0178 7.88856 1.19266 7.88856 1.375V9.625C7.88856 9.80734 7.94709 9.98221 8.05128 10.1111C8.15547 10.2401 8.29678 10.3125 8.44412 10.3125H12.8886C13.0359 10.3125 13.1772 10.2401 13.2814 10.1111C13.3856 9.98221 13.4441 9.80734 13.4441 9.625V1.375C13.4441 1.19266 13.3856 1.0178 13.2814 0.888864C13.1772 0.759933 13.0359 0.6875 12.8886 0.6875H8.44412Z" fill="white"/>
5
+ </g>
6
+ <defs>
7
+ <clipPath id="clip0_527_47381">
8
+ <rect width="14" height="11" fill="white"/>
9
+ </clipPath>
10
+ </defs>
11
+ </svg>