@deot/vc 1.0.54 → 1.0.55

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/dist/index.d.ts CHANGED
@@ -4110,10 +4110,18 @@ export declare const Components: {
4110
4110
  crossOrigin: {
4111
4111
  type: StringConstructor;
4112
4112
  default: string;
4113
- validator: (v: any) => boolean;
4113
+ validator: (v: string) => boolean;
4114
4114
  };
4115
4115
  source: FunctionConstructor;
4116
4116
  download: FunctionConstructor;
4117
+ lazy: {
4118
+ type: BooleanConstructor;
4119
+ default: boolean;
4120
+ };
4121
+ showLoading: {
4122
+ type: BooleanConstructor;
4123
+ default: boolean;
4124
+ };
4117
4125
  options: {
4118
4126
  type: ObjectConstructor;
4119
4127
  default: () => {};
@@ -4126,10 +4134,18 @@ export declare const Components: {
4126
4134
  crossOrigin: {
4127
4135
  type: StringConstructor;
4128
4136
  default: string;
4129
- validator: (v: any) => boolean;
4137
+ validator: (v: string) => boolean;
4130
4138
  };
4131
4139
  source: FunctionConstructor;
4132
4140
  download: FunctionConstructor;
4141
+ lazy: {
4142
+ type: BooleanConstructor;
4143
+ default: boolean;
4144
+ };
4145
+ showLoading: {
4146
+ type: BooleanConstructor;
4147
+ default: boolean;
4148
+ };
4133
4149
  options: {
4134
4150
  type: ObjectConstructor;
4135
4151
  default: () => {};
@@ -4139,7 +4155,9 @@ export declare const Components: {
4139
4155
  }>, {
4140
4156
  tag: string;
4141
4157
  options: Record<string, any>;
4158
+ showLoading: boolean;
4142
4159
  crossOrigin: string;
4160
+ lazy: boolean;
4143
4161
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
4144
4162
  MSnapshot: DefineComponent<ExtractPropTypes< {
4145
4163
  tag: {
@@ -4149,10 +4167,18 @@ export declare const Components: {
4149
4167
  crossOrigin: {
4150
4168
  type: StringConstructor;
4151
4169
  default: string;
4152
- validator: (v: any) => boolean;
4170
+ validator: (v: string) => boolean;
4153
4171
  };
4154
4172
  source: FunctionConstructor;
4155
4173
  download: FunctionConstructor;
4174
+ lazy: {
4175
+ type: BooleanConstructor;
4176
+ default: boolean;
4177
+ };
4178
+ showLoading: {
4179
+ type: BooleanConstructor;
4180
+ default: boolean;
4181
+ };
4156
4182
  options: {
4157
4183
  type: ObjectConstructor;
4158
4184
  default: () => {};
@@ -4165,10 +4191,18 @@ export declare const Components: {
4165
4191
  crossOrigin: {
4166
4192
  type: StringConstructor;
4167
4193
  default: string;
4168
- validator: (v: any) => boolean;
4194
+ validator: (v: string) => boolean;
4169
4195
  };
4170
4196
  source: FunctionConstructor;
4171
4197
  download: FunctionConstructor;
4198
+ lazy: {
4199
+ type: BooleanConstructor;
4200
+ default: boolean;
4201
+ };
4202
+ showLoading: {
4203
+ type: BooleanConstructor;
4204
+ default: boolean;
4205
+ };
4172
4206
  options: {
4173
4207
  type: ObjectConstructor;
4174
4208
  default: () => {};
@@ -4178,7 +4212,9 @@ export declare const Components: {
4178
4212
  }>, {
4179
4213
  tag: string;
4180
4214
  options: Record<string, any>;
4215
+ showLoading: boolean;
4181
4216
  crossOrigin: string;
4217
+ lazy: boolean;
4182
4218
  }, {}, {}, {}, string, ComponentProvideOptions, true, {}, any>;
4183
4219
  Icon: DefineComponent<ExtractPropTypes< {
4184
4220
  type: StringConstructor;
@@ -9104,6 +9104,7 @@ var Vc = (function (exports, vue) {
9104
9104
  line: nil
9105
9105
  },
9106
9106
  Snapshot: {
9107
+ options: nil,
9107
9108
  source: nil,
9108
9109
  download: nil
9109
9110
  }
@@ -20557,6 +20558,14 @@ var Vc = (function (exports, vue) {
20557
20558
  },
20558
20559
  source: Function,
20559
20560
  download: Function,
20561
+ lazy: {
20562
+ type: Boolean,
20563
+ default: true
20564
+ },
20565
+ showLoading: {
20566
+ type: Boolean,
20567
+ default: true
20568
+ },
20560
20569
  // 传递给snap-dom的配置项
20561
20570
  options: {
20562
20571
  type: Object,
@@ -20576,34 +20585,59 @@ var Vc = (function (exports, vue) {
20576
20585
  let snapDOM;
20577
20586
  const instance = vue.getCurrentInstance();
20578
20587
  const current = vue.ref();
20579
- const snapdom = vue.ref();
20588
+ const snapshot = vue.ref();
20580
20589
  const refresh = async () => {
20581
20590
  await vue.nextTick();
20582
- snapdom.value = await snapDOM(current.value, props2.options);
20583
- return snapdom.value;
20591
+ snapshot.value = await snapDOM(current.value, {
20592
+ fast: false,
20593
+ // dom太大时会卡死一会儿
20594
+ ...VcInstance.options.Snapshot?.options,
20595
+ ...props2.options
20596
+ });
20597
+ return snapshot.value;
20598
+ };
20599
+ const onLoad = () => {
20600
+ return props2.showLoading && Message.loading("正在生成...");
20601
+ };
20602
+ const onLoaded = (ctx) => {
20603
+ ctx?.destroy?.();
20584
20604
  };
20585
20605
  const toDataURL = async () => {
20606
+ const loadContext = onLoad();
20607
+ try {
20608
+ await refresh();
20609
+ return snapshot.value.toRaw();
20610
+ } finally {
20611
+ onLoaded(loadContext);
20612
+ }
20613
+ };
20614
+ const downloadByDefault = async (options) => {
20586
20615
  await refresh();
20587
- return snapdom.value.toRaw();
20616
+ return snapshot.value.download(options);
20588
20617
  };
20589
20618
  const download = async (options) => {
20590
- await refresh();
20591
- const _download = props2.download || VcInstance.options.Snapshot?.download || (() => false);
20592
- const skip = _download(instance, options);
20619
+ const loadContext = onLoad();
20620
+ const downloadByUser = props2.download || VcInstance.options.Snapshot?.download || (() => false);
20621
+ const skip = downloadByUser(instance, options);
20622
+ const done = async (v) => {
20623
+ try {
20624
+ v || await downloadByDefault(options);
20625
+ } finally {
20626
+ onLoaded(loadContext);
20627
+ }
20628
+ };
20593
20629
  if (skip && skip.then) {
20594
20630
  let skip$ = false;
20595
20631
  skip.then((v) => {
20596
20632
  skip$ = typeof v === "undefined" ? true : !!v;
20597
20633
  return v;
20598
- }).finally(() => {
20599
- skip$ || snapdom.value.download(options);
20600
- });
20634
+ }).finally(() => done(skip$));
20601
20635
  return;
20602
20636
  }
20603
- skip || snapdom.value.download(options);
20637
+ done(skip);
20604
20638
  };
20605
20639
  expose({
20606
- snapdom,
20640
+ snapshot,
20607
20641
  refresh,
20608
20642
  toDataURL,
20609
20643
  download
@@ -20612,7 +20646,7 @@ var Vc = (function (exports, vue) {
20612
20646
  try {
20613
20647
  snapDOM = window.snapdom || await Promise.resolve().then(() => snapdom$1);
20614
20648
  snapDOM = snapDOM.snapdom || snapDOM;
20615
- await refresh();
20649
+ !props2.lazy && await refresh();
20616
20650
  emit("ready", {
20617
20651
  instance,
20618
20652
  dependencies: {
@@ -9107,6 +9107,7 @@
9107
9107
  line: nil
9108
9108
  },
9109
9109
  Snapshot: {
9110
+ options: nil,
9110
9111
  source: nil,
9111
9112
  download: nil
9112
9113
  }
@@ -20560,6 +20561,14 @@
20560
20561
  },
20561
20562
  source: Function,
20562
20563
  download: Function,
20564
+ lazy: {
20565
+ type: Boolean,
20566
+ default: true
20567
+ },
20568
+ showLoading: {
20569
+ type: Boolean,
20570
+ default: true
20571
+ },
20563
20572
  // 传递给snap-dom的配置项
20564
20573
  options: {
20565
20574
  type: Object,
@@ -20579,34 +20588,59 @@
20579
20588
  let snapDOM;
20580
20589
  const instance = vue.getCurrentInstance();
20581
20590
  const current = vue.ref();
20582
- const snapdom = vue.ref();
20591
+ const snapshot = vue.ref();
20583
20592
  const refresh = async () => {
20584
20593
  await vue.nextTick();
20585
- snapdom.value = await snapDOM(current.value, props2.options);
20586
- return snapdom.value;
20594
+ snapshot.value = await snapDOM(current.value, {
20595
+ fast: false,
20596
+ // dom太大时会卡死一会儿
20597
+ ...VcInstance.options.Snapshot?.options,
20598
+ ...props2.options
20599
+ });
20600
+ return snapshot.value;
20601
+ };
20602
+ const onLoad = () => {
20603
+ return props2.showLoading && Message.loading("正在生成...");
20604
+ };
20605
+ const onLoaded = (ctx) => {
20606
+ ctx?.destroy?.();
20587
20607
  };
20588
20608
  const toDataURL = async () => {
20609
+ const loadContext = onLoad();
20610
+ try {
20611
+ await refresh();
20612
+ return snapshot.value.toRaw();
20613
+ } finally {
20614
+ onLoaded(loadContext);
20615
+ }
20616
+ };
20617
+ const downloadByDefault = async (options) => {
20589
20618
  await refresh();
20590
- return snapdom.value.toRaw();
20619
+ return snapshot.value.download(options);
20591
20620
  };
20592
20621
  const download = async (options) => {
20593
- await refresh();
20594
- const _download = props2.download || VcInstance.options.Snapshot?.download || (() => false);
20595
- const skip = _download(instance, options);
20622
+ const loadContext = onLoad();
20623
+ const downloadByUser = props2.download || VcInstance.options.Snapshot?.download || (() => false);
20624
+ const skip = downloadByUser(instance, options);
20625
+ const done = async (v) => {
20626
+ try {
20627
+ v || await downloadByDefault(options);
20628
+ } finally {
20629
+ onLoaded(loadContext);
20630
+ }
20631
+ };
20596
20632
  if (skip && skip.then) {
20597
20633
  let skip$ = false;
20598
20634
  skip.then((v) => {
20599
20635
  skip$ = typeof v === "undefined" ? true : !!v;
20600
20636
  return v;
20601
- }).finally(() => {
20602
- skip$ || snapdom.value.download(options);
20603
- });
20637
+ }).finally(() => done(skip$));
20604
20638
  return;
20605
20639
  }
20606
- skip || snapdom.value.download(options);
20640
+ done(skip);
20607
20641
  };
20608
20642
  expose({
20609
- snapdom,
20643
+ snapshot,
20610
20644
  refresh,
20611
20645
  toDataURL,
20612
20646
  download
@@ -20615,7 +20649,7 @@
20615
20649
  try {
20616
20650
  snapDOM = window.snapdom || await Promise.resolve().then(() => snapdom$1);
20617
20651
  snapDOM = snapDOM.snapdom || snapDOM;
20618
- await refresh();
20652
+ !props2.lazy && await refresh();
20619
20653
  emit("ready", {
20620
20654
  instance,
20621
20655
  dependencies: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@deot/vc",
3
- "version": "1.0.54",
3
+ "version": "1.0.55",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -19,9 +19,9 @@
19
19
  "access": "public"
20
20
  },
21
21
  "dependencies": {
22
- "@deot/vc-components": "^1.0.54",
23
- "@deot/vc-hooks": "^1.0.54",
24
- "@deot/vc-shared": "^1.0.54"
22
+ "@deot/vc-components": "^1.0.55",
23
+ "@deot/vc-hooks": "^1.0.55",
24
+ "@deot/vc-shared": "^1.0.55"
25
25
  },
26
26
  "peerDependencies": {
27
27
  "vue": "*"