datatables.net-vue3 3.0.0 → 3.0.1

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),v=["childRow","column-sizing","column-visibility","destroy","draw","error","init","length","order","page","preDraw","preInit","preXhr","processing","requestChild","search","stateLoadParams","stateLoaded","stateSaveParams","xhr","autoFill","preAutoFill","buttons-action","buttons-processing","column-reorder","key","key-blur","key-focus","key-refocus","key-return-submit","responsive-display","responsive-resize","rowgroup-datasrc","pre-row-reorder","row-reorder","row-reordered","dtsb-inserted","deselect","select","select-blur","selectItems","selectStyle","user-select","stateRestore-change"];let f;const k={name:"Datatables.netVue",inheritAttrs:!1,use(i){f=i}},b=l.defineComponent({...k,props:{ajax:null,columns:null,data:null,options:null},emits:v,setup(i,{expose:d}){const s=i,p=l.ref(null),c={},u=l.ref(),h=l.ref([]);l.watch(()=>s.data,t=>{let e=u.value;if(e){for(var n=Object.keys(c),a=0;a<n.length;a++)delete c[n[a]];e.clear(),e.rows.add(t).draw(!1)}},{deep:!0}),l.onMounted(()=>{const t=l.getCurrentInstance();let e=s.options||{};if(s.data&&(e.data=s.data,g(e.data)),s.columns&&(e.columns=s.columns,y(e.columns,t)),s.ajax&&(e.ajax=s.ajax),e.columnDefs||(e.columnDefs=[]),t){let n=Object.keys(t.slots);for(let a=0;a<n.length;a++){let r=n[a];if(r.match(/^column\-/)){let o=r.replace("column-","");e.columnDefs.push({target:o.match(/^\d+$/)?parseInt(o):o+":name",render:"#"+r})}}y(e.columnDefs,t)}if(!f)throw new Error("DataTables library not set. See https://datatables.net/tn/19 for details.");u.value=new f(l.unref(p),e);for(let n of v)u.value&&t&&u.value.on(n,function(){var a=Array.from(arguments),r=a.shift();a.unshift({event:r,dt:u}),a.unshift(n),t.emit.apply(t,a)})}),l.onBeforeUnmount(()=>{var t;(t=u.value)==null||t.destroy(!0)});function g(t){h.value=t.value?t.value.slice():t.slice()}function m(t){return function(e,n,a,r){let o=r.row+","+r.col;if(!c[o]){let w=l.h("div",t({cellData:e,colIndex:r.col,rowData:a,rowIndex:r.row,type:n}));c[o]=document.createElement("div"),l.render(w,c[o])}return c[o]}}function y(t,e){if(e)for(let a=0;a<t.length;a++){let r=t[a];if(typeof r.render=="string"&&r.render.charAt(0)==="#"){var n=r.render.replace("#","");e.slots[n]&&(r.render=m(e.slots[n]))}else if(typeof r.render=="object"&&typeof r.render.display=="string"&&r.render.display.charAt(0)==="#"){var n=r.render.display.replace("#","");e.slots[n]&&(r.render.display=m(e.slots[n]))}}}return d({dt:u}),(t,e)=>e[0]||(l.setBlockTracking(-1),e[0]=l.createElementVNode("div",{class:"datatable"},[l.createElementVNode("table",l.mergeProps({ref_key:"table",ref:p},t.$attrs,{style:{width:"100%"}}),[l.renderSlot(t.$slots,"default")],16)]),l.setBlockTracking(1),e[0])}}),D=(()=>{const i=b;return i.install=d=>{d.component("Datatables.netVue",i)},i})();exports.DataTable=b;exports.default=D;
1
+ "use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const l=require("vue"),g=["childRow","column-sizing","column-visibility","destroy","draw","error","init","length","order","page","preDraw","preInit","preXhr","processing","requestChild","search","stateLoadParams","stateLoaded","stateSaveParams","xhr","autoFill","preAutoFill","buttons-action","buttons-processing","column-reorder","key","key-blur","key-focus","key-refocus","key-return-submit","responsive-display","responsive-resize","rowgroup-datasrc","pre-row-reorder","row-reorder","row-reordered","dtsb-inserted","deselect","select","select-blur","selectItems","selectStyle","user-select","stateRestore-change"];let m;const D={name:"Datatables.netVue",inheritAttrs:!1,use(c){m=c}},h=l.defineComponent({...D,props:{ajax:null,columns:null,data:null,options:null},emits:g,setup(c,{expose:f}){const u=c,v=l.ref(null),i={},o=l.ref(),w=l.ref([]);l.watch(()=>u.data,t=>{let e=o.value;if(e){for(var n=Object.keys(i),s=0;s<n.length;s++)delete i[n[s]];e.clear(),e.rows.add(t).draw(!1)}},{deep:!0}),l.onMounted(()=>{var n,s;const t=l.getCurrentInstance();let e=u.options||{};if(u.data&&(e.data=u.data,k(e.data)),u.columns&&(e.columns=u.columns,b(e.columns,t)),u.ajax&&(e.ajax=u.ajax),e.columnDefs||(e.columnDefs=[]),t){let r=Object.keys(t.slots);for(let a=0;a<r.length;a++){let d=r[a];if(d.match(/^column\-/)){let p=d.replace("column-","");e.columnDefs.push({target:p.match(/^\d+$/)?parseInt(p):p+":name",render:"#"+d})}}b(e.columnDefs,t)}if(!m)throw new Error("DataTables library not set. See https://datatables.net/tn/19 for details.");o.value=new m(l.unref(v),e),(n=o.value)!=null&&n.page.info().serverSide&&((s=o.value)==null||s.on("preDraw",function(){let r=Object.keys(i);for(var a=0;a<r.length;a++)delete i[r[a]]}));for(let r of g)o.value&&t&&o.value.on(r,function(){var a=Array.from(arguments),d=a.shift();a.unshift({event:d,dt:o}),a.unshift(r),t.emit.apply(t,a)})}),l.onBeforeUnmount(()=>{var t;(t=o.value)==null||t.destroy(!0)});function k(t){w.value=t.value?t.value.slice():t.slice()}function y(t){return function(e,n,s,r){let a=r.row+","+r.col;if(!i[a]){let d=l.h("div",t({cellData:e,colIndex:r.col,rowData:s,rowIndex:r.row,type:n}));i[a]=document.createElement("div"),l.render(d,i[a])}return i[a]}}function b(t,e){if(e)for(let s=0;s<t.length;s++){let r=t[s];if(typeof r.render=="string"&&r.render.charAt(0)==="#"){var n=r.render.replace("#","");e.slots[n]&&(r.render=y(e.slots[n]))}else if(typeof r.render=="object"&&typeof r.render.display=="string"&&r.render.display.charAt(0)==="#"){var n=r.render.display.replace("#","");e.slots[n]&&(r.render.display=y(e.slots[n]))}}}return f({dt:o}),(t,e)=>e[0]||(l.setBlockTracking(-1),e[0]=l.createElementVNode("div",{class:"datatable"},[l.createElementVNode("table",l.mergeProps({ref_key:"table",ref:v},t.$attrs,{style:{width:"100%"}}),[l.renderSlot(t.$slots,"default")],16)]),l.setBlockTracking(1),e[0])}}),j=(()=>{const c=h;return c.install=f=>{f.component("Datatables.netVue",c)},c})();exports.DataTable=h;exports.default=j;
@@ -1,5 +1,5 @@
1
- import { defineComponent as k, ref as d, watch as x, onMounted as j, getCurrentInstance as I, unref as A, onBeforeUnmount as E, setBlockTracking as v, createElementVNode as b, mergeProps as R, renderSlot as S, h as T, render as _ } from "vue";
2
- const h = [
1
+ import { defineComponent as j, ref as p, watch as x, onMounted as I, getCurrentInstance as A, unref as S, onBeforeUnmount as E, setBlockTracking as h, createElementVNode as g, mergeProps as O, renderSlot as R, h as T, render as _ } from "vue";
2
+ const w = [
3
3
  "childRow",
4
4
  "column-sizing",
5
5
  "column-visibility",
@@ -45,14 +45,14 @@ const h = [
45
45
  "user-select",
46
46
  "stateRestore-change"
47
47
  ];
48
- let f;
48
+ let m;
49
49
  const C = {
50
50
  name: "Datatables.netVue",
51
51
  inheritAttrs: !1,
52
- use(o) {
53
- f = o;
52
+ use(u) {
53
+ m = u;
54
54
  }
55
- }, L = /* @__PURE__ */ k({
55
+ }, L = /* @__PURE__ */ j({
56
56
  ...C,
57
57
  props: {
58
58
  ajax: null,
@@ -60,103 +60,108 @@ const C = {
60
60
  data: null,
61
61
  options: null
62
62
  },
63
- emits: h,
64
- setup(o, { expose: u }) {
65
- const s = o, p = d(null), c = {}, i = d(), g = d([]);
63
+ emits: w,
64
+ setup(u, { expose: d }) {
65
+ const o = u, y = p(null), i = {}, s = p(), k = p([]);
66
66
  x(
67
- () => s.data,
67
+ () => o.data,
68
68
  (t) => {
69
- let e = i.value;
69
+ let e = s.value;
70
70
  if (e) {
71
- for (var n = Object.keys(c), a = 0; a < n.length; a++)
72
- delete c[n[a]];
71
+ for (var n = Object.keys(i), l = 0; l < n.length; l++)
72
+ delete i[n[l]];
73
73
  e.clear(), e.rows.add(t).draw(!1);
74
74
  }
75
75
  },
76
76
  {
77
77
  deep: !0
78
78
  }
79
- ), j(() => {
80
- const t = I();
81
- let e = s.options || {};
82
- if (s.data && (e.data = s.data, w(e.data)), s.columns && (e.columns = s.columns, y(e.columns, t)), s.ajax && (e.ajax = s.ajax), e.columnDefs || (e.columnDefs = []), t) {
83
- let n = Object.keys(t.slots);
84
- for (let a = 0; a < n.length; a++) {
85
- let r = n[a];
86
- if (r.match(/^column\-/)) {
87
- let l = r.replace("column-", "");
79
+ ), I(() => {
80
+ var n, l;
81
+ const t = A();
82
+ let e = o.options || {};
83
+ if (o.data && (e.data = o.data, D(e.data)), o.columns && (e.columns = o.columns, b(e.columns, t)), o.ajax && (e.ajax = o.ajax), e.columnDefs || (e.columnDefs = []), t) {
84
+ let r = Object.keys(t.slots);
85
+ for (let a = 0; a < r.length; a++) {
86
+ let c = r[a];
87
+ if (c.match(/^column\-/)) {
88
+ let f = c.replace("column-", "");
88
89
  e.columnDefs.push({
89
- target: l.match(/^\d+$/) ? parseInt(l) : l + ":name",
90
- render: "#" + r
90
+ target: f.match(/^\d+$/) ? parseInt(f) : f + ":name",
91
+ render: "#" + c
91
92
  });
92
93
  }
93
94
  }
94
- y(e.columnDefs, t);
95
+ b(e.columnDefs, t);
95
96
  }
96
- if (!f)
97
+ if (!m)
97
98
  throw new Error(
98
99
  "DataTables library not set. See https://datatables.net/tn/19 for details."
99
100
  );
100
- i.value = new f(A(p), e);
101
- for (let n of h)
102
- i.value && t && i.value.on(n, function() {
103
- var a = Array.from(arguments), r = a.shift();
104
- a.unshift({ event: r, dt: i }), a.unshift(n), t.emit.apply(t, a);
101
+ s.value = new m(S(y), e), (n = s.value) != null && n.page.info().serverSide && ((l = s.value) == null || l.on("preDraw", function() {
102
+ let r = Object.keys(i);
103
+ for (var a = 0; a < r.length; a++)
104
+ delete i[r[a]];
105
+ }));
106
+ for (let r of w)
107
+ s.value && t && s.value.on(r, function() {
108
+ var a = Array.from(arguments), c = a.shift();
109
+ a.unshift({ event: c, dt: s }), a.unshift(r), t.emit.apply(t, a);
105
110
  });
106
111
  }), E(() => {
107
112
  var t;
108
- (t = i.value) == null || t.destroy(!0);
113
+ (t = s.value) == null || t.destroy(!0);
109
114
  });
110
- function w(t) {
111
- g.value = t.value ? t.value.slice() : t.slice();
115
+ function D(t) {
116
+ k.value = t.value ? t.value.slice() : t.slice();
112
117
  }
113
- function m(t) {
114
- return function(e, n, a, r) {
115
- let l = r.row + "," + r.col;
116
- if (!c[l]) {
117
- let D = T("div", t({
118
+ function v(t) {
119
+ return function(e, n, l, r) {
120
+ let a = r.row + "," + r.col;
121
+ if (!i[a]) {
122
+ let c = T("div", t({
118
123
  cellData: e,
119
124
  colIndex: r.col,
120
- rowData: a,
125
+ rowData: l,
121
126
  rowIndex: r.row,
122
127
  type: n
123
128
  }));
124
- c[l] = document.createElement("div"), _(D, c[l]);
129
+ i[a] = document.createElement("div"), _(c, i[a]);
125
130
  }
126
- return c[l];
131
+ return i[a];
127
132
  };
128
133
  }
129
- function y(t, e) {
134
+ function b(t, e) {
130
135
  if (e)
131
- for (let a = 0; a < t.length; a++) {
132
- let r = t[a];
136
+ for (let l = 0; l < t.length; l++) {
137
+ let r = t[l];
133
138
  if (typeof r.render == "string" && r.render.charAt(0) === "#") {
134
139
  var n = r.render.replace("#", "");
135
- e.slots[n] && (r.render = m(e.slots[n]));
140
+ e.slots[n] && (r.render = v(e.slots[n]));
136
141
  } else if (typeof r.render == "object" && typeof r.render.display == "string" && r.render.display.charAt(0) === "#") {
137
142
  var n = r.render.display.replace("#", "");
138
- e.slots[n] && (r.render.display = m(e.slots[n]));
143
+ e.slots[n] && (r.render.display = v(e.slots[n]));
139
144
  }
140
145
  }
141
146
  }
142
- return u({
143
- dt: i
144
- }), (t, e) => e[0] || (v(-1), e[0] = b("div", { class: "datatable" }, [
145
- b("table", R({
147
+ return d({
148
+ dt: s
149
+ }), (t, e) => e[0] || (h(-1), e[0] = g("div", { class: "datatable" }, [
150
+ g("table", O({
146
151
  ref_key: "table",
147
- ref: p
152
+ ref: y
148
153
  }, t.$attrs, { style: { width: "100%" } }), [
149
- S(t.$slots, "default")
154
+ R(t.$slots, "default")
150
155
  ], 16)
151
- ]), v(1), e[0]);
156
+ ]), h(1), e[0]);
152
157
  }
153
- }), P = /* @__PURE__ */ (() => {
154
- const o = L;
155
- return o.install = (u) => {
156
- u.component("Datatables.netVue", o);
157
- }, o;
158
+ }), V = /* @__PURE__ */ (() => {
159
+ const u = L;
160
+ return u.install = (d) => {
161
+ d.component("Datatables.netVue", u);
162
+ }, u;
158
163
  })();
159
164
  export {
160
165
  L as DataTable,
161
- P as default
166
+ V as default
162
167
  };
@@ -1 +1 @@
1
- (function(l,r){typeof exports=="object"&&typeof module<"u"?r(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],r):(l=typeof globalThis<"u"?globalThis:l||self,r((l.datatables=l.datatables||{},l.datatables["net-vue3"]={}),l.Vue))})(this,function(l,r){"use strict";const m=["childRow","column-sizing","column-visibility","destroy","draw","error","init","length","order","page","preDraw","preInit","preXhr","processing","requestChild","search","stateLoadParams","stateLoaded","stateSaveParams","xhr","autoFill","preAutoFill","buttons-action","buttons-processing","column-reorder","key","key-blur","key-focus","key-refocus","key-return-submit","responsive-display","responsive-resize","rowgroup-datasrc","pre-row-reorder","row-reorder","row-reordered","dtsb-inserted","deselect","select","select-blur","selectItems","selectStyle","user-select","stateRestore-change"];let f;const w={name:"Datatables.netVue",inheritAttrs:!1,use(d){f=d}},y=r.defineComponent({...w,props:{ajax:null,columns:null,data:null,options:null},emits:m,setup(d,{expose:p}){const o=d,b=r.ref(null),u={},c=r.ref(),v=r.ref([]);r.watch(()=>o.data,t=>{let e=c.value;if(e){for(var s=Object.keys(u),a=0;a<s.length;a++)delete u[s[a]];e.clear(),e.rows.add(t).draw(!1)}},{deep:!0}),r.onMounted(()=>{const t=r.getCurrentInstance();let e=o.options||{};if(o.data&&(e.data=o.data,D(e.data)),o.columns&&(e.columns=o.columns,g(e.columns,t)),o.ajax&&(e.ajax=o.ajax),e.columnDefs||(e.columnDefs=[]),t){let s=Object.keys(t.slots);for(let a=0;a<s.length;a++){let n=s[a];if(n.match(/^column\-/)){let i=n.replace("column-","");e.columnDefs.push({target:i.match(/^\d+$/)?parseInt(i):i+":name",render:"#"+n})}}g(e.columnDefs,t)}if(!f)throw new Error("DataTables library not set. See https://datatables.net/tn/19 for details.");c.value=new f(r.unref(b),e);for(let s of m)c.value&&t&&c.value.on(s,function(){var a=Array.from(arguments),n=a.shift();a.unshift({event:n,dt:c}),a.unshift(s),t.emit.apply(t,a)})}),r.onBeforeUnmount(()=>{var t;(t=c.value)==null||t.destroy(!0)});function D(t){v.value=t.value?t.value.slice():t.slice()}function h(t){return function(e,s,a,n){let i=n.row+","+n.col;if(!u[i]){let j=r.h("div",t({cellData:e,colIndex:n.col,rowData:a,rowIndex:n.row,type:s}));u[i]=document.createElement("div"),r.render(j,u[i])}return u[i]}}function g(t,e){if(e)for(let a=0;a<t.length;a++){let n=t[a];if(typeof n.render=="string"&&n.render.charAt(0)==="#"){var s=n.render.replace("#","");e.slots[s]&&(n.render=h(e.slots[s]))}else if(typeof n.render=="object"&&typeof n.render.display=="string"&&n.render.display.charAt(0)==="#"){var s=n.render.display.replace("#","");e.slots[s]&&(n.render.display=h(e.slots[s]))}}}return p({dt:c}),(t,e)=>e[0]||(r.setBlockTracking(-1),e[0]=r.createElementVNode("div",{class:"datatable"},[r.createElementVNode("table",r.mergeProps({ref_key:"table",ref:b},t.$attrs,{style:{width:"100%"}}),[r.renderSlot(t.$slots,"default")],16)]),r.setBlockTracking(1),e[0])}}),k=(()=>{const d=y;return d.install=p=>{p.component("Datatables.netVue",d)},d})();l.DataTable=y,l.default=k,Object.defineProperties(l,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
1
+ (function(o,n){typeof exports=="object"&&typeof module<"u"?n(exports,require("vue")):typeof define=="function"&&define.amd?define(["exports","vue"],n):(o=typeof globalThis<"u"?globalThis:o||self,n((o.datatables=o.datatables||{},o.datatables["net-vue3"]={}),o.Vue))})(this,function(o,n){"use strict";const b=["childRow","column-sizing","column-visibility","destroy","draw","error","init","length","order","page","preDraw","preInit","preXhr","processing","requestChild","search","stateLoadParams","stateLoaded","stateSaveParams","xhr","autoFill","preAutoFill","buttons-action","buttons-processing","column-reorder","key","key-blur","key-focus","key-refocus","key-return-submit","responsive-display","responsive-resize","rowgroup-datasrc","pre-row-reorder","row-reorder","row-reordered","dtsb-inserted","deselect","select","select-blur","selectItems","selectStyle","user-select","stateRestore-change"];let p;const k={name:"Datatables.netVue",inheritAttrs:!1,use(u){p=u}},h=n.defineComponent({...k,props:{ajax:null,columns:null,data:null,options:null},emits:b,setup(u,{expose:m}){const d=u,g=n.ref(null),c={},i=n.ref(),j=n.ref([]);n.watch(()=>d.data,t=>{let e=i.value;if(e){for(var s=Object.keys(c),l=0;l<s.length;l++)delete c[s[l]];e.clear(),e.rows.add(t).draw(!1)}},{deep:!0}),n.onMounted(()=>{var s,l;const t=n.getCurrentInstance();let e=d.options||{};if(d.data&&(e.data=d.data,x(e.data)),d.columns&&(e.columns=d.columns,v(e.columns,t)),d.ajax&&(e.ajax=d.ajax),e.columnDefs||(e.columnDefs=[]),t){let r=Object.keys(t.slots);for(let a=0;a<r.length;a++){let f=r[a];if(f.match(/^column\-/)){let y=f.replace("column-","");e.columnDefs.push({target:y.match(/^\d+$/)?parseInt(y):y+":name",render:"#"+f})}}v(e.columnDefs,t)}if(!p)throw new Error("DataTables library not set. See https://datatables.net/tn/19 for details.");i.value=new p(n.unref(g),e),(s=i.value)!=null&&s.page.info().serverSide&&((l=i.value)==null||l.on("preDraw",function(){let r=Object.keys(c);for(var a=0;a<r.length;a++)delete c[r[a]]}));for(let r of b)i.value&&t&&i.value.on(r,function(){var a=Array.from(arguments),f=a.shift();a.unshift({event:f,dt:i}),a.unshift(r),t.emit.apply(t,a)})}),n.onBeforeUnmount(()=>{var t;(t=i.value)==null||t.destroy(!0)});function x(t){j.value=t.value?t.value.slice():t.slice()}function w(t){return function(e,s,l,r){let a=r.row+","+r.col;if(!c[a]){let f=n.h("div",t({cellData:e,colIndex:r.col,rowData:l,rowIndex:r.row,type:s}));c[a]=document.createElement("div"),n.render(f,c[a])}return c[a]}}function v(t,e){if(e)for(let l=0;l<t.length;l++){let r=t[l];if(typeof r.render=="string"&&r.render.charAt(0)==="#"){var s=r.render.replace("#","");e.slots[s]&&(r.render=w(e.slots[s]))}else if(typeof r.render=="object"&&typeof r.render.display=="string"&&r.render.display.charAt(0)==="#"){var s=r.render.display.replace("#","");e.slots[s]&&(r.render.display=w(e.slots[s]))}}}return m({dt:i}),(t,e)=>e[0]||(n.setBlockTracking(-1),e[0]=n.createElementVNode("div",{class:"datatable"},[n.createElementVNode("table",n.mergeProps({ref_key:"table",ref:g},t.$attrs,{style:{width:"100%"}}),[n.renderSlot(t.$slots,"default")],16)]),n.setBlockTracking(1),e[0])}}),D=(()=>{const u=h;return u.install=m=>{m.component("Datatables.netVue",u)},u})();o.DataTable=h,o.default=D,Object.defineProperties(o,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "datatables.net-vue3",
3
- "version": "3.0.0",
3
+ "version": "3.0.1",
4
4
  "description": "Vue3 component for DataTables",
5
5
  "main": "dist/datatables.net-vue3.umd.js",
6
6
  "module": "dist/datatables.net-vue3.mjs",
package/src/DataTable.vue CHANGED
@@ -137,6 +137,18 @@ onMounted(() => {
137
137
  // Create the DataTable!
138
138
  dt.value = new DataTablesLib(unref(table), options);
139
139
 
140
+ // When server-side processing is enabled, the data indexes for rows
141
+ // are reused, so we need to clear out any rendered elements for slots.
142
+ if (dt.value?.page.info().serverSide) {
143
+ dt.value?.on('preDraw', function () {
144
+ let keys = Object.keys(elements);
145
+
146
+ for (var i=0 ; i<keys.length ; i++) {
147
+ delete elements[keys[i]];
148
+ }
149
+ });
150
+ }
151
+
140
152
  // Re-export all DataTables events by listening for them using DataTable's
141
153
  // `on` method and then emit them to our Vue component
142
154
  for (let eName of dtEvents) {