zydx-plus 1.35.596 → 1.35.598

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zydx-plus",
3
- "version": "1.35.596",
3
+ "version": "1.35.598",
4
4
  "description": "Vue.js",
5
5
  "main": "src/index.js",
6
6
  "files": [
@@ -24,6 +24,10 @@ export default defineComponent({
24
24
  type: String,
25
25
  default: '#00ff00'
26
26
  },
27
+ isHide: {// 按钮能否收起 true能 false 否
28
+ type: Boolean,
29
+ default: true
30
+ }
27
31
  },
28
32
  data() {
29
33
  return {
@@ -38,10 +42,18 @@ export default defineComponent({
38
42
  trackClick(idx) {
39
43
  if (this.accordian) {
40
44
  this.active_state = this.active_state.map((_, i) => {
41
- if (i === idx) {
42
- return this.active_state[i] = !this.active_state[i]
45
+ if (this.isHide) {
46
+ if (i === idx) {
47
+ return this.active_state[i] = !this.active_state[i]
48
+ } else {
49
+ return false
50
+ }
43
51
  } else {
44
- return false
52
+ if (i === idx) {
53
+ return this.active_state[i] = true
54
+ } else {
55
+ return false
56
+ }
45
57
  }
46
58
  })
47
59
  } else {
@@ -47,7 +47,7 @@ export default defineComponent({
47
47
  methods: {
48
48
  sticky: function ({ level, column, row, idx }) {
49
49
  const left = row.slice(0, idx).reduce((acc, cur) => (cur.column.width + acc), 0)
50
- return ` background: white;
50
+ return ` background: transparent;
51
51
  position: sticky;
52
52
  z-index: 5;
53
53
  min-width: ${column.width}px;
@@ -82,7 +82,7 @@ export default defineComponent({
82
82
  .table_head {
83
83
  position: relative;
84
84
  z-index: 5;
85
- background: white
85
+ background: transparent;
86
86
  }
87
87
 
88
88
  th,
@@ -105,7 +105,7 @@ td {
105
105
  }
106
106
 
107
107
  th {
108
- background: white;
108
+ background: transparent;
109
109
  position: sticky;
110
110
  z-index: 5;
111
111
  top: 0;
@@ -319,6 +319,7 @@ export default {
319
319
  this.draggableState = interact(`#draggable${that.id}`)
320
320
  this.draggableState.draggable({
321
321
  enabled: true,
322
+ touch: true,
322
323
  listeners: {
323
324
  start (event) {
324
325
  that.draggableMove = true
@@ -606,7 +607,7 @@ export default {
606
607
  .drag-head {
607
608
  height: 30px;
608
609
  line-height: 30px;
609
- padding: 0 10px;
610
+ padding: 0 5px;
610
611
  color: #fff;
611
612
  border-top-left-radius: 3px;
612
613
  border-top-right-radius: 3px;
@@ -328,6 +328,7 @@ export default {
328
328
  this.draggableState = interact(`#draggable${that.id}`)
329
329
  this.draggableState.draggable({
330
330
  enabled: true,
331
+ touch: true,
331
332
  listeners: {
332
333
  start (event) {
333
334
  that.draggableMove = true
@@ -612,7 +613,7 @@ export default {
612
613
  .drag-head {
613
614
  height: 30px;
614
615
  line-height: 30px;
615
- padding: 0 10px;
616
+ padding: 0 5px;
616
617
  color: #fff;
617
618
  border-top-left-radius: 3px;
618
619
  border-top-right-radius: 3px;
@@ -4415,7 +4415,9 @@ export default {
4415
4415
  margin-bottom: 10px;
4416
4416
  /*box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);*/
4417
4417
  }
4418
-
4418
+ .read-only-page :deep(img) {
4419
+ padding: 3px;
4420
+ }
4419
4421
  .read-only-page:last-child {
4420
4422
  margin-bottom: 0;
4421
4423
  }
@@ -10,21 +10,22 @@
10
10
  <slot name='titleSuffix'></slot>
11
11
  </div>
12
12
  <div class="ed-but" v-if="readOnly">
13
+ <slot name='leftToolBtn'></slot>
13
14
  <div class="ed-head-but" v-for="(item,index) in toolbars" :key="index">
14
- <button v-if="item.key === 'but'" class="buts" @click="item.onClick(item,info)"
15
- :style="{color: (item.active)? '#4B0C77' :'#000'}">{{ item.title }}
15
+ <button v-if="item.key === 'but'" class="buts" @click="item.onClick(item,info)" :disabled="disabled"
16
+ :style="{color: (disabled) ? '#ccc' : (item.active)? '#4B0C77' :'#000'}">{{ item.title }}
16
17
  </button>
17
18
  <label v-else-if="item.key === 'upImg' || item.key === 'uploadAtt'">
18
- <input type="file" @change="upload($event,item.key)"
19
- :accept="(item.key === 'upImg')?'image/*':'.docx,.pptx,.pdf,.xlsx,.mp3,.mp4'" style="display: none;">
20
- <span class="buts">{{ item.title }}</span>
21
- </label>
22
- <button v-else-if="item.key === 'paint'" class="buts" @click="toolTap('paint')">{{ item.title }}</button>
23
- <button v-else-if="item.key === 'voice'" class="buts" @mousedown.stop="speechDown" @click="voice()"
24
- :style="{color: (voiceStatus)? '#4B0C77' :'#000'}">{{ voiceStatus ? '关闭语音' : '语音输入' }}
19
+ <input type="file" @change="upload($event,item.key)" :disabled="disabled"
20
+ :accept="(item.key === 'upImg')?'image/*':'.docx,.pptx,.pdf,.xlsx,.mp3,.mp4'" style="display: none;"/>
21
+ <span class="buts" :style="{color: ( disabled) ? '#ccc':'#000'}">{{ item.title }}</span>
22
+ </label >
23
+ <button v-else-if="item.key === 'paint'" class="buts" @click="toolTap('paint')" :disabled="disabled">{{ item.title }}</button>
24
+ <button v-else-if="item.key === 'voice'" class="buts" @mousedown.stop="speechDown" :disabled="disabled" @click="voice()"
25
+ :style="{color: (disabled) ? '#ccc' : (voiceStatus)? '#4B0C77' :'#000'}">{{ voiceStatus ? '关闭语音' : '语音输入' }}
25
26
  </button>
26
- <button v-else-if="item.key === 'ai'" class="buts" @click="showAi">AI助手</button>
27
- <button v-else class="buts" @click="toolTap(item.key)">{{ item.title }}</button>
27
+ <button v-else-if="item.key === 'ai'" class="buts" :disabled="disabled" @click="showAi">AI助手</button>
28
+ <button v-else class="buts" @click="toolTap(item.key)" :disabled="disabled">{{ item.title }}</button>
28
29
  </div>
29
30
  <slot name='toolBtn'></slot>
30
31
  <button v-if="butText !== '' && readOnly" class="buts" @click="complete">{{ butText }}</button>
@@ -86,9 +87,9 @@
86
87
  <svg style="cursor: pointer" @click="close" t="1698630749910" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4415" width="20" height="20"><path d="M726.976 274.432a16 16 0 0 0-22.656 0L512 466.752l-192.32-192.32a16 16 0 0 0-22.624 0l-22.656 22.624a16 16 0 0 0 0 22.624l192.32 192.32-192.32 192.32a16 16 0 0 0 0 22.656l22.656 22.624a16 16 0 0 0 22.624 0l192.32-192.32 192.32 192.32a16 16 0 0 0 22.656 0l22.624-22.624a16 16 0 0 0 0-22.624L557.28 512l192.32-192.352a16 16 0 0 0 0-22.624l-22.624-22.624z" fill="#fff" p-id="4416"></path></svg>
87
88
  </div>
88
89
  </div>
89
- <!-- <div class="editor-but" v-if="butText !== '' && readOnly">-->
90
- <!-- <button class="buts" @click="complete">{{ butText }}</button>-->
91
- <!-- </div>-->
90
+ <!-- <div class="editor-but" v-if="butText !== '' && readOnly">-->
91
+ <!-- <button class="buts" @click="complete">{{ butText }}</button>-->
92
+ <!-- </div>-->
92
93
  <div class="enclosure" v-if="uploadAttData.length > 0 && enclosureShow">
93
94
  <p :style="enclosureStyle">{{ enclosureText }}</p>
94
95
  <div class="enclosure-list" v-for="(item,index) in uploadAttData">
@@ -104,9 +105,9 @@
104
105
  </div>
105
106
  <div class="enclosure-item en-but">
106
107
  <div style="display: inline-block; height: 21px;">
107
- <button class="buts but-f" v-if="!item.name" @click="see(index)">{{downName[0] || '查看附件'}}</button>
108
- <button class="buts but-f" v-if="!item.name&&downloadShow" @click="download(index)">{{downName[1] || '下载附件'}}</button>
109
- <button class="buts but-f" v-if="delShow" @click="del(index)">
108
+ <button class="buts but-f" v-if="!item.name" :disabled="disabled" @click="see(index)">{{downName[0] || '查看附件'}}</button>
109
+ <button class="buts but-f" v-if="!item.name&&downloadShow" :disabled="disabled" @click="download(index)">{{downName[1] || '下载附件'}}</button>
110
+ <button class="buts but-f" v-if="delShow" @click="del(index)" :disabled="disabled">
110
111
  <span v-if="item.active">{{downName[2] || '删除附件'}}</span>
111
112
  <svg v-else xmlns="http://www.w3.org/2000/svg"
112
113
  width="14"
@@ -141,7 +142,8 @@
141
142
  </g>
142
143
  </svg>
143
144
  </button>
144
- <button class="buts but-f" v-if="Object.keys(enclosureButton).length > 0" @click="enclosureButton.onClick(item,index)">{{ enclosureButton.name }}</button>
145
+ <button class="buts but-f" :disabled="disabled" v-if="Object.keys(enclosureButton).length > 0"
146
+ @click="enclosureButton.onClick(item,index)">{{ enclosureButton.name }}</button>
145
147
  </div>
146
148
  </div>
147
149
  </div>
@@ -346,6 +348,10 @@ export default {
346
348
  type: Boolean,
347
349
  default: false
348
350
  },
351
+ disabled: {
352
+ type: Boolean,
353
+ default: false
354
+ },
349
355
  enclosureButton: {
350
356
  type: Object,
351
357
  default: {}
@@ -366,8 +372,8 @@ export default {
366
372
  handler: function (e, oldVal) {
367
373
  if(this.updateInit) return
368
374
  if(this.updateStatus) this.updateInit = true
369
- this.editor?.commands.setContent(json2html({node: "root", child: (e.html === undefined || e.html === null || e.html === 'null') ? [] : e.html}))
370
- this.uploadAttData = (e.enclosure === undefined || e.enclosure === null || e.html === 'null') ? [] : this.enclosureAction(e.enclosure)
375
+ this.editor?.commands.setContent(json2html({node: "root", child: this.dataChange(e).html}))
376
+ this.uploadAttData = this.dataChange(e).enclosure
371
377
  },
372
378
  deep: true
373
379
  },
@@ -382,31 +388,43 @@ export default {
382
388
  toolbar: {
383
389
  handler: function (e, oldVal) {
384
390
  let status = null
391
+ let upload = null
385
392
  this.toolbars = []
386
393
  e.forEach(x => {
387
394
  if(x.key === 'but') {
388
395
  status = x
396
+ } if (x.key === 'uploadAtt') {
397
+ upload = x
389
398
  }else {
390
399
  this.toolbars.push(x)
391
400
  }
392
401
  })
393
- if(this.isShowWhiteboarde) this.toolbars.push({key: 'paint', title: '插入手写'})
402
+ if(this.isShowWhiteboarde) this.toolbars.push({key: 'paint',disabled:true, title: '插入手写'})
403
+ if(upload) this.toolbars.push(upload) // 上传附件
394
404
  if(this.voiceShow) this.toolbars.push({key: 'voice', title: '语音输入'})
395
- if(status) this.toolbars.push(status)
405
+ if(status) this.toolbars.push(status) // 之定义按钮
396
406
  if(this.isShowAiTool) this.toolbars.push({key: 'ai', title: 'AI助手'})
397
407
  },
398
408
  immediate: true
409
+ },
410
+ disabled: {
411
+ handler: function (e, oldVal) {
412
+ this.editor.setOptions({
413
+ editable: this.readOnly ?(!e):this.readOnly
414
+ })
415
+ },
416
+ deep: true
399
417
  }
400
418
  },
401
419
  mounted() {
402
420
  let _this = this
403
- this.uploadAttData = (this.data.enclosure === undefined || this.data.enclosure === null || this.data.enclosure === 'null') ? [] : this.enclosureAction(this.data.enclosure)
421
+ this.uploadAttData = this.dataChange(this.data).enclosure
404
422
  this.heightStyle = (this.height === '100%') ? {height: '100%'} : {'min-height': this.height}
405
423
  const height = this.height.split('px')[0] - 44
406
424
  this.heightStyleCont = (this.height === '100%') ? {height: 'calc(100% - 44px)'} : {'min-height': `${height}px`}
407
425
  this.editor = new Editor({
408
- content: json2html({node: "root", child: (this.data.html === undefined || this.data.html === null || this.data.html.html === 'null') ? [] : this.data.html}),
409
- editable: this.readOnly,
426
+ content: json2html({node: "root", child: this.dataChange(this.data).html }),
427
+ editable: this.readOnly ?(!this.disabled):this.readOnly ,
410
428
  enablePasteRules: true,
411
429
  extensions: [
412
430
  sid,
@@ -451,7 +469,7 @@ export default {
451
469
  },
452
470
  // 获取焦点
453
471
  onFocus: (e) => {
454
- this.limits = true
472
+ this.limits = true
455
473
  },
456
474
  })
457
475
  document.addEventListener('keydown', function (e) {
@@ -486,6 +504,12 @@ export default {
486
504
  })
487
505
  },
488
506
  methods: {
507
+ dataChange(e) {
508
+ if(!e) return {html: [], enclosure: []}
509
+ const html = e.html === undefined || e.html === null || e.html === 'null' ? [] : e.html
510
+ const enclosure = (e.enclosure === undefined || e.enclosure === null || e.enclosure === 'null') ? [] : this.enclosureAction(e.enclosure)
511
+ return {html: html, enclosure: enclosure}
512
+ },
489
513
  getSelectedText(e) {
490
514
  const selection = window.getSelection();
491
515
  const selectedText = selection.toString()
@@ -493,7 +517,6 @@ export default {
493
517
  const clientX = e.clientX
494
518
  const clientY = e.clientX
495
519
  this.lastSelectedText = selectedText
496
- console.log('selectedText', selectedText)
497
520
  },
498
521
  showAssets() {
499
522
  this.$emit('assets')
@@ -514,36 +537,36 @@ export default {
514
537
  this.paintShow = false
515
538
  },
516
539
  changeAlign(tag) {
517
- // 图片对齐方式
518
- this.editor.chain().setTextAlign(tag).run()
540
+ // 图片对齐方式
541
+ this.editor.chain().setTextAlign(tag).run()
519
542
  },
520
543
  changePercent(e) {
521
- // 改变图片百分比
522
- if(parseInt(e.target.value) > 100) {
523
- this.imgSizeVal = 100
524
- this.editor.chain().setImageWidth('100%').focus().run()
525
- } else if(parseInt(e.target.value) < 10) {
526
- } else {
527
- if(this.lock) {
528
- this.lock = false
529
- setTimeout(() => {
530
- this.editor.chain().setImageWidth(e.target.value + '%').focus().run()
531
- this.lock = true
532
- }, 500)
533
- }
544
+ // 改变图片百分比
545
+ if(parseInt(e.target.value) > 100) {
546
+ this.imgSizeVal = 100
547
+ this.editor.chain().setImageWidth('100%').focus().run()
548
+ } else if(parseInt(e.target.value) < 10) {
549
+ } else {
550
+ if(this.lock) {
551
+ this.lock = false
552
+ setTimeout(() => {
553
+ this.editor.chain().setImageWidth(e.target.value + '%').focus().run()
554
+ this.lock = true
555
+ }, 500)
534
556
  }
557
+ }
535
558
  },
536
559
  shouldShowFn({ editor, view, state, oldState, from, to }) {
537
- // BubbleMenu是否显示
538
- this.$nextTick(() => {
539
- this.showBubble = editor.isActive('image')
540
- if(editor.isActive('image')) {
541
- this.imgSizeVal = parseInt(this.editor.getAttributes('image').width)
542
- } else {
543
- this.imgSizeVal = ''
544
- }
545
- })
546
- return editor.isActive('image')
560
+ // BubbleMenu是否显示
561
+ this.$nextTick(() => {
562
+ this.showBubble = editor.isActive('image')
563
+ if(editor.isActive('image')) {
564
+ this.imgSizeVal = parseInt(this.editor.getAttributes('image').width)
565
+ } else {
566
+ this.imgSizeVal = ''
567
+ }
568
+ })
569
+ return editor.isActive('image')
547
570
  },
548
571
  speechDown(e) {
549
572
  this.speech = {
@@ -750,11 +773,11 @@ export default {
750
773
  },
751
774
  del(index) {
752
775
  let that = this
753
- // that.data.html = html2json(that.editor.getHTML()).child
754
- if (this.uploadAttData[index].name === undefined) {
776
+ that.data.html = html2json(that.editor.getHTML()).child
777
+ if (!this.uploadAttData[index].name) {
755
778
  that.uploadAttData[index].active = false
756
779
  that.$emit('del', that.uploadAttData[index], (e) => {
757
- if (e === undefined) {
780
+ if (!e) {
758
781
  that.uploadAttData.splice(index, 1)
759
782
  } else {
760
783
  if (e) {
@@ -806,7 +829,7 @@ export default {
806
829
  })
807
830
  },
808
831
  upload(e, v) { // 上传文件
809
- const file = e.target.files[0]
832
+ const file = e.target.files[0]
810
833
  if (this.uploadType) {
811
834
  if (v === 'uploadAtt') {
812
835
  file.active = true
@@ -858,7 +881,7 @@ export default {
858
881
  this.editor.chain().focus().insertContentAt(this.selection(), html).run()
859
882
  if (this.selection() <= 6 && this.selection() > 2) this.selectionClass2(cla)
860
883
  if (this.selectionClass(cla)) {
861
- this.editor.chain().focus().insertContentAt(this.selection(), '<p></p>').run()
884
+ this.editor.chain().focus().insertContentAt(this.selection(), '<p></p>').run()
862
885
  }
863
886
  }, 100)
864
887
  },
@@ -1008,18 +1031,18 @@ export default {
1008
1031
 
1009
1032
  <style scoped>
1010
1033
 
1011
- :deep(.w_100) {
1012
- width: 100% !important;
1013
- }
1014
- :deep(.w_75 ){
1015
- width: 75% !important;
1016
- }
1017
- :deep(.w_50 ){
1018
- width: 50% !important;
1019
- }
1020
- :deep(.w_25 ){
1021
- width: 25% !important;
1022
- }
1034
+ :deep(.w_100) {
1035
+ width: 100% !important;
1036
+ }
1037
+ :deep(.w_75 ){
1038
+ width: 75% !important;
1039
+ }
1040
+ :deep(.w_50 ){
1041
+ width: 50% !important;
1042
+ }
1043
+ :deep(.w_25 ){
1044
+ width: 25% !important;
1045
+ }
1023
1046
  :deep(p[data-sid="prohibit"]) {
1024
1047
  -webkit-user-select: none;
1025
1048
  -moz-user-select: none;
@@ -1235,11 +1258,10 @@ export default {
1235
1258
  padding: 2px 5px;
1236
1259
  cursor: pointer;
1237
1260
  min-width: 60px;
1238
- height: 20px;
1261
+ height: 21px;
1239
1262
  display: inline-block;
1240
1263
  line-height: 16px;
1241
1264
  box-sizing: border-box;
1242
- font-family: Arial;
1243
1265
  -moz-text-align-last: justify;
1244
1266
  text-align-last: justify;
1245
1267
  word-break: break-all;
@@ -1272,68 +1294,68 @@ export default {
1272
1294
  line-height: 14px !important;
1273
1295
  }
1274
1296
  }
1275
- .bubbleMenu {
1276
- position: relative;
1277
- padding: 15px;
1278
- background-color: #fff;
1279
- border-radius: 5px;
1280
- box-shadow: 0 1px 6px #d2d2d2;
1281
- }
1282
- .line {
1283
- display: flex;
1284
- align-items: center;
1285
- padding-bottom: 10px;
1286
- }
1287
- .line:last-child {
1288
- padding-bottom: 0
1289
- }
1290
- .percent {
1291
- position: relative;
1292
- }
1293
- .percent input{
1294
- border-radius: 4px;
1295
- width: 68px;
1296
- }
1297
- .percent input::-webkit-outer-spin-button,
1298
- .percent input::-webkit-inner-spin-button {
1299
- -webkit-appearance: none !important;
1300
- }
1301
- .percent input[type='number']{
1302
- -moz-appearance: textfield;
1303
- box-shadow: none;
1304
- border: 1px solid #8c939d;
1305
- padding: 5px 15px 5px 5px;
1306
- }
1307
- .symbol {
1308
- position: absolute;
1309
- right: 5px;
1310
- top: 5px
1311
- }
1297
+ .bubbleMenu {
1298
+ position: relative;
1299
+ padding: 15px;
1300
+ background-color: #fff;
1301
+ border-radius: 5px;
1302
+ box-shadow: 0 1px 6px #d2d2d2;
1303
+ }
1304
+ .line {
1305
+ display: flex;
1306
+ align-items: center;
1307
+ padding-bottom: 10px;
1308
+ }
1309
+ .line:last-child {
1310
+ padding-bottom: 0
1311
+ }
1312
+ .percent {
1313
+ position: relative;
1314
+ }
1315
+ .percent input{
1316
+ border-radius: 4px;
1317
+ width: 68px;
1318
+ }
1319
+ .percent input::-webkit-outer-spin-button,
1320
+ .percent input::-webkit-inner-spin-button {
1321
+ -webkit-appearance: none !important;
1322
+ }
1323
+ .percent input[type='number']{
1324
+ -moz-appearance: textfield;
1325
+ box-shadow: none;
1326
+ border: 1px solid #8c939d;
1327
+ padding: 5px 15px 5px 5px;
1328
+ }
1329
+ .symbol {
1330
+ position: absolute;
1331
+ right: 5px;
1332
+ top: 5px
1333
+ }
1312
1334
 
1313
- .alignmentMode {
1314
- display: flex;
1315
- justify-content: center;
1316
- align-items: center;
1317
- }
1318
- .segmentation {
1319
- height: 13px;
1320
- width: 1px;
1321
- margin: 0 5px;
1322
- background-color: #565656;
1323
- }
1324
- .imgBgc {
1325
- border-radius: 3px;
1326
- width: 20px;
1327
- height: 20px;
1328
- background-color: #CCCCCC;
1329
- }
1330
- .imgBgcAction {
1331
- background-color: #2A82E4;
1332
- }
1333
- .imgBgc > img {
1334
- padding: 1px;
1335
- width: 100%;
1336
- height: 100%;
1337
- }
1335
+ .alignmentMode {
1336
+ display: flex;
1337
+ justify-content: center;
1338
+ align-items: center;
1339
+ }
1340
+ .segmentation {
1341
+ height: 13px;
1342
+ width: 1px;
1343
+ margin: 0 5px;
1344
+ background-color: #565656;
1345
+ }
1346
+ .imgBgc {
1347
+ border-radius: 3px;
1348
+ width: 20px;
1349
+ height: 20px;
1350
+ background-color: #CCCCCC;
1351
+ }
1352
+ .imgBgcAction {
1353
+ background-color: #2A82E4;
1354
+ }
1355
+ .imgBgc > img {
1356
+ padding: 1px;
1357
+ width: 100%;
1358
+ height: 100%;
1359
+ }
1338
1360
 
1339
1361
  </style>
@@ -0,0 +1 @@
1
+ [data-main-rotation="90"]{transform:rotate(90deg) translateY(-100%)}[data-main-rotation="180"]{transform:rotate(180deg) translate(-100%,-100%)}[data-main-rotation="270"]{transform:rotate(270deg) translateX(-100%)}.annotationLayer{--annotation-unfocused-field-background:url("data:image/svg+xml;charset=UTF-8,<svg width='1px' height='1px' xmlns='http://www.w3.org/2000/svg'><rect width='100%' height='100%' style='fill:rgba(0, 54, 255, 0.13);'/></svg>");--input-focus-border-color:Highlight;--input-focus-outline:1px solid Canvas;--input-unfocused-border-color:transparent;--input-disabled-border-color:transparent;--input-hover-border-color:black;--link-outline:none}@media screen and (forced-colors:active){.annotationLayer{--input-focus-border-color:CanvasText;--input-unfocused-border-color:ActiveText;--input-disabled-border-color:GrayText;--input-hover-border-color:Highlight;--link-outline:1.5px solid LinkText}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .textWidgetAnnotation :is(input,textarea):required{outline:1.5px solid selectedItem}.annotationLayer .linkAnnotation{outline:var(--link-outline)}:is(.annotationLayer .linkAnnotation):hover{-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter)}:is(.annotationLayer .linkAnnotation)>a:hover{opacity:0!important;background:0 0!important;box-shadow:none}.annotationLayer .popupAnnotation .popup{outline:calc(1.5px * var(--scale-factor)) solid CanvasText!important;background-color:ButtonFace!important;color:ButtonText!important}.annotationLayer .highlightArea:hover::after{position:absolute;top:0;left:0;width:100%;height:100%;-webkit-backdrop-filter:var(--hcm-highlight-filter);backdrop-filter:var(--hcm-highlight-filter);content:"";pointer-events:none}.annotationLayer .popupAnnotation.focused .popup{outline:calc(3px * var(--scale-factor)) solid Highlight!important}}.annotationLayer{position:absolute;top:0;left:0;pointer-events:none;transform-origin:0 0}.annotationLayer[data-main-rotation="90"] .norotate{transform:rotate(270deg) translateX(-100%)}.annotationLayer[data-main-rotation="180"] .norotate{transform:rotate(180deg) translate(-100%,-100%)}.annotationLayer[data-main-rotation="270"] .norotate{transform:rotate(90deg) translateY(-100%)}.annotationLayer.disabled .popup,.annotationLayer.disabled section{pointer-events:none}.annotationLayer .annotationContent{position:absolute;width:100%;height:100%;pointer-events:none}.freetext:is(.annotationLayer .annotationContent){background:0 0;border:none;inset:0;overflow:visible;white-space:nowrap;font:10px sans-serif;line-height:1.35;-webkit-user-select:none;-moz-user-select:none;user-select:none}.annotationLayer section{position:absolute;text-align:initial;pointer-events:auto;box-sizing:border-box;transform-origin:0 0}:is(.annotationLayer section):has(div.annotationContent) canvas.annotationContent{display:none}.textLayer.selecting~.annotationLayer section{pointer-events:none}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton)>a{position:absolute;font-size:1em;top:0;left:0;width:100%;height:100%}.annotationLayer :is(.linkAnnotation,.buttonWidgetAnnotation.pushButton):not(.hasBorder)>a:hover{opacity:.2;background-color:rgb(255 255 0);box-shadow:0 2px 10px rgb(255 255 0)}.annotationLayer .linkAnnotation.hasBorder:hover{background-color:rgb(255 255 0 / .2)}.annotationLayer .hasBorder{background-size:100% 100%}.annotationLayer .textAnnotation img{position:absolute;cursor:pointer;width:100%;height:100%;top:0;left:0}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input,.annotationLayer .choiceWidgetAnnotation select,.annotationLayer .textWidgetAnnotation :is(input,textarea){background-image:var(--annotation-unfocused-field-background);border:2px solid var(--input-unfocused-border-color);box-sizing:border-box;font:calc(9px * var(--scale-factor)) sans-serif;height:100%;margin:0;vertical-align:top;width:100%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:required,.annotationLayer .choiceWidgetAnnotation select:required,.annotationLayer .textWidgetAnnotation :is(input,textarea):required{outline:1.5px solid red}.annotationLayer .choiceWidgetAnnotation select option{padding:0}.annotationLayer .buttonWidgetAnnotation.radioButton input{border-radius:50%}.annotationLayer .textWidgetAnnotation textarea{resize:none}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input[disabled],.annotationLayer .choiceWidgetAnnotation select[disabled],.annotationLayer .textWidgetAnnotation [disabled]:is(input,textarea){background:0 0;border:2px solid var(--input-disabled-border-color);cursor:not-allowed}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input:hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .textWidgetAnnotation :is(input,textarea):hover{border:2px solid var(--input-hover-border-color)}.annotationLayer .buttonWidgetAnnotation.checkBox input:hover,.annotationLayer .choiceWidgetAnnotation select:hover,.annotationLayer .textWidgetAnnotation :is(input,textarea):hover{border-radius:2px}.annotationLayer .choiceWidgetAnnotation select:focus,.annotationLayer .textWidgetAnnotation :is(input,textarea):focus{background:0 0;border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) :focus{background-image:none;background-color:transparent}.annotationLayer .buttonWidgetAnnotation.checkBox :focus{border:2px solid var(--input-focus-border-color);border-radius:2px;outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.radioButton :focus{border:2px solid var(--input-focus-border-color);outline:var(--input-focus-outline)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before,.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before{background-color:CanvasText;content:"";display:block;position:absolute}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after,.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before{height:80%;left:45%;width:1px}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::before{transform:rotate(45deg)}.annotationLayer .buttonWidgetAnnotation.checkBox input:checked::after{transform:rotate(-45deg)}.annotationLayer .buttonWidgetAnnotation.radioButton input:checked::before{border-radius:50%;height:50%;left:25%;top:25%;width:50%}.annotationLayer .textWidgetAnnotation input.comb{font-family:monospace;padding-left:2px;padding-right:0}.annotationLayer .textWidgetAnnotation input.comb:focus{width:103%}.annotationLayer .buttonWidgetAnnotation:is(.checkBox,.radioButton) input{-webkit-appearance:none;-moz-appearance:none;appearance:none}.annotationLayer .fileAttachmentAnnotation .popupTriggerArea{height:100%;width:100%}.annotationLayer .popupAnnotation{position:absolute;font-size:calc(9px * var(--scale-factor));pointer-events:none;width:-moz-max-content;width:max-content;max-width:45%;height:auto}.annotationLayer .popup{background-color:rgb(255 255 153);box-shadow:0 calc(2px * var(--scale-factor)) calc(5px * var(--scale-factor)) rgb(136 136 136);border-radius:calc(2px * var(--scale-factor));outline:1.5px solid rgb(255 255 74);padding:calc(6px * var(--scale-factor));cursor:pointer;font:message-box;white-space:normal;word-wrap:break-word;pointer-events:auto}.annotationLayer .popupAnnotation.focused .popup{outline-width:3px}.annotationLayer .popup *{font-size:calc(9px * var(--scale-factor))}.annotationLayer .popup>.header{display:inline-block}.annotationLayer .popup>.header h1{display:inline}.annotationLayer .popup>.header .popupDate{display:inline-block;margin-left:calc(5px * var(--scale-factor));width:-moz-fit-content;width:fit-content}.annotationLayer .popupContent{border-top:1px solid rgb(51 51 51);margin-top:calc(2px * var(--scale-factor));padding-top:calc(2px * var(--scale-factor))}.annotationLayer .richText>*{white-space:pre-wrap;font-size:calc(9px * var(--scale-factor))}.annotationLayer .popupTriggerArea{cursor:pointer}.annotationLayer section svg{position:absolute;width:100%;height:100%;top:0;left:0}.annotationLayer .annotationTextContent{position:absolute;width:100%;height:100%;opacity:0;color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}:is(.annotationLayer .annotationTextContent) span{width:100%;display:inline-block}.annotationLayer svg.quadrilateralsContainer{contain:strict;width:0;height:0;position:absolute;top:0;left:0;z-index:-1}