@hufe921/canvas-editor 0.9.78 → 0.9.80
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/CHANGELOG.md +51 -0
- package/dist/canvas-editor.es.js +2431 -1725
- package/dist/canvas-editor.es.js.map +1 -1
- package/dist/canvas-editor.umd.js +36 -36
- package/dist/canvas-editor.umd.js.map +1 -1
- package/dist/src/editor/core/command/Command.d.ts +1 -0
- package/dist/src/editor/core/command/CommandAdapt.d.ts +1 -0
- package/dist/src/editor/core/draw/control/Control.d.ts +4 -1
- package/dist/src/editor/core/draw/control/date/DateControl.d.ts +24 -0
- package/dist/src/editor/core/draw/particle/date/DatePicker.d.ts +8 -7
- package/dist/src/editor/dataset/constant/Element.d.ts +1 -1
- package/dist/src/editor/dataset/enum/Control.d.ts +2 -1
- package/dist/src/editor/interface/Control.d.ts +13 -5
- package/dist/src/editor/interface/Draw.d.ts +1 -0
- package/dist/src/editor/interface/Element.d.ts +1 -0
- package/dist/src/editor/utils/element.d.ts +9 -2
- package/package.json +1 -1
package/dist/canvas-editor.es.js
CHANGED
|
@@ -23,7 +23,7 @@ var __publicField = (obj, key, value) => {
|
|
|
23
23
|
return value;
|
|
24
24
|
};
|
|
25
25
|
var index = "";
|
|
26
|
-
const version = "0.9.
|
|
26
|
+
const version = "0.9.80";
|
|
27
27
|
var MaxHeightRatio;
|
|
28
28
|
(function(MaxHeightRatio2) {
|
|
29
29
|
MaxHeightRatio2["HALF"] = "half";
|
|
@@ -177,19 +177,27 @@ function getUUID() {
|
|
|
177
177
|
}
|
|
178
178
|
function splitText(text) {
|
|
179
179
|
const data2 = [];
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
}
|
|
191
|
-
|
|
192
|
-
|
|
180
|
+
if (Intl.Segmenter) {
|
|
181
|
+
const segmenter = new Intl.Segmenter();
|
|
182
|
+
const segments = segmenter.segment(text);
|
|
183
|
+
for (const { segment } of segments) {
|
|
184
|
+
data2.push(segment);
|
|
185
|
+
}
|
|
186
|
+
} else {
|
|
187
|
+
const symbolMap = new Map();
|
|
188
|
+
for (const match of text.matchAll(UNICODE_SYMBOL_REG)) {
|
|
189
|
+
symbolMap.set(match.index, match[0]);
|
|
190
|
+
}
|
|
191
|
+
let t = 0;
|
|
192
|
+
while (t < text.length) {
|
|
193
|
+
const symbol = symbolMap.get(t);
|
|
194
|
+
if (symbol) {
|
|
195
|
+
data2.push(symbol);
|
|
196
|
+
t += symbol.length;
|
|
197
|
+
} else {
|
|
198
|
+
data2.push(text[t]);
|
|
199
|
+
t++;
|
|
200
|
+
}
|
|
193
201
|
}
|
|
194
202
|
}
|
|
195
203
|
return data2;
|
|
@@ -421,7 +429,6 @@ const EDITOR_ELEMENT_COPY_ATTR = [
|
|
|
421
429
|
"dateId",
|
|
422
430
|
"dateFormat",
|
|
423
431
|
"groupIds",
|
|
424
|
-
"rowFlex",
|
|
425
432
|
"rowMargin",
|
|
426
433
|
"textDecoration"
|
|
427
434
|
];
|
|
@@ -460,7 +467,8 @@ const EDITOR_ELEMENT_ZIP_ATTR = [
|
|
|
460
467
|
"imgDisplay",
|
|
461
468
|
"imgFloatPosition",
|
|
462
469
|
"textDecoration",
|
|
463
|
-
"extension"
|
|
470
|
+
"extension",
|
|
471
|
+
"externalId"
|
|
464
472
|
];
|
|
465
473
|
const TABLE_TD_ZIP_ATTR = [
|
|
466
474
|
"verticalAlign",
|
|
@@ -499,7 +507,8 @@ const CONTROL_STYLE_ATTR = [
|
|
|
499
507
|
const EDITOR_ELEMENT_CONTEXT_ATTR = [
|
|
500
508
|
...TABLE_CONTEXT_ATTR,
|
|
501
509
|
...TITLE_CONTEXT_ATTR,
|
|
502
|
-
...LIST_CONTEXT_ATTR
|
|
510
|
+
...LIST_CONTEXT_ATTR,
|
|
511
|
+
...EDITOR_ROW_ATTR
|
|
503
512
|
];
|
|
504
513
|
const TEXTLIKE_ELEMENT_TYPE = [
|
|
505
514
|
ElementType.TEXT,
|
|
@@ -513,7 +522,7 @@ const IMAGE_ELEMENT_TYPE = [
|
|
|
513
522
|
ElementType.IMAGE,
|
|
514
523
|
ElementType.LATEX
|
|
515
524
|
];
|
|
516
|
-
const
|
|
525
|
+
const BLOCK_ELEMENT_TYPE = [
|
|
517
526
|
ElementType.BLOCK,
|
|
518
527
|
ElementType.PAGE_BREAK,
|
|
519
528
|
ElementType.SEPARATOR,
|
|
@@ -3726,6 +3735,7 @@ var ControlType;
|
|
|
3726
3735
|
ControlType2["SELECT"] = "select";
|
|
3727
3736
|
ControlType2["CHECKBOX"] = "checkbox";
|
|
3728
3737
|
ControlType2["RADIO"] = "radio";
|
|
3738
|
+
ControlType2["DATE"] = "date";
|
|
3729
3739
|
})(ControlType || (ControlType = {}));
|
|
3730
3740
|
var ControlComponent;
|
|
3731
3741
|
(function(ControlComponent2) {
|
|
@@ -4235,11 +4245,11 @@ function zipElementList(payload) {
|
|
|
4235
4245
|
if (controlId) {
|
|
4236
4246
|
const controlDefaultStyle = pickObject(element, CONTROL_STYLE_ATTR);
|
|
4237
4247
|
const control = __spreadValues(__spreadValues({}, element.control), controlDefaultStyle);
|
|
4238
|
-
const controlElement = {
|
|
4248
|
+
const controlElement = __spreadProps(__spreadValues({}, pickObject(element, EDITOR_ROW_ATTR)), {
|
|
4239
4249
|
type: ElementType.CONTROL,
|
|
4240
4250
|
value: "",
|
|
4241
4251
|
control
|
|
4242
|
-
};
|
|
4252
|
+
});
|
|
4243
4253
|
const valueList = [];
|
|
4244
4254
|
while (e < elementList.length) {
|
|
4245
4255
|
const controlE = elementList[e];
|
|
@@ -4277,7 +4287,7 @@ function zipElementList(payload) {
|
|
|
4277
4287
|
}
|
|
4278
4288
|
return zipElementListData;
|
|
4279
4289
|
}
|
|
4280
|
-
function
|
|
4290
|
+
function convertTextAlignToRowFlex(node) {
|
|
4281
4291
|
const textAlign = window.getComputedStyle(node).textAlign;
|
|
4282
4292
|
switch (textAlign) {
|
|
4283
4293
|
case "left":
|
|
@@ -4296,6 +4306,24 @@ function getElementRowFlex(node) {
|
|
|
4296
4306
|
return RowFlex.LEFT;
|
|
4297
4307
|
}
|
|
4298
4308
|
}
|
|
4309
|
+
function convertRowFlexToTextAlign(rowFlex) {
|
|
4310
|
+
return rowFlex === RowFlex.ALIGNMENT ? "justify" : rowFlex;
|
|
4311
|
+
}
|
|
4312
|
+
function convertRowFlexToJustifyContent(rowFlex) {
|
|
4313
|
+
switch (rowFlex) {
|
|
4314
|
+
case RowFlex.LEFT:
|
|
4315
|
+
return "flex-start";
|
|
4316
|
+
case RowFlex.CENTER:
|
|
4317
|
+
return "center";
|
|
4318
|
+
case RowFlex.RIGHT:
|
|
4319
|
+
return "flex-end";
|
|
4320
|
+
case RowFlex.ALIGNMENT:
|
|
4321
|
+
case RowFlex.JUSTIFY:
|
|
4322
|
+
return "space-between";
|
|
4323
|
+
default:
|
|
4324
|
+
return "flex-start";
|
|
4325
|
+
}
|
|
4326
|
+
}
|
|
4299
4327
|
function isTextLikeElement(element) {
|
|
4300
4328
|
return !element.type || TEXTLIKE_ELEMENT_TYPE.includes(element.type);
|
|
4301
4329
|
}
|
|
@@ -4319,9 +4347,10 @@ function formatElementContext(sourceElementList, formatElementList2, anchorIndex
|
|
|
4319
4347
|
isBreakWarped = true;
|
|
4320
4348
|
}
|
|
4321
4349
|
if (isBreakWarped || !copyElement.listId && targetElement.type === ElementType.LIST) {
|
|
4322
|
-
|
|
4350
|
+
const cloneAttr = [...TABLE_CONTEXT_ATTR, ...EDITOR_ROW_ATTR];
|
|
4351
|
+
cloneProperty(cloneAttr, copyElement, targetElement);
|
|
4323
4352
|
(_a = targetElement.valueList) == null ? void 0 : _a.forEach((valueItem) => {
|
|
4324
|
-
cloneProperty(
|
|
4353
|
+
cloneProperty(cloneAttr, copyElement, valueItem);
|
|
4325
4354
|
});
|
|
4326
4355
|
continue;
|
|
4327
4356
|
}
|
|
@@ -4337,14 +4366,11 @@ function convertElementToDom(element, options) {
|
|
|
4337
4366
|
tagName = "sup";
|
|
4338
4367
|
} else if (element.type === ElementType.SUBSCRIPT) {
|
|
4339
4368
|
tagName = "sub";
|
|
4340
|
-
} else if (element.rowFlex === RowFlex.CENTER || element.rowFlex === RowFlex.RIGHT) {
|
|
4341
|
-
tagName = "p";
|
|
4342
4369
|
}
|
|
4343
4370
|
const dom = document.createElement(tagName);
|
|
4344
4371
|
dom.style.fontFamily = element.font || options.defaultFont;
|
|
4345
4372
|
if (element.rowFlex) {
|
|
4346
|
-
|
|
4347
|
-
dom.style.textAlign = isAlignment ? "justify" : element.rowFlex;
|
|
4373
|
+
dom.style.textAlign = convertRowFlexToTextAlign(element.rowFlex);
|
|
4348
4374
|
}
|
|
4349
4375
|
if (element.color) {
|
|
4350
4376
|
dom.style.color = element.color;
|
|
@@ -4399,10 +4425,40 @@ function splitListElement(elementList) {
|
|
|
4399
4425
|
}
|
|
4400
4426
|
return listElementListMap;
|
|
4401
4427
|
}
|
|
4428
|
+
function groupElementListByRowFlex(elementList) {
|
|
4429
|
+
var _a;
|
|
4430
|
+
const elementListGroupList = [];
|
|
4431
|
+
if (!elementList.length)
|
|
4432
|
+
return elementListGroupList;
|
|
4433
|
+
let currentRowFlex = ((_a = elementList[0]) == null ? void 0 : _a.rowFlex) || null;
|
|
4434
|
+
elementListGroupList.push({
|
|
4435
|
+
rowFlex: currentRowFlex,
|
|
4436
|
+
data: [elementList[0]]
|
|
4437
|
+
});
|
|
4438
|
+
for (let e = 1; e < elementList.length; e++) {
|
|
4439
|
+
const element = elementList[e];
|
|
4440
|
+
const rowFlex = element.rowFlex || null;
|
|
4441
|
+
if (currentRowFlex === rowFlex && !getIsBlockElement(element) && !getIsBlockElement(elementList[e - 1])) {
|
|
4442
|
+
const lastElementListGroup = elementListGroupList[elementListGroupList.length - 1];
|
|
4443
|
+
lastElementListGroup.data.push(element);
|
|
4444
|
+
} else {
|
|
4445
|
+
elementListGroupList.push({
|
|
4446
|
+
rowFlex,
|
|
4447
|
+
data: [element]
|
|
4448
|
+
});
|
|
4449
|
+
currentRowFlex = rowFlex;
|
|
4450
|
+
}
|
|
4451
|
+
}
|
|
4452
|
+
for (let g = 0; g < elementListGroupList.length; g++) {
|
|
4453
|
+
const elementListGroup = elementListGroupList[g];
|
|
4454
|
+
elementListGroup.data = zipElementList(elementListGroup.data);
|
|
4455
|
+
}
|
|
4456
|
+
return elementListGroupList;
|
|
4457
|
+
}
|
|
4402
4458
|
function createDomFromElementList(elementList, options) {
|
|
4403
4459
|
function buildDom(payload) {
|
|
4404
4460
|
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
4405
|
-
const
|
|
4461
|
+
const clipboardDom2 = document.createElement("div");
|
|
4406
4462
|
for (let e = 0; e < payload.length; e++) {
|
|
4407
4463
|
const element = payload[e];
|
|
4408
4464
|
if (element.type === ElementType.TABLE) {
|
|
@@ -4452,7 +4508,7 @@ function createDomFromElementList(elementList, options) {
|
|
|
4452
4508
|
if ((_d = td.borderTypes) == null ? void 0 : _d.includes(TdBorder.LEFT)) {
|
|
4453
4509
|
tdDom.style.borderLeft = borderStyle;
|
|
4454
4510
|
}
|
|
4455
|
-
const childDom =
|
|
4511
|
+
const childDom = createDomFromElementList(td.value, options);
|
|
4456
4512
|
tdDom.innerHTML = childDom.innerHTML;
|
|
4457
4513
|
if (td.backgroundColor) {
|
|
4458
4514
|
tdDom.style.backgroundColor = td.backgroundColor;
|
|
@@ -4461,19 +4517,19 @@ function createDomFromElementList(elementList, options) {
|
|
|
4461
4517
|
}
|
|
4462
4518
|
tableDom.append(trDom);
|
|
4463
4519
|
}
|
|
4464
|
-
|
|
4520
|
+
clipboardDom2.append(tableDom);
|
|
4465
4521
|
} else if (element.type === ElementType.HYPERLINK) {
|
|
4466
4522
|
const a = document.createElement("a");
|
|
4467
4523
|
a.innerText = element.valueList.map((v) => v.value).join("");
|
|
4468
4524
|
if (element.url) {
|
|
4469
4525
|
a.href = element.url;
|
|
4470
4526
|
}
|
|
4471
|
-
|
|
4527
|
+
clipboardDom2.append(a);
|
|
4472
4528
|
} else if (element.type === ElementType.TITLE) {
|
|
4473
4529
|
const h = document.createElement(`h${titleOrderNumberMapping[element.level]}`);
|
|
4474
|
-
const childDom = buildDom(
|
|
4530
|
+
const childDom = buildDom(element.valueList);
|
|
4475
4531
|
h.innerHTML = childDom.innerHTML;
|
|
4476
|
-
|
|
4532
|
+
clipboardDom2.append(h);
|
|
4477
4533
|
} else if (element.type === ElementType.LIST) {
|
|
4478
4534
|
const list = document.createElement(listTypeElementMapping[element.listType]);
|
|
4479
4535
|
if (element.listStyle) {
|
|
@@ -4487,7 +4543,7 @@ function createDomFromElementList(elementList, options) {
|
|
|
4487
4543
|
li.innerHTML = childDom.innerHTML;
|
|
4488
4544
|
list.append(li);
|
|
4489
4545
|
});
|
|
4490
|
-
|
|
4546
|
+
clipboardDom2.append(list);
|
|
4491
4547
|
} else if (element.type === ElementType.IMAGE) {
|
|
4492
4548
|
const img = document.createElement("img");
|
|
4493
4549
|
if (element.value) {
|
|
@@ -4495,33 +4551,33 @@ function createDomFromElementList(elementList, options) {
|
|
|
4495
4551
|
img.width = element.width;
|
|
4496
4552
|
img.height = element.height;
|
|
4497
4553
|
}
|
|
4498
|
-
|
|
4554
|
+
clipboardDom2.append(img);
|
|
4499
4555
|
} else if (element.type === ElementType.SEPARATOR) {
|
|
4500
4556
|
const hr = document.createElement("hr");
|
|
4501
|
-
|
|
4557
|
+
clipboardDom2.append(hr);
|
|
4502
4558
|
} else if (element.type === ElementType.CHECKBOX) {
|
|
4503
4559
|
const checkbox = document.createElement("input");
|
|
4504
4560
|
checkbox.type = "checkbox";
|
|
4505
4561
|
if ((_e = element.checkbox) == null ? void 0 : _e.value) {
|
|
4506
4562
|
checkbox.setAttribute("checked", "true");
|
|
4507
4563
|
}
|
|
4508
|
-
|
|
4564
|
+
clipboardDom2.append(checkbox);
|
|
4509
4565
|
} else if (element.type === ElementType.RADIO) {
|
|
4510
4566
|
const radio = document.createElement("input");
|
|
4511
4567
|
radio.type = "radio";
|
|
4512
4568
|
if ((_f = element.radio) == null ? void 0 : _f.value) {
|
|
4513
4569
|
radio.setAttribute("checked", "true");
|
|
4514
4570
|
}
|
|
4515
|
-
|
|
4571
|
+
clipboardDom2.append(radio);
|
|
4516
4572
|
} else if (element.type === ElementType.TAB) {
|
|
4517
4573
|
const tab2 = document.createElement("span");
|
|
4518
4574
|
tab2.innerHTML = `${NON_BREAKING_SPACE}${NON_BREAKING_SPACE}`;
|
|
4519
|
-
|
|
4575
|
+
clipboardDom2.append(tab2);
|
|
4520
4576
|
} else if (element.type === ElementType.CONTROL) {
|
|
4521
4577
|
const controlElement = document.createElement("span");
|
|
4522
|
-
const childDom = buildDom(
|
|
4578
|
+
const childDom = buildDom(((_g = element.control) == null ? void 0 : _g.value) || []);
|
|
4523
4579
|
controlElement.innerHTML = childDom.innerHTML;
|
|
4524
|
-
|
|
4580
|
+
clipboardDom2.append(controlElement);
|
|
4525
4581
|
} else if (!element.type || element.type === ElementType.LATEX || TEXTLIKE_ELEMENT_TYPE.includes(element.type)) {
|
|
4526
4582
|
let text = "";
|
|
4527
4583
|
if (element.type === ElementType.DATE) {
|
|
@@ -4535,23 +4591,44 @@ function createDomFromElementList(elementList, options) {
|
|
|
4535
4591
|
if (((_i = payload[e - 1]) == null ? void 0 : _i.type) === ElementType.TITLE) {
|
|
4536
4592
|
text = text.replace(/^\n/, "");
|
|
4537
4593
|
}
|
|
4538
|
-
if (dom.tagName === "P") {
|
|
4539
|
-
text = text.replace(/\n$/, "");
|
|
4540
|
-
}
|
|
4541
4594
|
dom.innerText = text.replace(new RegExp(`${ZERO}`, "g"), "\n");
|
|
4542
|
-
|
|
4595
|
+
clipboardDom2.append(dom);
|
|
4596
|
+
}
|
|
4597
|
+
}
|
|
4598
|
+
return clipboardDom2;
|
|
4599
|
+
}
|
|
4600
|
+
const clipboardDom = document.createElement("div");
|
|
4601
|
+
const groupElementList = groupElementListByRowFlex(elementList);
|
|
4602
|
+
for (let g = 0; g < groupElementList.length; g++) {
|
|
4603
|
+
const elementGroupRowFlex = groupElementList[g];
|
|
4604
|
+
const isDefaultRowFlex = !elementGroupRowFlex.rowFlex || elementGroupRowFlex.rowFlex === RowFlex.LEFT;
|
|
4605
|
+
const rowFlexDom = document.createElement("div");
|
|
4606
|
+
if (!isDefaultRowFlex) {
|
|
4607
|
+
const firstElement = elementGroupRowFlex.data[0];
|
|
4608
|
+
if (getIsBlockElement(firstElement)) {
|
|
4609
|
+
rowFlexDom.style.display = "flex";
|
|
4610
|
+
rowFlexDom.style.justifyContent = convertRowFlexToJustifyContent(firstElement.rowFlex);
|
|
4611
|
+
} else {
|
|
4612
|
+
rowFlexDom.style.textAlign = convertRowFlexToTextAlign(elementGroupRowFlex.rowFlex);
|
|
4543
4613
|
}
|
|
4544
4614
|
}
|
|
4545
|
-
|
|
4615
|
+
rowFlexDom.innerHTML = buildDom(elementGroupRowFlex.data).innerHTML;
|
|
4616
|
+
if (!isDefaultRowFlex) {
|
|
4617
|
+
clipboardDom.append(rowFlexDom);
|
|
4618
|
+
} else {
|
|
4619
|
+
rowFlexDom.childNodes.forEach((child) => {
|
|
4620
|
+
clipboardDom.append(child.cloneNode(true));
|
|
4621
|
+
});
|
|
4622
|
+
}
|
|
4546
4623
|
}
|
|
4547
|
-
return
|
|
4624
|
+
return clipboardDom;
|
|
4548
4625
|
}
|
|
4549
4626
|
function convertTextNodeToElement(textNode) {
|
|
4550
4627
|
if (!textNode || textNode.nodeType !== 3)
|
|
4551
4628
|
return null;
|
|
4552
4629
|
const parentNode = textNode.parentNode;
|
|
4553
4630
|
const anchorNode = parentNode.nodeName === "FONT" ? parentNode.parentNode : parentNode;
|
|
4554
|
-
const rowFlex =
|
|
4631
|
+
const rowFlex = convertTextAlignToRowFlex(anchorNode);
|
|
4555
4632
|
const value = textNode.textContent;
|
|
4556
4633
|
const style = window.getComputedStyle(anchorNode);
|
|
4557
4634
|
if (!value || anchorNode.nodeName === "STYLE")
|
|
@@ -4820,8 +4897,8 @@ function getSlimCloneElementList(elementList) {
|
|
|
4820
4897
|
"style"
|
|
4821
4898
|
]);
|
|
4822
4899
|
}
|
|
4823
|
-
function
|
|
4824
|
-
return !!(element == null ? void 0 : element.type) && (
|
|
4900
|
+
function getIsBlockElement(element) {
|
|
4901
|
+
return !!(element == null ? void 0 : element.type) && (BLOCK_ELEMENT_TYPE.includes(element.type) || element.imgDisplay === ImageDisplay.INLINE);
|
|
4825
4902
|
}
|
|
4826
4903
|
function setClipboardData(data2) {
|
|
4827
4904
|
localStorage.setItem(EDITOR_CLIPBOARD, JSON.stringify({
|
|
@@ -5204,8 +5281,10 @@ class Cursor {
|
|
|
5204
5281
|
const cursorLeft = hitLineStartIndex ? leftTop[0] : rightTop[0];
|
|
5205
5282
|
agentCursorDom.style.left = `${cursorLeft}px`;
|
|
5206
5283
|
agentCursorDom.style.top = `${cursorTop + cursorHeight - defaultOffsetHeight}px`;
|
|
5207
|
-
if (!isShow)
|
|
5284
|
+
if (!isShow) {
|
|
5285
|
+
this.recoveryCursor();
|
|
5208
5286
|
return;
|
|
5287
|
+
}
|
|
5209
5288
|
const isReadonly = this.draw.isReadonly();
|
|
5210
5289
|
this.cursorDom.style.width = `${width * scale}px`;
|
|
5211
5290
|
this.cursorDom.style.backgroundColor = color;
|
|
@@ -6008,13 +6087,21 @@ function del(evt, host) {
|
|
|
6008
6087
|
if (!cursorPosition)
|
|
6009
6088
|
return;
|
|
6010
6089
|
const { index: index2 } = cursorPosition;
|
|
6011
|
-
const
|
|
6012
|
-
if (
|
|
6013
|
-
draw.spliceElementList(elementList,
|
|
6090
|
+
const positionContext = position.getPositionContext();
|
|
6091
|
+
if (positionContext.isDirectHit && positionContext.isImage) {
|
|
6092
|
+
draw.spliceElementList(elementList, index2, 1);
|
|
6093
|
+
curIndex = index2 - 1;
|
|
6014
6094
|
} else {
|
|
6015
|
-
|
|
6095
|
+
const isCollapsed = rangeManager.getIsCollapsed();
|
|
6096
|
+
if (!isCollapsed) {
|
|
6097
|
+
draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex);
|
|
6098
|
+
} else {
|
|
6099
|
+
if (!elementList[index2 + 1])
|
|
6100
|
+
return;
|
|
6101
|
+
draw.spliceElementList(elementList, index2 + 1, 1);
|
|
6102
|
+
}
|
|
6103
|
+
curIndex = isCollapsed ? index2 : startIndex;
|
|
6016
6104
|
}
|
|
6017
|
-
curIndex = isCollapsed ? index2 : startIndex;
|
|
6018
6105
|
}
|
|
6019
6106
|
if (curIndex === null)
|
|
6020
6107
|
return;
|
|
@@ -6049,7 +6136,10 @@ function enter(evt, host) {
|
|
|
6049
6136
|
formatElementContext(elementList, [enterText], startIndex);
|
|
6050
6137
|
const copyElement = getAnchorElement(elementList, endIndex);
|
|
6051
6138
|
if (copyElement) {
|
|
6052
|
-
const copyAttr = [...
|
|
6139
|
+
const copyAttr = [...EDITOR_ROW_ATTR];
|
|
6140
|
+
if (copyElement.controlComponent !== ControlComponent.POSTFIX) {
|
|
6141
|
+
copyAttr.push(...EDITOR_ELEMENT_STYLE_ATTR);
|
|
6142
|
+
}
|
|
6053
6143
|
copyAttr.forEach((attr) => {
|
|
6054
6144
|
const value = copyElement[attr];
|
|
6055
6145
|
if (value !== void 0) {
|
|
@@ -6083,7 +6173,7 @@ function enter(evt, host) {
|
|
|
6083
6173
|
evt.preventDefault();
|
|
6084
6174
|
}
|
|
6085
6175
|
function left(evt, host) {
|
|
6086
|
-
var _a;
|
|
6176
|
+
var _a, _b;
|
|
6087
6177
|
const draw = host.getDraw();
|
|
6088
6178
|
const isReadonly = draw.isReadonly();
|
|
6089
6179
|
if (isReadonly)
|
|
@@ -6100,11 +6190,18 @@ function left(evt, host) {
|
|
|
6100
6190
|
const { startIndex, endIndex } = rangeManager.getRange();
|
|
6101
6191
|
const isCollapsed = rangeManager.getIsCollapsed();
|
|
6102
6192
|
const elementList = draw.getElementList();
|
|
6193
|
+
const control = draw.getControl();
|
|
6194
|
+
if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && ((_a = elementList[index2]) == null ? void 0 : _a.controlComponent) === ControlComponent.PREFIX) {
|
|
6195
|
+
control.initNextControl({
|
|
6196
|
+
direction: MoveDirection.UP
|
|
6197
|
+
});
|
|
6198
|
+
return;
|
|
6199
|
+
}
|
|
6103
6200
|
let moveCount = 1;
|
|
6104
6201
|
if (isMod(evt)) {
|
|
6105
6202
|
const LETTER_REG = draw.getLetterReg();
|
|
6106
6203
|
const moveStartIndex = evt.shiftKey && !isCollapsed && startIndex === (cursorPosition == null ? void 0 : cursorPosition.index) ? endIndex : startIndex;
|
|
6107
|
-
if (LETTER_REG.test((
|
|
6204
|
+
if (LETTER_REG.test((_b = elementList[moveStartIndex]) == null ? void 0 : _b.value)) {
|
|
6108
6205
|
let i = moveStartIndex - 1;
|
|
6109
6206
|
while (i > 0) {
|
|
6110
6207
|
const element = elementList[i];
|
|
@@ -6214,7 +6311,7 @@ function left(evt, host) {
|
|
|
6214
6311
|
evt.preventDefault();
|
|
6215
6312
|
}
|
|
6216
6313
|
function right(evt, host) {
|
|
6217
|
-
var _a;
|
|
6314
|
+
var _a, _b;
|
|
6218
6315
|
const draw = host.getDraw();
|
|
6219
6316
|
const isReadonly = draw.isReadonly();
|
|
6220
6317
|
if (isReadonly)
|
|
@@ -6232,11 +6329,18 @@ function right(evt, host) {
|
|
|
6232
6329
|
const { startIndex, endIndex } = rangeManager.getRange();
|
|
6233
6330
|
const isCollapsed = rangeManager.getIsCollapsed();
|
|
6234
6331
|
let elementList = draw.getElementList();
|
|
6332
|
+
const control = draw.getControl();
|
|
6333
|
+
if (draw.getMode() === EditorMode.FORM && control.getActiveControl() && ((_a = elementList[index2 + 1]) == null ? void 0 : _a.controlComponent) === ControlComponent.POSTFIX) {
|
|
6334
|
+
control.initNextControl({
|
|
6335
|
+
direction: MoveDirection.DOWN
|
|
6336
|
+
});
|
|
6337
|
+
return;
|
|
6338
|
+
}
|
|
6235
6339
|
let moveCount = 1;
|
|
6236
6340
|
if (isMod(evt)) {
|
|
6237
6341
|
const LETTER_REG = draw.getLetterReg();
|
|
6238
6342
|
const moveStartIndex = evt.shiftKey && !isCollapsed && startIndex === (cursorPosition == null ? void 0 : cursorPosition.index) ? endIndex : startIndex;
|
|
6239
|
-
if (LETTER_REG.test((
|
|
6343
|
+
if (LETTER_REG.test((_b = elementList[moveStartIndex + 1]) == null ? void 0 : _b.value)) {
|
|
6240
6344
|
let i = moveStartIndex + 2;
|
|
6241
6345
|
while (i < elementList.length) {
|
|
6242
6346
|
const element = elementList[i];
|
|
@@ -6352,16 +6456,24 @@ function tab(evt, host) {
|
|
|
6352
6456
|
const isReadonly = draw.isReadonly();
|
|
6353
6457
|
if (isReadonly)
|
|
6354
6458
|
return;
|
|
6355
|
-
const tabElement = {
|
|
6356
|
-
type: ElementType.TAB,
|
|
6357
|
-
value: ""
|
|
6358
|
-
};
|
|
6359
|
-
const rangeManager = draw.getRange();
|
|
6360
|
-
const { startIndex } = rangeManager.getRange();
|
|
6361
|
-
const elementList = draw.getElementList();
|
|
6362
|
-
formatElementContext(elementList, [tabElement], startIndex);
|
|
6363
|
-
draw.insertElementList([tabElement]);
|
|
6364
6459
|
evt.preventDefault();
|
|
6460
|
+
const control = draw.getControl();
|
|
6461
|
+
const activeControl = control.getActiveControl();
|
|
6462
|
+
if (activeControl && control.getIsRangeWithinControl()) {
|
|
6463
|
+
control.initNextControl({
|
|
6464
|
+
direction: evt.shiftKey ? MoveDirection.UP : MoveDirection.DOWN
|
|
6465
|
+
});
|
|
6466
|
+
} else {
|
|
6467
|
+
const tabElement = {
|
|
6468
|
+
type: ElementType.TAB,
|
|
6469
|
+
value: ""
|
|
6470
|
+
};
|
|
6471
|
+
const rangeManager = draw.getRange();
|
|
6472
|
+
const { startIndex } = rangeManager.getRange();
|
|
6473
|
+
const elementList = draw.getElementList();
|
|
6474
|
+
formatElementContext(elementList, [tabElement], startIndex);
|
|
6475
|
+
draw.insertElementList([tabElement]);
|
|
6476
|
+
}
|
|
6365
6477
|
}
|
|
6366
6478
|
function getNextPositionIndex(payload) {
|
|
6367
6479
|
const { positionList, index: index2, isUp, rowNo, cursorX } = payload;
|
|
@@ -7646,7 +7758,7 @@ class Position {
|
|
|
7646
7758
|
this.positionContext = payload;
|
|
7647
7759
|
}
|
|
7648
7760
|
getPositionByXY(payload) {
|
|
7649
|
-
var _a, _b, _c;
|
|
7761
|
+
var _a, _b, _c, _d, _e;
|
|
7650
7762
|
const { x, y, isTable } = payload;
|
|
7651
7763
|
let { elementList, positionList } = payload;
|
|
7652
7764
|
if (!elementList) {
|
|
@@ -7808,7 +7920,8 @@ class Position {
|
|
|
7808
7920
|
}
|
|
7809
7921
|
if (!isLastArea) {
|
|
7810
7922
|
const header = this.draw.getHeader();
|
|
7811
|
-
const
|
|
7923
|
+
const headerHeight = header.getHeight();
|
|
7924
|
+
const headerBottomY = header.getHeaderTop() + headerHeight;
|
|
7812
7925
|
const footer = this.draw.getFooter();
|
|
7813
7926
|
const pageHeight = this.draw.getHeight();
|
|
7814
7927
|
const footerTopY = pageHeight - (footer.getFooterBottom() + footer.getHeight());
|
|
@@ -7833,14 +7946,45 @@ class Position {
|
|
|
7833
7946
|
};
|
|
7834
7947
|
}
|
|
7835
7948
|
}
|
|
7949
|
+
const margins = this.draw.getMargins();
|
|
7950
|
+
if (y <= margins[1]) {
|
|
7951
|
+
for (let p = 0; p < positionList.length; p++) {
|
|
7952
|
+
const position = positionList[p];
|
|
7953
|
+
if (position.pageNo !== positionNo || position.rowNo !== 0)
|
|
7954
|
+
continue;
|
|
7955
|
+
const { leftTop, rightTop } = position.coordinate;
|
|
7956
|
+
if (x <= margins[3] || x >= leftTop[0] && x <= rightTop[0] || ((_b = positionList[p + 1]) == null ? void 0 : _b.rowNo) !== 0) {
|
|
7957
|
+
return {
|
|
7958
|
+
index: position.index
|
|
7959
|
+
};
|
|
7960
|
+
}
|
|
7961
|
+
}
|
|
7962
|
+
} else {
|
|
7963
|
+
const lastLetter = lastLetterList[lastLetterList.length - 1];
|
|
7964
|
+
if (lastLetter) {
|
|
7965
|
+
const lastRowNo = lastLetter.rowNo;
|
|
7966
|
+
for (let p = 0; p < positionList.length; p++) {
|
|
7967
|
+
const position = positionList[p];
|
|
7968
|
+
if (position.pageNo !== positionNo || position.rowNo !== lastRowNo) {
|
|
7969
|
+
continue;
|
|
7970
|
+
}
|
|
7971
|
+
const { leftTop, rightTop } = position.coordinate;
|
|
7972
|
+
if (x <= margins[3] || x >= leftTop[0] && x <= rightTop[0] || ((_c = positionList[p + 1]) == null ? void 0 : _c.rowNo) !== lastRowNo) {
|
|
7973
|
+
return {
|
|
7974
|
+
index: position.index
|
|
7975
|
+
};
|
|
7976
|
+
}
|
|
7977
|
+
}
|
|
7978
|
+
}
|
|
7979
|
+
}
|
|
7836
7980
|
return {
|
|
7837
|
-
index: ((
|
|
7981
|
+
index: ((_d = lastLetterList[lastLetterList.length - 1]) == null ? void 0 : _d.index) || positionList.length - 1
|
|
7838
7982
|
};
|
|
7839
7983
|
}
|
|
7840
7984
|
return {
|
|
7841
7985
|
hitLineStartIndex,
|
|
7842
7986
|
index: curPositionIndex,
|
|
7843
|
-
isControl: !!((
|
|
7987
|
+
isControl: !!((_e = elementList[curPositionIndex]) == null ? void 0 : _e.controlId)
|
|
7844
7988
|
};
|
|
7845
7989
|
}
|
|
7846
7990
|
getFloatPositionByXY(payload) {
|
|
@@ -10719,1740 +10863,2204 @@ class TextControl {
|
|
|
10719
10863
|
return startIndex;
|
|
10720
10864
|
}
|
|
10721
10865
|
}
|
|
10722
|
-
class
|
|
10723
|
-
constructor(draw) {
|
|
10724
|
-
__publicField(this, "controlBorder");
|
|
10866
|
+
class DatePicker {
|
|
10867
|
+
constructor(draw, options = {}) {
|
|
10725
10868
|
__publicField(this, "draw");
|
|
10726
|
-
__publicField(this, "range");
|
|
10727
|
-
__publicField(this, "listener");
|
|
10728
|
-
__publicField(this, "eventBus");
|
|
10729
|
-
__publicField(this, "controlSearch");
|
|
10730
10869
|
__publicField(this, "options");
|
|
10731
|
-
__publicField(this, "
|
|
10732
|
-
__publicField(this, "
|
|
10733
|
-
this
|
|
10870
|
+
__publicField(this, "now");
|
|
10871
|
+
__publicField(this, "dom");
|
|
10872
|
+
__publicField(this, "renderOptions");
|
|
10873
|
+
__publicField(this, "isDatePicker");
|
|
10874
|
+
__publicField(this, "pickDate");
|
|
10875
|
+
__publicField(this, "lang");
|
|
10734
10876
|
this.draw = draw;
|
|
10735
|
-
this.
|
|
10736
|
-
this.
|
|
10737
|
-
this.
|
|
10738
|
-
this.
|
|
10739
|
-
this.
|
|
10740
|
-
this.
|
|
10741
|
-
this.
|
|
10742
|
-
|
|
10743
|
-
setHighlightList(payload) {
|
|
10744
|
-
this.controlSearch.setHighlightList(payload);
|
|
10745
|
-
}
|
|
10746
|
-
computeHighlightList() {
|
|
10747
|
-
const highlightList = this.controlSearch.getHighlightList();
|
|
10748
|
-
if (highlightList.length) {
|
|
10749
|
-
this.controlSearch.computeHighlightList();
|
|
10750
|
-
}
|
|
10751
|
-
}
|
|
10752
|
-
renderHighlightList(ctx, pageNo) {
|
|
10753
|
-
const highlightMatchResult = this.controlSearch.getHighlightMatchResult();
|
|
10754
|
-
if (highlightMatchResult.length) {
|
|
10755
|
-
this.controlSearch.renderHighlightList(ctx, pageNo);
|
|
10756
|
-
}
|
|
10757
|
-
}
|
|
10758
|
-
getDraw() {
|
|
10759
|
-
return this.draw;
|
|
10877
|
+
this.options = options;
|
|
10878
|
+
this.lang = this._getLang();
|
|
10879
|
+
this.now = new Date();
|
|
10880
|
+
this.dom = this._createDom();
|
|
10881
|
+
this.renderOptions = null;
|
|
10882
|
+
this.isDatePicker = true;
|
|
10883
|
+
this.pickDate = null;
|
|
10884
|
+
this._bindEvent();
|
|
10760
10885
|
}
|
|
10761
|
-
|
|
10762
|
-
|
|
10763
|
-
|
|
10764
|
-
|
|
10765
|
-
|
|
10766
|
-
|
|
10767
|
-
|
|
10768
|
-
|
|
10769
|
-
|
|
10770
|
-
|
|
10771
|
-
|
|
10772
|
-
|
|
10886
|
+
_createDom() {
|
|
10887
|
+
const datePickerContainer = document.createElement("div");
|
|
10888
|
+
datePickerContainer.classList.add(`${EDITOR_PREFIX}-date-container`);
|
|
10889
|
+
datePickerContainer.setAttribute(EDITOR_COMPONENT, EditorComponent.POPUP);
|
|
10890
|
+
const dateWrap = document.createElement("div");
|
|
10891
|
+
dateWrap.classList.add(`${EDITOR_PREFIX}-date-wrap`);
|
|
10892
|
+
const datePickerTitle = document.createElement("div");
|
|
10893
|
+
datePickerTitle.classList.add(`${EDITOR_PREFIX}-date-title`);
|
|
10894
|
+
const preYearTitle = document.createElement("span");
|
|
10895
|
+
preYearTitle.classList.add(`${EDITOR_PREFIX}-date-title__pre-year`);
|
|
10896
|
+
preYearTitle.innerText = `<<`;
|
|
10897
|
+
const preMonthTitle = document.createElement("span");
|
|
10898
|
+
preMonthTitle.classList.add(`${EDITOR_PREFIX}-date-title__pre-month`);
|
|
10899
|
+
preMonthTitle.innerText = `<`;
|
|
10900
|
+
const nowTitle = document.createElement("span");
|
|
10901
|
+
nowTitle.classList.add(`${EDITOR_PREFIX}-date-title__now`);
|
|
10902
|
+
const nextMonthTitle = document.createElement("span");
|
|
10903
|
+
nextMonthTitle.classList.add(`${EDITOR_PREFIX}-date-title__next-month`);
|
|
10904
|
+
nextMonthTitle.innerText = `>`;
|
|
10905
|
+
const nextYearTitle = document.createElement("span");
|
|
10906
|
+
nextYearTitle.classList.add(`${EDITOR_PREFIX}-date-title__next-year`);
|
|
10907
|
+
nextYearTitle.innerText = `>>`;
|
|
10908
|
+
datePickerTitle.append(preYearTitle);
|
|
10909
|
+
datePickerTitle.append(preMonthTitle);
|
|
10910
|
+
datePickerTitle.append(nowTitle);
|
|
10911
|
+
datePickerTitle.append(nextMonthTitle);
|
|
10912
|
+
datePickerTitle.append(nextYearTitle);
|
|
10913
|
+
const datePickerWeek = document.createElement("div");
|
|
10914
|
+
datePickerWeek.classList.add(`${EDITOR_PREFIX}-date-week`);
|
|
10915
|
+
const { weeks: { sun, mon, tue, wed, thu, fri, sat } } = this.lang;
|
|
10916
|
+
const weekList = [sun, mon, tue, wed, thu, fri, sat];
|
|
10917
|
+
weekList.forEach((week) => {
|
|
10918
|
+
const weekDom = document.createElement("span");
|
|
10919
|
+
weekDom.innerText = `${week}`;
|
|
10920
|
+
datePickerWeek.append(weekDom);
|
|
10921
|
+
});
|
|
10922
|
+
const datePickerDay = document.createElement("div");
|
|
10923
|
+
datePickerDay.classList.add(`${EDITOR_PREFIX}-date-day`);
|
|
10924
|
+
dateWrap.append(datePickerTitle);
|
|
10925
|
+
dateWrap.append(datePickerWeek);
|
|
10926
|
+
dateWrap.append(datePickerDay);
|
|
10927
|
+
const timeWrap = document.createElement("ul");
|
|
10928
|
+
timeWrap.classList.add(`${EDITOR_PREFIX}-time-wrap`);
|
|
10929
|
+
let hourTime;
|
|
10930
|
+
let minuteTime;
|
|
10931
|
+
let secondTime;
|
|
10932
|
+
const timeList = [this.lang.hour, this.lang.minute, this.lang.second];
|
|
10933
|
+
timeList.forEach((t, i) => {
|
|
10934
|
+
const li = document.createElement("li");
|
|
10935
|
+
const timeText = document.createElement("span");
|
|
10936
|
+
timeText.innerText = t;
|
|
10937
|
+
li.append(timeText);
|
|
10938
|
+
const ol = document.createElement("ol");
|
|
10939
|
+
const isHour = i === 0;
|
|
10940
|
+
const isMinute = i === 1;
|
|
10941
|
+
const endIndex = isHour ? 24 : 60;
|
|
10942
|
+
for (let i2 = 0; i2 < endIndex; i2++) {
|
|
10943
|
+
const time = document.createElement("li");
|
|
10944
|
+
time.innerText = `${String(i2).padStart(2, "0")}`;
|
|
10945
|
+
time.setAttribute("data-id", `${i2}`);
|
|
10946
|
+
ol.append(time);
|
|
10773
10947
|
}
|
|
10774
|
-
if (
|
|
10775
|
-
|
|
10776
|
-
if (
|
|
10777
|
-
|
|
10778
|
-
|
|
10779
|
-
|
|
10780
|
-
}
|
|
10948
|
+
if (isHour) {
|
|
10949
|
+
hourTime = ol;
|
|
10950
|
+
} else if (isMinute) {
|
|
10951
|
+
minuteTime = ol;
|
|
10952
|
+
} else {
|
|
10953
|
+
secondTime = ol;
|
|
10781
10954
|
}
|
|
10782
|
-
|
|
10955
|
+
li.append(ol);
|
|
10956
|
+
timeWrap.append(li);
|
|
10783
10957
|
});
|
|
10958
|
+
const datePickerMenu = document.createElement("div");
|
|
10959
|
+
datePickerMenu.classList.add(`${EDITOR_PREFIX}-date-menu`);
|
|
10960
|
+
const timeMenu = document.createElement("button");
|
|
10961
|
+
timeMenu.classList.add(`${EDITOR_PREFIX}-date-menu__time`);
|
|
10962
|
+
timeMenu.innerText = this.lang.timeSelect;
|
|
10963
|
+
const nowMenu = document.createElement("button");
|
|
10964
|
+
nowMenu.classList.add(`${EDITOR_PREFIX}-date-menu__now`);
|
|
10965
|
+
nowMenu.innerText = this.lang.now;
|
|
10966
|
+
const submitMenu = document.createElement("button");
|
|
10967
|
+
submitMenu.classList.add(`${EDITOR_PREFIX}-date-menu__submit`);
|
|
10968
|
+
submitMenu.innerText = this.lang.confirm;
|
|
10969
|
+
datePickerMenu.append(timeMenu);
|
|
10970
|
+
datePickerMenu.append(nowMenu);
|
|
10971
|
+
datePickerMenu.append(submitMenu);
|
|
10972
|
+
datePickerContainer.append(dateWrap);
|
|
10973
|
+
datePickerContainer.append(timeWrap);
|
|
10974
|
+
datePickerContainer.append(datePickerMenu);
|
|
10975
|
+
this.draw.getContainer().append(datePickerContainer);
|
|
10976
|
+
return {
|
|
10977
|
+
container: datePickerContainer,
|
|
10978
|
+
dateWrap,
|
|
10979
|
+
datePickerWeek,
|
|
10980
|
+
timeWrap,
|
|
10981
|
+
title: {
|
|
10982
|
+
preYear: preYearTitle,
|
|
10983
|
+
preMonth: preMonthTitle,
|
|
10984
|
+
now: nowTitle,
|
|
10985
|
+
nextMonth: nextMonthTitle,
|
|
10986
|
+
nextYear: nextYearTitle
|
|
10987
|
+
},
|
|
10988
|
+
day: datePickerDay,
|
|
10989
|
+
time: {
|
|
10990
|
+
hour: hourTime,
|
|
10991
|
+
minute: minuteTime,
|
|
10992
|
+
second: secondTime
|
|
10993
|
+
},
|
|
10994
|
+
menu: {
|
|
10995
|
+
time: timeMenu,
|
|
10996
|
+
now: nowMenu,
|
|
10997
|
+
submit: submitMenu
|
|
10998
|
+
}
|
|
10999
|
+
};
|
|
10784
11000
|
}
|
|
10785
|
-
|
|
10786
|
-
|
|
10787
|
-
|
|
10788
|
-
|
|
10789
|
-
|
|
10790
|
-
|
|
10791
|
-
|
|
10792
|
-
|
|
10793
|
-
|
|
10794
|
-
|
|
10795
|
-
|
|
10796
|
-
|
|
10797
|
-
|
|
10798
|
-
|
|
10799
|
-
|
|
10800
|
-
|
|
10801
|
-
|
|
10802
|
-
|
|
10803
|
-
|
|
10804
|
-
|
|
10805
|
-
|
|
10806
|
-
|
|
10807
|
-
|
|
10808
|
-
|
|
10809
|
-
|
|
10810
|
-
|
|
10811
|
-
|
|
10812
|
-
|
|
10813
|
-
|
|
10814
|
-
|
|
10815
|
-
|
|
10816
|
-
|
|
10817
|
-
|
|
10818
|
-
|
|
10819
|
-
|
|
10820
|
-
|
|
10821
|
-
|
|
10822
|
-
|
|
10823
|
-
|
|
10824
|
-
|
|
10825
|
-
|
|
10826
|
-
|
|
10827
|
-
|
|
10828
|
-
|
|
10829
|
-
|
|
10830
|
-
|
|
10831
|
-
|
|
10832
|
-
|
|
10833
|
-
|
|
10834
|
-
|
|
10835
|
-
|
|
10836
|
-
|
|
10837
|
-
|
|
11001
|
+
_bindEvent() {
|
|
11002
|
+
this.dom.title.preYear.onclick = () => {
|
|
11003
|
+
this._preYear();
|
|
11004
|
+
};
|
|
11005
|
+
this.dom.title.preMonth.onclick = () => {
|
|
11006
|
+
this._preMonth();
|
|
11007
|
+
};
|
|
11008
|
+
this.dom.title.nextMonth.onclick = () => {
|
|
11009
|
+
this._nextMonth();
|
|
11010
|
+
};
|
|
11011
|
+
this.dom.title.nextYear.onclick = () => {
|
|
11012
|
+
this._nextYear();
|
|
11013
|
+
};
|
|
11014
|
+
this.dom.menu.time.onclick = () => {
|
|
11015
|
+
this.isDatePicker = !this.isDatePicker;
|
|
11016
|
+
this._toggleDateTimePicker();
|
|
11017
|
+
};
|
|
11018
|
+
this.dom.menu.now.onclick = () => {
|
|
11019
|
+
this._now();
|
|
11020
|
+
this._submit();
|
|
11021
|
+
};
|
|
11022
|
+
this.dom.menu.submit.onclick = () => {
|
|
11023
|
+
this.dispose();
|
|
11024
|
+
this._submit();
|
|
11025
|
+
};
|
|
11026
|
+
this.dom.time.hour.onclick = (evt) => {
|
|
11027
|
+
if (!this.pickDate)
|
|
11028
|
+
return;
|
|
11029
|
+
const li = evt.target;
|
|
11030
|
+
const id = li.dataset.id;
|
|
11031
|
+
if (!id)
|
|
11032
|
+
return;
|
|
11033
|
+
this.pickDate.setHours(Number(id));
|
|
11034
|
+
this._setTimePick(false);
|
|
11035
|
+
};
|
|
11036
|
+
this.dom.time.minute.onclick = (evt) => {
|
|
11037
|
+
if (!this.pickDate)
|
|
11038
|
+
return;
|
|
11039
|
+
const li = evt.target;
|
|
11040
|
+
const id = li.dataset.id;
|
|
11041
|
+
if (!id)
|
|
11042
|
+
return;
|
|
11043
|
+
this.pickDate.setMinutes(Number(id));
|
|
11044
|
+
this._setTimePick(false);
|
|
11045
|
+
};
|
|
11046
|
+
this.dom.time.second.onclick = (evt) => {
|
|
11047
|
+
if (!this.pickDate)
|
|
11048
|
+
return;
|
|
11049
|
+
const li = evt.target;
|
|
11050
|
+
const id = li.dataset.id;
|
|
11051
|
+
if (!id)
|
|
11052
|
+
return;
|
|
11053
|
+
this.pickDate.setSeconds(Number(id));
|
|
11054
|
+
this._setTimePick(false);
|
|
11055
|
+
};
|
|
10838
11056
|
}
|
|
10839
|
-
|
|
11057
|
+
_setPosition() {
|
|
11058
|
+
if (!this.renderOptions)
|
|
11059
|
+
return;
|
|
11060
|
+
const { position: { coordinate: { leftTop: [left2, top] }, lineHeight, pageNo } } = this.renderOptions;
|
|
10840
11061
|
const height = this.draw.getHeight();
|
|
10841
11062
|
const pageGap = this.draw.getPageGap();
|
|
10842
|
-
|
|
11063
|
+
const currentPageNo = pageNo != null ? pageNo : this.draw.getPageNo();
|
|
11064
|
+
const preY = currentPageNo * (height + pageGap);
|
|
11065
|
+
this.dom.container.style.left = `${left2}px`;
|
|
11066
|
+
this.dom.container.style.top = `${top + preY + lineHeight}px`;
|
|
10843
11067
|
}
|
|
10844
|
-
|
|
10845
|
-
return
|
|
11068
|
+
isInvalidDate(value) {
|
|
11069
|
+
return value.toDateString() === "Invalid Date";
|
|
10846
11070
|
}
|
|
10847
|
-
|
|
10848
|
-
|
|
11071
|
+
_setValue() {
|
|
11072
|
+
var _a;
|
|
11073
|
+
const value = (_a = this.renderOptions) == null ? void 0 : _a.value;
|
|
11074
|
+
if (value) {
|
|
11075
|
+
const setDate = new Date(value);
|
|
11076
|
+
this.now = this.isInvalidDate(setDate) ? new Date() : setDate;
|
|
11077
|
+
} else {
|
|
11078
|
+
this.now = new Date();
|
|
11079
|
+
}
|
|
11080
|
+
this.pickDate = new Date(this.now);
|
|
10849
11081
|
}
|
|
10850
|
-
|
|
10851
|
-
|
|
11082
|
+
_getLang() {
|
|
11083
|
+
const i18n = this.draw.getI18n();
|
|
11084
|
+
const t = i18n.t.bind(i18n);
|
|
11085
|
+
return {
|
|
11086
|
+
now: t("datePicker.now"),
|
|
11087
|
+
confirm: t("datePicker.confirm"),
|
|
11088
|
+
return: t("datePicker.return"),
|
|
11089
|
+
timeSelect: t("datePicker.timeSelect"),
|
|
11090
|
+
weeks: {
|
|
11091
|
+
sun: t("datePicker.weeks.sun"),
|
|
11092
|
+
mon: t("datePicker.weeks.mon"),
|
|
11093
|
+
tue: t("datePicker.weeks.tue"),
|
|
11094
|
+
wed: t("datePicker.weeks.wed"),
|
|
11095
|
+
thu: t("datePicker.weeks.thu"),
|
|
11096
|
+
fri: t("datePicker.weeks.fri"),
|
|
11097
|
+
sat: t("datePicker.weeks.sat")
|
|
11098
|
+
},
|
|
11099
|
+
year: t("datePicker.year"),
|
|
11100
|
+
month: t("datePicker.month"),
|
|
11101
|
+
hour: t("datePicker.hour"),
|
|
11102
|
+
minute: t("datePicker.minute"),
|
|
11103
|
+
second: t("datePicker.second")
|
|
11104
|
+
};
|
|
10852
11105
|
}
|
|
10853
|
-
|
|
10854
|
-
|
|
10855
|
-
|
|
10856
|
-
|
|
10857
|
-
const
|
|
10858
|
-
const
|
|
10859
|
-
|
|
10860
|
-
|
|
10861
|
-
|
|
10862
|
-
this.activeControl.awake();
|
|
10863
|
-
}
|
|
10864
|
-
const controlElement = this.activeControl.getElement();
|
|
10865
|
-
if (element.controlId === controlElement.controlId)
|
|
10866
|
-
return;
|
|
10867
|
-
}
|
|
10868
|
-
this.destroyControl();
|
|
10869
|
-
const control = element.control;
|
|
10870
|
-
if (control.type === ControlType.TEXT) {
|
|
10871
|
-
this.activeControl = new TextControl(element, this);
|
|
10872
|
-
} else if (control.type === ControlType.SELECT) {
|
|
10873
|
-
const selectControl = new SelectControl(element, this);
|
|
10874
|
-
this.activeControl = selectControl;
|
|
10875
|
-
selectControl.awake();
|
|
10876
|
-
} else if (control.type === ControlType.CHECKBOX) {
|
|
10877
|
-
this.activeControl = new CheckboxControl(element, this);
|
|
10878
|
-
} else if (control.type === ControlType.RADIO) {
|
|
10879
|
-
this.activeControl = new RadioControl(element, this);
|
|
10880
|
-
}
|
|
10881
|
-
nextTick(() => {
|
|
10882
|
-
var _a;
|
|
10883
|
-
const controlChangeListener = this.listener.controlChange;
|
|
10884
|
-
const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
|
|
10885
|
-
if (!controlChangeListener && !isSubscribeControlChange)
|
|
10886
|
-
return;
|
|
10887
|
-
let payload;
|
|
10888
|
-
const value = (_a = this.activeControl) == null ? void 0 : _a.getValue();
|
|
10889
|
-
if (value && value.length) {
|
|
10890
|
-
payload = zipElementList(value)[0].control;
|
|
10891
|
-
} else {
|
|
10892
|
-
payload = pickElementAttr(deepClone(element)).control;
|
|
10893
|
-
}
|
|
10894
|
-
if (controlChangeListener) {
|
|
10895
|
-
controlChangeListener(payload);
|
|
10896
|
-
}
|
|
10897
|
-
if (isSubscribeControlChange) {
|
|
10898
|
-
this.eventBus.emit("controlChange", payload);
|
|
10899
|
-
}
|
|
11106
|
+
_setLangChange() {
|
|
11107
|
+
this.dom.menu.time.innerText = this.lang.timeSelect;
|
|
11108
|
+
this.dom.menu.now.innerText = this.lang.now;
|
|
11109
|
+
this.dom.menu.submit.innerText = this.lang.confirm;
|
|
11110
|
+
const { weeks: { sun, mon, tue, wed, thu, fri, sat } } = this.lang;
|
|
11111
|
+
const weekList = [sun, mon, tue, wed, thu, fri, sat];
|
|
11112
|
+
this.dom.datePickerWeek.childNodes.forEach((child, i) => {
|
|
11113
|
+
const childElement = child;
|
|
11114
|
+
childElement.innerText = weekList[i];
|
|
10900
11115
|
});
|
|
11116
|
+
const hourTitle = this.dom.time.hour.previousElementSibling;
|
|
11117
|
+
hourTitle.innerText = this.lang.hour;
|
|
11118
|
+
const minuteTitle = this.dom.time.minute.previousElementSibling;
|
|
11119
|
+
minuteTitle.innerText = this.lang.minute;
|
|
11120
|
+
const secondTitle = this.dom.time.second.previousElementSibling;
|
|
11121
|
+
secondTitle.innerText = this.lang.second;
|
|
10901
11122
|
}
|
|
10902
|
-
|
|
10903
|
-
|
|
10904
|
-
|
|
10905
|
-
|
|
10906
|
-
|
|
10907
|
-
|
|
10908
|
-
|
|
10909
|
-
|
|
10910
|
-
|
|
10911
|
-
|
|
10912
|
-
|
|
10913
|
-
|
|
10914
|
-
controlChangeListener(null);
|
|
10915
|
-
}
|
|
10916
|
-
if (isSubscribeControlChange) {
|
|
10917
|
-
this.eventBus.emit("controlChange", null);
|
|
10918
|
-
}
|
|
10919
|
-
});
|
|
11123
|
+
_update() {
|
|
11124
|
+
const localDate = new Date();
|
|
11125
|
+
const localYear = localDate.getFullYear();
|
|
11126
|
+
const localMonth = localDate.getMonth() + 1;
|
|
11127
|
+
const localDay = localDate.getDate();
|
|
11128
|
+
let pickYear = null;
|
|
11129
|
+
let pickMonth = null;
|
|
11130
|
+
let pickDay = null;
|
|
11131
|
+
if (this.pickDate) {
|
|
11132
|
+
pickYear = this.pickDate.getFullYear();
|
|
11133
|
+
pickMonth = this.pickDate.getMonth() + 1;
|
|
11134
|
+
pickDay = this.pickDate.getDate();
|
|
10920
11135
|
}
|
|
10921
|
-
|
|
10922
|
-
|
|
10923
|
-
|
|
10924
|
-
|
|
10925
|
-
|
|
10926
|
-
|
|
10927
|
-
|
|
10928
|
-
|
|
10929
|
-
isSetCursor: false
|
|
10930
|
-
});
|
|
10931
|
-
} else {
|
|
10932
|
-
this.range.setRange(curIndex, curIndex);
|
|
10933
|
-
this.draw.render({
|
|
10934
|
-
curIndex,
|
|
10935
|
-
isCompute,
|
|
10936
|
-
isSubmitHistory
|
|
10937
|
-
});
|
|
11136
|
+
const year = this.now.getFullYear();
|
|
11137
|
+
const month = this.now.getMonth() + 1;
|
|
11138
|
+
this.dom.title.now.innerText = `${year}${this.lang.year} ${String(month).padStart(2, "0")}${this.lang.month}`;
|
|
11139
|
+
const curDate = new Date(year, month, 0);
|
|
11140
|
+
const curDay = curDate.getDate();
|
|
11141
|
+
let curWeek = new Date(year, month - 1, 1).getDay();
|
|
11142
|
+
if (curWeek === 0) {
|
|
11143
|
+
curWeek = 7;
|
|
10938
11144
|
}
|
|
10939
|
-
|
|
10940
|
-
|
|
10941
|
-
|
|
10942
|
-
|
|
10943
|
-
|
|
10944
|
-
|
|
10945
|
-
|
|
10946
|
-
|
|
10947
|
-
|
|
10948
|
-
|
|
10949
|
-
|
|
10950
|
-
}
|
|
10951
|
-
}
|
|
10952
|
-
moveCursor(position) {
|
|
10953
|
-
const { index: index2, trIndex, tdIndex, tdValueIndex } = position;
|
|
10954
|
-
let elementList = this.draw.getOriginalElementList();
|
|
10955
|
-
let element;
|
|
10956
|
-
const newIndex = position.isTable ? tdValueIndex : index2;
|
|
10957
|
-
if (position.isTable) {
|
|
10958
|
-
elementList = elementList[index2].trList[trIndex].tdList[tdIndex].value;
|
|
10959
|
-
element = elementList[tdValueIndex];
|
|
10960
|
-
} else {
|
|
10961
|
-
element = elementList[index2];
|
|
10962
|
-
}
|
|
10963
|
-
if (element.controlComponent === ControlComponent.VALUE) {
|
|
10964
|
-
return {
|
|
10965
|
-
newIndex,
|
|
10966
|
-
newElement: element
|
|
11145
|
+
const preDay = new Date(year, month - 1, 0).getDate();
|
|
11146
|
+
this.dom.day.innerHTML = "";
|
|
11147
|
+
const preStartDay = preDay - curWeek + 1;
|
|
11148
|
+
for (let i = preStartDay; i <= preDay; i++) {
|
|
11149
|
+
const dayDom = document.createElement("div");
|
|
11150
|
+
dayDom.classList.add("disable");
|
|
11151
|
+
dayDom.innerText = `${i}`;
|
|
11152
|
+
dayDom.onclick = () => {
|
|
11153
|
+
const newMonth = month - 2;
|
|
11154
|
+
this.now = new Date(year, newMonth, i);
|
|
11155
|
+
this._setDatePick(year, newMonth, i);
|
|
10967
11156
|
};
|
|
10968
|
-
|
|
10969
|
-
let startIndex = newIndex + 1;
|
|
10970
|
-
while (startIndex < elementList.length) {
|
|
10971
|
-
const nextElement = elementList[startIndex];
|
|
10972
|
-
if (nextElement.controlId !== element.controlId) {
|
|
10973
|
-
return {
|
|
10974
|
-
newIndex: startIndex - 1,
|
|
10975
|
-
newElement: elementList[startIndex - 1]
|
|
10976
|
-
};
|
|
10977
|
-
}
|
|
10978
|
-
startIndex++;
|
|
10979
|
-
}
|
|
10980
|
-
} else if (element.controlComponent === ControlComponent.PREFIX) {
|
|
10981
|
-
let startIndex = newIndex + 1;
|
|
10982
|
-
while (startIndex < elementList.length) {
|
|
10983
|
-
const nextElement = elementList[startIndex];
|
|
10984
|
-
if (nextElement.controlId !== element.controlId || nextElement.controlComponent !== ControlComponent.PREFIX) {
|
|
10985
|
-
return {
|
|
10986
|
-
newIndex: startIndex - 1,
|
|
10987
|
-
newElement: elementList[startIndex - 1]
|
|
10988
|
-
};
|
|
10989
|
-
}
|
|
10990
|
-
startIndex++;
|
|
10991
|
-
}
|
|
10992
|
-
} else if (element.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
10993
|
-
let startIndex = newIndex - 1;
|
|
10994
|
-
while (startIndex > 0) {
|
|
10995
|
-
const preElement = elementList[startIndex];
|
|
10996
|
-
if (preElement.controlId !== element.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
|
|
10997
|
-
return {
|
|
10998
|
-
newIndex: startIndex,
|
|
10999
|
-
newElement: elementList[startIndex]
|
|
11000
|
-
};
|
|
11001
|
-
}
|
|
11002
|
-
startIndex--;
|
|
11003
|
-
}
|
|
11157
|
+
this.dom.day.append(dayDom);
|
|
11004
11158
|
}
|
|
11005
|
-
|
|
11006
|
-
|
|
11007
|
-
|
|
11008
|
-
|
|
11009
|
-
}
|
|
11010
|
-
removeControl(startIndex, context = {}) {
|
|
11011
|
-
const elementList = context.elementList || this.getElementList();
|
|
11012
|
-
const startElement = elementList[startIndex];
|
|
11013
|
-
const { deletable = true } = startElement.control;
|
|
11014
|
-
if (!deletable)
|
|
11015
|
-
return null;
|
|
11016
|
-
let leftIndex = -1;
|
|
11017
|
-
let rightIndex = -1;
|
|
11018
|
-
let preIndex = startIndex;
|
|
11019
|
-
while (preIndex > 0) {
|
|
11020
|
-
const preElement = elementList[preIndex];
|
|
11021
|
-
if (preElement.controlId !== startElement.controlId) {
|
|
11022
|
-
leftIndex = preIndex;
|
|
11023
|
-
break;
|
|
11159
|
+
for (let i = 1; i <= curDay; i++) {
|
|
11160
|
+
const dayDom = document.createElement("div");
|
|
11161
|
+
if (localYear === year && localMonth === month && localDay === i) {
|
|
11162
|
+
dayDom.classList.add("active");
|
|
11024
11163
|
}
|
|
11025
|
-
|
|
11026
|
-
|
|
11027
|
-
let nextIndex = startIndex + 1;
|
|
11028
|
-
while (nextIndex < elementList.length) {
|
|
11029
|
-
const nextElement = elementList[nextIndex];
|
|
11030
|
-
if (nextElement.controlId !== startElement.controlId) {
|
|
11031
|
-
rightIndex = nextIndex - 1;
|
|
11032
|
-
break;
|
|
11164
|
+
if (this.pickDate && pickYear === year && pickMonth === month && pickDay === i) {
|
|
11165
|
+
dayDom.classList.add("select");
|
|
11033
11166
|
}
|
|
11034
|
-
|
|
11167
|
+
dayDom.innerText = `${i}`;
|
|
11168
|
+
dayDom.onclick = (evt) => {
|
|
11169
|
+
const newMonth = month - 1;
|
|
11170
|
+
this.now = new Date(year, newMonth, i);
|
|
11171
|
+
this._setDatePick(year, newMonth, i);
|
|
11172
|
+
evt.stopPropagation();
|
|
11173
|
+
};
|
|
11174
|
+
this.dom.day.append(dayDom);
|
|
11035
11175
|
}
|
|
11036
|
-
|
|
11037
|
-
|
|
11176
|
+
const nextEndDay = 6 * 7 - curWeek - curDay;
|
|
11177
|
+
for (let i = 1; i <= nextEndDay; i++) {
|
|
11178
|
+
const dayDom = document.createElement("div");
|
|
11179
|
+
dayDom.classList.add("disable");
|
|
11180
|
+
dayDom.innerText = `${i}`;
|
|
11181
|
+
dayDom.onclick = () => {
|
|
11182
|
+
this.now = new Date(year, month, i);
|
|
11183
|
+
this._setDatePick(year, month, i);
|
|
11184
|
+
};
|
|
11185
|
+
this.dom.day.append(dayDom);
|
|
11038
11186
|
}
|
|
11039
|
-
if (!~leftIndex && !~rightIndex)
|
|
11040
|
-
return startIndex;
|
|
11041
|
-
leftIndex = ~leftIndex ? leftIndex : 0;
|
|
11042
|
-
this.draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex);
|
|
11043
|
-
return leftIndex;
|
|
11044
11187
|
}
|
|
11045
|
-
|
|
11046
|
-
|
|
11047
|
-
|
|
11048
|
-
|
|
11049
|
-
|
|
11050
|
-
|
|
11051
|
-
|
|
11052
|
-
|
|
11053
|
-
|
|
11054
|
-
|
|
11055
|
-
break;
|
|
11056
|
-
if (curElement.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
11057
|
-
if (!isHasSubmitHistory) {
|
|
11058
|
-
isHasSubmitHistory = true;
|
|
11059
|
-
this.draw.getHistoryManager().popUndo();
|
|
11060
|
-
this.draw.submitHistory(startIndex);
|
|
11061
|
-
}
|
|
11062
|
-
elementList.splice(index2, 1);
|
|
11063
|
-
} else {
|
|
11064
|
-
index2++;
|
|
11065
|
-
}
|
|
11066
|
-
}
|
|
11188
|
+
_toggleDateTimePicker() {
|
|
11189
|
+
if (this.isDatePicker) {
|
|
11190
|
+
this.dom.dateWrap.classList.add("active");
|
|
11191
|
+
this.dom.timeWrap.classList.remove("active");
|
|
11192
|
+
this.dom.menu.time.innerText = this.lang.timeSelect;
|
|
11193
|
+
} else {
|
|
11194
|
+
this.dom.dateWrap.classList.remove("active");
|
|
11195
|
+
this.dom.timeWrap.classList.add("active");
|
|
11196
|
+
this.dom.menu.time.innerText = this.lang.return;
|
|
11197
|
+
this._setTimePick();
|
|
11067
11198
|
}
|
|
11068
11199
|
}
|
|
11069
|
-
|
|
11070
|
-
|
|
11071
|
-
|
|
11072
|
-
|
|
11073
|
-
|
|
11200
|
+
_setDatePick(year, month, day) {
|
|
11201
|
+
var _a, _b, _c;
|
|
11202
|
+
this.now = new Date(year, month, day);
|
|
11203
|
+
(_a = this.pickDate) == null ? void 0 : _a.setFullYear(year);
|
|
11204
|
+
(_b = this.pickDate) == null ? void 0 : _b.setMonth(month);
|
|
11205
|
+
(_c = this.pickDate) == null ? void 0 : _c.setDate(day);
|
|
11206
|
+
this._update();
|
|
11207
|
+
}
|
|
11208
|
+
_setTimePick(isIntoView = true) {
|
|
11209
|
+
var _a, _b, _c;
|
|
11210
|
+
const hour = ((_a = this.pickDate) == null ? void 0 : _a.getHours()) || 0;
|
|
11211
|
+
const minute = ((_b = this.pickDate) == null ? void 0 : _b.getMinutes()) || 0;
|
|
11212
|
+
const second = ((_c = this.pickDate) == null ? void 0 : _c.getSeconds()) || 0;
|
|
11213
|
+
const { hour: hourDom, minute: minuteDom, second: secondDom } = this.dom.time;
|
|
11214
|
+
const timeDomList = [hourDom, minuteDom, secondDom];
|
|
11215
|
+
timeDomList.forEach((timeDom) => {
|
|
11216
|
+
timeDom.querySelectorAll("li").forEach((li) => li.classList.remove("active"));
|
|
11217
|
+
});
|
|
11218
|
+
const pickList = [
|
|
11219
|
+
[hourDom, hour],
|
|
11220
|
+
[minuteDom, minute],
|
|
11221
|
+
[secondDom, second]
|
|
11222
|
+
];
|
|
11223
|
+
pickList.forEach(([dom, time]) => {
|
|
11224
|
+
const pickDom = dom.querySelector(`[data-id='${time}']`);
|
|
11225
|
+
pickDom.classList.add("active");
|
|
11226
|
+
if (isIntoView) {
|
|
11227
|
+
this._scrollIntoView(dom, pickDom);
|
|
11228
|
+
}
|
|
11229
|
+
});
|
|
11230
|
+
}
|
|
11231
|
+
_scrollIntoView(container, selected) {
|
|
11232
|
+
if (!selected) {
|
|
11233
|
+
container.scrollTop = 0;
|
|
11074
11234
|
return;
|
|
11075
|
-
const placeholderStrList = splitText(control.placeholder);
|
|
11076
|
-
for (let p = 0; p < placeholderStrList.length; p++) {
|
|
11077
|
-
const value = placeholderStrList[p];
|
|
11078
|
-
const newElement = {
|
|
11079
|
-
value,
|
|
11080
|
-
controlId: startElement.controlId,
|
|
11081
|
-
type: ElementType.CONTROL,
|
|
11082
|
-
control: startElement.control,
|
|
11083
|
-
controlComponent: ControlComponent.PLACEHOLDER,
|
|
11084
|
-
color: this.controlOptions.placeholderColor
|
|
11085
|
-
};
|
|
11086
|
-
formatElementContext(elementList, [newElement], startIndex);
|
|
11087
|
-
this.draw.spliceElementList(elementList, startIndex + p + 1, 0, newElement);
|
|
11088
11235
|
}
|
|
11089
|
-
|
|
11090
|
-
|
|
11091
|
-
|
|
11092
|
-
|
|
11236
|
+
const offsetParents = [];
|
|
11237
|
+
let pointer = selected.offsetParent;
|
|
11238
|
+
while (pointer && container !== pointer && container.contains(pointer)) {
|
|
11239
|
+
offsetParents.push(pointer);
|
|
11240
|
+
pointer = pointer.offsetParent;
|
|
11093
11241
|
}
|
|
11094
|
-
|
|
11095
|
-
|
|
11096
|
-
|
|
11097
|
-
|
|
11098
|
-
|
|
11242
|
+
const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0);
|
|
11243
|
+
const bottom = top + selected.offsetHeight;
|
|
11244
|
+
const viewRectTop = container.scrollTop;
|
|
11245
|
+
const viewRectBottom = viewRectTop + container.clientHeight;
|
|
11246
|
+
if (top < viewRectTop) {
|
|
11247
|
+
container.scrollTop = top;
|
|
11248
|
+
} else if (bottom > viewRectBottom) {
|
|
11249
|
+
container.scrollTop = bottom - container.clientHeight;
|
|
11099
11250
|
}
|
|
11100
|
-
return this.activeControl.keydown(evt);
|
|
11101
11251
|
}
|
|
11102
|
-
|
|
11103
|
-
|
|
11104
|
-
|
|
11105
|
-
}
|
|
11106
|
-
return this.activeControl.cut();
|
|
11252
|
+
_preMonth() {
|
|
11253
|
+
this.now.setMonth(this.now.getMonth() - 1);
|
|
11254
|
+
this._update();
|
|
11107
11255
|
}
|
|
11108
|
-
|
|
11109
|
-
|
|
11110
|
-
|
|
11111
|
-
|
|
11112
|
-
|
|
11113
|
-
|
|
11114
|
-
|
|
11115
|
-
|
|
11116
|
-
|
|
11117
|
-
|
|
11118
|
-
|
|
11119
|
-
|
|
11120
|
-
|
|
11121
|
-
|
|
11122
|
-
|
|
11123
|
-
|
|
11124
|
-
|
|
11125
|
-
|
|
11126
|
-
|
|
11127
|
-
|
|
11128
|
-
|
|
11129
|
-
|
|
11130
|
-
|
|
11131
|
-
|
|
11132
|
-
|
|
11133
|
-
|
|
11134
|
-
|
|
11135
|
-
|
|
11136
|
-
|
|
11137
|
-
|
|
11138
|
-
|
|
11139
|
-
|
|
11140
|
-
|
|
11141
|
-
|
|
11142
|
-
|
|
11143
|
-
|
|
11144
|
-
|
|
11145
|
-
|
|
11146
|
-
|
|
11147
|
-
|
|
11148
|
-
const innerText = code == null ? void 0 : code.split(",").map((selectCode) => {
|
|
11149
|
-
var _a2;
|
|
11150
|
-
return (_a2 = valueSets == null ? void 0 : valueSets.find((valueSet) => valueSet.code === selectCode)) == null ? void 0 : _a2.value;
|
|
11151
|
-
}).filter(Boolean).join("");
|
|
11152
|
-
result.push(__spreadProps(__spreadValues({}, element.control), {
|
|
11153
|
-
zone: zone2,
|
|
11154
|
-
value: code || null,
|
|
11155
|
-
innerText: innerText || null
|
|
11156
|
-
}));
|
|
11157
|
-
}
|
|
11158
|
-
i = j;
|
|
11159
|
-
}
|
|
11256
|
+
_nextMonth() {
|
|
11257
|
+
this.now.setMonth(this.now.getMonth() + 1);
|
|
11258
|
+
this._update();
|
|
11259
|
+
}
|
|
11260
|
+
_preYear() {
|
|
11261
|
+
this.now.setFullYear(this.now.getFullYear() - 1);
|
|
11262
|
+
this._update();
|
|
11263
|
+
}
|
|
11264
|
+
_nextYear() {
|
|
11265
|
+
this.now.setFullYear(this.now.getFullYear() + 1);
|
|
11266
|
+
this._update();
|
|
11267
|
+
}
|
|
11268
|
+
_now() {
|
|
11269
|
+
this.pickDate = new Date();
|
|
11270
|
+
this.dispose();
|
|
11271
|
+
}
|
|
11272
|
+
_toggleVisible(isVisible) {
|
|
11273
|
+
if (isVisible) {
|
|
11274
|
+
this.dom.container.classList.add("active");
|
|
11275
|
+
} else {
|
|
11276
|
+
this.dom.container.classList.remove("active");
|
|
11277
|
+
}
|
|
11278
|
+
}
|
|
11279
|
+
_submit() {
|
|
11280
|
+
var _a;
|
|
11281
|
+
if (this.options.onSubmit && this.pickDate) {
|
|
11282
|
+
const format = (_a = this.renderOptions) == null ? void 0 : _a.dateFormat;
|
|
11283
|
+
const pickDateString = this.formatDate(this.pickDate, format);
|
|
11284
|
+
this.options.onSubmit(pickDateString);
|
|
11285
|
+
}
|
|
11286
|
+
}
|
|
11287
|
+
formatDate(date, format = "yyyy-MM-dd hh:mm:ss") {
|
|
11288
|
+
let dateString = format;
|
|
11289
|
+
const dateOption = {
|
|
11290
|
+
"y+": date.getFullYear().toString(),
|
|
11291
|
+
"M+": (date.getMonth() + 1).toString(),
|
|
11292
|
+
"d+": date.getDate().toString(),
|
|
11293
|
+
"h+": date.getHours().toString(),
|
|
11294
|
+
"m+": date.getMinutes().toString(),
|
|
11295
|
+
"s+": date.getSeconds().toString()
|
|
11160
11296
|
};
|
|
11161
|
-
const
|
|
11162
|
-
|
|
11163
|
-
|
|
11164
|
-
|
|
11165
|
-
|
|
11166
|
-
{
|
|
11167
|
-
zone: EditorZone.MAIN,
|
|
11168
|
-
elementList: this.draw.getOriginalMainElementList()
|
|
11169
|
-
},
|
|
11170
|
-
{
|
|
11171
|
-
zone: EditorZone.FOOTER,
|
|
11172
|
-
elementList: this.draw.getFooterElementList()
|
|
11297
|
+
for (const k in dateOption) {
|
|
11298
|
+
const reg = new RegExp("(" + k + ")").exec(format);
|
|
11299
|
+
const key = k;
|
|
11300
|
+
if (reg) {
|
|
11301
|
+
dateString = dateString.replace(reg[1], reg[1].length === 1 ? dateOption[key] : dateOption[key].padStart(reg[1].length, "0"));
|
|
11173
11302
|
}
|
|
11174
|
-
];
|
|
11175
|
-
for (const { zone: zone2, elementList } of data2) {
|
|
11176
|
-
getValue(elementList, zone2);
|
|
11177
11303
|
}
|
|
11178
|
-
return
|
|
11304
|
+
return dateString;
|
|
11179
11305
|
}
|
|
11180
|
-
|
|
11181
|
-
|
|
11182
|
-
|
|
11183
|
-
|
|
11184
|
-
|
|
11185
|
-
|
|
11186
|
-
|
|
11187
|
-
|
|
11188
|
-
|
|
11189
|
-
|
|
11190
|
-
|
|
11191
|
-
|
|
11192
|
-
|
|
11193
|
-
|
|
11194
|
-
|
|
11195
|
-
|
|
11196
|
-
|
|
11197
|
-
|
|
11198
|
-
|
|
11199
|
-
|
|
11200
|
-
|
|
11201
|
-
|
|
11202
|
-
|
|
11203
|
-
|
|
11204
|
-
|
|
11205
|
-
|
|
11206
|
-
|
|
11207
|
-
|
|
11208
|
-
|
|
11209
|
-
|
|
11210
|
-
|
|
11211
|
-
|
|
11212
|
-
|
|
11213
|
-
|
|
11214
|
-
|
|
11215
|
-
|
|
11216
|
-
|
|
11217
|
-
|
|
11218
|
-
|
|
11219
|
-
|
|
11220
|
-
|
|
11221
|
-
|
|
11222
|
-
|
|
11223
|
-
|
|
11224
|
-
|
|
11225
|
-
|
|
11226
|
-
|
|
11227
|
-
|
|
11228
|
-
|
|
11229
|
-
|
|
11230
|
-
const text = new TextControl(element, this);
|
|
11231
|
-
if (value) {
|
|
11232
|
-
text.setValue(formatValue, controlContext, controlRule);
|
|
11233
|
-
} else {
|
|
11234
|
-
text.clearValue(controlContext, controlRule);
|
|
11235
|
-
}
|
|
11236
|
-
} else if (type === ControlType.SELECT) {
|
|
11237
|
-
const select = new SelectControl(element, this);
|
|
11238
|
-
if (value) {
|
|
11239
|
-
select.setSelect(value, controlContext, controlRule);
|
|
11240
|
-
} else {
|
|
11241
|
-
select.clearSelect(controlContext, controlRule);
|
|
11242
|
-
}
|
|
11243
|
-
} else if (type === ControlType.CHECKBOX) {
|
|
11244
|
-
const checkbox = new CheckboxControl(element, this);
|
|
11245
|
-
const codes = (value == null ? void 0 : value.split(",")) || [];
|
|
11246
|
-
checkbox.setSelect(codes, controlContext, controlRule);
|
|
11247
|
-
} else if (type === ControlType.RADIO) {
|
|
11248
|
-
const radio = new RadioControl(element, this);
|
|
11249
|
-
const codes = value ? [value] : [];
|
|
11250
|
-
radio.setSelect(codes, controlContext, controlRule);
|
|
11251
|
-
}
|
|
11252
|
-
let newEndIndex = i;
|
|
11253
|
-
while (newEndIndex < elementList.length) {
|
|
11254
|
-
const nextElement = elementList[newEndIndex];
|
|
11255
|
-
if (nextElement.controlId !== element.controlId)
|
|
11256
|
-
break;
|
|
11257
|
-
newEndIndex++;
|
|
11258
|
-
}
|
|
11259
|
-
i = newEndIndex;
|
|
11306
|
+
render(option) {
|
|
11307
|
+
this.renderOptions = option;
|
|
11308
|
+
this.lang = this._getLang();
|
|
11309
|
+
this._setLangChange();
|
|
11310
|
+
this._setValue();
|
|
11311
|
+
this._update();
|
|
11312
|
+
this._setPosition();
|
|
11313
|
+
this.isDatePicker = true;
|
|
11314
|
+
this._toggleDateTimePicker();
|
|
11315
|
+
this._toggleVisible(true);
|
|
11316
|
+
}
|
|
11317
|
+
dispose() {
|
|
11318
|
+
this._toggleVisible(false);
|
|
11319
|
+
}
|
|
11320
|
+
destroy() {
|
|
11321
|
+
this.dom.container.remove();
|
|
11322
|
+
}
|
|
11323
|
+
}
|
|
11324
|
+
class DateControl {
|
|
11325
|
+
constructor(element, control) {
|
|
11326
|
+
__publicField(this, "draw");
|
|
11327
|
+
__publicField(this, "element");
|
|
11328
|
+
__publicField(this, "control");
|
|
11329
|
+
__publicField(this, "isPopup");
|
|
11330
|
+
__publicField(this, "datePicker");
|
|
11331
|
+
const draw = control.getDraw();
|
|
11332
|
+
this.draw = draw;
|
|
11333
|
+
this.element = element;
|
|
11334
|
+
this.control = control;
|
|
11335
|
+
this.isPopup = false;
|
|
11336
|
+
this.datePicker = null;
|
|
11337
|
+
}
|
|
11338
|
+
setElement(element) {
|
|
11339
|
+
this.element = element;
|
|
11340
|
+
}
|
|
11341
|
+
getElement() {
|
|
11342
|
+
return this.element;
|
|
11343
|
+
}
|
|
11344
|
+
getIsPopup() {
|
|
11345
|
+
return this.isPopup;
|
|
11346
|
+
}
|
|
11347
|
+
getValueRange(context = {}) {
|
|
11348
|
+
const elementList = context.elementList || this.control.getElementList();
|
|
11349
|
+
const { startIndex } = context.range || this.control.getRange();
|
|
11350
|
+
const startElement = elementList[startIndex];
|
|
11351
|
+
let preIndex = startIndex;
|
|
11352
|
+
while (preIndex > 0) {
|
|
11353
|
+
const preElement = elementList[preIndex];
|
|
11354
|
+
if (preElement.controlId !== startElement.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
|
|
11355
|
+
break;
|
|
11260
11356
|
}
|
|
11261
|
-
|
|
11262
|
-
const data2 = [
|
|
11263
|
-
this.draw.getHeaderElementList(),
|
|
11264
|
-
this.draw.getOriginalMainElementList(),
|
|
11265
|
-
this.draw.getFooterElementList()
|
|
11266
|
-
];
|
|
11267
|
-
for (const elementList of data2) {
|
|
11268
|
-
setValue(elementList);
|
|
11357
|
+
preIndex--;
|
|
11269
11358
|
}
|
|
11270
|
-
|
|
11271
|
-
|
|
11272
|
-
|
|
11273
|
-
|
|
11359
|
+
let nextIndex = startIndex + 1;
|
|
11360
|
+
while (nextIndex < elementList.length) {
|
|
11361
|
+
const nextElement = elementList[nextIndex];
|
|
11362
|
+
if (nextElement.controlId !== startElement.controlId || nextElement.controlComponent === ControlComponent.POSTFIX) {
|
|
11363
|
+
break;
|
|
11364
|
+
}
|
|
11365
|
+
nextIndex++;
|
|
11274
11366
|
}
|
|
11367
|
+
if (preIndex === nextIndex)
|
|
11368
|
+
return null;
|
|
11369
|
+
return [preIndex, nextIndex - 1];
|
|
11275
11370
|
}
|
|
11276
|
-
|
|
11277
|
-
const
|
|
11278
|
-
|
|
11279
|
-
|
|
11280
|
-
|
|
11281
|
-
const
|
|
11282
|
-
|
|
11283
|
-
|
|
11284
|
-
|
|
11285
|
-
|
|
11286
|
-
|
|
11287
|
-
if (element.type === ElementType.TABLE) {
|
|
11288
|
-
const trList = element.trList;
|
|
11289
|
-
for (let r = 0; r < trList.length; r++) {
|
|
11290
|
-
const tr = trList[r];
|
|
11291
|
-
for (let d = 0; d < tr.tdList.length; d++) {
|
|
11292
|
-
const td = tr.tdList[d];
|
|
11293
|
-
setExtension(td.value);
|
|
11294
|
-
}
|
|
11295
|
-
}
|
|
11296
|
-
}
|
|
11297
|
-
if (((_a = element == null ? void 0 : element.control) == null ? void 0 : _a.conceptId) !== conceptId)
|
|
11298
|
-
continue;
|
|
11299
|
-
element.control.extension = extension;
|
|
11300
|
-
let newEndIndex = i;
|
|
11301
|
-
while (newEndIndex < elementList.length) {
|
|
11302
|
-
const nextElement = elementList[newEndIndex];
|
|
11303
|
-
if (nextElement.controlId !== element.controlId)
|
|
11304
|
-
break;
|
|
11305
|
-
newEndIndex++;
|
|
11306
|
-
}
|
|
11307
|
-
i = newEndIndex;
|
|
11371
|
+
getValue(context = {}) {
|
|
11372
|
+
const elementList = context.elementList || this.control.getElementList();
|
|
11373
|
+
const range = this.getValueRange(context);
|
|
11374
|
+
if (!range)
|
|
11375
|
+
return [];
|
|
11376
|
+
const data2 = [];
|
|
11377
|
+
const [startIndex, endIndex] = range;
|
|
11378
|
+
for (let i = startIndex; i <= endIndex; i++) {
|
|
11379
|
+
const element = elementList[i];
|
|
11380
|
+
if (element.controlComponent === ControlComponent.VALUE) {
|
|
11381
|
+
data2.push(element);
|
|
11308
11382
|
}
|
|
11309
|
-
};
|
|
11310
|
-
const data2 = [
|
|
11311
|
-
this.draw.getHeaderElementList(),
|
|
11312
|
-
this.draw.getOriginalMainElementList(),
|
|
11313
|
-
this.draw.getFooterElementList()
|
|
11314
|
-
];
|
|
11315
|
-
for (const elementList of data2) {
|
|
11316
|
-
setExtension(elementList);
|
|
11317
11383
|
}
|
|
11384
|
+
return data2;
|
|
11318
11385
|
}
|
|
11319
|
-
|
|
11320
|
-
|
|
11321
|
-
|
|
11322
|
-
|
|
11386
|
+
setValue(data2, context = {}, options = {}) {
|
|
11387
|
+
if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl()) {
|
|
11388
|
+
return -1;
|
|
11389
|
+
}
|
|
11390
|
+
const elementList = context.elementList || this.control.getElementList();
|
|
11391
|
+
const range = context.range || this.control.getRange();
|
|
11392
|
+
this.control.shrinkBoundary(context);
|
|
11393
|
+
const { startIndex, endIndex } = range;
|
|
11394
|
+
const draw = this.control.getDraw();
|
|
11395
|
+
if (startIndex !== endIndex) {
|
|
11396
|
+
draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex);
|
|
11397
|
+
} else {
|
|
11398
|
+
this.control.removePlaceholder(startIndex, context);
|
|
11399
|
+
}
|
|
11400
|
+
const startElement = elementList[startIndex];
|
|
11401
|
+
const anchorElement = startElement.type && !TEXTLIKE_ELEMENT_TYPE.includes(startElement.type) || startElement.controlComponent === ControlComponent.PREFIX ? pickObject(startElement, [
|
|
11402
|
+
"control",
|
|
11403
|
+
"controlId",
|
|
11404
|
+
...CONTROL_STYLE_ATTR
|
|
11405
|
+
]) : omitObject(startElement, ["type"]);
|
|
11406
|
+
const start = range.startIndex + 1;
|
|
11407
|
+
for (let i = 0; i < data2.length; i++) {
|
|
11408
|
+
const newElement = __spreadProps(__spreadValues(__spreadValues({}, anchorElement), data2[i]), {
|
|
11409
|
+
controlComponent: ControlComponent.VALUE
|
|
11410
|
+
});
|
|
11411
|
+
formatElementContext(elementList, [newElement], startIndex);
|
|
11412
|
+
draw.spliceElementList(elementList, start + i, 0, newElement);
|
|
11413
|
+
}
|
|
11414
|
+
return start + data2.length - 1;
|
|
11415
|
+
}
|
|
11416
|
+
clearSelect(context = {}, options = {}) {
|
|
11417
|
+
const { isIgnoreDisabledRule = false, isAddPlaceholder = true } = options;
|
|
11418
|
+
if (!isIgnoreDisabledRule && this.control.getIsDisabledControl()) {
|
|
11419
|
+
return -1;
|
|
11420
|
+
}
|
|
11421
|
+
const range = this.getValueRange(context);
|
|
11422
|
+
if (!range)
|
|
11423
|
+
return -1;
|
|
11424
|
+
const [leftIndex, rightIndex] = range;
|
|
11425
|
+
if (!~leftIndex || !~rightIndex)
|
|
11426
|
+
return -1;
|
|
11427
|
+
const elementList = context.elementList || this.control.getElementList();
|
|
11428
|
+
const draw = this.control.getDraw();
|
|
11429
|
+
draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex);
|
|
11430
|
+
if (isAddPlaceholder) {
|
|
11431
|
+
this.control.addPlaceholder(leftIndex, context);
|
|
11432
|
+
}
|
|
11433
|
+
return leftIndex;
|
|
11434
|
+
}
|
|
11435
|
+
setSelect(date, context = {}, options = {}) {
|
|
11436
|
+
if (!options.isIgnoreDisabledRule && this.control.getIsDisabledControl()) {
|
|
11323
11437
|
return;
|
|
11324
|
-
const { conceptId, properties } = payload;
|
|
11325
|
-
let isExistUpdate = false;
|
|
11326
|
-
const pageComponentData = {
|
|
11327
|
-
header: this.draw.getHeaderElementList(),
|
|
11328
|
-
main: this.draw.getOriginalMainElementList(),
|
|
11329
|
-
footer: this.draw.getFooterElementList()
|
|
11330
|
-
};
|
|
11331
|
-
for (const key in pageComponentData) {
|
|
11332
|
-
const elementList = pageComponentData[key];
|
|
11333
|
-
let i = 0;
|
|
11334
|
-
while (i < elementList.length) {
|
|
11335
|
-
const element = elementList[i];
|
|
11336
|
-
i++;
|
|
11337
|
-
if (((_a = element == null ? void 0 : element.control) == null ? void 0 : _a.conceptId) !== conceptId)
|
|
11338
|
-
continue;
|
|
11339
|
-
isExistUpdate = true;
|
|
11340
|
-
element.control = __spreadProps(__spreadValues(__spreadValues({}, element.control), properties), {
|
|
11341
|
-
value: element.control.value
|
|
11342
|
-
});
|
|
11343
|
-
let newEndIndex = i;
|
|
11344
|
-
while (newEndIndex < elementList.length) {
|
|
11345
|
-
const nextElement = elementList[newEndIndex];
|
|
11346
|
-
if (nextElement.controlId !== element.controlId)
|
|
11347
|
-
break;
|
|
11348
|
-
newEndIndex++;
|
|
11349
|
-
}
|
|
11350
|
-
i = newEndIndex;
|
|
11351
|
-
}
|
|
11352
11438
|
}
|
|
11353
|
-
|
|
11439
|
+
const elementList = context.elementList || this.control.getElementList();
|
|
11440
|
+
const range = context.range || this.control.getRange();
|
|
11441
|
+
const valueElement = this.getValue(context)[0];
|
|
11442
|
+
const styleElement = valueElement ? pickObject(valueElement, EDITOR_ELEMENT_STYLE_ATTR) : pickObject(elementList[range.startIndex], CONTROL_STYLE_ATTR);
|
|
11443
|
+
const prefixIndex = this.clearSelect(context, {
|
|
11444
|
+
isAddPlaceholder: false
|
|
11445
|
+
});
|
|
11446
|
+
if (!~prefixIndex)
|
|
11354
11447
|
return;
|
|
11355
|
-
|
|
11356
|
-
|
|
11357
|
-
|
|
11358
|
-
|
|
11359
|
-
|
|
11360
|
-
|
|
11448
|
+
const propertyElement = omitObject(elementList[prefixIndex], EDITOR_ELEMENT_STYLE_ATTR);
|
|
11449
|
+
const start = prefixIndex + 1;
|
|
11450
|
+
const draw = this.control.getDraw();
|
|
11451
|
+
for (let i = 0; i < date.length; i++) {
|
|
11452
|
+
const newElement = __spreadProps(__spreadValues(__spreadValues({}, styleElement), propertyElement), {
|
|
11453
|
+
type: ElementType.TEXT,
|
|
11454
|
+
value: date[i],
|
|
11455
|
+
controlComponent: ControlComponent.VALUE
|
|
11361
11456
|
});
|
|
11457
|
+
formatElementContext(elementList, [newElement], prefixIndex);
|
|
11458
|
+
draw.spliceElementList(elementList, start + i, 0, newElement);
|
|
11459
|
+
}
|
|
11460
|
+
if (!context.range) {
|
|
11461
|
+
const newIndex = start + date.length - 1;
|
|
11462
|
+
this.control.repaintControl({
|
|
11463
|
+
curIndex: newIndex
|
|
11464
|
+
});
|
|
11465
|
+
this.destroy();
|
|
11362
11466
|
}
|
|
11363
|
-
this.draw.setEditorData(pageComponentData);
|
|
11364
|
-
this.draw.render({
|
|
11365
|
-
isSetCursor: false
|
|
11366
|
-
});
|
|
11367
11467
|
}
|
|
11368
|
-
|
|
11369
|
-
|
|
11370
|
-
|
|
11371
|
-
|
|
11372
|
-
|
|
11373
|
-
|
|
11374
|
-
|
|
11375
|
-
|
|
11376
|
-
|
|
11377
|
-
|
|
11378
|
-
|
|
11379
|
-
|
|
11468
|
+
keydown(evt) {
|
|
11469
|
+
if (this.control.getIsDisabledControl()) {
|
|
11470
|
+
return null;
|
|
11471
|
+
}
|
|
11472
|
+
const elementList = this.control.getElementList();
|
|
11473
|
+
const range = this.control.getRange();
|
|
11474
|
+
this.control.shrinkBoundary();
|
|
11475
|
+
const { startIndex, endIndex } = range;
|
|
11476
|
+
const startElement = elementList[startIndex];
|
|
11477
|
+
const endElement = elementList[endIndex];
|
|
11478
|
+
const draw = this.control.getDraw();
|
|
11479
|
+
if (evt.key === KeyMap.Backspace) {
|
|
11480
|
+
if (startIndex !== endIndex) {
|
|
11481
|
+
draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex);
|
|
11482
|
+
const value = this.getValue();
|
|
11483
|
+
if (!value.length) {
|
|
11484
|
+
this.control.addPlaceholder(startIndex);
|
|
11485
|
+
}
|
|
11486
|
+
return startIndex;
|
|
11487
|
+
} else {
|
|
11488
|
+
if (startElement.controlComponent === ControlComponent.PREFIX || endElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
11489
|
+
return this.control.removeControl(startIndex);
|
|
11490
|
+
} else {
|
|
11491
|
+
draw.spliceElementList(elementList, startIndex, 1);
|
|
11492
|
+
const value = this.getValue();
|
|
11493
|
+
if (!value.length) {
|
|
11494
|
+
this.control.addPlaceholder(startIndex - 1);
|
|
11495
|
+
}
|
|
11496
|
+
return startIndex - 1;
|
|
11497
|
+
}
|
|
11498
|
+
}
|
|
11499
|
+
} else if (evt.key === KeyMap.Delete) {
|
|
11500
|
+
if (startIndex !== endIndex) {
|
|
11501
|
+
draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex);
|
|
11502
|
+
const value = this.getValue();
|
|
11503
|
+
if (!value.length) {
|
|
11504
|
+
this.control.addPlaceholder(startIndex);
|
|
11505
|
+
}
|
|
11506
|
+
return startIndex;
|
|
11507
|
+
} else {
|
|
11508
|
+
const endNextElement = elementList[endIndex + 1];
|
|
11509
|
+
if (startElement.controlComponent === ControlComponent.PREFIX && endNextElement.controlComponent === ControlComponent.PLACEHOLDER || endNextElement.controlComponent === ControlComponent.POSTFIX || startElement.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
11510
|
+
return this.control.removeControl(startIndex);
|
|
11511
|
+
} else {
|
|
11512
|
+
draw.spliceElementList(elementList, startIndex + 1, 1);
|
|
11513
|
+
const value = this.getValue();
|
|
11514
|
+
if (!value.length) {
|
|
11515
|
+
this.control.addPlaceholder(startIndex);
|
|
11516
|
+
}
|
|
11517
|
+
return startIndex;
|
|
11380
11518
|
}
|
|
11381
11519
|
}
|
|
11382
11520
|
}
|
|
11383
|
-
return
|
|
11384
|
-
}
|
|
11385
|
-
recordBorderInfo(x, y, width, height) {
|
|
11386
|
-
this.controlBorder.recordBorderInfo(x, y, width, height);
|
|
11387
|
-
}
|
|
11388
|
-
drawBorder(ctx) {
|
|
11389
|
-
this.controlBorder.render(ctx);
|
|
11390
|
-
}
|
|
11391
|
-
}
|
|
11392
|
-
class CheckboxParticle {
|
|
11393
|
-
constructor(draw) {
|
|
11394
|
-
__publicField(this, "draw");
|
|
11395
|
-
__publicField(this, "options");
|
|
11396
|
-
this.draw = draw;
|
|
11397
|
-
this.options = draw.getOptions();
|
|
11521
|
+
return endIndex;
|
|
11398
11522
|
}
|
|
11399
|
-
|
|
11400
|
-
|
|
11401
|
-
|
|
11402
|
-
checkbox.value = !checkbox.value;
|
|
11403
|
-
} else {
|
|
11404
|
-
element.checkbox = {
|
|
11405
|
-
value: true
|
|
11406
|
-
};
|
|
11523
|
+
cut() {
|
|
11524
|
+
if (this.control.getIsDisabledControl()) {
|
|
11525
|
+
return -1;
|
|
11407
11526
|
}
|
|
11408
|
-
this.
|
|
11409
|
-
|
|
11410
|
-
|
|
11411
|
-
|
|
11527
|
+
this.control.shrinkBoundary();
|
|
11528
|
+
const { startIndex, endIndex } = this.control.getRange();
|
|
11529
|
+
if (startIndex === endIndex) {
|
|
11530
|
+
return startIndex;
|
|
11531
|
+
}
|
|
11532
|
+
const draw = this.control.getDraw();
|
|
11533
|
+
const elementList = this.control.getElementList();
|
|
11534
|
+
draw.spliceElementList(elementList, startIndex + 1, endIndex - startIndex);
|
|
11535
|
+
const value = this.getValue();
|
|
11536
|
+
if (!value.length) {
|
|
11537
|
+
this.control.addPlaceholder(startIndex);
|
|
11538
|
+
}
|
|
11539
|
+
return startIndex;
|
|
11412
11540
|
}
|
|
11413
|
-
|
|
11414
|
-
|
|
11415
|
-
|
|
11416
|
-
|
|
11417
|
-
const
|
|
11418
|
-
|
|
11419
|
-
|
|
11420
|
-
|
|
11421
|
-
|
|
11422
|
-
|
|
11423
|
-
|
|
11424
|
-
|
|
11425
|
-
|
|
11426
|
-
|
|
11427
|
-
|
|
11428
|
-
|
|
11429
|
-
|
|
11430
|
-
|
|
11431
|
-
|
|
11432
|
-
|
|
11433
|
-
|
|
11434
|
-
|
|
11435
|
-
|
|
11436
|
-
|
|
11437
|
-
|
|
11541
|
+
awake() {
|
|
11542
|
+
var _a, _b;
|
|
11543
|
+
if (this.isPopup || this.control.getIsDisabledControl())
|
|
11544
|
+
return;
|
|
11545
|
+
const position = this.control.getPosition();
|
|
11546
|
+
if (!position)
|
|
11547
|
+
return;
|
|
11548
|
+
const elementList = this.draw.getElementList();
|
|
11549
|
+
const { startIndex } = this.control.getRange();
|
|
11550
|
+
if (((_a = elementList[startIndex + 1]) == null ? void 0 : _a.controlId) !== this.element.controlId) {
|
|
11551
|
+
return;
|
|
11552
|
+
}
|
|
11553
|
+
this.datePicker = new DatePicker(this.draw, {
|
|
11554
|
+
onSubmit: this._setDate.bind(this)
|
|
11555
|
+
});
|
|
11556
|
+
const value = this.getValue().map((el) => el.value).join("") || "";
|
|
11557
|
+
const dateFormat = (_b = this.element.control) == null ? void 0 : _b.dateFormat;
|
|
11558
|
+
this.datePicker.render({
|
|
11559
|
+
value,
|
|
11560
|
+
position,
|
|
11561
|
+
dateFormat
|
|
11562
|
+
});
|
|
11563
|
+
this.isPopup = true;
|
|
11564
|
+
}
|
|
11565
|
+
destroy() {
|
|
11566
|
+
var _a;
|
|
11567
|
+
if (!this.isPopup)
|
|
11568
|
+
return;
|
|
11569
|
+
(_a = this.datePicker) == null ? void 0 : _a.destroy();
|
|
11570
|
+
this.isPopup = false;
|
|
11571
|
+
}
|
|
11572
|
+
_setDate(date) {
|
|
11573
|
+
if (!date) {
|
|
11574
|
+
this.clearSelect();
|
|
11438
11575
|
} else {
|
|
11439
|
-
|
|
11440
|
-
ctx.rect(left2, top, width, height);
|
|
11441
|
-
ctx.stroke();
|
|
11576
|
+
this.setSelect(date);
|
|
11442
11577
|
}
|
|
11443
|
-
|
|
11444
|
-
ctx.restore();
|
|
11578
|
+
this.destroy();
|
|
11445
11579
|
}
|
|
11446
11580
|
}
|
|
11447
|
-
class
|
|
11581
|
+
class Control {
|
|
11448
11582
|
constructor(draw) {
|
|
11583
|
+
__publicField(this, "controlBorder");
|
|
11449
11584
|
__publicField(this, "draw");
|
|
11585
|
+
__publicField(this, "range");
|
|
11586
|
+
__publicField(this, "listener");
|
|
11587
|
+
__publicField(this, "eventBus");
|
|
11588
|
+
__publicField(this, "controlSearch");
|
|
11450
11589
|
__publicField(this, "options");
|
|
11590
|
+
__publicField(this, "controlOptions");
|
|
11591
|
+
__publicField(this, "activeControl");
|
|
11592
|
+
this.controlBorder = new ControlBorder(draw);
|
|
11451
11593
|
this.draw = draw;
|
|
11594
|
+
this.range = draw.getRange();
|
|
11595
|
+
this.listener = draw.getListener();
|
|
11596
|
+
this.eventBus = draw.getEventBus();
|
|
11597
|
+
this.controlSearch = new ControlSearch(this);
|
|
11452
11598
|
this.options = draw.getOptions();
|
|
11599
|
+
this.controlOptions = this.options.control;
|
|
11600
|
+
this.activeControl = null;
|
|
11453
11601
|
}
|
|
11454
|
-
|
|
11455
|
-
|
|
11456
|
-
|
|
11457
|
-
|
|
11458
|
-
|
|
11459
|
-
|
|
11460
|
-
|
|
11461
|
-
};
|
|
11602
|
+
setHighlightList(payload) {
|
|
11603
|
+
this.controlSearch.setHighlightList(payload);
|
|
11604
|
+
}
|
|
11605
|
+
computeHighlightList() {
|
|
11606
|
+
const highlightList = this.controlSearch.getHighlightList();
|
|
11607
|
+
if (highlightList.length) {
|
|
11608
|
+
this.controlSearch.computeHighlightList();
|
|
11462
11609
|
}
|
|
11463
|
-
this.draw.render({
|
|
11464
|
-
isCompute: false,
|
|
11465
|
-
isSetCursor: false
|
|
11466
|
-
});
|
|
11467
11610
|
}
|
|
11468
|
-
|
|
11469
|
-
const
|
|
11470
|
-
|
|
11471
|
-
|
|
11472
|
-
const top = Math.round(y - metrics.height + lineWidth);
|
|
11473
|
-
const width = metrics.width - gap * 2 * scale;
|
|
11474
|
-
const height = metrics.height;
|
|
11475
|
-
ctx.save();
|
|
11476
|
-
ctx.beginPath();
|
|
11477
|
-
ctx.translate(0.5, 0.5);
|
|
11478
|
-
ctx.strokeStyle = (radio == null ? void 0 : radio.value) ? fillStyle : strokeStyle;
|
|
11479
|
-
ctx.lineWidth = lineWidth;
|
|
11480
|
-
ctx.arc(left2 + width / 2, top + height / 2, width / 2, 0, Math.PI * 2);
|
|
11481
|
-
ctx.stroke();
|
|
11482
|
-
if (radio == null ? void 0 : radio.value) {
|
|
11483
|
-
ctx.beginPath();
|
|
11484
|
-
ctx.fillStyle = fillStyle;
|
|
11485
|
-
ctx.arc(left2 + width / 2, top + height / 2, width / 3, 0, Math.PI * 2);
|
|
11486
|
-
ctx.fill();
|
|
11611
|
+
renderHighlightList(ctx, pageNo) {
|
|
11612
|
+
const highlightMatchResult = this.controlSearch.getHighlightMatchResult();
|
|
11613
|
+
if (highlightMatchResult.length) {
|
|
11614
|
+
this.controlSearch.renderHighlightList(ctx, pageNo);
|
|
11487
11615
|
}
|
|
11488
|
-
ctx.closePath();
|
|
11489
|
-
ctx.restore();
|
|
11490
11616
|
}
|
|
11491
|
-
|
|
11492
|
-
|
|
11493
|
-
const blob$2 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$2)], { type: "text/javascript;charset=utf-8" });
|
|
11494
|
-
function WorkerWrapper$2() {
|
|
11495
|
-
const objURL = blob$2 && (window.URL || window.webkitURL).createObjectURL(blob$2);
|
|
11496
|
-
try {
|
|
11497
|
-
return objURL ? new Worker(objURL) : new Worker("data:application/javascript;base64," + encodedJs$2, { type: "module" });
|
|
11498
|
-
} finally {
|
|
11499
|
-
objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
|
|
11617
|
+
getDraw() {
|
|
11618
|
+
return this.draw;
|
|
11500
11619
|
}
|
|
11501
|
-
|
|
11502
|
-
|
|
11503
|
-
|
|
11504
|
-
|
|
11505
|
-
|
|
11506
|
-
|
|
11507
|
-
|
|
11508
|
-
|
|
11509
|
-
|
|
11620
|
+
filterAssistElement(elementList) {
|
|
11621
|
+
return elementList.filter((element) => {
|
|
11622
|
+
var _a;
|
|
11623
|
+
if (element.type === ElementType.TABLE) {
|
|
11624
|
+
const trList = element.trList;
|
|
11625
|
+
for (let r = 0; r < trList.length; r++) {
|
|
11626
|
+
const tr = trList[r];
|
|
11627
|
+
for (let d = 0; d < tr.tdList.length; d++) {
|
|
11628
|
+
const td = tr.tdList[d];
|
|
11629
|
+
td.value = this.filterAssistElement(td.value);
|
|
11630
|
+
}
|
|
11631
|
+
}
|
|
11632
|
+
}
|
|
11633
|
+
if (!element.controlId)
|
|
11634
|
+
return true;
|
|
11635
|
+
if ((_a = element.control) == null ? void 0 : _a.minWidth) {
|
|
11636
|
+
if (element.controlComponent === ControlComponent.PREFIX || element.controlComponent === ControlComponent.POSTFIX) {
|
|
11637
|
+
element.value = "";
|
|
11638
|
+
return true;
|
|
11639
|
+
}
|
|
11640
|
+
}
|
|
11641
|
+
return element.controlComponent !== ControlComponent.PREFIX && element.controlComponent !== ControlComponent.POSTFIX && element.controlComponent !== ControlComponent.PLACEHOLDER;
|
|
11642
|
+
});
|
|
11510
11643
|
}
|
|
11511
|
-
|
|
11512
|
-
|
|
11513
|
-
|
|
11514
|
-
|
|
11515
|
-
|
|
11516
|
-
|
|
11517
|
-
|
|
11518
|
-
|
|
11519
|
-
|
|
11644
|
+
getIsRangeCanCaptureEvent() {
|
|
11645
|
+
if (!this.activeControl)
|
|
11646
|
+
return false;
|
|
11647
|
+
const { startIndex, endIndex } = this.getRange();
|
|
11648
|
+
if (!~startIndex && !~endIndex)
|
|
11649
|
+
return false;
|
|
11650
|
+
const elementList = this.getElementList();
|
|
11651
|
+
const startElement = elementList[startIndex];
|
|
11652
|
+
if (startIndex === endIndex && startElement.controlComponent === ControlComponent.POSTFIX) {
|
|
11653
|
+
return true;
|
|
11654
|
+
}
|
|
11655
|
+
const endElement = elementList[endIndex];
|
|
11656
|
+
if (startElement.controlId && startElement.controlId === endElement.controlId && endElement.controlComponent !== ControlComponent.POSTFIX) {
|
|
11657
|
+
return true;
|
|
11658
|
+
}
|
|
11659
|
+
return false;
|
|
11520
11660
|
}
|
|
11521
|
-
|
|
11522
|
-
|
|
11523
|
-
|
|
11524
|
-
|
|
11525
|
-
|
|
11526
|
-
|
|
11527
|
-
|
|
11528
|
-
|
|
11529
|
-
|
|
11530
|
-
this.catalogWorker = new WorkerWrapper$1();
|
|
11531
|
-
this.groupWorker = new WorkerWrapper();
|
|
11661
|
+
getIsRangeInPostfix() {
|
|
11662
|
+
if (!this.activeControl)
|
|
11663
|
+
return false;
|
|
11664
|
+
const { startIndex, endIndex } = this.getRange();
|
|
11665
|
+
if (startIndex !== endIndex)
|
|
11666
|
+
return false;
|
|
11667
|
+
const elementList = this.getElementList();
|
|
11668
|
+
const element = elementList[startIndex];
|
|
11669
|
+
return element.controlComponent === ControlComponent.POSTFIX;
|
|
11532
11670
|
}
|
|
11533
|
-
|
|
11534
|
-
|
|
11535
|
-
|
|
11536
|
-
|
|
11537
|
-
|
|
11538
|
-
|
|
11539
|
-
|
|
11540
|
-
|
|
11541
|
-
|
|
11542
|
-
|
|
11543
|
-
|
|
11671
|
+
getIsRangeWithinControl() {
|
|
11672
|
+
const { startIndex, endIndex } = this.getRange();
|
|
11673
|
+
if (!~startIndex && !~endIndex)
|
|
11674
|
+
return false;
|
|
11675
|
+
const elementList = this.getElementList();
|
|
11676
|
+
const startElement = elementList[startIndex];
|
|
11677
|
+
const endElement = elementList[endIndex];
|
|
11678
|
+
if (startElement.controlId && startElement.controlId === endElement.controlId && endElement.controlComponent !== ControlComponent.POSTFIX) {
|
|
11679
|
+
return true;
|
|
11680
|
+
}
|
|
11681
|
+
return false;
|
|
11544
11682
|
}
|
|
11545
|
-
|
|
11546
|
-
|
|
11547
|
-
|
|
11548
|
-
resolve(evt.data);
|
|
11549
|
-
};
|
|
11550
|
-
this.catalogWorker.onerror = (evt) => {
|
|
11551
|
-
reject(evt);
|
|
11552
|
-
};
|
|
11553
|
-
const elementList = this.draw.getOriginalMainElementList();
|
|
11554
|
-
this.catalogWorker.postMessage(elementList);
|
|
11555
|
-
});
|
|
11683
|
+
getIsDisabledControl() {
|
|
11684
|
+
var _a, _b;
|
|
11685
|
+
return !!((_b = (_a = this.activeControl) == null ? void 0 : _a.getElement().control) == null ? void 0 : _b.disabled);
|
|
11556
11686
|
}
|
|
11557
|
-
|
|
11558
|
-
return
|
|
11559
|
-
this.groupWorker.onmessage = (evt) => {
|
|
11560
|
-
resolve(evt.data);
|
|
11561
|
-
};
|
|
11562
|
-
this.groupWorker.onerror = (evt) => {
|
|
11563
|
-
reject(evt);
|
|
11564
|
-
};
|
|
11565
|
-
const elementList = this.draw.getOriginalMainElementList();
|
|
11566
|
-
this.groupWorker.postMessage(elementList);
|
|
11567
|
-
});
|
|
11687
|
+
getContainer() {
|
|
11688
|
+
return this.draw.getContainer();
|
|
11568
11689
|
}
|
|
11569
|
-
|
|
11570
|
-
|
|
11571
|
-
constructor(draw) {
|
|
11572
|
-
__publicField(this, "container");
|
|
11573
|
-
__publicField(this, "canvas");
|
|
11574
|
-
__publicField(this, "draw");
|
|
11575
|
-
__publicField(this, "options");
|
|
11576
|
-
__publicField(this, "curElement");
|
|
11577
|
-
__publicField(this, "curElementSrc");
|
|
11578
|
-
__publicField(this, "previewerDrawOption");
|
|
11579
|
-
__publicField(this, "curPosition");
|
|
11580
|
-
__publicField(this, "resizerSelection");
|
|
11581
|
-
__publicField(this, "resizerHandleList");
|
|
11582
|
-
__publicField(this, "resizerImageContainer");
|
|
11583
|
-
__publicField(this, "resizerImage");
|
|
11584
|
-
__publicField(this, "resizerSize");
|
|
11585
|
-
__publicField(this, "width");
|
|
11586
|
-
__publicField(this, "height");
|
|
11587
|
-
__publicField(this, "mousedownX");
|
|
11588
|
-
__publicField(this, "mousedownY");
|
|
11589
|
-
__publicField(this, "curHandleIndex");
|
|
11590
|
-
__publicField(this, "previewerContainer");
|
|
11591
|
-
__publicField(this, "previewerImage");
|
|
11592
|
-
__publicField(this, "_keydown", () => {
|
|
11593
|
-
if (this.resizerSelection.style.display === "block") {
|
|
11594
|
-
this.clearResizer();
|
|
11595
|
-
document.removeEventListener("keydown", this._keydown);
|
|
11596
|
-
}
|
|
11597
|
-
});
|
|
11598
|
-
this.container = draw.getContainer();
|
|
11599
|
-
this.canvas = draw.getPage();
|
|
11600
|
-
this.draw = draw;
|
|
11601
|
-
this.options = draw.getOptions();
|
|
11602
|
-
this.curElement = null;
|
|
11603
|
-
this.curElementSrc = "";
|
|
11604
|
-
this.previewerDrawOption = {};
|
|
11605
|
-
this.curPosition = null;
|
|
11606
|
-
const { resizerSelection, resizerHandleList, resizerImageContainer, resizerImage, resizerSize } = this._createResizerDom();
|
|
11607
|
-
this.resizerSelection = resizerSelection;
|
|
11608
|
-
this.resizerHandleList = resizerHandleList;
|
|
11609
|
-
this.resizerImageContainer = resizerImageContainer;
|
|
11610
|
-
this.resizerImage = resizerImage;
|
|
11611
|
-
this.resizerSize = resizerSize;
|
|
11612
|
-
this.width = 0;
|
|
11613
|
-
this.height = 0;
|
|
11614
|
-
this.mousedownX = 0;
|
|
11615
|
-
this.mousedownY = 0;
|
|
11616
|
-
this.curHandleIndex = 0;
|
|
11617
|
-
this.previewerContainer = null;
|
|
11618
|
-
this.previewerImage = null;
|
|
11690
|
+
getElementList() {
|
|
11691
|
+
return this.draw.getElementList();
|
|
11619
11692
|
}
|
|
11620
|
-
|
|
11621
|
-
|
|
11622
|
-
|
|
11693
|
+
getPosition() {
|
|
11694
|
+
const positionList = this.draw.getPosition().getPositionList();
|
|
11695
|
+
const { endIndex } = this.range.getRange();
|
|
11696
|
+
return positionList[endIndex] || null;
|
|
11697
|
+
}
|
|
11698
|
+
getPreY() {
|
|
11699
|
+
var _a, _b;
|
|
11623
11700
|
const height = this.draw.getHeight();
|
|
11624
11701
|
const pageGap = this.draw.getPageGap();
|
|
11625
|
-
const
|
|
11626
|
-
|
|
11627
|
-
x = element.imgFloatPosition.x;
|
|
11628
|
-
y = element.imgFloatPosition.y + preY;
|
|
11629
|
-
} else if (position) {
|
|
11630
|
-
const { coordinate: { leftTop: [left2, top] }, ascent } = position;
|
|
11631
|
-
x = left2;
|
|
11632
|
-
y = top + preY + ascent;
|
|
11633
|
-
}
|
|
11634
|
-
return { x, y };
|
|
11702
|
+
const pageNo = (_b = (_a = this.getPosition()) == null ? void 0 : _a.pageNo) != null ? _b : this.draw.getPageNo();
|
|
11703
|
+
return pageNo * (height + pageGap);
|
|
11635
11704
|
}
|
|
11636
|
-
|
|
11637
|
-
|
|
11638
|
-
resizerSelection.classList.add(`${EDITOR_PREFIX}-resizer-selection`);
|
|
11639
|
-
resizerSelection.style.display = "none";
|
|
11640
|
-
resizerSelection.style.borderColor = this.options.resizerColor;
|
|
11641
|
-
const resizerHandleList = [];
|
|
11642
|
-
for (let i = 0; i < 8; i++) {
|
|
11643
|
-
const handleDom = document.createElement("div");
|
|
11644
|
-
handleDom.style.background = this.options.resizerColor;
|
|
11645
|
-
handleDom.classList.add(`resizer-handle`);
|
|
11646
|
-
handleDom.classList.add(`handle-${i}`);
|
|
11647
|
-
handleDom.setAttribute("data-index", String(i));
|
|
11648
|
-
handleDom.onmousedown = this._mousedown.bind(this);
|
|
11649
|
-
resizerSelection.append(handleDom);
|
|
11650
|
-
resizerHandleList.push(handleDom);
|
|
11651
|
-
}
|
|
11652
|
-
this.container.append(resizerSelection);
|
|
11653
|
-
const resizerSizeView = document.createElement("div");
|
|
11654
|
-
resizerSizeView.classList.add(`${EDITOR_PREFIX}-resizer-size-view`);
|
|
11655
|
-
const resizerSize = document.createElement("span");
|
|
11656
|
-
resizerSizeView.append(resizerSize);
|
|
11657
|
-
resizerSelection.append(resizerSizeView);
|
|
11658
|
-
const resizerImageContainer = document.createElement("div");
|
|
11659
|
-
resizerImageContainer.classList.add(`${EDITOR_PREFIX}-resizer-image`);
|
|
11660
|
-
resizerImageContainer.style.display = "none";
|
|
11661
|
-
const resizerImage = document.createElement("img");
|
|
11662
|
-
resizerImageContainer.append(resizerImage);
|
|
11663
|
-
this.container.append(resizerImageContainer);
|
|
11664
|
-
return {
|
|
11665
|
-
resizerSelection,
|
|
11666
|
-
resizerHandleList,
|
|
11667
|
-
resizerImageContainer,
|
|
11668
|
-
resizerImage,
|
|
11669
|
-
resizerSize
|
|
11670
|
-
};
|
|
11705
|
+
getRange() {
|
|
11706
|
+
return this.range.getRange();
|
|
11671
11707
|
}
|
|
11672
|
-
|
|
11673
|
-
this.
|
|
11674
|
-
|
|
11708
|
+
shrinkBoundary(context = {}) {
|
|
11709
|
+
this.range.shrinkBoundary(context);
|
|
11710
|
+
}
|
|
11711
|
+
getActiveControl() {
|
|
11712
|
+
return this.activeControl;
|
|
11713
|
+
}
|
|
11714
|
+
initControl() {
|
|
11715
|
+
const isReadonly = this.draw.isReadonly();
|
|
11716
|
+
if (isReadonly)
|
|
11675
11717
|
return;
|
|
11676
|
-
const
|
|
11677
|
-
|
|
11678
|
-
|
|
11679
|
-
|
|
11680
|
-
|
|
11681
|
-
|
|
11682
|
-
|
|
11683
|
-
|
|
11684
|
-
|
|
11685
|
-
|
|
11686
|
-
|
|
11687
|
-
|
|
11688
|
-
|
|
11689
|
-
|
|
11690
|
-
|
|
11691
|
-
|
|
11692
|
-
|
|
11693
|
-
|
|
11718
|
+
const elementList = this.getElementList();
|
|
11719
|
+
const range = this.getRange();
|
|
11720
|
+
const element = elementList[range.startIndex];
|
|
11721
|
+
if (this.activeControl) {
|
|
11722
|
+
if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) {
|
|
11723
|
+
if (element.controlComponent === ControlComponent.POSTFIX) {
|
|
11724
|
+
this.activeControl.destroy();
|
|
11725
|
+
} else {
|
|
11726
|
+
this.activeControl.awake();
|
|
11727
|
+
}
|
|
11728
|
+
}
|
|
11729
|
+
const controlElement = this.activeControl.getElement();
|
|
11730
|
+
if (element.controlId === controlElement.controlId)
|
|
11731
|
+
return;
|
|
11732
|
+
}
|
|
11733
|
+
this.destroyControl();
|
|
11734
|
+
const control = element.control;
|
|
11735
|
+
if (control.type === ControlType.TEXT) {
|
|
11736
|
+
this.activeControl = new TextControl(element, this);
|
|
11737
|
+
} else if (control.type === ControlType.SELECT) {
|
|
11738
|
+
const selectControl = new SelectControl(element, this);
|
|
11739
|
+
this.activeControl = selectControl;
|
|
11740
|
+
selectControl.awake();
|
|
11741
|
+
} else if (control.type === ControlType.CHECKBOX) {
|
|
11742
|
+
this.activeControl = new CheckboxControl(element, this);
|
|
11743
|
+
} else if (control.type === ControlType.RADIO) {
|
|
11744
|
+
this.activeControl = new RadioControl(element, this);
|
|
11745
|
+
} else if (control.type === ControlType.DATE) {
|
|
11746
|
+
const dateControl = new DateControl(element, this);
|
|
11747
|
+
this.activeControl = dateControl;
|
|
11748
|
+
dateControl.awake();
|
|
11749
|
+
}
|
|
11750
|
+
nextTick(() => {
|
|
11694
11751
|
var _a;
|
|
11695
|
-
|
|
11696
|
-
|
|
11697
|
-
|
|
11698
|
-
|
|
11699
|
-
|
|
11700
|
-
|
|
11701
|
-
|
|
11752
|
+
const controlChangeListener = this.listener.controlChange;
|
|
11753
|
+
const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
|
|
11754
|
+
if (!controlChangeListener && !isSubscribeControlChange)
|
|
11755
|
+
return;
|
|
11756
|
+
let payload;
|
|
11757
|
+
const value = (_a = this.activeControl) == null ? void 0 : _a.getValue();
|
|
11758
|
+
if (value && value.length) {
|
|
11759
|
+
payload = zipElementList(value)[0].control;
|
|
11760
|
+
} else {
|
|
11761
|
+
payload = pickElementAttr(deepClone(element)).control;
|
|
11762
|
+
}
|
|
11763
|
+
if (controlChangeListener) {
|
|
11764
|
+
controlChangeListener(payload);
|
|
11765
|
+
}
|
|
11766
|
+
if (isSubscribeControlChange) {
|
|
11767
|
+
this.eventBus.emit("controlChange", payload);
|
|
11702
11768
|
}
|
|
11703
|
-
this.resizerImageContainer.style.display = "none";
|
|
11704
|
-
document.removeEventListener("mousemove", mousemoveFn);
|
|
11705
|
-
document.body.style.cursor = "";
|
|
11706
|
-
this.canvas.style.cursor = "text";
|
|
11707
|
-
}, {
|
|
11708
|
-
once: true
|
|
11709
11769
|
});
|
|
11710
|
-
evt.preventDefault();
|
|
11711
11770
|
}
|
|
11712
|
-
|
|
11713
|
-
if (
|
|
11714
|
-
|
|
11715
|
-
|
|
11716
|
-
|
|
11717
|
-
|
|
11718
|
-
|
|
11719
|
-
|
|
11720
|
-
|
|
11721
|
-
|
|
11722
|
-
|
|
11723
|
-
|
|
11724
|
-
|
|
11725
|
-
}
|
|
11726
|
-
break;
|
|
11727
|
-
case 1:
|
|
11728
|
-
dy = this.mousedownY - evt.y;
|
|
11729
|
-
break;
|
|
11730
|
-
case 2:
|
|
11731
|
-
{
|
|
11732
|
-
const offsetX = evt.x - this.mousedownX;
|
|
11733
|
-
const offsetY = this.mousedownY - evt.y;
|
|
11734
|
-
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
11735
|
-
dy = this.curElement.height * dx / this.curElement.width;
|
|
11736
|
-
}
|
|
11737
|
-
break;
|
|
11738
|
-
case 4:
|
|
11739
|
-
{
|
|
11740
|
-
const offsetX = evt.x - this.mousedownX;
|
|
11741
|
-
const offsetY = evt.y - this.mousedownY;
|
|
11742
|
-
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
11743
|
-
dy = this.curElement.height * dx / this.curElement.width;
|
|
11771
|
+
destroyControl() {
|
|
11772
|
+
if (this.activeControl) {
|
|
11773
|
+
if (this.activeControl instanceof SelectControl || this.activeControl instanceof DateControl) {
|
|
11774
|
+
this.activeControl.destroy();
|
|
11775
|
+
}
|
|
11776
|
+
this.activeControl = null;
|
|
11777
|
+
nextTick(() => {
|
|
11778
|
+
const controlChangeListener = this.listener.controlChange;
|
|
11779
|
+
const isSubscribeControlChange = this.eventBus.isSubscribe("controlChange");
|
|
11780
|
+
if (!controlChangeListener && !isSubscribeControlChange)
|
|
11781
|
+
return;
|
|
11782
|
+
if (controlChangeListener) {
|
|
11783
|
+
controlChangeListener(null);
|
|
11744
11784
|
}
|
|
11745
|
-
|
|
11746
|
-
|
|
11747
|
-
dx = evt.x - this.mousedownX;
|
|
11748
|
-
break;
|
|
11749
|
-
case 5:
|
|
11750
|
-
dy = evt.y - this.mousedownY;
|
|
11751
|
-
break;
|
|
11752
|
-
case 6:
|
|
11753
|
-
{
|
|
11754
|
-
const offsetX = this.mousedownX - evt.x;
|
|
11755
|
-
const offsetY = evt.y - this.mousedownY;
|
|
11756
|
-
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
11757
|
-
dy = this.curElement.height * dx / this.curElement.width;
|
|
11785
|
+
if (isSubscribeControlChange) {
|
|
11786
|
+
this.eventBus.emit("controlChange", null);
|
|
11758
11787
|
}
|
|
11759
|
-
|
|
11760
|
-
case 7:
|
|
11761
|
-
dx = this.mousedownX - evt.x;
|
|
11762
|
-
break;
|
|
11788
|
+
});
|
|
11763
11789
|
}
|
|
11764
|
-
const dw = this.curElement.width + dx / scale;
|
|
11765
|
-
const dh = this.curElement.height + dy / scale;
|
|
11766
|
-
if (dw <= 0 || dh <= 0)
|
|
11767
|
-
return;
|
|
11768
|
-
this.width = dw;
|
|
11769
|
-
this.height = dh;
|
|
11770
|
-
const elementWidth = dw * scale;
|
|
11771
|
-
const elementHeight = dh * scale;
|
|
11772
|
-
this.resizerImage.style.width = `${elementWidth}px`;
|
|
11773
|
-
this.resizerImage.style.height = `${elementHeight}px`;
|
|
11774
|
-
this._updateResizerRect(elementWidth, elementHeight);
|
|
11775
|
-
this._updateResizerSizeView(elementWidth, elementHeight);
|
|
11776
|
-
evt.preventDefault();
|
|
11777
11790
|
}
|
|
11778
|
-
|
|
11779
|
-
const
|
|
11780
|
-
|
|
11781
|
-
|
|
11782
|
-
|
|
11783
|
-
|
|
11784
|
-
|
|
11785
|
-
|
|
11786
|
-
|
|
11787
|
-
|
|
11788
|
-
|
|
11789
|
-
|
|
11790
|
-
|
|
11791
|
-
|
|
11792
|
-
|
|
11793
|
-
|
|
11794
|
-
|
|
11795
|
-
let x = 0;
|
|
11796
|
-
let y = 0;
|
|
11797
|
-
let scaleSize = 1;
|
|
11798
|
-
let rotateSize = 0;
|
|
11799
|
-
const menuContainer = document.createElement("div");
|
|
11800
|
-
menuContainer.classList.add(`${EDITOR_PREFIX}-image-menu`);
|
|
11801
|
-
const zoomIn = document.createElement("i");
|
|
11802
|
-
zoomIn.classList.add("zoom-in");
|
|
11803
|
-
zoomIn.onclick = () => {
|
|
11804
|
-
scaleSize += 0.1;
|
|
11805
|
-
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
11806
|
-
};
|
|
11807
|
-
menuContainer.append(zoomIn);
|
|
11808
|
-
const zoomOut = document.createElement("i");
|
|
11809
|
-
zoomOut.onclick = () => {
|
|
11810
|
-
if (scaleSize - 0.1 <= 0.1)
|
|
11811
|
-
return;
|
|
11812
|
-
scaleSize -= 0.1;
|
|
11813
|
-
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
11814
|
-
};
|
|
11815
|
-
zoomOut.classList.add("zoom-out");
|
|
11816
|
-
menuContainer.append(zoomOut);
|
|
11817
|
-
const rotate = document.createElement("i");
|
|
11818
|
-
rotate.classList.add("rotate");
|
|
11819
|
-
rotate.onclick = () => {
|
|
11820
|
-
rotateSize += 1;
|
|
11821
|
-
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
11822
|
-
};
|
|
11823
|
-
menuContainer.append(rotate);
|
|
11824
|
-
const originalSize = document.createElement("i");
|
|
11825
|
-
originalSize.classList.add("original-size");
|
|
11826
|
-
originalSize.onclick = () => {
|
|
11827
|
-
x = 0;
|
|
11828
|
-
y = 0;
|
|
11829
|
-
scaleSize = 1;
|
|
11830
|
-
rotateSize = 0;
|
|
11831
|
-
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
11832
|
-
};
|
|
11833
|
-
menuContainer.append(originalSize);
|
|
11834
|
-
const imageDownload = document.createElement("i");
|
|
11835
|
-
imageDownload.classList.add("image-download");
|
|
11836
|
-
imageDownload.onclick = () => {
|
|
11837
|
-
var _a;
|
|
11838
|
-
const { mime } = this.previewerDrawOption;
|
|
11839
|
-
downloadFile(img.src, `${(_a = this.curElement) == null ? void 0 : _a.id}.${mime || "png"}`);
|
|
11840
|
-
};
|
|
11841
|
-
menuContainer.append(imageDownload);
|
|
11842
|
-
previewerContainer.append(menuContainer);
|
|
11843
|
-
this.previewerContainer = previewerContainer;
|
|
11844
|
-
document.body.append(previewerContainer);
|
|
11845
|
-
let startX = 0;
|
|
11846
|
-
let startY = 0;
|
|
11847
|
-
let isAllowDrag = false;
|
|
11848
|
-
img.onmousedown = (evt) => {
|
|
11849
|
-
isAllowDrag = true;
|
|
11850
|
-
startX = evt.x;
|
|
11851
|
-
startY = evt.y;
|
|
11852
|
-
previewerContainer.style.cursor = "move";
|
|
11853
|
-
};
|
|
11854
|
-
previewerContainer.onmousemove = (evt) => {
|
|
11855
|
-
if (!isAllowDrag)
|
|
11856
|
-
return;
|
|
11857
|
-
x += evt.x - startX;
|
|
11858
|
-
y += evt.y - startY;
|
|
11859
|
-
startX = evt.x;
|
|
11860
|
-
startY = evt.y;
|
|
11861
|
-
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
11862
|
-
};
|
|
11863
|
-
previewerContainer.onmouseup = () => {
|
|
11864
|
-
isAllowDrag = false;
|
|
11865
|
-
previewerContainer.style.cursor = "auto";
|
|
11866
|
-
};
|
|
11867
|
-
previewerContainer.onwheel = (evt) => {
|
|
11868
|
-
evt.preventDefault();
|
|
11869
|
-
if (evt.deltaY < 0) {
|
|
11870
|
-
scaleSize += 0.1;
|
|
11871
|
-
} else {
|
|
11872
|
-
if (scaleSize - 0.1 <= 0.1)
|
|
11873
|
-
return;
|
|
11874
|
-
scaleSize -= 0.1;
|
|
11875
|
-
}
|
|
11876
|
-
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
11877
|
-
};
|
|
11791
|
+
repaintControl(options = {}) {
|
|
11792
|
+
const { curIndex, isCompute = true, isSubmitHistory = true } = options;
|
|
11793
|
+
if (curIndex === void 0) {
|
|
11794
|
+
this.range.clearRange();
|
|
11795
|
+
this.draw.render({
|
|
11796
|
+
isCompute,
|
|
11797
|
+
isSubmitHistory,
|
|
11798
|
+
isSetCursor: false
|
|
11799
|
+
});
|
|
11800
|
+
} else {
|
|
11801
|
+
this.range.setRange(curIndex, curIndex);
|
|
11802
|
+
this.draw.render({
|
|
11803
|
+
curIndex,
|
|
11804
|
+
isCompute,
|
|
11805
|
+
isSubmitHistory
|
|
11806
|
+
});
|
|
11807
|
+
}
|
|
11878
11808
|
}
|
|
11879
|
-
|
|
11880
|
-
if (!this.
|
|
11809
|
+
reAwakeControl() {
|
|
11810
|
+
if (!this.activeControl)
|
|
11881
11811
|
return;
|
|
11882
|
-
|
|
11883
|
-
|
|
11884
|
-
|
|
11885
|
-
|
|
11886
|
-
|
|
11887
|
-
|
|
11888
|
-
|
|
11889
|
-
this.previewerContainer = null;
|
|
11890
|
-
document.body.style.overflow = "auto";
|
|
11891
|
-
}
|
|
11892
|
-
_updateResizerRect(width, height) {
|
|
11893
|
-
const handleSize = this.options.resizerSize;
|
|
11894
|
-
this.resizerSelection.style.width = `${width}px`;
|
|
11895
|
-
this.resizerSelection.style.height = `${height}px`;
|
|
11896
|
-
for (let i = 0; i < 8; i++) {
|
|
11897
|
-
const left2 = i === 0 || i === 6 || i === 7 ? -handleSize : i === 1 || i === 5 ? width / 2 : width - handleSize;
|
|
11898
|
-
const top = i === 0 || i === 1 || i === 2 ? -handleSize : i === 3 || i === 7 ? height / 2 - handleSize : height - handleSize;
|
|
11899
|
-
this.resizerHandleList[i].style.left = `${left2}px`;
|
|
11900
|
-
this.resizerHandleList[i].style.top = `${top}px`;
|
|
11812
|
+
const elementList = this.getElementList();
|
|
11813
|
+
const range = this.getRange();
|
|
11814
|
+
const element = elementList[range.startIndex];
|
|
11815
|
+
this.activeControl.setElement(element);
|
|
11816
|
+
if ((this.activeControl instanceof DateControl || this.activeControl instanceof SelectControl) && this.activeControl.getIsPopup()) {
|
|
11817
|
+
this.activeControl.destroy();
|
|
11818
|
+
this.activeControl.awake();
|
|
11901
11819
|
}
|
|
11902
11820
|
}
|
|
11903
|
-
|
|
11904
|
-
|
|
11821
|
+
moveCursor(position) {
|
|
11822
|
+
const { index: index2, trIndex, tdIndex, tdValueIndex } = position;
|
|
11823
|
+
let elementList = this.draw.getOriginalElementList();
|
|
11824
|
+
let element;
|
|
11825
|
+
const newIndex = position.isTable ? tdValueIndex : index2;
|
|
11826
|
+
if (position.isTable) {
|
|
11827
|
+
elementList = elementList[index2].trList[trIndex].tdList[tdIndex].value;
|
|
11828
|
+
element = elementList[tdValueIndex];
|
|
11829
|
+
} else {
|
|
11830
|
+
element = elementList[index2];
|
|
11831
|
+
}
|
|
11832
|
+
if (element.controlComponent === ControlComponent.VALUE) {
|
|
11833
|
+
return {
|
|
11834
|
+
newIndex,
|
|
11835
|
+
newElement: element
|
|
11836
|
+
};
|
|
11837
|
+
} else if (element.controlComponent === ControlComponent.POSTFIX) {
|
|
11838
|
+
let startIndex = newIndex + 1;
|
|
11839
|
+
while (startIndex < elementList.length) {
|
|
11840
|
+
const nextElement = elementList[startIndex];
|
|
11841
|
+
if (nextElement.controlId !== element.controlId) {
|
|
11842
|
+
return {
|
|
11843
|
+
newIndex: startIndex - 1,
|
|
11844
|
+
newElement: elementList[startIndex - 1]
|
|
11845
|
+
};
|
|
11846
|
+
}
|
|
11847
|
+
startIndex++;
|
|
11848
|
+
}
|
|
11849
|
+
} else if (element.controlComponent === ControlComponent.PREFIX) {
|
|
11850
|
+
let startIndex = newIndex + 1;
|
|
11851
|
+
while (startIndex < elementList.length) {
|
|
11852
|
+
const nextElement = elementList[startIndex];
|
|
11853
|
+
if (nextElement.controlId !== element.controlId || nextElement.controlComponent !== ControlComponent.PREFIX) {
|
|
11854
|
+
return {
|
|
11855
|
+
newIndex: startIndex - 1,
|
|
11856
|
+
newElement: elementList[startIndex - 1]
|
|
11857
|
+
};
|
|
11858
|
+
}
|
|
11859
|
+
startIndex++;
|
|
11860
|
+
}
|
|
11861
|
+
} else if (element.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
11862
|
+
let startIndex = newIndex - 1;
|
|
11863
|
+
while (startIndex > 0) {
|
|
11864
|
+
const preElement = elementList[startIndex];
|
|
11865
|
+
if (preElement.controlId !== element.controlId || preElement.controlComponent === ControlComponent.PREFIX) {
|
|
11866
|
+
return {
|
|
11867
|
+
newIndex: startIndex,
|
|
11868
|
+
newElement: elementList[startIndex]
|
|
11869
|
+
};
|
|
11870
|
+
}
|
|
11871
|
+
startIndex--;
|
|
11872
|
+
}
|
|
11873
|
+
}
|
|
11874
|
+
return {
|
|
11875
|
+
newIndex,
|
|
11876
|
+
newElement: element
|
|
11877
|
+
};
|
|
11905
11878
|
}
|
|
11906
|
-
|
|
11907
|
-
this.
|
|
11908
|
-
|
|
11879
|
+
removeControl(startIndex, context = {}) {
|
|
11880
|
+
const elementList = context.elementList || this.getElementList();
|
|
11881
|
+
const startElement = elementList[startIndex];
|
|
11882
|
+
const { deletable = true } = startElement.control;
|
|
11883
|
+
if (!deletable)
|
|
11884
|
+
return null;
|
|
11885
|
+
let leftIndex = -1;
|
|
11886
|
+
let rightIndex = -1;
|
|
11887
|
+
let preIndex = startIndex;
|
|
11888
|
+
while (preIndex > 0) {
|
|
11889
|
+
const preElement = elementList[preIndex];
|
|
11890
|
+
if (preElement.controlId !== startElement.controlId) {
|
|
11891
|
+
leftIndex = preIndex;
|
|
11892
|
+
break;
|
|
11893
|
+
}
|
|
11894
|
+
preIndex--;
|
|
11895
|
+
}
|
|
11896
|
+
let nextIndex = startIndex + 1;
|
|
11897
|
+
while (nextIndex < elementList.length) {
|
|
11898
|
+
const nextElement = elementList[nextIndex];
|
|
11899
|
+
if (nextElement.controlId !== startElement.controlId) {
|
|
11900
|
+
rightIndex = nextIndex - 1;
|
|
11901
|
+
break;
|
|
11902
|
+
}
|
|
11903
|
+
nextIndex++;
|
|
11904
|
+
}
|
|
11905
|
+
if (nextIndex === elementList.length) {
|
|
11906
|
+
rightIndex = nextIndex - 1;
|
|
11907
|
+
}
|
|
11908
|
+
if (!~leftIndex && !~rightIndex)
|
|
11909
|
+
return startIndex;
|
|
11910
|
+
leftIndex = ~leftIndex ? leftIndex : 0;
|
|
11911
|
+
this.draw.spliceElementList(elementList, leftIndex + 1, rightIndex - leftIndex);
|
|
11912
|
+
return leftIndex;
|
|
11909
11913
|
}
|
|
11910
|
-
|
|
11911
|
-
|
|
11912
|
-
|
|
11913
|
-
|
|
11914
|
-
|
|
11914
|
+
removePlaceholder(startIndex, context = {}) {
|
|
11915
|
+
const elementList = context.elementList || this.getElementList();
|
|
11916
|
+
const startElement = elementList[startIndex];
|
|
11917
|
+
const nextElement = elementList[startIndex + 1];
|
|
11918
|
+
if (startElement.controlComponent === ControlComponent.PLACEHOLDER || nextElement.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
11919
|
+
let isHasSubmitHistory = false;
|
|
11920
|
+
let index2 = startIndex;
|
|
11921
|
+
while (index2 < elementList.length) {
|
|
11922
|
+
const curElement = elementList[index2];
|
|
11923
|
+
if (curElement.controlId !== startElement.controlId)
|
|
11924
|
+
break;
|
|
11925
|
+
if (curElement.controlComponent === ControlComponent.PLACEHOLDER) {
|
|
11926
|
+
if (!isHasSubmitHistory) {
|
|
11927
|
+
isHasSubmitHistory = true;
|
|
11928
|
+
this.draw.getHistoryManager().popUndo();
|
|
11929
|
+
this.draw.submitHistory(startIndex);
|
|
11930
|
+
}
|
|
11931
|
+
elementList.splice(index2, 1);
|
|
11932
|
+
} else {
|
|
11933
|
+
index2++;
|
|
11934
|
+
}
|
|
11935
|
+
}
|
|
11936
|
+
}
|
|
11915
11937
|
}
|
|
11916
|
-
|
|
11917
|
-
const
|
|
11918
|
-
const
|
|
11919
|
-
const
|
|
11920
|
-
|
|
11921
|
-
|
|
11922
|
-
|
|
11923
|
-
|
|
11924
|
-
|
|
11925
|
-
|
|
11926
|
-
|
|
11927
|
-
|
|
11928
|
-
|
|
11929
|
-
|
|
11938
|
+
addPlaceholder(startIndex, context = {}) {
|
|
11939
|
+
const elementList = context.elementList || this.getElementList();
|
|
11940
|
+
const startElement = elementList[startIndex];
|
|
11941
|
+
const control = startElement.control;
|
|
11942
|
+
if (!control.placeholder)
|
|
11943
|
+
return;
|
|
11944
|
+
const placeholderStrList = splitText(control.placeholder);
|
|
11945
|
+
for (let p = 0; p < placeholderStrList.length; p++) {
|
|
11946
|
+
const value = placeholderStrList[p];
|
|
11947
|
+
const newElement = {
|
|
11948
|
+
value,
|
|
11949
|
+
controlId: startElement.controlId,
|
|
11950
|
+
type: ElementType.CONTROL,
|
|
11951
|
+
control: startElement.control,
|
|
11952
|
+
controlComponent: ControlComponent.PLACEHOLDER,
|
|
11953
|
+
color: this.controlOptions.placeholderColor
|
|
11954
|
+
};
|
|
11955
|
+
formatElementContext(elementList, [newElement], startIndex);
|
|
11956
|
+
this.draw.spliceElementList(elementList, startIndex + p + 1, 0, newElement);
|
|
11957
|
+
}
|
|
11930
11958
|
}
|
|
11931
|
-
|
|
11932
|
-
this.
|
|
11933
|
-
|
|
11959
|
+
setValue(data2) {
|
|
11960
|
+
if (!this.activeControl) {
|
|
11961
|
+
throw new Error("active control is null");
|
|
11962
|
+
}
|
|
11963
|
+
return this.activeControl.setValue(data2);
|
|
11934
11964
|
}
|
|
11935
|
-
|
|
11936
|
-
|
|
11937
|
-
|
|
11938
|
-
cut: "\u526A\u5207",
|
|
11939
|
-
copy: "\u590D\u5236",
|
|
11940
|
-
paste: "\u7C98\u8D34",
|
|
11941
|
-
selectAll: "\u5168\u9009",
|
|
11942
|
-
print: "\u6253\u5370"
|
|
11943
|
-
},
|
|
11944
|
-
control: {
|
|
11945
|
-
"delete": "\u5220\u9664\u63A7\u4EF6"
|
|
11946
|
-
},
|
|
11947
|
-
hyperlink: {
|
|
11948
|
-
"delete": "\u5220\u9664\u94FE\u63A5",
|
|
11949
|
-
cancel: "\u53D6\u6D88\u94FE\u63A5",
|
|
11950
|
-
edit: "\u7F16\u8F91\u94FE\u63A5"
|
|
11951
|
-
},
|
|
11952
|
-
image: {
|
|
11953
|
-
change: "\u66F4\u6539\u56FE\u7247",
|
|
11954
|
-
saveAs: "\u53E6\u5B58\u4E3A\u56FE\u7247",
|
|
11955
|
-
textWrap: "\u6587\u5B57\u73AF\u7ED5",
|
|
11956
|
-
textWrapType: {
|
|
11957
|
-
embed: "\u5D4C\u5165\u578B",
|
|
11958
|
-
upDown: "\u4E0A\u4E0B\u578B\u73AF\u7ED5",
|
|
11959
|
-
floatTop: "\u6D6E\u4E8E\u6587\u5B57\u4E0A\u65B9",
|
|
11960
|
-
floatBottom: "\u886C\u4E8E\u6587\u5B57\u4E0B\u65B9"
|
|
11965
|
+
keydown(evt) {
|
|
11966
|
+
if (!this.activeControl) {
|
|
11967
|
+
throw new Error("active control is null");
|
|
11961
11968
|
}
|
|
11962
|
-
|
|
11963
|
-
table: {
|
|
11964
|
-
insertRowCol: "\u63D2\u5165\u884C\u5217",
|
|
11965
|
-
insertTopRow: "\u4E0A\u65B9\u63D2\u51651\u884C",
|
|
11966
|
-
insertBottomRow: "\u4E0B\u65B9\u63D2\u51651\u884C",
|
|
11967
|
-
insertLeftCol: "\u5DE6\u4FA7\u63D2\u51651\u5217",
|
|
11968
|
-
insertRightCol: "\u53F3\u4FA7\u63D2\u51651\u5217",
|
|
11969
|
-
deleteRowCol: "\u5220\u9664\u884C\u5217",
|
|
11970
|
-
deleteRow: "\u5220\u96641\u884C",
|
|
11971
|
-
deleteCol: "\u5220\u96641\u5217",
|
|
11972
|
-
deleteTable: "\u5220\u9664\u6574\u4E2A\u8868\u683C",
|
|
11973
|
-
mergeCell: "\u5408\u5E76\u5355\u5143\u683C",
|
|
11974
|
-
mergeCancelCell: "\u53D6\u6D88\u5408\u5E76",
|
|
11975
|
-
verticalAlign: "\u5782\u76F4\u5BF9\u9F50",
|
|
11976
|
-
verticalAlignTop: "\u9876\u7AEF\u5BF9\u9F50",
|
|
11977
|
-
verticalAlignMiddle: "\u5782\u76F4\u5C45\u4E2D",
|
|
11978
|
-
verticalAlignBottom: "\u5E95\u7AEF\u5BF9\u9F50",
|
|
11979
|
-
border: "\u8868\u683C\u8FB9\u6846",
|
|
11980
|
-
borderAll: "\u6240\u6709\u6846\u7EBF",
|
|
11981
|
-
borderEmpty: "\u65E0\u6846\u7EBF",
|
|
11982
|
-
borderExternal: "\u5916\u4FA7\u6846\u7EBF",
|
|
11983
|
-
borderTd: "\u5355\u5143\u683C\u8FB9\u6846",
|
|
11984
|
-
borderTdTop: "\u4E0A\u8FB9\u6846",
|
|
11985
|
-
borderTdRight: "\u53F3\u8FB9\u6846",
|
|
11986
|
-
borderTdBottom: "\u4E0B\u8FB9\u6846",
|
|
11987
|
-
borderTdLeft: "\u5DE6\u8FB9\u6846",
|
|
11988
|
-
borderTdForward: "\u6B63\u659C\u7EBF",
|
|
11989
|
-
borderTdBack: "\u53CD\u659C\u7EBF"
|
|
11969
|
+
return this.activeControl.keydown(evt);
|
|
11990
11970
|
}
|
|
11991
|
-
|
|
11992
|
-
|
|
11993
|
-
|
|
11994
|
-
|
|
11995
|
-
|
|
11996
|
-
timeSelect: "\u65F6\u95F4\u9009\u62E9",
|
|
11997
|
-
weeks: {
|
|
11998
|
-
sun: "\u65E5",
|
|
11999
|
-
mon: "\u4E00",
|
|
12000
|
-
tue: "\u4E8C",
|
|
12001
|
-
wed: "\u4E09",
|
|
12002
|
-
thu: "\u56DB",
|
|
12003
|
-
fri: "\u4E94",
|
|
12004
|
-
sat: "\u516D"
|
|
12005
|
-
},
|
|
12006
|
-
year: "\u5E74",
|
|
12007
|
-
month: "\u6708",
|
|
12008
|
-
hour: "\u65F6",
|
|
12009
|
-
minute: "\u5206",
|
|
12010
|
-
second: "\u79D2"
|
|
12011
|
-
};
|
|
12012
|
-
const frame$1 = {
|
|
12013
|
-
header: "\u9875\u7709",
|
|
12014
|
-
footer: "\u9875\u811A"
|
|
12015
|
-
};
|
|
12016
|
-
const pageBreak$1 = {
|
|
12017
|
-
displayName: "\u5206\u9875\u7B26"
|
|
12018
|
-
};
|
|
12019
|
-
const zone$1 = {
|
|
12020
|
-
headerTip: "\u53CC\u51FB\u7F16\u8F91\u9875\u7709",
|
|
12021
|
-
footerTip: "\u53CC\u51FB\u7F16\u8F91\u9875\u811A"
|
|
12022
|
-
};
|
|
12023
|
-
var zhCN = {
|
|
12024
|
-
contextmenu: contextmenu$1,
|
|
12025
|
-
datePicker: datePicker$1,
|
|
12026
|
-
frame: frame$1,
|
|
12027
|
-
pageBreak: pageBreak$1,
|
|
12028
|
-
zone: zone$1
|
|
12029
|
-
};
|
|
12030
|
-
class DatePicker {
|
|
12031
|
-
constructor(options = {}) {
|
|
12032
|
-
__publicField(this, "options");
|
|
12033
|
-
__publicField(this, "now");
|
|
12034
|
-
__publicField(this, "dom");
|
|
12035
|
-
__publicField(this, "renderOptions");
|
|
12036
|
-
__publicField(this, "isDatePicker");
|
|
12037
|
-
__publicField(this, "pickDate");
|
|
12038
|
-
__publicField(this, "lang");
|
|
12039
|
-
this.options = __spreadValues({
|
|
12040
|
-
mountDom: document.body
|
|
12041
|
-
}, options);
|
|
12042
|
-
this.lang = datePicker$1;
|
|
12043
|
-
this.now = new Date();
|
|
12044
|
-
this.dom = this._createDom();
|
|
12045
|
-
this.renderOptions = null;
|
|
12046
|
-
this.isDatePicker = true;
|
|
12047
|
-
this.pickDate = null;
|
|
12048
|
-
this._bindEvent();
|
|
11971
|
+
cut() {
|
|
11972
|
+
if (!this.activeControl) {
|
|
11973
|
+
throw new Error("active control is null");
|
|
11974
|
+
}
|
|
11975
|
+
return this.activeControl.cut();
|
|
12049
11976
|
}
|
|
12050
|
-
|
|
12051
|
-
const
|
|
12052
|
-
|
|
12053
|
-
const
|
|
12054
|
-
|
|
12055
|
-
|
|
12056
|
-
|
|
12057
|
-
|
|
12058
|
-
|
|
12059
|
-
|
|
12060
|
-
|
|
12061
|
-
|
|
12062
|
-
|
|
12063
|
-
|
|
12064
|
-
|
|
12065
|
-
|
|
12066
|
-
|
|
12067
|
-
|
|
12068
|
-
|
|
12069
|
-
|
|
12070
|
-
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
|
|
12074
|
-
|
|
12075
|
-
|
|
12076
|
-
|
|
12077
|
-
|
|
12078
|
-
|
|
12079
|
-
|
|
12080
|
-
|
|
12081
|
-
|
|
12082
|
-
|
|
12083
|
-
|
|
12084
|
-
|
|
12085
|
-
|
|
12086
|
-
|
|
12087
|
-
|
|
12088
|
-
|
|
12089
|
-
|
|
12090
|
-
|
|
12091
|
-
|
|
12092
|
-
|
|
12093
|
-
|
|
12094
|
-
|
|
12095
|
-
|
|
12096
|
-
|
|
12097
|
-
|
|
12098
|
-
|
|
12099
|
-
|
|
12100
|
-
|
|
12101
|
-
|
|
12102
|
-
|
|
12103
|
-
|
|
12104
|
-
|
|
12105
|
-
|
|
12106
|
-
|
|
12107
|
-
time.innerText = `${String(i2).padStart(2, "0")}`;
|
|
12108
|
-
time.setAttribute("data-id", `${i2}`);
|
|
12109
|
-
ol.append(time);
|
|
12110
|
-
}
|
|
12111
|
-
if (isHour) {
|
|
12112
|
-
hourTime = ol;
|
|
12113
|
-
} else if (isMinute) {
|
|
12114
|
-
minuteTime = ol;
|
|
12115
|
-
} else {
|
|
12116
|
-
secondTime = ol;
|
|
12117
|
-
}
|
|
12118
|
-
li.append(ol);
|
|
12119
|
-
timeWrap.append(li);
|
|
12120
|
-
});
|
|
12121
|
-
const datePickerMenu = document.createElement("div");
|
|
12122
|
-
datePickerMenu.classList.add(`${EDITOR_PREFIX}-date-menu`);
|
|
12123
|
-
const timeMenu = document.createElement("button");
|
|
12124
|
-
timeMenu.classList.add(`${EDITOR_PREFIX}-date-menu__time`);
|
|
12125
|
-
timeMenu.innerText = this.lang.timeSelect;
|
|
12126
|
-
const nowMenu = document.createElement("button");
|
|
12127
|
-
nowMenu.classList.add(`${EDITOR_PREFIX}-date-menu__now`);
|
|
12128
|
-
nowMenu.innerText = this.lang.now;
|
|
12129
|
-
const submitMenu = document.createElement("button");
|
|
12130
|
-
submitMenu.classList.add(`${EDITOR_PREFIX}-date-menu__submit`);
|
|
12131
|
-
submitMenu.innerText = this.lang.confirm;
|
|
12132
|
-
datePickerMenu.append(timeMenu);
|
|
12133
|
-
datePickerMenu.append(nowMenu);
|
|
12134
|
-
datePickerMenu.append(submitMenu);
|
|
12135
|
-
datePickerContainer.append(dateWrap);
|
|
12136
|
-
datePickerContainer.append(timeWrap);
|
|
12137
|
-
datePickerContainer.append(datePickerMenu);
|
|
12138
|
-
this.options.mountDom.append(datePickerContainer);
|
|
12139
|
-
return {
|
|
12140
|
-
container: datePickerContainer,
|
|
12141
|
-
dateWrap,
|
|
12142
|
-
datePickerWeek,
|
|
12143
|
-
timeWrap,
|
|
12144
|
-
title: {
|
|
12145
|
-
preYear: preYearTitle,
|
|
12146
|
-
preMonth: preMonthTitle,
|
|
12147
|
-
now: nowTitle,
|
|
12148
|
-
nextMonth: nextMonthTitle,
|
|
12149
|
-
nextYear: nextYearTitle
|
|
11977
|
+
getValueByConceptId(payload) {
|
|
11978
|
+
const { conceptId } = payload;
|
|
11979
|
+
const result = [];
|
|
11980
|
+
const getValue = (elementList, zone2) => {
|
|
11981
|
+
var _a;
|
|
11982
|
+
let i = 0;
|
|
11983
|
+
while (i < elementList.length) {
|
|
11984
|
+
const element = elementList[i];
|
|
11985
|
+
i++;
|
|
11986
|
+
if (element.type === ElementType.TABLE) {
|
|
11987
|
+
const trList = element.trList;
|
|
11988
|
+
for (let r = 0; r < trList.length; r++) {
|
|
11989
|
+
const tr = trList[r];
|
|
11990
|
+
for (let d = 0; d < tr.tdList.length; d++) {
|
|
11991
|
+
const td = tr.tdList[d];
|
|
11992
|
+
getValue(td.value, zone2);
|
|
11993
|
+
}
|
|
11994
|
+
}
|
|
11995
|
+
}
|
|
11996
|
+
if (((_a = element == null ? void 0 : element.control) == null ? void 0 : _a.conceptId) !== conceptId)
|
|
11997
|
+
continue;
|
|
11998
|
+
const { type, code, valueSets } = element.control;
|
|
11999
|
+
let j = i;
|
|
12000
|
+
let textControlValue = "";
|
|
12001
|
+
while (j < elementList.length) {
|
|
12002
|
+
const nextElement = elementList[j];
|
|
12003
|
+
if (nextElement.controlId !== element.controlId)
|
|
12004
|
+
break;
|
|
12005
|
+
if ((type === ControlType.TEXT || type === ControlType.DATE) && nextElement.controlComponent === ControlComponent.VALUE) {
|
|
12006
|
+
textControlValue += nextElement.value;
|
|
12007
|
+
}
|
|
12008
|
+
j++;
|
|
12009
|
+
}
|
|
12010
|
+
if (type === ControlType.TEXT || type === ControlType.DATE) {
|
|
12011
|
+
result.push(__spreadProps(__spreadValues({}, element.control), {
|
|
12012
|
+
zone: zone2,
|
|
12013
|
+
value: textControlValue || null,
|
|
12014
|
+
innerText: textControlValue || null
|
|
12015
|
+
}));
|
|
12016
|
+
} else if (type === ControlType.SELECT || type === ControlType.CHECKBOX || type === ControlType.RADIO) {
|
|
12017
|
+
const innerText = code == null ? void 0 : code.split(",").map((selectCode) => {
|
|
12018
|
+
var _a2;
|
|
12019
|
+
return (_a2 = valueSets == null ? void 0 : valueSets.find((valueSet) => valueSet.code === selectCode)) == null ? void 0 : _a2.value;
|
|
12020
|
+
}).filter(Boolean).join("");
|
|
12021
|
+
result.push(__spreadProps(__spreadValues({}, element.control), {
|
|
12022
|
+
zone: zone2,
|
|
12023
|
+
value: code || null,
|
|
12024
|
+
innerText: innerText || null
|
|
12025
|
+
}));
|
|
12026
|
+
}
|
|
12027
|
+
i = j;
|
|
12028
|
+
}
|
|
12029
|
+
};
|
|
12030
|
+
const data2 = [
|
|
12031
|
+
{
|
|
12032
|
+
zone: EditorZone.HEADER,
|
|
12033
|
+
elementList: this.draw.getHeaderElementList()
|
|
12150
12034
|
},
|
|
12151
|
-
|
|
12152
|
-
|
|
12153
|
-
|
|
12154
|
-
minute: minuteTime,
|
|
12155
|
-
second: secondTime
|
|
12035
|
+
{
|
|
12036
|
+
zone: EditorZone.MAIN,
|
|
12037
|
+
elementList: this.draw.getOriginalMainElementList()
|
|
12156
12038
|
},
|
|
12157
|
-
|
|
12158
|
-
|
|
12159
|
-
|
|
12160
|
-
|
|
12039
|
+
{
|
|
12040
|
+
zone: EditorZone.FOOTER,
|
|
12041
|
+
elementList: this.draw.getFooterElementList()
|
|
12042
|
+
}
|
|
12043
|
+
];
|
|
12044
|
+
for (const { zone: zone2, elementList } of data2) {
|
|
12045
|
+
getValue(elementList, zone2);
|
|
12046
|
+
}
|
|
12047
|
+
return result;
|
|
12048
|
+
}
|
|
12049
|
+
setValueByConceptId(payload) {
|
|
12050
|
+
const isReadonly = this.draw.isReadonly();
|
|
12051
|
+
if (isReadonly)
|
|
12052
|
+
return;
|
|
12053
|
+
let isExistSet = false;
|
|
12054
|
+
const { conceptId, value } = payload;
|
|
12055
|
+
const setValue = (elementList) => {
|
|
12056
|
+
var _a;
|
|
12057
|
+
let i = 0;
|
|
12058
|
+
while (i < elementList.length) {
|
|
12059
|
+
const element = elementList[i];
|
|
12060
|
+
i++;
|
|
12061
|
+
if (element.type === ElementType.TABLE) {
|
|
12062
|
+
const trList = element.trList;
|
|
12063
|
+
for (let r = 0; r < trList.length; r++) {
|
|
12064
|
+
const tr = trList[r];
|
|
12065
|
+
for (let d = 0; d < tr.tdList.length; d++) {
|
|
12066
|
+
const td = tr.tdList[d];
|
|
12067
|
+
setValue(td.value);
|
|
12068
|
+
}
|
|
12069
|
+
}
|
|
12070
|
+
}
|
|
12071
|
+
if (((_a = element == null ? void 0 : element.control) == null ? void 0 : _a.conceptId) !== conceptId)
|
|
12072
|
+
continue;
|
|
12073
|
+
isExistSet = true;
|
|
12074
|
+
const { type } = element.control;
|
|
12075
|
+
let currentEndIndex = i;
|
|
12076
|
+
while (currentEndIndex < elementList.length) {
|
|
12077
|
+
const nextElement = elementList[currentEndIndex];
|
|
12078
|
+
if (nextElement.controlId !== element.controlId)
|
|
12079
|
+
break;
|
|
12080
|
+
currentEndIndex++;
|
|
12081
|
+
}
|
|
12082
|
+
const fakeRange = {
|
|
12083
|
+
startIndex: i - 1,
|
|
12084
|
+
endIndex: currentEndIndex - 2
|
|
12085
|
+
};
|
|
12086
|
+
const controlContext = {
|
|
12087
|
+
range: fakeRange,
|
|
12088
|
+
elementList
|
|
12089
|
+
};
|
|
12090
|
+
const controlRule = {
|
|
12091
|
+
isIgnoreDisabledRule: true
|
|
12092
|
+
};
|
|
12093
|
+
if (type === ControlType.TEXT) {
|
|
12094
|
+
const formatValue = [{ value }];
|
|
12095
|
+
formatElementList(formatValue, {
|
|
12096
|
+
isHandleFirstElement: false,
|
|
12097
|
+
editorOptions: this.options
|
|
12098
|
+
});
|
|
12099
|
+
const text = new TextControl(element, this);
|
|
12100
|
+
this.activeControl = text;
|
|
12101
|
+
if (value) {
|
|
12102
|
+
text.setValue(formatValue, controlContext, controlRule);
|
|
12103
|
+
} else {
|
|
12104
|
+
text.clearValue(controlContext, controlRule);
|
|
12105
|
+
}
|
|
12106
|
+
} else if (type === ControlType.SELECT) {
|
|
12107
|
+
const select = new SelectControl(element, this);
|
|
12108
|
+
this.activeControl = select;
|
|
12109
|
+
if (value) {
|
|
12110
|
+
select.setSelect(value, controlContext, controlRule);
|
|
12111
|
+
} else {
|
|
12112
|
+
select.clearSelect(controlContext, controlRule);
|
|
12113
|
+
}
|
|
12114
|
+
} else if (type === ControlType.CHECKBOX) {
|
|
12115
|
+
const checkbox = new CheckboxControl(element, this);
|
|
12116
|
+
this.activeControl = checkbox;
|
|
12117
|
+
const codes = (value == null ? void 0 : value.split(",")) || [];
|
|
12118
|
+
checkbox.setSelect(codes, controlContext, controlRule);
|
|
12119
|
+
} else if (type === ControlType.RADIO) {
|
|
12120
|
+
const radio = new RadioControl(element, this);
|
|
12121
|
+
this.activeControl = radio;
|
|
12122
|
+
const codes = value ? [value] : [];
|
|
12123
|
+
radio.setSelect(codes, controlContext, controlRule);
|
|
12124
|
+
} else if (type === ControlType.DATE) {
|
|
12125
|
+
const date = new DateControl(element, this);
|
|
12126
|
+
this.activeControl = date;
|
|
12127
|
+
if (value) {
|
|
12128
|
+
date.setSelect(value, controlContext, controlRule);
|
|
12129
|
+
} else {
|
|
12130
|
+
date.clearSelect(controlContext, controlRule);
|
|
12131
|
+
}
|
|
12132
|
+
}
|
|
12133
|
+
this.activeControl = null;
|
|
12134
|
+
let newEndIndex = i;
|
|
12135
|
+
while (newEndIndex < elementList.length) {
|
|
12136
|
+
const nextElement = elementList[newEndIndex];
|
|
12137
|
+
if (nextElement.controlId !== element.controlId)
|
|
12138
|
+
break;
|
|
12139
|
+
newEndIndex++;
|
|
12140
|
+
}
|
|
12141
|
+
i = newEndIndex;
|
|
12161
12142
|
}
|
|
12162
12143
|
};
|
|
12144
|
+
this.destroyControl();
|
|
12145
|
+
const data2 = [
|
|
12146
|
+
this.draw.getHeaderElementList(),
|
|
12147
|
+
this.draw.getOriginalMainElementList(),
|
|
12148
|
+
this.draw.getFooterElementList()
|
|
12149
|
+
];
|
|
12150
|
+
for (const elementList of data2) {
|
|
12151
|
+
setValue(elementList);
|
|
12152
|
+
}
|
|
12153
|
+
if (isExistSet) {
|
|
12154
|
+
this.draw.render({
|
|
12155
|
+
isSetCursor: false
|
|
12156
|
+
});
|
|
12157
|
+
}
|
|
12163
12158
|
}
|
|
12164
|
-
|
|
12165
|
-
this.
|
|
12166
|
-
|
|
12159
|
+
setExtensionByConceptId(payload) {
|
|
12160
|
+
const isReadonly = this.draw.isReadonly();
|
|
12161
|
+
if (isReadonly)
|
|
12162
|
+
return;
|
|
12163
|
+
const { conceptId, extension } = payload;
|
|
12164
|
+
const setExtension = (elementList) => {
|
|
12165
|
+
var _a;
|
|
12166
|
+
let i = 0;
|
|
12167
|
+
while (i < elementList.length) {
|
|
12168
|
+
const element = elementList[i];
|
|
12169
|
+
i++;
|
|
12170
|
+
if (element.type === ElementType.TABLE) {
|
|
12171
|
+
const trList = element.trList;
|
|
12172
|
+
for (let r = 0; r < trList.length; r++) {
|
|
12173
|
+
const tr = trList[r];
|
|
12174
|
+
for (let d = 0; d < tr.tdList.length; d++) {
|
|
12175
|
+
const td = tr.tdList[d];
|
|
12176
|
+
setExtension(td.value);
|
|
12177
|
+
}
|
|
12178
|
+
}
|
|
12179
|
+
}
|
|
12180
|
+
if (((_a = element == null ? void 0 : element.control) == null ? void 0 : _a.conceptId) !== conceptId)
|
|
12181
|
+
continue;
|
|
12182
|
+
element.control.extension = extension;
|
|
12183
|
+
let newEndIndex = i;
|
|
12184
|
+
while (newEndIndex < elementList.length) {
|
|
12185
|
+
const nextElement = elementList[newEndIndex];
|
|
12186
|
+
if (nextElement.controlId !== element.controlId)
|
|
12187
|
+
break;
|
|
12188
|
+
newEndIndex++;
|
|
12189
|
+
}
|
|
12190
|
+
i = newEndIndex;
|
|
12191
|
+
}
|
|
12167
12192
|
};
|
|
12168
|
-
|
|
12169
|
-
this.
|
|
12193
|
+
const data2 = [
|
|
12194
|
+
this.draw.getHeaderElementList(),
|
|
12195
|
+
this.draw.getOriginalMainElementList(),
|
|
12196
|
+
this.draw.getFooterElementList()
|
|
12197
|
+
];
|
|
12198
|
+
for (const elementList of data2) {
|
|
12199
|
+
setExtension(elementList);
|
|
12200
|
+
}
|
|
12201
|
+
}
|
|
12202
|
+
setPropertiesByConceptId(payload) {
|
|
12203
|
+
var _a;
|
|
12204
|
+
const isReadonly = this.draw.isReadonly();
|
|
12205
|
+
if (isReadonly)
|
|
12206
|
+
return;
|
|
12207
|
+
const { conceptId, properties } = payload;
|
|
12208
|
+
let isExistUpdate = false;
|
|
12209
|
+
const pageComponentData = {
|
|
12210
|
+
header: this.draw.getHeaderElementList(),
|
|
12211
|
+
main: this.draw.getOriginalMainElementList(),
|
|
12212
|
+
footer: this.draw.getFooterElementList()
|
|
12213
|
+
};
|
|
12214
|
+
for (const key in pageComponentData) {
|
|
12215
|
+
const elementList = pageComponentData[key];
|
|
12216
|
+
let i = 0;
|
|
12217
|
+
while (i < elementList.length) {
|
|
12218
|
+
const element = elementList[i];
|
|
12219
|
+
i++;
|
|
12220
|
+
if (((_a = element == null ? void 0 : element.control) == null ? void 0 : _a.conceptId) !== conceptId)
|
|
12221
|
+
continue;
|
|
12222
|
+
isExistUpdate = true;
|
|
12223
|
+
element.control = __spreadProps(__spreadValues(__spreadValues({}, element.control), properties), {
|
|
12224
|
+
value: element.control.value
|
|
12225
|
+
});
|
|
12226
|
+
let newEndIndex = i;
|
|
12227
|
+
while (newEndIndex < elementList.length) {
|
|
12228
|
+
const nextElement = elementList[newEndIndex];
|
|
12229
|
+
if (nextElement.controlId !== element.controlId)
|
|
12230
|
+
break;
|
|
12231
|
+
newEndIndex++;
|
|
12232
|
+
}
|
|
12233
|
+
i = newEndIndex;
|
|
12234
|
+
}
|
|
12235
|
+
}
|
|
12236
|
+
if (!isExistUpdate)
|
|
12237
|
+
return;
|
|
12238
|
+
for (const key in pageComponentData) {
|
|
12239
|
+
const pageComponentKey = key;
|
|
12240
|
+
const elementList = zipElementList(pageComponentData[pageComponentKey]);
|
|
12241
|
+
pageComponentData[pageComponentKey] = elementList;
|
|
12242
|
+
formatElementList(elementList, {
|
|
12243
|
+
editorOptions: this.options
|
|
12244
|
+
});
|
|
12245
|
+
}
|
|
12246
|
+
this.draw.setEditorData(pageComponentData);
|
|
12247
|
+
this.draw.render({
|
|
12248
|
+
isSetCursor: false
|
|
12249
|
+
});
|
|
12250
|
+
}
|
|
12251
|
+
getList() {
|
|
12252
|
+
const controlElementList = [];
|
|
12253
|
+
function getControlElementList(elementList) {
|
|
12254
|
+
for (let e = 0; e < elementList.length; e++) {
|
|
12255
|
+
const element = elementList[e];
|
|
12256
|
+
if (element.type === ElementType.TABLE) {
|
|
12257
|
+
const trList = element.trList;
|
|
12258
|
+
for (let r = 0; r < trList.length; r++) {
|
|
12259
|
+
const tr = trList[r];
|
|
12260
|
+
for (let d = 0; d < tr.tdList.length; d++) {
|
|
12261
|
+
const td = tr.tdList[d];
|
|
12262
|
+
const tdElement = td.value;
|
|
12263
|
+
getControlElementList(tdElement);
|
|
12264
|
+
}
|
|
12265
|
+
}
|
|
12266
|
+
}
|
|
12267
|
+
if (element.controlId) {
|
|
12268
|
+
controlElementList.push(element);
|
|
12269
|
+
}
|
|
12270
|
+
}
|
|
12271
|
+
}
|
|
12272
|
+
const data2 = [
|
|
12273
|
+
this.draw.getHeader().getElementList(),
|
|
12274
|
+
this.draw.getOriginalMainElementList(),
|
|
12275
|
+
this.draw.getFooter().getElementList()
|
|
12276
|
+
];
|
|
12277
|
+
for (const elementList of data2) {
|
|
12278
|
+
getControlElementList(elementList);
|
|
12279
|
+
}
|
|
12280
|
+
return zipElementList(controlElementList);
|
|
12281
|
+
}
|
|
12282
|
+
recordBorderInfo(x, y, width, height) {
|
|
12283
|
+
this.controlBorder.recordBorderInfo(x, y, width, height);
|
|
12284
|
+
}
|
|
12285
|
+
drawBorder(ctx) {
|
|
12286
|
+
this.controlBorder.render(ctx);
|
|
12287
|
+
}
|
|
12288
|
+
getPreControlContext() {
|
|
12289
|
+
if (!this.activeControl)
|
|
12290
|
+
return null;
|
|
12291
|
+
const position = this.draw.getPosition();
|
|
12292
|
+
const positionContext = position.getPositionContext();
|
|
12293
|
+
if (!positionContext)
|
|
12294
|
+
return null;
|
|
12295
|
+
const controlElement = this.activeControl.getElement();
|
|
12296
|
+
function getPreContext(elementList2, start) {
|
|
12297
|
+
for (let e = start; e > 0; e--) {
|
|
12298
|
+
const element = elementList2[e];
|
|
12299
|
+
if (element.type === ElementType.TABLE) {
|
|
12300
|
+
const trList = element.trList || [];
|
|
12301
|
+
for (let r = trList.length - 1; r >= 0; r--) {
|
|
12302
|
+
const tr = trList[r];
|
|
12303
|
+
const tdList = tr.tdList;
|
|
12304
|
+
for (let d = tdList.length - 1; d >= 0; d--) {
|
|
12305
|
+
const td = tdList[d];
|
|
12306
|
+
const context2 = getPreContext(td.value, td.value.length - 1);
|
|
12307
|
+
if (context2) {
|
|
12308
|
+
return {
|
|
12309
|
+
positionContext: {
|
|
12310
|
+
isTable: true,
|
|
12311
|
+
index: e,
|
|
12312
|
+
trIndex: r,
|
|
12313
|
+
tdIndex: d,
|
|
12314
|
+
tdId: td.id,
|
|
12315
|
+
trId: tr.id,
|
|
12316
|
+
tableId: element.id
|
|
12317
|
+
},
|
|
12318
|
+
nextIndex: context2.nextIndex
|
|
12319
|
+
};
|
|
12320
|
+
}
|
|
12321
|
+
}
|
|
12322
|
+
}
|
|
12323
|
+
}
|
|
12324
|
+
if (!element.controlId || element.controlId === controlElement.controlId) {
|
|
12325
|
+
continue;
|
|
12326
|
+
}
|
|
12327
|
+
let nextIndex = e;
|
|
12328
|
+
while (nextIndex > 0) {
|
|
12329
|
+
const nextElement = elementList2[nextIndex];
|
|
12330
|
+
if (nextElement.controlComponent === ControlComponent.VALUE || nextElement.controlComponent === ControlComponent.PREFIX) {
|
|
12331
|
+
break;
|
|
12332
|
+
}
|
|
12333
|
+
nextIndex--;
|
|
12334
|
+
}
|
|
12335
|
+
return {
|
|
12336
|
+
positionContext: {
|
|
12337
|
+
isTable: false
|
|
12338
|
+
},
|
|
12339
|
+
nextIndex
|
|
12340
|
+
};
|
|
12341
|
+
}
|
|
12342
|
+
return null;
|
|
12343
|
+
}
|
|
12344
|
+
const { startIndex } = this.range.getRange();
|
|
12345
|
+
const elementList = this.getElementList();
|
|
12346
|
+
const context = getPreContext(elementList, startIndex);
|
|
12347
|
+
if (context) {
|
|
12348
|
+
return {
|
|
12349
|
+
positionContext: positionContext.isTable ? positionContext : context.positionContext,
|
|
12350
|
+
nextIndex: context.nextIndex
|
|
12351
|
+
};
|
|
12352
|
+
}
|
|
12353
|
+
if (controlElement.tableId) {
|
|
12354
|
+
const originalElementList = this.draw.getOriginalElementList();
|
|
12355
|
+
const { index: index2, trIndex, tdIndex } = positionContext;
|
|
12356
|
+
const trList = originalElementList[index2].trList;
|
|
12357
|
+
for (let r = trIndex; r >= 0; r--) {
|
|
12358
|
+
const tr = trList[r];
|
|
12359
|
+
const tdList = tr.tdList;
|
|
12360
|
+
for (let d = tdList.length - 1; d >= 0; d--) {
|
|
12361
|
+
if (trIndex === r && d >= tdIndex)
|
|
12362
|
+
continue;
|
|
12363
|
+
const td = tdList[d];
|
|
12364
|
+
const context3 = getPreContext(td.value, td.value.length - 1);
|
|
12365
|
+
if (context3) {
|
|
12366
|
+
return {
|
|
12367
|
+
positionContext: {
|
|
12368
|
+
isTable: true,
|
|
12369
|
+
index: positionContext.index,
|
|
12370
|
+
trIndex: r,
|
|
12371
|
+
tdIndex: d,
|
|
12372
|
+
tdId: td.id,
|
|
12373
|
+
trId: tr.id,
|
|
12374
|
+
tableId: controlElement.tableId
|
|
12375
|
+
},
|
|
12376
|
+
nextIndex: context3.nextIndex
|
|
12377
|
+
};
|
|
12378
|
+
}
|
|
12379
|
+
}
|
|
12380
|
+
}
|
|
12381
|
+
const context2 = getPreContext(originalElementList, index2 - 1);
|
|
12382
|
+
if (context2) {
|
|
12383
|
+
return {
|
|
12384
|
+
positionContext: {
|
|
12385
|
+
isTable: false
|
|
12386
|
+
},
|
|
12387
|
+
nextIndex: context2.nextIndex
|
|
12388
|
+
};
|
|
12389
|
+
}
|
|
12390
|
+
}
|
|
12391
|
+
return null;
|
|
12392
|
+
}
|
|
12393
|
+
getNextControlContext() {
|
|
12394
|
+
if (!this.activeControl)
|
|
12395
|
+
return null;
|
|
12396
|
+
const position = this.draw.getPosition();
|
|
12397
|
+
const positionContext = position.getPositionContext();
|
|
12398
|
+
if (!positionContext)
|
|
12399
|
+
return null;
|
|
12400
|
+
const controlElement = this.activeControl.getElement();
|
|
12401
|
+
function getNextContext(elementList2, start) {
|
|
12402
|
+
for (let e = start; e < elementList2.length; e++) {
|
|
12403
|
+
const element = elementList2[e];
|
|
12404
|
+
if (element.type === ElementType.TABLE) {
|
|
12405
|
+
const trList = element.trList || [];
|
|
12406
|
+
for (let r = 0; r < trList.length; r++) {
|
|
12407
|
+
const tr = trList[r];
|
|
12408
|
+
const tdList = tr.tdList;
|
|
12409
|
+
for (let d = 0; d < tdList.length; d++) {
|
|
12410
|
+
const td = tdList[d];
|
|
12411
|
+
const context2 = getNextContext(td.value, 0);
|
|
12412
|
+
if (context2) {
|
|
12413
|
+
return {
|
|
12414
|
+
positionContext: {
|
|
12415
|
+
isTable: true,
|
|
12416
|
+
index: e,
|
|
12417
|
+
trIndex: r,
|
|
12418
|
+
tdIndex: d,
|
|
12419
|
+
tdId: td.id,
|
|
12420
|
+
trId: tr.id,
|
|
12421
|
+
tableId: element.id
|
|
12422
|
+
},
|
|
12423
|
+
nextIndex: context2.nextIndex
|
|
12424
|
+
};
|
|
12425
|
+
}
|
|
12426
|
+
}
|
|
12427
|
+
}
|
|
12428
|
+
}
|
|
12429
|
+
if (!element.controlId || element.controlId === controlElement.controlId) {
|
|
12430
|
+
continue;
|
|
12431
|
+
}
|
|
12432
|
+
return {
|
|
12433
|
+
positionContext: {
|
|
12434
|
+
isTable: false
|
|
12435
|
+
},
|
|
12436
|
+
nextIndex: e
|
|
12437
|
+
};
|
|
12438
|
+
}
|
|
12439
|
+
return null;
|
|
12440
|
+
}
|
|
12441
|
+
const { endIndex } = this.range.getRange();
|
|
12442
|
+
const elementList = this.getElementList();
|
|
12443
|
+
const context = getNextContext(elementList, endIndex);
|
|
12444
|
+
if (context) {
|
|
12445
|
+
return {
|
|
12446
|
+
positionContext: positionContext.isTable ? positionContext : context.positionContext,
|
|
12447
|
+
nextIndex: context.nextIndex
|
|
12448
|
+
};
|
|
12449
|
+
}
|
|
12450
|
+
if (controlElement.tableId) {
|
|
12451
|
+
const originalElementList = this.draw.getOriginalElementList();
|
|
12452
|
+
const { index: index2, trIndex, tdIndex } = positionContext;
|
|
12453
|
+
const trList = originalElementList[index2].trList;
|
|
12454
|
+
for (let r = trIndex; r < trList.length; r++) {
|
|
12455
|
+
const tr = trList[r];
|
|
12456
|
+
const tdList = tr.tdList;
|
|
12457
|
+
for (let d = 0; d < tdList.length; d++) {
|
|
12458
|
+
if (trIndex === r && d <= tdIndex)
|
|
12459
|
+
continue;
|
|
12460
|
+
const td = tdList[d];
|
|
12461
|
+
const context3 = getNextContext(td.value, 0);
|
|
12462
|
+
if (context3) {
|
|
12463
|
+
return {
|
|
12464
|
+
positionContext: {
|
|
12465
|
+
isTable: true,
|
|
12466
|
+
index: positionContext.index,
|
|
12467
|
+
trIndex: r,
|
|
12468
|
+
tdIndex: d,
|
|
12469
|
+
tdId: td.id,
|
|
12470
|
+
trId: tr.id,
|
|
12471
|
+
tableId: controlElement.tableId
|
|
12472
|
+
},
|
|
12473
|
+
nextIndex: context3.nextIndex
|
|
12474
|
+
};
|
|
12475
|
+
}
|
|
12476
|
+
}
|
|
12477
|
+
}
|
|
12478
|
+
const context2 = getNextContext(originalElementList, index2 + 1);
|
|
12479
|
+
if (context2) {
|
|
12480
|
+
return {
|
|
12481
|
+
positionContext: {
|
|
12482
|
+
isTable: false
|
|
12483
|
+
},
|
|
12484
|
+
nextIndex: context2.nextIndex
|
|
12485
|
+
};
|
|
12486
|
+
}
|
|
12487
|
+
}
|
|
12488
|
+
return null;
|
|
12489
|
+
}
|
|
12490
|
+
initNextControl(option = {}) {
|
|
12491
|
+
const { direction = MoveDirection.DOWN } = option;
|
|
12492
|
+
let context = null;
|
|
12493
|
+
if (direction === MoveDirection.UP) {
|
|
12494
|
+
context = this.getPreControlContext();
|
|
12495
|
+
} else {
|
|
12496
|
+
context = this.getNextControlContext();
|
|
12497
|
+
}
|
|
12498
|
+
if (!context)
|
|
12499
|
+
return;
|
|
12500
|
+
const { nextIndex, positionContext } = context;
|
|
12501
|
+
const position = this.draw.getPosition();
|
|
12502
|
+
position.setPositionContext(positionContext);
|
|
12503
|
+
this.draw.getRange().replaceRange({
|
|
12504
|
+
startIndex: nextIndex,
|
|
12505
|
+
endIndex: nextIndex
|
|
12506
|
+
});
|
|
12507
|
+
this.draw.render({
|
|
12508
|
+
curIndex: nextIndex,
|
|
12509
|
+
isCompute: false,
|
|
12510
|
+
isSetCursor: true,
|
|
12511
|
+
isSubmitHistory: false
|
|
12512
|
+
});
|
|
12513
|
+
const positionList = position.getPositionList();
|
|
12514
|
+
this.draw.getCursor().moveCursorToVisible({
|
|
12515
|
+
cursorPosition: positionList[nextIndex],
|
|
12516
|
+
direction
|
|
12517
|
+
});
|
|
12518
|
+
}
|
|
12519
|
+
}
|
|
12520
|
+
class CheckboxParticle {
|
|
12521
|
+
constructor(draw) {
|
|
12522
|
+
__publicField(this, "draw");
|
|
12523
|
+
__publicField(this, "options");
|
|
12524
|
+
this.draw = draw;
|
|
12525
|
+
this.options = draw.getOptions();
|
|
12526
|
+
}
|
|
12527
|
+
setSelect(element) {
|
|
12528
|
+
const { checkbox } = element;
|
|
12529
|
+
if (checkbox) {
|
|
12530
|
+
checkbox.value = !checkbox.value;
|
|
12531
|
+
} else {
|
|
12532
|
+
element.checkbox = {
|
|
12533
|
+
value: true
|
|
12534
|
+
};
|
|
12535
|
+
}
|
|
12536
|
+
this.draw.render({
|
|
12537
|
+
isCompute: false,
|
|
12538
|
+
isSetCursor: false
|
|
12539
|
+
});
|
|
12540
|
+
}
|
|
12541
|
+
render(ctx, element, x, y) {
|
|
12542
|
+
const { checkbox: { gap, lineWidth, fillStyle, strokeStyle }, scale } = this.options;
|
|
12543
|
+
const { metrics, checkbox } = element;
|
|
12544
|
+
const left2 = Math.round(x + gap * scale);
|
|
12545
|
+
const top = Math.round(y - metrics.height + lineWidth);
|
|
12546
|
+
const width = metrics.width - gap * 2 * scale;
|
|
12547
|
+
const height = metrics.height;
|
|
12548
|
+
ctx.save();
|
|
12549
|
+
ctx.beginPath();
|
|
12550
|
+
ctx.translate(0.5, 0.5);
|
|
12551
|
+
if (checkbox == null ? void 0 : checkbox.value) {
|
|
12552
|
+
ctx.lineWidth = lineWidth;
|
|
12553
|
+
ctx.strokeStyle = fillStyle;
|
|
12554
|
+
ctx.rect(left2, top, width, height);
|
|
12555
|
+
ctx.stroke();
|
|
12556
|
+
ctx.beginPath();
|
|
12557
|
+
ctx.fillStyle = fillStyle;
|
|
12558
|
+
ctx.fillRect(left2, top, width, height);
|
|
12559
|
+
ctx.beginPath();
|
|
12560
|
+
ctx.strokeStyle = strokeStyle;
|
|
12561
|
+
ctx.lineWidth = lineWidth * 2 * scale;
|
|
12562
|
+
ctx.moveTo(left2 + 2 * scale, top + height / 2);
|
|
12563
|
+
ctx.lineTo(left2 + width / 2, top + height - 3 * scale);
|
|
12564
|
+
ctx.lineTo(left2 + width - 2 * scale, top + 3 * scale);
|
|
12565
|
+
ctx.stroke();
|
|
12566
|
+
} else {
|
|
12567
|
+
ctx.lineWidth = lineWidth;
|
|
12568
|
+
ctx.rect(left2, top, width, height);
|
|
12569
|
+
ctx.stroke();
|
|
12570
|
+
}
|
|
12571
|
+
ctx.closePath();
|
|
12572
|
+
ctx.restore();
|
|
12573
|
+
}
|
|
12574
|
+
}
|
|
12575
|
+
class RadioParticle {
|
|
12576
|
+
constructor(draw) {
|
|
12577
|
+
__publicField(this, "draw");
|
|
12578
|
+
__publicField(this, "options");
|
|
12579
|
+
this.draw = draw;
|
|
12580
|
+
this.options = draw.getOptions();
|
|
12581
|
+
}
|
|
12582
|
+
setSelect(element) {
|
|
12583
|
+
const { radio } = element;
|
|
12584
|
+
if (radio) {
|
|
12585
|
+
radio.value = !radio.value;
|
|
12586
|
+
} else {
|
|
12587
|
+
element.radio = {
|
|
12588
|
+
value: true
|
|
12589
|
+
};
|
|
12590
|
+
}
|
|
12591
|
+
this.draw.render({
|
|
12592
|
+
isCompute: false,
|
|
12593
|
+
isSetCursor: false
|
|
12594
|
+
});
|
|
12595
|
+
}
|
|
12596
|
+
render(ctx, element, x, y) {
|
|
12597
|
+
const { radio: { gap, lineWidth, fillStyle, strokeStyle }, scale } = this.options;
|
|
12598
|
+
const { metrics, radio } = element;
|
|
12599
|
+
const left2 = Math.round(x + gap * scale);
|
|
12600
|
+
const top = Math.round(y - metrics.height + lineWidth);
|
|
12601
|
+
const width = metrics.width - gap * 2 * scale;
|
|
12602
|
+
const height = metrics.height;
|
|
12603
|
+
ctx.save();
|
|
12604
|
+
ctx.beginPath();
|
|
12605
|
+
ctx.translate(0.5, 0.5);
|
|
12606
|
+
ctx.strokeStyle = (radio == null ? void 0 : radio.value) ? fillStyle : strokeStyle;
|
|
12607
|
+
ctx.lineWidth = lineWidth;
|
|
12608
|
+
ctx.arc(left2 + width / 2, top + height / 2, width / 2, 0, Math.PI * 2);
|
|
12609
|
+
ctx.stroke();
|
|
12610
|
+
if (radio == null ? void 0 : radio.value) {
|
|
12611
|
+
ctx.beginPath();
|
|
12612
|
+
ctx.fillStyle = fillStyle;
|
|
12613
|
+
ctx.arc(left2 + width / 2, top + height / 2, width / 3, 0, Math.PI * 2);
|
|
12614
|
+
ctx.fill();
|
|
12615
|
+
}
|
|
12616
|
+
ctx.closePath();
|
|
12617
|
+
ctx.restore();
|
|
12618
|
+
}
|
|
12619
|
+
}
|
|
12620
|
+
const encodedJs$2 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBmOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuVEFCTEU9InRhYmxlIix0LkhZUEVSTElOSz0iaHlwZXJsaW5rIix0LkNPTlRST0w9ImNvbnRyb2wifSkoZnx8KGY9e30pKTt2YXIgcDsoZnVuY3Rpb24odCl7dC5WQUxVRT0idmFsdWUifSkocHx8KHA9e30pKTtjb25zdCBoPSJcdTIwMEIiLGc9YApgO2Z1bmN0aW9uIGEodCl7bGV0IGw9IiIsbj0wO2Zvcig7bjx0Lmxlbmd0aDspe2NvbnN0IG89dFtuXTtpZihvLnR5cGU9PT1mLlRBQkxFKXtpZihvLnRyTGlzdClmb3IobGV0IHI9MDtyPG8udHJMaXN0Lmxlbmd0aDtyKyspe2NvbnN0IHM9by50ckxpc3Rbcl07Zm9yKGxldCBlPTA7ZTxzLnRkTGlzdC5sZW5ndGg7ZSsrKXtjb25zdCBpPXMudGRMaXN0W2VdO2wrPWEoaS52YWx1ZSl9fX1lbHNlIGlmKG8udHlwZT09PWYuSFlQRVJMSU5LKXtjb25zdCByPW8uaHlwZXJsaW5rSWQscz1bXTtmb3IoO248dC5sZW5ndGg7KXtjb25zdCBlPXRbbl07aWYociE9PWUuaHlwZXJsaW5rSWQpe24tLTticmVha31kZWxldGUgZS50eXBlLHMucHVzaChlKSxuKyt9bCs9YShzKX1lbHNlIGlmKG8uY29udHJvbElkKXtjb25zdCByPW8uY29udHJvbElkLHM9W107Zm9yKDtuPHQubGVuZ3RoOyl7Y29uc3QgZT10W25dO2lmKHIhPT1lLmNvbnRyb2xJZCl7bi0tO2JyZWFrfWUuY29udHJvbENvbXBvbmVudD09PXAuVkFMVUUmJihkZWxldGUgZS5jb250cm9sSWQscy5wdXNoKGUpKSxuKyt9bCs9YShzKX1lbHNlKCFvLnR5cGV8fG8udHlwZT09PWYuVEVYVCkmJihsKz1vLnZhbHVlKTtuKyt9cmV0dXJuIGx9ZnVuY3Rpb24gZCh0KXtjb25zdCBsPVtdLG49L1swLTldLyxvPS9bQS1aYS16XS8scj0vXHMvO2xldCBzPSExLGU9ITEsaT0iIjtmdW5jdGlvbiB1KCl7aSYmKGwucHVzaChpKSxpPSIiKX1mb3IoY29uc3QgYyBvZiB0KW8udGVzdChjKT8oc3x8dSgpLGkrPWMscz0hMCxlPSExKTpuLnRlc3QoYyk/KGV8fHUoKSxpKz1jLHM9ITEsZT0hMCk6KHUoKSxzPSExLGU9ITEsci50ZXN0KGMpfHxsLnB1c2goYykpO3JldHVybiB1KCksbH1vbm1lc3NhZ2U9dD0+e2NvbnN0IGw9dC5kYXRhLG89YShsKS5yZXBsYWNlKG5ldyBSZWdFeHAoYF4ke2h9YCksIiIpLnJlcGxhY2UobmV3IFJlZ0V4cChoLCJnIiksZykscj1kKG8pO3Bvc3RNZXNzYWdlKHIubGVuZ3RoKX19KSgpO30pKCk7Cg==";
|
|
12621
|
+
const blob$2 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$2)], { type: "text/javascript;charset=utf-8" });
|
|
12622
|
+
function WorkerWrapper$2() {
|
|
12623
|
+
const objURL = blob$2 && (window.URL || window.webkitURL).createObjectURL(blob$2);
|
|
12624
|
+
try {
|
|
12625
|
+
return objURL ? new Worker(objURL) : new Worker("data:application/javascript;base64," + encodedJs$2, { type: "module" });
|
|
12626
|
+
} finally {
|
|
12627
|
+
objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
|
|
12628
|
+
}
|
|
12629
|
+
}
|
|
12630
|
+
const encodedJs$1 = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBhOyhmdW5jdGlvbih0KXt0LlRFWFQ9InRleHQiLHQuSU1BR0U9ImltYWdlIix0LlRBQkxFPSJ0YWJsZSIsdC5IWVBFUkxJTks9Imh5cGVybGluayIsdC5TVVBFUlNDUklQVD0ic3VwZXJzY3JpcHQiLHQuU1VCU0NSSVBUPSJzdWJzY3JpcHQiLHQuU0VQQVJBVE9SPSJzZXBhcmF0b3IiLHQuUEFHRV9CUkVBSz0icGFnZUJyZWFrIix0LkNPTlRST0w9ImNvbnRyb2wiLHQuQ0hFQ0tCT1g9ImNoZWNrYm94Iix0LlJBRElPPSJyYWRpbyIsdC5MQVRFWD0ibGF0ZXgiLHQuVEFCPSJ0YWIiLHQuREFURT0iZGF0ZSIsdC5CTE9DSz0iYmxvY2siLHQuVElUTEU9InRpdGxlIix0LkxJU1Q9Imxpc3QifSkoYXx8KGE9e30pKTt2YXIgYzsoZnVuY3Rpb24odCl7dC5GSVJTVD0iZmlyc3QiLHQuU0VDT05EPSJzZWNvbmQiLHQuVEhJUkQ9InRoaXJkIix0LkZPVVJUSD0iZm91cnRoIix0LkZJRlRIPSJmaWZ0aCIsdC5TSVhUSD0ic2l4dGgifSkoY3x8KGM9e30pKTtjb25zdCBJPXtbYy5GSVJTVF06MSxbYy5TRUNPTkRdOjIsW2MuVEhJUkRdOjMsW2MuRk9VUlRIXTo0LFtjLkZJRlRIXTo1LFtjLlNJWFRIXTo2fSx2PVthLlRFWFQsYS5IWVBFUkxJTkssYS5TVUJTQ1JJUFQsYS5TVVBFUlNDUklQVCxhLkNPTlRST0wsYS5EQVRFXSxoPSJcdTIwMEIiO2Z1bmN0aW9uIFQodCl7cmV0dXJuIXQudHlwZXx8di5pbmNsdWRlcyh0LnR5cGUpfWZ1bmN0aW9uIGYodCl7Y29uc3QgaT1bXTtsZXQgZT0wO2Zvcig7ZTx0Lmxlbmd0aDspe2NvbnN0IHM9dFtlXTtpZihzLnRpdGxlSWQpe2NvbnN0IG89cy50aXRsZUlkLGw9cy5sZXZlbCxuPXt0eXBlOmEuVElUTEUsdmFsdWU6IiIsbGV2ZWw6bCx0aXRsZUlkOm99LHI9W107Zm9yKDtlPHQubGVuZ3RoOyl7Y29uc3QgdT10W2VdO2lmKG8hPT11LnRpdGxlSWQpe2UtLTticmVha31yLnB1c2godSksZSsrfW4udmFsdWU9ci5maWx0ZXIodT0+VCh1KSkubWFwKHU9PnUudmFsdWUpLmpvaW4oIiIpLnJlcGxhY2UobmV3IFJlZ0V4cChoLCJnIiksIiIpLGkucHVzaChuKX1lKyt9aWYoIWkubGVuZ3RoKXJldHVybiBudWxsO2NvbnN0IGc9KHMsbyk9Pntjb25zdCBsPW8uc3ViQ2F0YWxvZ1tvLnN1YkNhdGFsb2cubGVuZ3RoLTFdLG49SVtsPT1udWxsP3ZvaWQgMDpsLmxldmVsXSxyPUlbcy5sZXZlbF07bCYmcj5uP2cocyxsKTpvLnN1YkNhdGFsb2cucHVzaCh7aWQ6cy50aXRsZUlkLG5hbWU6cy52YWx1ZSxsZXZlbDpzLmxldmVsLHN1YkNhdGFsb2c6W119KX0sUj1bXTtmb3IobGV0IHM9MDtzPGkubGVuZ3RoO3MrKyl7Y29uc3Qgbz1pW3NdLGw9UltSLmxlbmd0aC0xXSxuPUlbbD09bnVsbD92b2lkIDA6bC5sZXZlbF0scj1JW28ubGV2ZWxdO2wmJnI+bj9nKG8sbCk6Ui5wdXNoKHtpZDpvLnRpdGxlSWQsbmFtZTpvLnZhbHVlLGxldmVsOm8ubGV2ZWwsc3ViQ2F0YWxvZzpbXX0pfXJldHVybiBSfW9ubWVzc2FnZT10PT57Y29uc3QgaT10LmRhdGEsZT1mKGkpO3Bvc3RNZXNzYWdlKGUpfX0pKCk7fSkoKTsK";
|
|
12631
|
+
const blob$1 = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs$1)], { type: "text/javascript;charset=utf-8" });
|
|
12632
|
+
function WorkerWrapper$1() {
|
|
12633
|
+
const objURL = blob$1 && (window.URL || window.webkitURL).createObjectURL(blob$1);
|
|
12634
|
+
try {
|
|
12635
|
+
return objURL ? new Worker(objURL) : new Worker("data:application/javascript;base64," + encodedJs$1, { type: "module" });
|
|
12636
|
+
} finally {
|
|
12637
|
+
objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
|
|
12638
|
+
}
|
|
12639
|
+
}
|
|
12640
|
+
const encodedJs = "KCgpPT57KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO3ZhciBuOyhmdW5jdGlvbihvKXtvLlRBQkxFPSJ0YWJsZSJ9KShufHwobj17fSkpO2Z1bmN0aW9uIGMobyl7Y29uc3QgdD1bXTtmb3IoY29uc3QgcyBvZiBvKXtpZihzLnR5cGU9PT1uLlRBQkxFKXtjb25zdCBlPXMudHJMaXN0O2ZvcihsZXQgcj0wO3I8ZS5sZW5ndGg7cisrKXtjb25zdCBpPWVbcl07Zm9yKGxldCB1PTA7dTxpLnRkTGlzdC5sZW5ndGg7dSsrKXtjb25zdCBkPWkudGRMaXN0W3VdO3QucHVzaCguLi5jKGQudmFsdWUpKX19fWlmKCEhcy5ncm91cElkcylmb3IoY29uc3QgZSBvZiBzLmdyb3VwSWRzKXQuaW5jbHVkZXMoZSl8fHQucHVzaChlKX1yZXR1cm4gdH1vbm1lc3NhZ2U9bz0+e2NvbnN0IHQ9by5kYXRhLHM9Yyh0KTtwb3N0TWVzc2FnZShzKX19KSgpO30pKCk7Cg==";
|
|
12641
|
+
const blob = typeof window !== "undefined" && window.Blob && new Blob([atob(encodedJs)], { type: "text/javascript;charset=utf-8" });
|
|
12642
|
+
function WorkerWrapper() {
|
|
12643
|
+
const objURL = blob && (window.URL || window.webkitURL).createObjectURL(blob);
|
|
12644
|
+
try {
|
|
12645
|
+
return objURL ? new Worker(objURL) : new Worker("data:application/javascript;base64," + encodedJs, { type: "module" });
|
|
12646
|
+
} finally {
|
|
12647
|
+
objURL && (window.URL || window.webkitURL).revokeObjectURL(objURL);
|
|
12648
|
+
}
|
|
12649
|
+
}
|
|
12650
|
+
class WorkerManager {
|
|
12651
|
+
constructor(draw) {
|
|
12652
|
+
__publicField(this, "draw");
|
|
12653
|
+
__publicField(this, "wordCountWorker");
|
|
12654
|
+
__publicField(this, "catalogWorker");
|
|
12655
|
+
__publicField(this, "groupWorker");
|
|
12656
|
+
this.draw = draw;
|
|
12657
|
+
this.wordCountWorker = new WorkerWrapper$2();
|
|
12658
|
+
this.catalogWorker = new WorkerWrapper$1();
|
|
12659
|
+
this.groupWorker = new WorkerWrapper();
|
|
12660
|
+
}
|
|
12661
|
+
getWordCount() {
|
|
12662
|
+
return new Promise((resolve, reject) => {
|
|
12663
|
+
this.wordCountWorker.onmessage = (evt) => {
|
|
12664
|
+
resolve(evt.data);
|
|
12665
|
+
};
|
|
12666
|
+
this.wordCountWorker.onerror = (evt) => {
|
|
12667
|
+
reject(evt);
|
|
12668
|
+
};
|
|
12669
|
+
const elementList = this.draw.getOriginalMainElementList();
|
|
12670
|
+
this.wordCountWorker.postMessage(elementList);
|
|
12671
|
+
});
|
|
12672
|
+
}
|
|
12673
|
+
getCatalog() {
|
|
12674
|
+
return new Promise((resolve, reject) => {
|
|
12675
|
+
this.catalogWorker.onmessage = (evt) => {
|
|
12676
|
+
resolve(evt.data);
|
|
12677
|
+
};
|
|
12678
|
+
this.catalogWorker.onerror = (evt) => {
|
|
12679
|
+
reject(evt);
|
|
12680
|
+
};
|
|
12681
|
+
const elementList = this.draw.getOriginalMainElementList();
|
|
12682
|
+
this.catalogWorker.postMessage(elementList);
|
|
12683
|
+
});
|
|
12684
|
+
}
|
|
12685
|
+
getGroupIds() {
|
|
12686
|
+
return new Promise((resolve, reject) => {
|
|
12687
|
+
this.groupWorker.onmessage = (evt) => {
|
|
12688
|
+
resolve(evt.data);
|
|
12689
|
+
};
|
|
12690
|
+
this.groupWorker.onerror = (evt) => {
|
|
12691
|
+
reject(evt);
|
|
12692
|
+
};
|
|
12693
|
+
const elementList = this.draw.getOriginalMainElementList();
|
|
12694
|
+
this.groupWorker.postMessage(elementList);
|
|
12695
|
+
});
|
|
12696
|
+
}
|
|
12697
|
+
}
|
|
12698
|
+
class Previewer {
|
|
12699
|
+
constructor(draw) {
|
|
12700
|
+
__publicField(this, "container");
|
|
12701
|
+
__publicField(this, "canvas");
|
|
12702
|
+
__publicField(this, "draw");
|
|
12703
|
+
__publicField(this, "options");
|
|
12704
|
+
__publicField(this, "curElement");
|
|
12705
|
+
__publicField(this, "curElementSrc");
|
|
12706
|
+
__publicField(this, "previewerDrawOption");
|
|
12707
|
+
__publicField(this, "curPosition");
|
|
12708
|
+
__publicField(this, "resizerSelection");
|
|
12709
|
+
__publicField(this, "resizerHandleList");
|
|
12710
|
+
__publicField(this, "resizerImageContainer");
|
|
12711
|
+
__publicField(this, "resizerImage");
|
|
12712
|
+
__publicField(this, "resizerSize");
|
|
12713
|
+
__publicField(this, "width");
|
|
12714
|
+
__publicField(this, "height");
|
|
12715
|
+
__publicField(this, "mousedownX");
|
|
12716
|
+
__publicField(this, "mousedownY");
|
|
12717
|
+
__publicField(this, "curHandleIndex");
|
|
12718
|
+
__publicField(this, "previewerContainer");
|
|
12719
|
+
__publicField(this, "previewerImage");
|
|
12720
|
+
__publicField(this, "_keydown", () => {
|
|
12721
|
+
if (this.resizerSelection.style.display === "block") {
|
|
12722
|
+
this.clearResizer();
|
|
12723
|
+
document.removeEventListener("keydown", this._keydown);
|
|
12724
|
+
}
|
|
12725
|
+
});
|
|
12726
|
+
this.container = draw.getContainer();
|
|
12727
|
+
this.canvas = draw.getPage();
|
|
12728
|
+
this.draw = draw;
|
|
12729
|
+
this.options = draw.getOptions();
|
|
12730
|
+
this.curElement = null;
|
|
12731
|
+
this.curElementSrc = "";
|
|
12732
|
+
this.previewerDrawOption = {};
|
|
12733
|
+
this.curPosition = null;
|
|
12734
|
+
const { resizerSelection, resizerHandleList, resizerImageContainer, resizerImage, resizerSize } = this._createResizerDom();
|
|
12735
|
+
this.resizerSelection = resizerSelection;
|
|
12736
|
+
this.resizerHandleList = resizerHandleList;
|
|
12737
|
+
this.resizerImageContainer = resizerImageContainer;
|
|
12738
|
+
this.resizerImage = resizerImage;
|
|
12739
|
+
this.resizerSize = resizerSize;
|
|
12740
|
+
this.width = 0;
|
|
12741
|
+
this.height = 0;
|
|
12742
|
+
this.mousedownX = 0;
|
|
12743
|
+
this.mousedownY = 0;
|
|
12744
|
+
this.curHandleIndex = 0;
|
|
12745
|
+
this.previewerContainer = null;
|
|
12746
|
+
this.previewerImage = null;
|
|
12747
|
+
}
|
|
12748
|
+
_getElementPosition(element, position = null) {
|
|
12749
|
+
var _a;
|
|
12750
|
+
let x = 0;
|
|
12751
|
+
let y = 0;
|
|
12752
|
+
const height = this.draw.getHeight();
|
|
12753
|
+
const pageGap = this.draw.getPageGap();
|
|
12754
|
+
const pageNo = (_a = position == null ? void 0 : position.pageNo) != null ? _a : this.draw.getPageNo();
|
|
12755
|
+
const preY = pageNo * (height + pageGap);
|
|
12756
|
+
if (element.imgFloatPosition) {
|
|
12757
|
+
x = element.imgFloatPosition.x;
|
|
12758
|
+
y = element.imgFloatPosition.y + preY;
|
|
12759
|
+
} else if (position) {
|
|
12760
|
+
const { coordinate: { leftTop: [left2, top] }, ascent } = position;
|
|
12761
|
+
x = left2;
|
|
12762
|
+
y = top + preY + ascent;
|
|
12763
|
+
}
|
|
12764
|
+
return { x, y };
|
|
12765
|
+
}
|
|
12766
|
+
_createResizerDom() {
|
|
12767
|
+
const resizerSelection = document.createElement("div");
|
|
12768
|
+
resizerSelection.classList.add(`${EDITOR_PREFIX}-resizer-selection`);
|
|
12769
|
+
resizerSelection.style.display = "none";
|
|
12770
|
+
resizerSelection.style.borderColor = this.options.resizerColor;
|
|
12771
|
+
const resizerHandleList = [];
|
|
12772
|
+
for (let i = 0; i < 8; i++) {
|
|
12773
|
+
const handleDom = document.createElement("div");
|
|
12774
|
+
handleDom.style.background = this.options.resizerColor;
|
|
12775
|
+
handleDom.classList.add(`resizer-handle`);
|
|
12776
|
+
handleDom.classList.add(`handle-${i}`);
|
|
12777
|
+
handleDom.setAttribute("data-index", String(i));
|
|
12778
|
+
handleDom.onmousedown = this._mousedown.bind(this);
|
|
12779
|
+
resizerSelection.append(handleDom);
|
|
12780
|
+
resizerHandleList.push(handleDom);
|
|
12781
|
+
}
|
|
12782
|
+
this.container.append(resizerSelection);
|
|
12783
|
+
const resizerSizeView = document.createElement("div");
|
|
12784
|
+
resizerSizeView.classList.add(`${EDITOR_PREFIX}-resizer-size-view`);
|
|
12785
|
+
const resizerSize = document.createElement("span");
|
|
12786
|
+
resizerSizeView.append(resizerSize);
|
|
12787
|
+
resizerSelection.append(resizerSizeView);
|
|
12788
|
+
const resizerImageContainer = document.createElement("div");
|
|
12789
|
+
resizerImageContainer.classList.add(`${EDITOR_PREFIX}-resizer-image`);
|
|
12790
|
+
resizerImageContainer.style.display = "none";
|
|
12791
|
+
const resizerImage = document.createElement("img");
|
|
12792
|
+
resizerImageContainer.append(resizerImage);
|
|
12793
|
+
this.container.append(resizerImageContainer);
|
|
12794
|
+
return {
|
|
12795
|
+
resizerSelection,
|
|
12796
|
+
resizerHandleList,
|
|
12797
|
+
resizerImageContainer,
|
|
12798
|
+
resizerImage,
|
|
12799
|
+
resizerSize
|
|
12800
|
+
};
|
|
12801
|
+
}
|
|
12802
|
+
_mousedown(evt) {
|
|
12803
|
+
this.canvas = this.draw.getPage();
|
|
12804
|
+
if (!this.curElement)
|
|
12805
|
+
return;
|
|
12806
|
+
const { scale } = this.options;
|
|
12807
|
+
this.mousedownX = evt.x;
|
|
12808
|
+
this.mousedownY = evt.y;
|
|
12809
|
+
const target = evt.target;
|
|
12810
|
+
this.curHandleIndex = Number(target.dataset.index);
|
|
12811
|
+
const cursor = window.getComputedStyle(target).cursor;
|
|
12812
|
+
document.body.style.cursor = cursor;
|
|
12813
|
+
this.canvas.style.cursor = cursor;
|
|
12814
|
+
this.resizerImage.src = this.curElementSrc;
|
|
12815
|
+
this.resizerImageContainer.style.display = "block";
|
|
12816
|
+
const { x: resizerLeft, y: resizerTop } = this._getElementPosition(this.curElement, this.curPosition);
|
|
12817
|
+
this.resizerImageContainer.style.left = `${resizerLeft}px`;
|
|
12818
|
+
this.resizerImageContainer.style.top = `${resizerTop}px`;
|
|
12819
|
+
this.resizerImage.style.width = `${this.curElement.width * scale}px`;
|
|
12820
|
+
this.resizerImage.style.height = `${this.curElement.height * scale}px`;
|
|
12821
|
+
const mousemoveFn = this._mousemove.bind(this);
|
|
12822
|
+
document.addEventListener("mousemove", mousemoveFn);
|
|
12823
|
+
document.addEventListener("mouseup", () => {
|
|
12824
|
+
var _a;
|
|
12825
|
+
if (this.curElement) {
|
|
12826
|
+
this.curElement.width = this.width;
|
|
12827
|
+
this.curElement.height = this.height;
|
|
12828
|
+
this.draw.render({
|
|
12829
|
+
isSetCursor: true,
|
|
12830
|
+
curIndex: (_a = this.curPosition) == null ? void 0 : _a.index
|
|
12831
|
+
});
|
|
12832
|
+
}
|
|
12833
|
+
this.resizerImageContainer.style.display = "none";
|
|
12834
|
+
document.removeEventListener("mousemove", mousemoveFn);
|
|
12835
|
+
document.body.style.cursor = "";
|
|
12836
|
+
this.canvas.style.cursor = "text";
|
|
12837
|
+
}, {
|
|
12838
|
+
once: true
|
|
12839
|
+
});
|
|
12840
|
+
evt.preventDefault();
|
|
12841
|
+
}
|
|
12842
|
+
_mousemove(evt) {
|
|
12843
|
+
if (!this.curElement)
|
|
12844
|
+
return;
|
|
12845
|
+
const { scale } = this.options;
|
|
12846
|
+
let dx = 0;
|
|
12847
|
+
let dy = 0;
|
|
12848
|
+
switch (this.curHandleIndex) {
|
|
12849
|
+
case 0:
|
|
12850
|
+
{
|
|
12851
|
+
const offsetX = this.mousedownX - evt.x;
|
|
12852
|
+
const offsetY = this.mousedownY - evt.y;
|
|
12853
|
+
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
12854
|
+
dy = this.curElement.height * dx / this.curElement.width;
|
|
12855
|
+
}
|
|
12856
|
+
break;
|
|
12857
|
+
case 1:
|
|
12858
|
+
dy = this.mousedownY - evt.y;
|
|
12859
|
+
break;
|
|
12860
|
+
case 2:
|
|
12861
|
+
{
|
|
12862
|
+
const offsetX = evt.x - this.mousedownX;
|
|
12863
|
+
const offsetY = this.mousedownY - evt.y;
|
|
12864
|
+
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
12865
|
+
dy = this.curElement.height * dx / this.curElement.width;
|
|
12866
|
+
}
|
|
12867
|
+
break;
|
|
12868
|
+
case 4:
|
|
12869
|
+
{
|
|
12870
|
+
const offsetX = evt.x - this.mousedownX;
|
|
12871
|
+
const offsetY = evt.y - this.mousedownY;
|
|
12872
|
+
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
12873
|
+
dy = this.curElement.height * dx / this.curElement.width;
|
|
12874
|
+
}
|
|
12875
|
+
break;
|
|
12876
|
+
case 3:
|
|
12877
|
+
dx = evt.x - this.mousedownX;
|
|
12878
|
+
break;
|
|
12879
|
+
case 5:
|
|
12880
|
+
dy = evt.y - this.mousedownY;
|
|
12881
|
+
break;
|
|
12882
|
+
case 6:
|
|
12883
|
+
{
|
|
12884
|
+
const offsetX = this.mousedownX - evt.x;
|
|
12885
|
+
const offsetY = evt.y - this.mousedownY;
|
|
12886
|
+
dx = Math.cbrt(offsetX ** 3 + offsetY ** 3);
|
|
12887
|
+
dy = this.curElement.height * dx / this.curElement.width;
|
|
12888
|
+
}
|
|
12889
|
+
break;
|
|
12890
|
+
case 7:
|
|
12891
|
+
dx = this.mousedownX - evt.x;
|
|
12892
|
+
break;
|
|
12893
|
+
}
|
|
12894
|
+
const dw = this.curElement.width + dx / scale;
|
|
12895
|
+
const dh = this.curElement.height + dy / scale;
|
|
12896
|
+
if (dw <= 0 || dh <= 0)
|
|
12897
|
+
return;
|
|
12898
|
+
this.width = dw;
|
|
12899
|
+
this.height = dh;
|
|
12900
|
+
const elementWidth = dw * scale;
|
|
12901
|
+
const elementHeight = dh * scale;
|
|
12902
|
+
this.resizerImage.style.width = `${elementWidth}px`;
|
|
12903
|
+
this.resizerImage.style.height = `${elementHeight}px`;
|
|
12904
|
+
this._updateResizerRect(elementWidth, elementHeight);
|
|
12905
|
+
this._updateResizerSizeView(elementWidth, elementHeight);
|
|
12906
|
+
evt.preventDefault();
|
|
12907
|
+
}
|
|
12908
|
+
_drawPreviewer() {
|
|
12909
|
+
const previewerContainer = document.createElement("div");
|
|
12910
|
+
previewerContainer.classList.add(`${EDITOR_PREFIX}-image-previewer`);
|
|
12911
|
+
const closeBtn = document.createElement("i");
|
|
12912
|
+
closeBtn.classList.add("image-close");
|
|
12913
|
+
closeBtn.onclick = () => {
|
|
12914
|
+
this._clearPreviewer();
|
|
12170
12915
|
};
|
|
12171
|
-
|
|
12172
|
-
|
|
12916
|
+
previewerContainer.append(closeBtn);
|
|
12917
|
+
const imgContainer = document.createElement("div");
|
|
12918
|
+
imgContainer.classList.add(`${EDITOR_PREFIX}-image-container`);
|
|
12919
|
+
const img = document.createElement("img");
|
|
12920
|
+
img.src = this.curElementSrc;
|
|
12921
|
+
img.draggable = false;
|
|
12922
|
+
imgContainer.append(img);
|
|
12923
|
+
this.previewerImage = img;
|
|
12924
|
+
previewerContainer.append(imgContainer);
|
|
12925
|
+
let x = 0;
|
|
12926
|
+
let y = 0;
|
|
12927
|
+
let scaleSize = 1;
|
|
12928
|
+
let rotateSize = 0;
|
|
12929
|
+
const menuContainer = document.createElement("div");
|
|
12930
|
+
menuContainer.classList.add(`${EDITOR_PREFIX}-image-menu`);
|
|
12931
|
+
const zoomIn = document.createElement("i");
|
|
12932
|
+
zoomIn.classList.add("zoom-in");
|
|
12933
|
+
zoomIn.onclick = () => {
|
|
12934
|
+
scaleSize += 0.1;
|
|
12935
|
+
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
12173
12936
|
};
|
|
12174
|
-
|
|
12175
|
-
|
|
12937
|
+
menuContainer.append(zoomIn);
|
|
12938
|
+
const zoomOut = document.createElement("i");
|
|
12939
|
+
zoomOut.onclick = () => {
|
|
12940
|
+
if (scaleSize - 0.1 <= 0.1)
|
|
12941
|
+
return;
|
|
12942
|
+
scaleSize -= 0.1;
|
|
12943
|
+
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
12176
12944
|
};
|
|
12177
|
-
|
|
12178
|
-
|
|
12179
|
-
|
|
12945
|
+
zoomOut.classList.add("zoom-out");
|
|
12946
|
+
menuContainer.append(zoomOut);
|
|
12947
|
+
const rotate = document.createElement("i");
|
|
12948
|
+
rotate.classList.add("rotate");
|
|
12949
|
+
rotate.onclick = () => {
|
|
12950
|
+
rotateSize += 1;
|
|
12951
|
+
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
12180
12952
|
};
|
|
12181
|
-
|
|
12182
|
-
|
|
12183
|
-
|
|
12953
|
+
menuContainer.append(rotate);
|
|
12954
|
+
const originalSize = document.createElement("i");
|
|
12955
|
+
originalSize.classList.add("original-size");
|
|
12956
|
+
originalSize.onclick = () => {
|
|
12957
|
+
x = 0;
|
|
12958
|
+
y = 0;
|
|
12959
|
+
scaleSize = 1;
|
|
12960
|
+
rotateSize = 0;
|
|
12961
|
+
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
12184
12962
|
};
|
|
12185
|
-
|
|
12186
|
-
|
|
12187
|
-
|
|
12963
|
+
menuContainer.append(originalSize);
|
|
12964
|
+
const imageDownload = document.createElement("i");
|
|
12965
|
+
imageDownload.classList.add("image-download");
|
|
12966
|
+
imageDownload.onclick = () => {
|
|
12967
|
+
var _a;
|
|
12968
|
+
const { mime } = this.previewerDrawOption;
|
|
12969
|
+
downloadFile(img.src, `${(_a = this.curElement) == null ? void 0 : _a.id}.${mime || "png"}`);
|
|
12188
12970
|
};
|
|
12189
|
-
|
|
12190
|
-
|
|
12191
|
-
|
|
12192
|
-
|
|
12193
|
-
|
|
12194
|
-
|
|
12195
|
-
|
|
12196
|
-
|
|
12197
|
-
|
|
12971
|
+
menuContainer.append(imageDownload);
|
|
12972
|
+
previewerContainer.append(menuContainer);
|
|
12973
|
+
this.previewerContainer = previewerContainer;
|
|
12974
|
+
document.body.append(previewerContainer);
|
|
12975
|
+
let startX = 0;
|
|
12976
|
+
let startY = 0;
|
|
12977
|
+
let isAllowDrag = false;
|
|
12978
|
+
img.onmousedown = (evt) => {
|
|
12979
|
+
isAllowDrag = true;
|
|
12980
|
+
startX = evt.x;
|
|
12981
|
+
startY = evt.y;
|
|
12982
|
+
previewerContainer.style.cursor = "move";
|
|
12198
12983
|
};
|
|
12199
|
-
|
|
12200
|
-
if (!
|
|
12201
|
-
return;
|
|
12202
|
-
const li = evt.target;
|
|
12203
|
-
const id = li.dataset.id;
|
|
12204
|
-
if (!id)
|
|
12984
|
+
previewerContainer.onmousemove = (evt) => {
|
|
12985
|
+
if (!isAllowDrag)
|
|
12205
12986
|
return;
|
|
12206
|
-
|
|
12207
|
-
|
|
12987
|
+
x += evt.x - startX;
|
|
12988
|
+
y += evt.y - startY;
|
|
12989
|
+
startX = evt.x;
|
|
12990
|
+
startY = evt.y;
|
|
12991
|
+
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
12208
12992
|
};
|
|
12209
|
-
|
|
12210
|
-
|
|
12211
|
-
|
|
12212
|
-
const li = evt.target;
|
|
12213
|
-
const id = li.dataset.id;
|
|
12214
|
-
if (!id)
|
|
12215
|
-
return;
|
|
12216
|
-
this.pickDate.setSeconds(Number(id));
|
|
12217
|
-
this._setTimePick(false);
|
|
12993
|
+
previewerContainer.onmouseup = () => {
|
|
12994
|
+
isAllowDrag = false;
|
|
12995
|
+
previewerContainer.style.cursor = "auto";
|
|
12218
12996
|
};
|
|
12219
|
-
|
|
12220
|
-
|
|
12221
|
-
|
|
12222
|
-
|
|
12223
|
-
|
|
12224
|
-
|
|
12225
|
-
|
|
12226
|
-
|
|
12227
|
-
isInvalidDate(value) {
|
|
12228
|
-
return value.toDateString() === "Invalid Date";
|
|
12229
|
-
}
|
|
12230
|
-
_setValue() {
|
|
12231
|
-
var _a;
|
|
12232
|
-
const value = (_a = this.renderOptions) == null ? void 0 : _a.value;
|
|
12233
|
-
if (value) {
|
|
12234
|
-
const setDate = new Date(value);
|
|
12235
|
-
this.now = this.isInvalidDate(setDate) ? new Date() : setDate;
|
|
12236
|
-
} else {
|
|
12237
|
-
this.now = new Date();
|
|
12238
|
-
}
|
|
12239
|
-
this.pickDate = new Date(this.now);
|
|
12240
|
-
}
|
|
12241
|
-
_setLang() {
|
|
12242
|
-
this.dom.menu.time.innerText = this.lang.timeSelect;
|
|
12243
|
-
this.dom.menu.now.innerText = this.lang.now;
|
|
12244
|
-
this.dom.menu.submit.innerText = this.lang.confirm;
|
|
12245
|
-
const { weeks: { sun, mon, tue, wed, thu, fri, sat } } = this.lang;
|
|
12246
|
-
const weekList = [sun, mon, tue, wed, thu, fri, sat];
|
|
12247
|
-
this.dom.datePickerWeek.childNodes.forEach((child, i) => {
|
|
12248
|
-
const childElement = child;
|
|
12249
|
-
childElement.innerText = weekList[i];
|
|
12250
|
-
});
|
|
12251
|
-
const hourTitle = this.dom.time.hour.previousElementSibling;
|
|
12252
|
-
hourTitle.innerText = this.lang.hour;
|
|
12253
|
-
const minuteTitle = this.dom.time.minute.previousElementSibling;
|
|
12254
|
-
minuteTitle.innerText = this.lang.minute;
|
|
12255
|
-
const secondTitle = this.dom.time.second.previousElementSibling;
|
|
12256
|
-
secondTitle.innerText = this.lang.second;
|
|
12257
|
-
}
|
|
12258
|
-
_update() {
|
|
12259
|
-
const localDate = new Date();
|
|
12260
|
-
const localYear = localDate.getFullYear();
|
|
12261
|
-
const localMonth = localDate.getMonth() + 1;
|
|
12262
|
-
const localDay = localDate.getDate();
|
|
12263
|
-
let pickYear = null;
|
|
12264
|
-
let pickMonth = null;
|
|
12265
|
-
let pickDay = null;
|
|
12266
|
-
if (this.pickDate) {
|
|
12267
|
-
pickYear = this.pickDate.getFullYear();
|
|
12268
|
-
pickMonth = this.pickDate.getMonth() + 1;
|
|
12269
|
-
pickDay = this.pickDate.getDate();
|
|
12270
|
-
}
|
|
12271
|
-
const year = this.now.getFullYear();
|
|
12272
|
-
const month = this.now.getMonth() + 1;
|
|
12273
|
-
this.dom.title.now.innerText = `${year}${this.lang.year} ${String(month).padStart(2, "0")}${this.lang.month}`;
|
|
12274
|
-
const curDate = new Date(year, month, 0);
|
|
12275
|
-
const curDay = curDate.getDate();
|
|
12276
|
-
let curWeek = new Date(year, month - 1, 1).getDay();
|
|
12277
|
-
if (curWeek === 0) {
|
|
12278
|
-
curWeek = 7;
|
|
12279
|
-
}
|
|
12280
|
-
const preDay = new Date(year, month - 1, 0).getDate();
|
|
12281
|
-
this.dom.day.innerHTML = "";
|
|
12282
|
-
const preStartDay = preDay - curWeek + 1;
|
|
12283
|
-
for (let i = preStartDay; i <= preDay; i++) {
|
|
12284
|
-
const dayDom = document.createElement("div");
|
|
12285
|
-
dayDom.classList.add("disable");
|
|
12286
|
-
dayDom.innerText = `${i}`;
|
|
12287
|
-
dayDom.onclick = () => {
|
|
12288
|
-
const newMonth = month - 2;
|
|
12289
|
-
this.now = new Date(year, newMonth, i);
|
|
12290
|
-
this._setDatePick(year, newMonth, i);
|
|
12291
|
-
};
|
|
12292
|
-
this.dom.day.append(dayDom);
|
|
12293
|
-
}
|
|
12294
|
-
for (let i = 1; i <= curDay; i++) {
|
|
12295
|
-
const dayDom = document.createElement("div");
|
|
12296
|
-
if (localYear === year && localMonth === month && localDay === i) {
|
|
12297
|
-
dayDom.classList.add("active");
|
|
12298
|
-
}
|
|
12299
|
-
if (this.pickDate && pickYear === year && pickMonth === month && pickDay === i) {
|
|
12300
|
-
dayDom.classList.add("select");
|
|
12301
|
-
}
|
|
12302
|
-
dayDom.innerText = `${i}`;
|
|
12303
|
-
dayDom.onclick = (evt) => {
|
|
12304
|
-
const newMonth = month - 1;
|
|
12305
|
-
this.now = new Date(year, newMonth, i);
|
|
12306
|
-
this._setDatePick(year, newMonth, i);
|
|
12307
|
-
evt.stopPropagation();
|
|
12308
|
-
};
|
|
12309
|
-
this.dom.day.append(dayDom);
|
|
12310
|
-
}
|
|
12311
|
-
const nextEndDay = 6 * 7 - curWeek - curDay;
|
|
12312
|
-
for (let i = 1; i <= nextEndDay; i++) {
|
|
12313
|
-
const dayDom = document.createElement("div");
|
|
12314
|
-
dayDom.classList.add("disable");
|
|
12315
|
-
dayDom.innerText = `${i}`;
|
|
12316
|
-
dayDom.onclick = () => {
|
|
12317
|
-
this.now = new Date(year, month, i);
|
|
12318
|
-
this._setDatePick(year, month, i);
|
|
12319
|
-
};
|
|
12320
|
-
this.dom.day.append(dayDom);
|
|
12321
|
-
}
|
|
12322
|
-
}
|
|
12323
|
-
_toggleDateTimePicker() {
|
|
12324
|
-
if (this.isDatePicker) {
|
|
12325
|
-
this.dom.dateWrap.classList.add("active");
|
|
12326
|
-
this.dom.timeWrap.classList.remove("active");
|
|
12327
|
-
this.dom.menu.time.innerText = this.lang.timeSelect;
|
|
12328
|
-
} else {
|
|
12329
|
-
this.dom.dateWrap.classList.remove("active");
|
|
12330
|
-
this.dom.timeWrap.classList.add("active");
|
|
12331
|
-
this.dom.menu.time.innerText = this.lang.return;
|
|
12332
|
-
this._setTimePick();
|
|
12333
|
-
}
|
|
12334
|
-
}
|
|
12335
|
-
_setDatePick(year, month, day) {
|
|
12336
|
-
var _a, _b, _c;
|
|
12337
|
-
this.now = new Date(year, month, day);
|
|
12338
|
-
(_a = this.pickDate) == null ? void 0 : _a.setFullYear(year);
|
|
12339
|
-
(_b = this.pickDate) == null ? void 0 : _b.setMonth(month);
|
|
12340
|
-
(_c = this.pickDate) == null ? void 0 : _c.setDate(day);
|
|
12341
|
-
this._update();
|
|
12342
|
-
}
|
|
12343
|
-
_setTimePick(isIntoView = true) {
|
|
12344
|
-
var _a, _b, _c;
|
|
12345
|
-
const hour = ((_a = this.pickDate) == null ? void 0 : _a.getHours()) || 0;
|
|
12346
|
-
const minute = ((_b = this.pickDate) == null ? void 0 : _b.getMinutes()) || 0;
|
|
12347
|
-
const second = ((_c = this.pickDate) == null ? void 0 : _c.getSeconds()) || 0;
|
|
12348
|
-
const { hour: hourDom, minute: minuteDom, second: secondDom } = this.dom.time;
|
|
12349
|
-
const timeDomList = [hourDom, minuteDom, secondDom];
|
|
12350
|
-
timeDomList.forEach((timeDom) => {
|
|
12351
|
-
timeDom.querySelectorAll("li").forEach((li) => li.classList.remove("active"));
|
|
12352
|
-
});
|
|
12353
|
-
const pickList = [
|
|
12354
|
-
[hourDom, hour],
|
|
12355
|
-
[minuteDom, minute],
|
|
12356
|
-
[secondDom, second]
|
|
12357
|
-
];
|
|
12358
|
-
pickList.forEach(([dom, time]) => {
|
|
12359
|
-
const pickDom = dom.querySelector(`[data-id='${time}']`);
|
|
12360
|
-
pickDom.classList.add("active");
|
|
12361
|
-
if (isIntoView) {
|
|
12362
|
-
this._scrollIntoView(dom, pickDom);
|
|
12997
|
+
previewerContainer.onwheel = (evt) => {
|
|
12998
|
+
evt.preventDefault();
|
|
12999
|
+
if (evt.deltaY < 0) {
|
|
13000
|
+
scaleSize += 0.1;
|
|
13001
|
+
} else {
|
|
13002
|
+
if (scaleSize - 0.1 <= 0.1)
|
|
13003
|
+
return;
|
|
13004
|
+
scaleSize -= 0.1;
|
|
12363
13005
|
}
|
|
12364
|
-
|
|
13006
|
+
this._setPreviewerTransform(scaleSize, rotateSize, x, y);
|
|
13007
|
+
};
|
|
12365
13008
|
}
|
|
12366
|
-
|
|
12367
|
-
if (!
|
|
12368
|
-
container.scrollTop = 0;
|
|
13009
|
+
_setPreviewerTransform(scale, rotate, x, y) {
|
|
13010
|
+
if (!this.previewerImage)
|
|
12369
13011
|
return;
|
|
12370
|
-
}
|
|
12371
|
-
|
|
12372
|
-
|
|
12373
|
-
while (pointer && container !== pointer && container.contains(pointer)) {
|
|
12374
|
-
offsetParents.push(pointer);
|
|
12375
|
-
pointer = pointer.offsetParent;
|
|
12376
|
-
}
|
|
12377
|
-
const top = selected.offsetTop + offsetParents.reduce((prev, curr) => prev + curr.offsetTop, 0);
|
|
12378
|
-
const bottom = top + selected.offsetHeight;
|
|
12379
|
-
const viewRectTop = container.scrollTop;
|
|
12380
|
-
const viewRectBottom = viewRectTop + container.clientHeight;
|
|
12381
|
-
if (top < viewRectTop) {
|
|
12382
|
-
container.scrollTop = top;
|
|
12383
|
-
} else if (bottom > viewRectBottom) {
|
|
12384
|
-
container.scrollTop = bottom - container.clientHeight;
|
|
12385
|
-
}
|
|
12386
|
-
}
|
|
12387
|
-
_preMonth() {
|
|
12388
|
-
this.now.setMonth(this.now.getMonth() - 1);
|
|
12389
|
-
this._update();
|
|
12390
|
-
}
|
|
12391
|
-
_nextMonth() {
|
|
12392
|
-
this.now.setMonth(this.now.getMonth() + 1);
|
|
12393
|
-
this._update();
|
|
12394
|
-
}
|
|
12395
|
-
_preYear() {
|
|
12396
|
-
this.now.setFullYear(this.now.getFullYear() - 1);
|
|
12397
|
-
this._update();
|
|
12398
|
-
}
|
|
12399
|
-
_nextYear() {
|
|
12400
|
-
this.now.setFullYear(this.now.getFullYear() + 1);
|
|
12401
|
-
this._update();
|
|
13012
|
+
this.previewerImage.style.left = `${x}px`;
|
|
13013
|
+
this.previewerImage.style.top = `${y}px`;
|
|
13014
|
+
this.previewerImage.style.transform = `scale(${scale}) rotate(${rotate * 90}deg)`;
|
|
12402
13015
|
}
|
|
12403
|
-
|
|
12404
|
-
|
|
12405
|
-
this.
|
|
13016
|
+
_clearPreviewer() {
|
|
13017
|
+
var _a;
|
|
13018
|
+
(_a = this.previewerContainer) == null ? void 0 : _a.remove();
|
|
13019
|
+
this.previewerContainer = null;
|
|
13020
|
+
document.body.style.overflow = "auto";
|
|
12406
13021
|
}
|
|
12407
|
-
|
|
12408
|
-
|
|
12409
|
-
|
|
12410
|
-
|
|
12411
|
-
|
|
13022
|
+
_updateResizerRect(width, height) {
|
|
13023
|
+
const handleSize = this.options.resizerSize;
|
|
13024
|
+
this.resizerSelection.style.width = `${width}px`;
|
|
13025
|
+
this.resizerSelection.style.height = `${height}px`;
|
|
13026
|
+
for (let i = 0; i < 8; i++) {
|
|
13027
|
+
const left2 = i === 0 || i === 6 || i === 7 ? -handleSize : i === 1 || i === 5 ? width / 2 : width - handleSize;
|
|
13028
|
+
const top = i === 0 || i === 1 || i === 2 ? -handleSize : i === 3 || i === 7 ? height / 2 - handleSize : height - handleSize;
|
|
13029
|
+
this.resizerHandleList[i].style.left = `${left2}px`;
|
|
13030
|
+
this.resizerHandleList[i].style.top = `${top}px`;
|
|
12412
13031
|
}
|
|
12413
13032
|
}
|
|
12414
|
-
|
|
12415
|
-
|
|
12416
|
-
if (this.options.onSubmit && this.pickDate) {
|
|
12417
|
-
const format = (_a = this.renderOptions) == null ? void 0 : _a.element.dateFormat;
|
|
12418
|
-
const pickDateString = this.formatDate(this.pickDate, format);
|
|
12419
|
-
this.options.onSubmit(pickDateString);
|
|
12420
|
-
}
|
|
13033
|
+
_updateResizerSizeView(width, height) {
|
|
13034
|
+
this.resizerSize.innerText = `${Math.round(width)} \xD7 ${Math.round(height)}`;
|
|
12421
13035
|
}
|
|
12422
|
-
|
|
12423
|
-
|
|
12424
|
-
|
|
12425
|
-
"y+": date.getFullYear().toString(),
|
|
12426
|
-
"M+": (date.getMonth() + 1).toString(),
|
|
12427
|
-
"d+": date.getDate().toString(),
|
|
12428
|
-
"h+": date.getHours().toString(),
|
|
12429
|
-
"m+": date.getMinutes().toString(),
|
|
12430
|
-
"s+": date.getSeconds().toString()
|
|
12431
|
-
};
|
|
12432
|
-
for (const k in dateOption) {
|
|
12433
|
-
const reg = new RegExp("(" + k + ")").exec(format);
|
|
12434
|
-
const key = k;
|
|
12435
|
-
if (reg) {
|
|
12436
|
-
dateString = dateString.replace(reg[1], reg[1].length === 1 ? dateOption[key] : dateOption[key].padStart(reg[1].length, "0"));
|
|
12437
|
-
}
|
|
12438
|
-
}
|
|
12439
|
-
return dateString;
|
|
13036
|
+
render() {
|
|
13037
|
+
this._drawPreviewer();
|
|
13038
|
+
document.body.style.overflow = "hidden";
|
|
12440
13039
|
}
|
|
12441
|
-
|
|
12442
|
-
this.
|
|
12443
|
-
|
|
12444
|
-
|
|
12445
|
-
|
|
12446
|
-
}
|
|
12447
|
-
this._setValue();
|
|
12448
|
-
this._update();
|
|
12449
|
-
this._setPosition();
|
|
12450
|
-
this.isDatePicker = true;
|
|
12451
|
-
this._toggleDateTimePicker();
|
|
12452
|
-
this._toggleVisible(true);
|
|
13040
|
+
drawResizer(element, position = null, options = {}) {
|
|
13041
|
+
this.previewerDrawOption = options;
|
|
13042
|
+
this.curElementSrc = element[options.srcKey || "value"] || "";
|
|
13043
|
+
this.updateResizer(element, position);
|
|
13044
|
+
document.addEventListener("keydown", this._keydown);
|
|
12453
13045
|
}
|
|
12454
|
-
|
|
12455
|
-
this.
|
|
13046
|
+
updateResizer(element, position = null) {
|
|
13047
|
+
const { scale } = this.options;
|
|
13048
|
+
const elementWidth = element.width * scale;
|
|
13049
|
+
const elementHeight = element.height * scale;
|
|
13050
|
+
this._updateResizerSizeView(elementWidth, elementHeight);
|
|
13051
|
+
const { x: resizerLeft, y: resizerTop } = this._getElementPosition(element, position);
|
|
13052
|
+
this.resizerSelection.style.left = `${resizerLeft}px`;
|
|
13053
|
+
this.resizerSelection.style.top = `${resizerTop}px`;
|
|
13054
|
+
this._updateResizerRect(elementWidth, elementHeight);
|
|
13055
|
+
this.resizerSelection.style.display = "block";
|
|
13056
|
+
this.curElement = element;
|
|
13057
|
+
this.curPosition = position;
|
|
13058
|
+
this.width = elementWidth;
|
|
13059
|
+
this.height = elementHeight;
|
|
13060
|
+
}
|
|
13061
|
+
clearResizer() {
|
|
13062
|
+
this.resizerSelection.style.display = "none";
|
|
13063
|
+
document.removeEventListener("keydown", this._keydown);
|
|
12456
13064
|
}
|
|
12457
13065
|
}
|
|
12458
13066
|
class DateParticle {
|
|
@@ -12462,31 +13070,8 @@ class DateParticle {
|
|
|
12462
13070
|
__publicField(this, "datePicker");
|
|
12463
13071
|
this.draw = draw;
|
|
12464
13072
|
this.range = draw.getRange();
|
|
12465
|
-
|
|
12466
|
-
|
|
12467
|
-
this.datePicker = new DatePicker({
|
|
12468
|
-
mountDom: draw.getContainer(),
|
|
12469
|
-
onSubmit: this._setValue.bind(this),
|
|
12470
|
-
getLang: () => ({
|
|
12471
|
-
now: t("datePicker.now"),
|
|
12472
|
-
confirm: t("datePicker.confirm"),
|
|
12473
|
-
return: t("datePicker.return"),
|
|
12474
|
-
timeSelect: t("datePicker.timeSelect"),
|
|
12475
|
-
weeks: {
|
|
12476
|
-
sun: t("datePicker.weeks.sun"),
|
|
12477
|
-
mon: t("datePicker.weeks.mon"),
|
|
12478
|
-
tue: t("datePicker.weeks.tue"),
|
|
12479
|
-
wed: t("datePicker.weeks.wed"),
|
|
12480
|
-
thu: t("datePicker.weeks.thu"),
|
|
12481
|
-
fri: t("datePicker.weeks.fri"),
|
|
12482
|
-
sat: t("datePicker.weeks.sat")
|
|
12483
|
-
},
|
|
12484
|
-
year: t("datePicker.year"),
|
|
12485
|
-
month: t("datePicker.month"),
|
|
12486
|
-
hour: t("datePicker.hour"),
|
|
12487
|
-
minute: t("datePicker.minute"),
|
|
12488
|
-
second: t("datePicker.second")
|
|
12489
|
-
})
|
|
13073
|
+
this.datePicker = new DatePicker(draw, {
|
|
13074
|
+
onSubmit: this._setValue.bind(this)
|
|
12490
13075
|
});
|
|
12491
13076
|
}
|
|
12492
13077
|
_setValue(date) {
|
|
@@ -12552,17 +13137,13 @@ class DateParticle {
|
|
|
12552
13137
|
this.datePicker.dispose();
|
|
12553
13138
|
}
|
|
12554
13139
|
renderDatePicker(element, position) {
|
|
12555
|
-
const height = this.draw.getHeight();
|
|
12556
|
-
const pageGap = this.draw.getPageGap();
|
|
12557
|
-
const startTop = this.draw.getPageNo() * (height + pageGap);
|
|
12558
13140
|
const elementList = this.draw.getElementList();
|
|
12559
13141
|
const range = this.getDateElementRange();
|
|
12560
13142
|
const value = range ? elementList.slice(range[0] + 1, range[1] + 1).map((el) => el.value).join("") : "";
|
|
12561
13143
|
this.datePicker.render({
|
|
12562
13144
|
value,
|
|
12563
|
-
element,
|
|
12564
13145
|
position,
|
|
12565
|
-
|
|
13146
|
+
dateFormat: element.dateFormat
|
|
12566
13147
|
});
|
|
12567
13148
|
}
|
|
12568
13149
|
}
|
|
@@ -12725,6 +13306,100 @@ class BlockParticle {
|
|
|
12725
13306
|
});
|
|
12726
13307
|
}
|
|
12727
13308
|
}
|
|
13309
|
+
const contextmenu$1 = {
|
|
13310
|
+
global: {
|
|
13311
|
+
cut: "\u526A\u5207",
|
|
13312
|
+
copy: "\u590D\u5236",
|
|
13313
|
+
paste: "\u7C98\u8D34",
|
|
13314
|
+
selectAll: "\u5168\u9009",
|
|
13315
|
+
print: "\u6253\u5370"
|
|
13316
|
+
},
|
|
13317
|
+
control: {
|
|
13318
|
+
"delete": "\u5220\u9664\u63A7\u4EF6"
|
|
13319
|
+
},
|
|
13320
|
+
hyperlink: {
|
|
13321
|
+
"delete": "\u5220\u9664\u94FE\u63A5",
|
|
13322
|
+
cancel: "\u53D6\u6D88\u94FE\u63A5",
|
|
13323
|
+
edit: "\u7F16\u8F91\u94FE\u63A5"
|
|
13324
|
+
},
|
|
13325
|
+
image: {
|
|
13326
|
+
change: "\u66F4\u6539\u56FE\u7247",
|
|
13327
|
+
saveAs: "\u53E6\u5B58\u4E3A\u56FE\u7247",
|
|
13328
|
+
textWrap: "\u6587\u5B57\u73AF\u7ED5",
|
|
13329
|
+
textWrapType: {
|
|
13330
|
+
embed: "\u5D4C\u5165\u578B",
|
|
13331
|
+
upDown: "\u4E0A\u4E0B\u578B\u73AF\u7ED5",
|
|
13332
|
+
floatTop: "\u6D6E\u4E8E\u6587\u5B57\u4E0A\u65B9",
|
|
13333
|
+
floatBottom: "\u886C\u4E8E\u6587\u5B57\u4E0B\u65B9"
|
|
13334
|
+
}
|
|
13335
|
+
},
|
|
13336
|
+
table: {
|
|
13337
|
+
insertRowCol: "\u63D2\u5165\u884C\u5217",
|
|
13338
|
+
insertTopRow: "\u4E0A\u65B9\u63D2\u51651\u884C",
|
|
13339
|
+
insertBottomRow: "\u4E0B\u65B9\u63D2\u51651\u884C",
|
|
13340
|
+
insertLeftCol: "\u5DE6\u4FA7\u63D2\u51651\u5217",
|
|
13341
|
+
insertRightCol: "\u53F3\u4FA7\u63D2\u51651\u5217",
|
|
13342
|
+
deleteRowCol: "\u5220\u9664\u884C\u5217",
|
|
13343
|
+
deleteRow: "\u5220\u96641\u884C",
|
|
13344
|
+
deleteCol: "\u5220\u96641\u5217",
|
|
13345
|
+
deleteTable: "\u5220\u9664\u6574\u4E2A\u8868\u683C",
|
|
13346
|
+
mergeCell: "\u5408\u5E76\u5355\u5143\u683C",
|
|
13347
|
+
mergeCancelCell: "\u53D6\u6D88\u5408\u5E76",
|
|
13348
|
+
verticalAlign: "\u5782\u76F4\u5BF9\u9F50",
|
|
13349
|
+
verticalAlignTop: "\u9876\u7AEF\u5BF9\u9F50",
|
|
13350
|
+
verticalAlignMiddle: "\u5782\u76F4\u5C45\u4E2D",
|
|
13351
|
+
verticalAlignBottom: "\u5E95\u7AEF\u5BF9\u9F50",
|
|
13352
|
+
border: "\u8868\u683C\u8FB9\u6846",
|
|
13353
|
+
borderAll: "\u6240\u6709\u6846\u7EBF",
|
|
13354
|
+
borderEmpty: "\u65E0\u6846\u7EBF",
|
|
13355
|
+
borderExternal: "\u5916\u4FA7\u6846\u7EBF",
|
|
13356
|
+
borderTd: "\u5355\u5143\u683C\u8FB9\u6846",
|
|
13357
|
+
borderTdTop: "\u4E0A\u8FB9\u6846",
|
|
13358
|
+
borderTdRight: "\u53F3\u8FB9\u6846",
|
|
13359
|
+
borderTdBottom: "\u4E0B\u8FB9\u6846",
|
|
13360
|
+
borderTdLeft: "\u5DE6\u8FB9\u6846",
|
|
13361
|
+
borderTdForward: "\u6B63\u659C\u7EBF",
|
|
13362
|
+
borderTdBack: "\u53CD\u659C\u7EBF"
|
|
13363
|
+
}
|
|
13364
|
+
};
|
|
13365
|
+
const datePicker$1 = {
|
|
13366
|
+
now: "\u6B64\u523B",
|
|
13367
|
+
confirm: "\u786E\u5B9A",
|
|
13368
|
+
"return": "\u8FD4\u56DE\u65E5\u671F",
|
|
13369
|
+
timeSelect: "\u65F6\u95F4\u9009\u62E9",
|
|
13370
|
+
weeks: {
|
|
13371
|
+
sun: "\u65E5",
|
|
13372
|
+
mon: "\u4E00",
|
|
13373
|
+
tue: "\u4E8C",
|
|
13374
|
+
wed: "\u4E09",
|
|
13375
|
+
thu: "\u56DB",
|
|
13376
|
+
fri: "\u4E94",
|
|
13377
|
+
sat: "\u516D"
|
|
13378
|
+
},
|
|
13379
|
+
year: "\u5E74",
|
|
13380
|
+
month: "\u6708",
|
|
13381
|
+
hour: "\u65F6",
|
|
13382
|
+
minute: "\u5206",
|
|
13383
|
+
second: "\u79D2"
|
|
13384
|
+
};
|
|
13385
|
+
const frame$1 = {
|
|
13386
|
+
header: "\u9875\u7709",
|
|
13387
|
+
footer: "\u9875\u811A"
|
|
13388
|
+
};
|
|
13389
|
+
const pageBreak$1 = {
|
|
13390
|
+
displayName: "\u5206\u9875\u7B26"
|
|
13391
|
+
};
|
|
13392
|
+
const zone$1 = {
|
|
13393
|
+
headerTip: "\u53CC\u51FB\u7F16\u8F91\u9875\u7709",
|
|
13394
|
+
footerTip: "\u53CC\u51FB\u7F16\u8F91\u9875\u811A"
|
|
13395
|
+
};
|
|
13396
|
+
var zhCN = {
|
|
13397
|
+
contextmenu: contextmenu$1,
|
|
13398
|
+
datePicker: datePicker$1,
|
|
13399
|
+
frame: frame$1,
|
|
13400
|
+
pageBreak: pageBreak$1,
|
|
13401
|
+
zone: zone$1
|
|
13402
|
+
};
|
|
12728
13403
|
const contextmenu = {
|
|
12729
13404
|
global: {
|
|
12730
13405
|
cut: "Cut",
|
|
@@ -14088,7 +14763,7 @@ class Draw {
|
|
|
14088
14763
|
});
|
|
14089
14764
|
}
|
|
14090
14765
|
spliceElementList(elementList, start, deleteCount, ...items) {
|
|
14091
|
-
var _a, _b;
|
|
14766
|
+
var _a, _b, _c;
|
|
14092
14767
|
if (deleteCount > 0) {
|
|
14093
14768
|
const endIndex = start + deleteCount;
|
|
14094
14769
|
const endElement = elementList[endIndex];
|
|
@@ -14109,7 +14784,7 @@ class Draw {
|
|
|
14109
14784
|
if (!this.control.getActiveControl()) {
|
|
14110
14785
|
let deleteIndex = endIndex - 1;
|
|
14111
14786
|
while (deleteIndex >= start) {
|
|
14112
|
-
if (((_b = elementList[deleteIndex].control) == null ? void 0 :
|
|
14787
|
+
if (((_c = (_b = elementList[deleteIndex]) == null ? void 0 : _b.control) == null ? void 0 : _c.deletable) !== false) {
|
|
14113
14788
|
elementList.splice(deleteIndex, 1);
|
|
14114
14789
|
}
|
|
14115
14790
|
deleteIndex--;
|
|
@@ -14256,10 +14931,18 @@ class Draw {
|
|
|
14256
14931
|
this.footer.recovery();
|
|
14257
14932
|
this.zone.setZone(EditorZone.MAIN);
|
|
14258
14933
|
}
|
|
14934
|
+
const { startIndex } = this.range.getRange();
|
|
14935
|
+
const isCollapsed = this.range.getIsCollapsed();
|
|
14259
14936
|
this.render({
|
|
14260
|
-
|
|
14261
|
-
|
|
14937
|
+
isSetCursor: true,
|
|
14938
|
+
curIndex: startIndex,
|
|
14939
|
+
isSubmitHistory: false
|
|
14262
14940
|
});
|
|
14941
|
+
if (!isCollapsed) {
|
|
14942
|
+
this.cursor.drawCursor({
|
|
14943
|
+
isShow: false
|
|
14944
|
+
});
|
|
14945
|
+
}
|
|
14263
14946
|
setTimeout(() => {
|
|
14264
14947
|
if (this.listener.pageModeChange) {
|
|
14265
14948
|
this.listener.pageModeChange(payload);
|
|
@@ -14518,14 +15201,11 @@ class Draw {
|
|
|
14518
15201
|
} else {
|
|
14519
15202
|
const elementWidth = element.width * scale;
|
|
14520
15203
|
const elementHeight = element.height * scale;
|
|
14521
|
-
|
|
14522
|
-
|
|
14523
|
-
|
|
14524
|
-
const adaptiveWidth = surplusWidth > 0 ? surplusWidth : Math.min(elementWidth, availableWidth);
|
|
14525
|
-
const adaptiveHeight = elementHeight * adaptiveWidth / elementWidth;
|
|
14526
|
-
element.width = adaptiveWidth / scale;
|
|
15204
|
+
if (elementWidth > availableWidth) {
|
|
15205
|
+
const adaptiveHeight = elementHeight * availableWidth / elementWidth;
|
|
15206
|
+
element.width = availableWidth / scale;
|
|
14527
15207
|
element.height = adaptiveHeight / scale;
|
|
14528
|
-
metrics.width =
|
|
15208
|
+
metrics.width = availableWidth;
|
|
14529
15209
|
metrics.height = adaptiveHeight;
|
|
14530
15210
|
metrics.boundingBoxDescent = adaptiveHeight;
|
|
14531
15211
|
} else {
|
|
@@ -14851,7 +15531,7 @@ class Draw {
|
|
|
14851
15531
|
rowList.push(row);
|
|
14852
15532
|
} else {
|
|
14853
15533
|
curRow.width += metrics.width;
|
|
14854
|
-
if (i === 0 &&
|
|
15534
|
+
if (i === 0 && getIsBlockElement(elementList[1])) {
|
|
14855
15535
|
curRow.height = defaultBasicRowMarginHeight;
|
|
14856
15536
|
curRow.ascent = defaultBasicRowMarginHeight;
|
|
14857
15537
|
} else if (curRow.height < height) {
|
|
@@ -15147,7 +15827,7 @@ class Draw {
|
|
|
15147
15827
|
_clearPage(pageNo) {
|
|
15148
15828
|
const ctx = this.ctxList[pageNo];
|
|
15149
15829
|
const pageDom = this.pageList[pageNo];
|
|
15150
|
-
ctx.clearRect(0, 0, pageDom.width, pageDom.height);
|
|
15830
|
+
ctx.clearRect(0, 0, Math.max(pageDom.width, this.getWidth()), Math.max(pageDom.height, this.getHeight()));
|
|
15151
15831
|
this.blockParticle.clear();
|
|
15152
15832
|
}
|
|
15153
15833
|
_drawPage(payload) {
|
|
@@ -15478,6 +16158,7 @@ class Command {
|
|
|
15478
16158
|
__publicField(this, "executeSetControlProperties");
|
|
15479
16159
|
__publicField(this, "executeSetControlHighlight");
|
|
15480
16160
|
__publicField(this, "executeUpdateOptions");
|
|
16161
|
+
__publicField(this, "executeInsertTitle");
|
|
15481
16162
|
__publicField(this, "getCatalog");
|
|
15482
16163
|
__publicField(this, "getImage");
|
|
15483
16164
|
__publicField(this, "getOptions");
|
|
@@ -15584,6 +16265,7 @@ class Command {
|
|
|
15584
16265
|
this.executeLocationGroup = adapt.locationGroup.bind(adapt);
|
|
15585
16266
|
this.executeSetZone = adapt.setZone.bind(adapt);
|
|
15586
16267
|
this.executeUpdateOptions = adapt.updateOptions.bind(adapt);
|
|
16268
|
+
this.executeInsertTitle = adapt.insertTitle.bind(adapt);
|
|
15587
16269
|
this.getImage = adapt.getImage.bind(adapt);
|
|
15588
16270
|
this.getOptions = adapt.getOptions.bind(adapt);
|
|
15589
16271
|
this.getValue = adapt.getValue.bind(adapt);
|
|
@@ -16372,6 +17054,7 @@ class CommandAdapt {
|
|
|
16372
17054
|
} else {
|
|
16373
17055
|
if (el.titleId) {
|
|
16374
17056
|
delete el.titleId;
|
|
17057
|
+
delete el.title;
|
|
16375
17058
|
delete el.level;
|
|
16376
17059
|
delete el.size;
|
|
16377
17060
|
delete el.bold;
|
|
@@ -17378,14 +18061,15 @@ class CommandAdapt {
|
|
|
17378
18061
|
const { startIndex, endIndex } = this.range.getRange();
|
|
17379
18062
|
if (!~startIndex && !~endIndex)
|
|
17380
18063
|
return;
|
|
17381
|
-
const { value, width, height } = payload;
|
|
18064
|
+
const { value, width, height, imgDisplay } = payload;
|
|
17382
18065
|
this.insertElementList([
|
|
17383
18066
|
{
|
|
17384
18067
|
value,
|
|
17385
18068
|
width,
|
|
17386
18069
|
height,
|
|
17387
18070
|
id: getUUID(),
|
|
17388
|
-
type: ElementType.IMAGE
|
|
18071
|
+
type: ElementType.IMAGE,
|
|
18072
|
+
imgDisplay
|
|
17389
18073
|
}
|
|
17390
18074
|
]);
|
|
17391
18075
|
}
|
|
@@ -17562,9 +18246,9 @@ class CommandAdapt {
|
|
|
17562
18246
|
if (element.imgDisplay === display)
|
|
17563
18247
|
return;
|
|
17564
18248
|
element.imgDisplay = display;
|
|
18249
|
+
const { startIndex, endIndex } = this.range.getRange();
|
|
17565
18250
|
if (display === ImageDisplay.FLOAT_TOP || display === ImageDisplay.FLOAT_BOTTOM) {
|
|
17566
18251
|
const positionList = this.position.getPositionList();
|
|
17567
|
-
const { startIndex } = this.range.getRange();
|
|
17568
18252
|
const { coordinate: { leftTop } } = positionList[startIndex];
|
|
17569
18253
|
element.imgFloatPosition = {
|
|
17570
18254
|
x: leftTop[0],
|
|
@@ -17575,7 +18259,8 @@ class CommandAdapt {
|
|
|
17575
18259
|
}
|
|
17576
18260
|
this.draw.getPreviewer().clearResizer();
|
|
17577
18261
|
this.draw.render({
|
|
17578
|
-
isSetCursor:
|
|
18262
|
+
isSetCursor: true,
|
|
18263
|
+
curIndex: endIndex
|
|
17579
18264
|
});
|
|
17580
18265
|
}
|
|
17581
18266
|
getImage(payload) {
|
|
@@ -17983,6 +18668,27 @@ class CommandAdapt {
|
|
|
17983
18668
|
}
|
|
17984
18669
|
return result;
|
|
17985
18670
|
}
|
|
18671
|
+
insertTitle(payload) {
|
|
18672
|
+
var _a;
|
|
18673
|
+
const isReadonly = this.draw.isReadonly();
|
|
18674
|
+
if (isReadonly)
|
|
18675
|
+
return;
|
|
18676
|
+
const cloneElement = deepClone(payload);
|
|
18677
|
+
const { startIndex } = this.range.getRange();
|
|
18678
|
+
const elementList = this.draw.getElementList();
|
|
18679
|
+
const copyElement = getAnchorElement(elementList, startIndex);
|
|
18680
|
+
if (!copyElement)
|
|
18681
|
+
return;
|
|
18682
|
+
const cloneAttr = [
|
|
18683
|
+
...TABLE_CONTEXT_ATTR,
|
|
18684
|
+
...EDITOR_ROW_ATTR,
|
|
18685
|
+
...LIST_CONTEXT_ATTR
|
|
18686
|
+
];
|
|
18687
|
+
(_a = cloneElement.valueList) == null ? void 0 : _a.forEach((valueItem) => {
|
|
18688
|
+
cloneProperty(cloneAttr, copyElement, valueItem);
|
|
18689
|
+
});
|
|
18690
|
+
this.draw.insertElementList([cloneElement]);
|
|
18691
|
+
}
|
|
17986
18692
|
}
|
|
17987
18693
|
class Listener {
|
|
17988
18694
|
constructor() {
|