vue-editify 0.1.48 → 0.1.49

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/examples/App.vue CHANGED
@@ -1,7 +1,7 @@
1
1
  <template>
2
2
  <div style="padding: 10px; height: 100%; box-sizing: border-box">
3
3
  <button @click="setStart">setStart</button>
4
- <Editify color="#f30" ref="editify" border v-model="val" :menu="menuConfig" style="height: 100%" placeholder="Please Enter Text..." :toolbar="toolbarConfig" locale="zh_CN" allow-paste-html :plugins="plugins" @rangeupdate="rangeUpdate"></Editify>
4
+ <Editify color="#1098f3" ref="editify" border v-model="val" :menu="menuConfig" style="height: 100%" placeholder="Please Enter Text..." :toolbar="toolbarConfig" locale="zh_CN" allow-paste-html :plugins="plugins" @rangeupdate="rangeUpdate"></Editify>
5
5
  </div>
6
6
  </template>
7
7
  <script setup lang="ts">
package/lib/editify.es.js CHANGED
@@ -2782,13 +2782,12 @@ const doPaste = async function(html, text2, files) {
2782
2782
  if (typeof this.customHtmlPaste == "function") {
2783
2783
  await this.customHtmlPaste.apply(this, [elements, html]);
2784
2784
  } else {
2785
- for (let i = 0; i < elements.length; i++) {
2786
- if (i == 0) {
2787
- this.insertElement(elements[i]);
2788
- } else {
2789
- this.insertElement(elements[i], false);
2790
- }
2785
+ this.insertElement(elements[0]);
2786
+ for (let i = elements.length - 1; i >= 1; i--) {
2787
+ this.addElementAfter(elements[i], elements[0]);
2791
2788
  }
2789
+ this.range.anchor.moveToEnd(elements[elements.length - 1]);
2790
+ this.range.focus.moveToEnd(elements[elements.length - 1]);
2792
2791
  this.emit("pasteHtml", elements, html);
2793
2792
  }
2794
2793
  } else if (text2) {
@@ -4260,6 +4259,9 @@ class AlexEditor {
4260
4259
  if (child.isEmpty()) {
4261
4260
  continue;
4262
4261
  }
4262
+ if (!child.isText() && AlexElement.VOID_NODES.includes(child.parsedom)) {
4263
+ continue;
4264
+ }
4263
4265
  if (child.isText() || child.isClosed()) {
4264
4266
  el = child;
4265
4267
  break;
@@ -4277,6 +4279,9 @@ class AlexEditor {
4277
4279
  if (previousElement.isEmpty()) {
4278
4280
  return fn(previousElement);
4279
4281
  }
4282
+ if (!previousElement.isText() && AlexElement.VOID_NODES.includes(previousElement.parsedom)) {
4283
+ return fn(previousElement);
4284
+ }
4280
4285
  if (previousElement.isText() || previousElement.isClosed()) {
4281
4286
  return previousElement;
4282
4287
  }
@@ -4358,6 +4363,18 @@ class AlexEditor {
4358
4363
  flatList: []
4359
4364
  };
4360
4365
  }
4366
+ if (this.range.anchor.element.isEqual(this.range.focus.element)) {
4367
+ const anchorInStart = this.range.anchor.offset == 0;
4368
+ const focusInEnd = this.range.focus.offset == (this.range.focus.element.isText() ? this.range.focus.element.textContent.length : 1);
4369
+ const result = {
4370
+ element: this.range.anchor.element,
4371
+ offset: anchorInStart && focusInEnd ? false : [this.range.anchor.offset, this.range.focus.offset]
4372
+ };
4373
+ return {
4374
+ list: [result],
4375
+ flatList: [result]
4376
+ };
4377
+ }
4361
4378
  const getFlatList = () => {
4362
4379
  let flatList = [];
4363
4380
  const anchorInStart = this.range.anchor.offset == 0;
@@ -4373,78 +4390,60 @@ class AlexEditor {
4373
4390
  if (startIndex > 0 || endIndex < elements.length - 1) {
4374
4391
  elements = elements.slice(startIndex, endIndex + 1);
4375
4392
  }
4376
- if (this.range.anchor.element.isEqual(this.range.focus.element)) {
4377
- if (anchorInStart && focusInEnd) {
4378
- flatList = elements.map((element2) => {
4379
- return {
4380
- element: element2,
4393
+ const length = elements.length;
4394
+ for (let i = 0; i < length; i++) {
4395
+ if (this.range.anchor.element.isEqual(elements[i])) {
4396
+ if (anchorInStart) {
4397
+ flatList.push({
4398
+ element: this.range.anchor.element,
4381
4399
  offset: false
4382
- };
4383
- });
4384
- } else {
4385
- flatList = [
4386
- {
4400
+ });
4401
+ } else if (this.range.anchor.element.isText() && this.range.anchor.offset < this.range.anchor.element.textContent.length) {
4402
+ flatList.push({
4387
4403
  element: this.range.anchor.element,
4388
- offset: [this.range.anchor.offset, this.range.focus.offset]
4389
- }
4390
- ];
4391
- }
4392
- } else {
4393
- const length = elements.length;
4394
- for (let i = 0; i < length; i++) {
4395
- if (this.range.anchor.element.isEqual(elements[i])) {
4396
- if (anchorInStart) {
4397
- flatList.push({
4398
- element: this.range.anchor.element,
4399
- offset: false
4400
- });
4401
- } else if (this.range.anchor.element.isText() && this.range.anchor.offset < this.range.anchor.element.textContent.length) {
4402
- flatList.push({
4403
- element: this.range.anchor.element,
4404
- offset: [this.range.anchor.offset, this.range.anchor.element.textContent.length]
4405
- });
4406
- }
4407
- } else if (elements[i].isContains(this.range.anchor.element)) {
4408
- const isFirst = this.range.anchor.element.isFirst(elements[i]);
4409
- const hasFocus = elements[i].isContains(this.range.focus.element);
4410
- const isLast = this.range.focus.element.isLast(elements[i]);
4411
- if (anchorInStart && isFirst && hasFocus && isLast && focusInEnd) {
4412
- flatList.push({
4413
- element: elements[i],
4414
- offset: false
4415
- });
4416
- } else if (anchorInStart && isFirst && !hasFocus) {
4417
- flatList.push({
4418
- element: elements[i],
4419
- offset: false
4420
- });
4421
- }
4422
- } else if (this.range.focus.element.isEqual(elements[i])) {
4423
- if (focusInEnd) {
4424
- flatList.push({
4425
- element: this.range.focus.element,
4426
- offset: false
4427
- });
4428
- } else if (this.range.focus.offset > 0) {
4429
- flatList.push({
4430
- element: this.range.focus.element,
4431
- offset: [0, this.range.focus.offset]
4432
- });
4433
- }
4434
- } else if (elements[i].isContains(this.range.focus.element)) {
4435
- const isLast = this.range.focus.element.isLast(elements[i]);
4436
- if (isLast && focusInEnd) {
4437
- flatList.push({
4438
- element: elements[i],
4439
- offset: false
4440
- });
4441
- }
4442
- } else {
4404
+ offset: [this.range.anchor.offset, this.range.anchor.element.textContent.length]
4405
+ });
4406
+ }
4407
+ } else if (elements[i].isContains(this.range.anchor.element)) {
4408
+ const isFirst = this.range.anchor.element.isFirst(elements[i]);
4409
+ const hasFocus = elements[i].isContains(this.range.focus.element);
4410
+ const isLast = this.range.focus.element.isLast(elements[i]);
4411
+ if (anchorInStart && isFirst && hasFocus && isLast && focusInEnd) {
4412
+ flatList.push({
4413
+ element: elements[i],
4414
+ offset: false
4415
+ });
4416
+ } else if (anchorInStart && isFirst && !hasFocus) {
4443
4417
  flatList.push({
4444
4418
  element: elements[i],
4445
4419
  offset: false
4446
4420
  });
4447
4421
  }
4422
+ } else if (this.range.focus.element.isEqual(elements[i])) {
4423
+ if (focusInEnd) {
4424
+ flatList.push({
4425
+ element: this.range.focus.element,
4426
+ offset: false
4427
+ });
4428
+ } else if (this.range.focus.offset > 0) {
4429
+ flatList.push({
4430
+ element: this.range.focus.element,
4431
+ offset: [0, this.range.focus.offset]
4432
+ });
4433
+ }
4434
+ } else if (elements[i].isContains(this.range.focus.element)) {
4435
+ const isLast = this.range.focus.element.isLast(elements[i]);
4436
+ if (isLast && focusInEnd) {
4437
+ flatList.push({
4438
+ element: elements[i],
4439
+ offset: false
4440
+ });
4441
+ }
4442
+ } else {
4443
+ flatList.push({
4444
+ element: elements[i],
4445
+ offset: false
4446
+ });
4448
4447
  }
4449
4448
  }
4450
4449
  return flatList;
@@ -4681,7 +4680,7 @@ class AlexEditor {
4681
4680
  event$1.off(this.$el, "beforeinput.alex_editor compositionstart.alex_editor compositionupdate.alex_editor compositionend.alex_editor keydown.alex_editor cut.alex_editor paste.alex_editor copy.alex_editor dragstart.alex_editor drop.alex_editor focus.alex_editor blur.alex_editor");
4682
4681
  }
4683
4682
  }
4684
- const version$2 = "1.4.11";
4683
+ const version$2 = "1.4.14";
4685
4684
  console.log(`%c alex-editor %c v${version$2} `, "padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #606060; font-weight: bold;", "padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;");
4686
4685
  const number = {
4687
4686
  /**
@@ -42550,7 +42549,7 @@ const attachment = (options) => {
42550
42549
  const install = (app) => {
42551
42550
  app.component(Editify.name, Editify);
42552
42551
  };
42553
- const version = "0.1.48";
42552
+ const version = "0.1.49";
42554
42553
  console.log(`%c vue-editify %c v${version} `, "padding: 2px 1px; border-radius: 3px 0 0 3px; color: #fff; background: #606060; font-weight: bold;", "padding: 2px 1px; border-radius: 0 3px 3px 0; color: #fff; background: #42c02e; font-weight: bold;");
42555
42554
  export {
42556
42555
  AlexElement,