@bryntum/scheduler-vue-3-thin 7.1.2 → 7.1.3

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,4 +1,4 @@
1
- import { _ as f } from "../chunks/dnU2pCDo.js";
1
+ import { _ as f } from "../chunks/6EoHCTY_.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as f } from "../chunks/Cz79kyyi.js";
1
+ import { _ as f } from "../chunks/w9YPCarT.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -1,4 +1,4 @@
1
- import { _ as f } from "../chunks/DDnFIp_o.js";
1
+ import { _ as f } from "../chunks/CS2Ou_bo.js";
2
2
  export {
3
3
  f as default
4
4
  };
@@ -67,8 +67,8 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
67
67
  widgetData: e,
68
68
  emit: n,
69
69
  element: i,
70
- processCellContent: s,
71
- processEventContent: o,
70
+ processCellContent: o,
71
+ processEventContent: s,
72
72
  processWidgetContent: l,
73
73
  hasFrameworkRenderer: r,
74
74
  toRaw: d
@@ -77,14 +77,14 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
77
77
  for (const a of Object.keys(u))
78
78
  f[this.camelize(a)] = u[a];
79
79
  const {
80
- instanceClass: y,
80
+ instanceClass: m,
81
81
  instanceName: v
82
- } = e, m = (a) => f[a] !== void 0, p = (e.configNames || []).filter(m), C = (e.propertyConfigNames || []).filter(m), h = (e.propertyNames || []).filter(m), $ = (e.featureNames || []).filter(m), E = e.eventNames.filter((a) => !m(a) && !f[`on${this.capitalize(a)}`]), g = {
82
+ } = e, y = (a) => f[a] !== void 0, p = (e.configNames || []).filter(y), C = (e.propertyConfigNames || []).filter(y), h = (e.propertyNames || []).filter(y), $ = (e.featureNames || []).filter(y), E = e.eventNames.filter((a) => !y(a) && !f[`on${this.capitalize(a)}`]), g = {
83
83
  vueComponent: t,
84
84
  listeners: {},
85
85
  features: {},
86
- processCellContent: s,
87
- processEventContent: o,
86
+ processCellContent: o,
87
+ processEventContent: s,
88
88
  processWidgetContent: l,
89
89
  hasFrameworkRenderer: r
90
90
  };
@@ -93,8 +93,8 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
93
93
  ...C,
94
94
  ...$
95
95
  ].forEach((a) => {
96
- c.applyPropValue(g, a, f[a], !0, d), ["features", "config"].includes(a) && c.devWarningConfigProp(y.$name, a);
97
- }), g.cls = (g.cls || "") + ` b-vue-${y.$name.toLowerCase()}-container`, e.configNames = p, e.propertyNames = [
96
+ c.applyPropValue(g, a, f[a], !0, d), ["features", "config"].includes(a) && c.devWarningConfigProp(m.$name, a);
97
+ }), g.cls = (g.cls || "") + ` b-vue-${m.$name.toLowerCase()}-container`, e.configNames = p, e.propertyNames = [
98
98
  ...p,
99
99
  ...h,
100
100
  ...C,
@@ -106,7 +106,7 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
106
106
  "insertAfter",
107
107
  "insertBefore"
108
108
  ].find((a) => g[a]);
109
- return V ? c.devWarningContainer(y.$name, V) : v === "Button" ? g.appendTo = i : g.adopt = i, g;
109
+ return V ? c.devWarningContainer(m.$name, V) : v === "Button" ? g.appendTo = i : g.adopt = i, g;
110
110
  }
111
111
  /**
112
112
  * Setup store events relay
@@ -115,9 +115,9 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
115
115
  */
116
116
  static relayStores(t, e) {
117
117
  const { dataStores: n, projectStores: i } = t;
118
- n && (Object.keys(n).forEach((s) => {
119
- const o = i ? e.project[s] : e[s];
120
- o && (o.syncDataOnLoad == null && !o.readUrl && !o.lazyLoad && (!o.crudManager || !o.crudManager.loadUrl) && (o.syncDataOnLoad = !0), e && e.relayStoreEvents && o.relayAll(e, n[s]));
118
+ n && (Object.keys(n).forEach((o) => {
119
+ const s = i ? e.project[o] : e[o];
120
+ s && (s.syncDataOnLoad == null && !s.readUrl && !s.lazyLoad && (!s.crudManager || !s.crudManager.loadUrl) && (s.syncDataOnLoad = !0), e && e.relayStoreEvents && s.relayAll(e, n[o]));
121
121
  }), delete t.dataStores);
122
122
  }
123
123
  /**
@@ -144,25 +144,25 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
144
144
  * @param {Boolean} [isConfig] config setting mode
145
145
  * @param {Function} [toRaw] Vue fn to unwrap reactive object
146
146
  */
147
- static applyPropValue(t, e, n, i = !0, s) {
147
+ static applyPropValue(t, e, n, i = !0, o) {
148
148
  if (e === "project")
149
149
  n && typeof n == "object" && (t[e] = n.instance ? n.instance.value || n.instance : n);
150
150
  else if (e === "features" && typeof n == "object")
151
- Object.keys(n).forEach((o) => c.applyPropValue(t, `${o}Feature`, n[o], i, s));
151
+ Object.keys(n).forEach((s) => c.applyPropValue(t, `${s}Feature`, n[s], i, o));
152
152
  else if (e === "config" && typeof n == "object")
153
- Object.keys(n).forEach((o) => c.applyPropValue(t, o, n[o], i, s));
153
+ Object.keys(n).forEach((s) => c.applyPropValue(t, s, n[s], i, o));
154
154
  else if (e === "columns" && !i)
155
155
  t.columns.data = n;
156
156
  else if (e.endsWith("Feature")) {
157
- const o = t.features, l = e.replace("Feature", "");
157
+ const s = t.features, l = e.replace("Feature", "");
158
158
  if (i)
159
- o[l] = n;
159
+ s[l] = n;
160
160
  else {
161
- const r = o[l];
161
+ const r = s[l];
162
162
  r && r.setConfig(n);
163
163
  }
164
164
  } else
165
- t[e] = s ? s(n) : n;
165
+ t[e] = o ? o(n) : n;
166
166
  }
167
167
  /**
168
168
  * Creates watches for vue component properties
@@ -175,12 +175,12 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
175
175
  static watchProps(t, e, n) {
176
176
  const {
177
177
  configNames: i,
178
- propertyNames: s,
179
- instanceClass: o
178
+ propertyNames: o,
179
+ instanceClass: s
180
180
  } = e;
181
- s.forEach((l) => n(l, (r) => {
181
+ o.forEach((l) => n(l, (r) => {
182
182
  const d = Array.isArray(r) ? r.slice() : r;
183
- c.applyPropValue(t, l, d, !1), i.includes(l) && c.devWarningUpdateProp(o.$name, l);
183
+ c.applyPropValue(t, l, d, !1), i.includes(l) && c.devWarningUpdateProp(s.$name, l);
184
184
  })), e.configNames = [], e.propertyNames = [];
185
185
  }
186
186
  /**
@@ -190,11 +190,11 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
190
190
  * @param {Object} context.html Object containing the Vue component properties and event listeners
191
191
  */
192
192
  static processWidgetContent({ widget: t, html: e }) {
193
- const { is: n, bind: i = {}, vue: s, on: o = {} } = e, { vueComponent: l } = this, { teleports: { value: r } } = l.provides, { contentElement: d, id: f } = t;
194
- if (s) {
193
+ const { is: n, bind: i = {}, vue: o, on: s = {} } = e, { vueComponent: l } = this, { teleports: { value: r } } = l.provides, { contentElement: d, id: f } = t;
194
+ if (o) {
195
195
  const u = `key-${f}`;
196
196
  r.has(u) && r.delete(u), b(() => {
197
- r.set(u, { bind: i, on: o, key: u, is: n, to: d });
197
+ r.set(u, { bind: i, on: s, key: u, is: n, to: d });
198
198
  });
199
199
  }
200
200
  }
@@ -204,7 +204,7 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
204
204
  * @param {String} html The HTML content to be processed
205
205
  */
206
206
  static handleVueContent(t, e) {
207
- const n = (o) => !!o.vueComponent?.provides?.teleports, i = t.closest(n);
207
+ const n = (s) => !!s.vueComponent?.provides?.teleports, i = t.closest(n);
208
208
  (i?.vueComponent ? i : N.query(n))?.processWidgetContent?.({ widget: t, html: e });
209
209
  }
210
210
  /**
@@ -224,25 +224,25 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
224
224
  targetElement: n,
225
225
  isRelease: i
226
226
  }) {
227
- let s = n, o = !1;
227
+ let o = n, s = !1;
228
228
  const l = this.isVertical ? e?.elementData?.renderData : e?.elementData;
229
229
  if (c.isVueConfig(t) && t?.is) {
230
- e?.dataset?.isMilestone ? s = n.parentElement.parentElement.parentElement : s = n.parentElement.parentElement;
231
- const r = this.isVertical ? s.elementData.renderData : s.elementData, { assignmentRecord: d } = i ? l : r, { eventRecord: f } = r, { vueComponent: u } = this, { teleports: { value: y } } = u.provides, v = f.isRecurring || f.isOccurrence, m = `assignment-${d?.id}${v ? "-" + f.id : ""}`;
232
- s.vueKey && y.delete(s.vueKey);
230
+ e?.dataset?.isMilestone ? o = n.parentElement.parentElement.parentElement : o = n.parentElement.parentElement;
231
+ const r = this.isVertical ? o.elementData.renderData : o.elementData, { assignmentRecord: d } = i ? l : r, { eventRecord: f } = r, { vueComponent: u } = this, { teleports: { value: m } } = u.provides, v = f.isRecurring || f.isOccurrence, y = `assignment-${d?.id}${v ? "-" + f.id : ""}`;
232
+ o.vueKey && m.get(o.vueKey)?.to === n && m.delete(o.vueKey);
233
233
  const p = { ...t }, { is: C, on: h = {} } = p;
234
234
  delete p.is, delete p.on, b(() => {
235
- y.set(m, {
235
+ m.set(y, {
236
236
  bind: p,
237
- key: m,
237
+ key: y,
238
238
  is: C,
239
239
  on: h,
240
240
  to: n,
241
241
  generation: d.generation
242
242
  });
243
- }), s.vueKey = m, o = !0;
243
+ }), o.vueKey = y, s = !0;
244
244
  }
245
- return o;
245
+ return s;
246
246
  }
247
247
  /**
248
248
  * Cell renderer method
@@ -252,21 +252,21 @@ Solution: Use separate parameter for each "${e}" value to enable reactive update
252
252
  * @returns {Boolean}
253
253
  */
254
254
  static processCellContent({ rendererData: t, rendererHtml: e }) {
255
- const { record: n, column: i, cellElement: s, row: o } = t;
255
+ const { record: n, column: i, cellElement: o, row: s } = t;
256
256
  if (c.isVueConfig(i.data) && i.data?.renderer) {
257
- const { vueComponent: l } = this, { teleports: { value: r } } = l.provides, d = `${i.id}-${n.id}`, f = i.tree ? s.querySelector(".b-tree-cell-value") : s;
258
- s.vueKey && r.delete(s.vueKey);
259
- const u = { ...e }, { is: y, on: v = {} } = u;
257
+ const { vueComponent: l } = this, { teleports: { value: r } } = l.provides, d = `${i.id}-${n.id}`, f = i.tree ? o.querySelector(".b-tree-cell-value") : o;
258
+ o.vueKey && r.delete(o.vueKey);
259
+ const u = { ...e }, { is: m, on: v = {} } = u;
260
260
  delete u.is, delete u.on, b(() => {
261
- o.id === n.id && r.set(d, {
261
+ s.id === n.id && r.set(d, {
262
262
  bind: u,
263
263
  key: d,
264
- is: y,
264
+ is: m,
265
265
  on: v,
266
266
  to: f,
267
267
  generation: n.generation
268
268
  });
269
- }), s.vueKey = d;
269
+ }), o.vueKey = d;
270
270
  }
271
271
  }
272
272
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"WrapperHelper.js","sources":["../../src/helper/WrapperHelper.ts"],"sourcesContent":["/**\n * Vue 3 widget helper\n */\n\nimport { type ComponentInternalInstance, nextTick } from 'vue';\nimport { type VueConfig, Widget } from '@bryntum/core-thin';\n\ndeclare global {\n interface Window {\n bryntum: {\n isTestEnv?: boolean;\n vue?: {\n isVueConfig?: (config: any) => boolean;\n handleVueContent?: (widget: Widget, html: VueConfig) => void;\n };\n };\n }\n}\n\ninterface RenderElement extends HTMLElement {\n vueKey: string;\n}\n\nexport type Data = Record<string, unknown>;\n\ntype SuppressNew<T> = { [K in keyof T]: T[ K ] }\n\ntype AnyConstructor<\n Instance extends object = object,\n Static extends object = object\n> = (new (...input: any[]) => Instance) & SuppressNew<Static>\n\ntype AnyWidget = AnyConstructor<any, any>;\n\ntype RenderData = {\n record: any,\n row: any,\n column: any,\n cellElement: RenderElement\n}\n\ntype VueTeleportConfig = {\n vue: boolean,\n is: string,\n bind?: object\n on?: object\n}\n\nexport type WidgetData<T extends AnyWidget> = {\n instanceClass: T,\n instanceName: string\n isView?: boolean,\n dataStores?: object,\n projectStores?: boolean,\n configNames: string[]\n propertyConfigNames: string[]\n propertyNames: string[]\n eventNames: string[]\n featureNames?: string[]\n}\n\nexport type WidgetConfig<T extends AnyWidget> = {\n me?: ComponentInternalInstance;\n widgetData: WidgetData<T>,\n emit: (...args: any[]) => any\n element: HTMLDivElement;\n processCellContent?: Function;\n processEventContent?: Function;\n processWidgetContent?: Function;\n hasFrameworkRenderer?: Function;\n toRaw?: Function\n}\n\nexport type BryntumConfig = Record<string, any> & {\n vueComponent?: Object,\n listeners: Record<string, Function>,\n features: {},\n processCellContent: Function,\n processEventContent: Function,\n processWidgetContent: Function;\n hasFrameworkRenderer: Function\n};\n\nexport class WrapperHelper {\n\n /**\n * Development warning. Showed when environment is set to 'development'\n * @param {String} clsName vue component instance\n * @param {String} msg console message\n */\n static devWarning(clsName: string, msg: string) {\n // @ts-ignore\n if (window.bryntum?.isTestEnv || process.env.NODE_ENV === 'development') {\n console.warn(`Bryntum${clsName}Component development warning!\\n${msg}\\n` +\n 'Please check Vue integration guide: https://bryntum.com/products/grid/docs/guide/Grid/integration/vue/guide'\n );\n }\n }\n\n static devWarningContainer(clsName: string, containerParam: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${containerParam}\" parameter for configuration is not recommended.\\n` +\n 'Widget is placed automatically inside it\\'s container element.\\n' +\n `Solution: remove \"${containerParam}\" parameter from configuration.`\n );\n }\n\n static devWarningConfigProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${prop}\" parameter for configuration is not recommended.\\n` +\n `Solution: Use separate parameter for each \"${prop}\" value to enable reactive updates of the API instance`\n );\n }\n\n static devWarningUpdateProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `\"${prop}\" is a static config option for component constructor only. No runtime changes are supported!`\n );\n }\n\n static camelize(str: string) {\n return str.replace(/-./g, s => (s[1] || '').toUpperCase());\n }\n\n static capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Returns `true` if the provided configuration object is valid for Vue processing.\n * @param {*} config\n * @returns {Boolean}\n */\n static isVueConfig(config: any): boolean {\n return Boolean(config?.vue);\n }\n\n /**\n * Creates bryntum component config from vue component\n * @param {Object} context\n * @param {Object} context.me vue component instance\n * @param {Object} context.widgetData reference to data\n * @param {Function} context.emit reference to emit\n * @param {Object} context.element HTML element\n * @param {Function} context.processCellContent cell renderer method\n * @param {Function} context.processEventContent event renderer method\n * @param {Function} context.processWidgetContent widget renderer method\n * @param {Function} context.hasFrameworkRenderer checks presence of vue renderer\n * @param {Function} context.toRaw Vue fn to unwrap reactive object\n * @returns {Object} config object\n */\n static createConfig<T extends AnyWidget>({\n me,\n widgetData,\n emit,\n element,\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer,\n toRaw\n }: WidgetConfig<T>) {\n\n const\n props: Record<string, any> = {},\n vProps = me!.vnode!.props! || {};\n\n for (const key of Object.keys(vProps)) {\n // Convert possible kebab keys to camelCase\n props[this.camelize(key)] = vProps[key];\n }\n\n const\n {\n instanceClass,\n instanceName\n } = widgetData,\n isValidProp = (propName: string) => props[propName] !== undefined,\n configNames = (widgetData.configNames || []).filter(isValidProp),\n propertyConfigNames = (widgetData.propertyConfigNames || []).filter(isValidProp),\n propertyNames = (widgetData.propertyNames || []).filter(isValidProp),\n featureNames = (widgetData.featureNames || []).filter(isValidProp),\n // Disable event listeners for onProps, which are duplicating functions with preventable result support\n eventNames = widgetData.eventNames.filter(eventName => !isValidProp(eventName) && !props[`on${this.capitalize(eventName)}`]),\n bryntumConfig = {\n vueComponent : me,\n listeners : {},\n features : {},\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer\n } as BryntumConfig;\n\n // Setup events listeners\n eventNames.forEach(eventName => bryntumConfig.listeners[eventName] = (params: any) => emit(eventName, params));\n\n // Setup configs\n [\n ...configNames,\n ...propertyConfigNames,\n ...featureNames\n ].forEach(propName => {\n WrapperHelper.applyPropValue(bryntumConfig, propName, props[propName], true, toRaw);\n if (['features', 'config'].includes(propName)) {\n WrapperHelper.devWarningConfigProp(instanceClass.$name, propName);\n }\n });\n\n // Add vue wrapper class name\n bryntumConfig.cls = (bryntumConfig.cls || '') + ` b-vue-${instanceClass.$name.toLowerCase()}-container`;\n\n // Prepare watch arrays\n widgetData.configNames = configNames;\n widgetData.propertyNames = [\n ...configNames,\n ...propertyNames,\n ...propertyConfigNames,\n ...featureNames\n ];\n\n // Cleanup unused instance arrays\n widgetData.eventNames = [];\n widgetData.propertyConfigNames = [];\n widgetData.featureNames = [];\n\n // If component has no container specified in config then use adopt to Wrapper's element\n const\n containerParam = [\n 'adopt',\n 'appendTo',\n 'insertAfter',\n 'insertBefore'\n ].find((prop: string) => bryntumConfig[prop]);\n\n if (!containerParam) {\n if (instanceName === 'Button') {\n // Button should always be <a> or <button> inside owner element\n bryntumConfig.appendTo = element;\n }\n else {\n bryntumConfig.adopt = element;\n }\n }\n else {\n WrapperHelper.devWarningContainer(instanceClass.$name, containerParam);\n }\n return bryntumConfig;\n }\n\n /**\n * Setup store events relay\n * @param {Object} data reference to data\n * @param {Object} instance bryntum widget instance\n */\n static relayStores(data: any, instance: any) {\n const { dataStores, projectStores } = data;\n\n if (dataStores) {\n Object.keys(dataStores).forEach(storeName => {\n const store = projectStores ? instance.project[storeName] : instance[storeName];\n if (store) {\n\n\n if (store.syncDataOnLoad == null && !store.readUrl && !store.lazyLoad && (!store.crudManager || !store.crudManager.loadUrl)) {\n store.syncDataOnLoad = true;\n }\n\n\n\n // Makes relaying store events configurable but off by default\n if (instance && instance.relayStoreEvents) {\n store.relayAll(instance, dataStores[storeName]);\n }\n }\n });\n delete data.dataStores;\n }\n }\n\n /**\n * Creates bryntum Widget from vue component\n * @param {Object} config\n * @param {Object} config.me vue component instance\n * @param {Object} config.widgetData reference to data\n * @param {Function} config.emit reference to emit\n * @param {Object} config.element HTML element\n * @param {Function} config.processCellContent cell renderer method\n * @param {Function} config.hasFrameworkRenderer check the presence of vue renderer\n * @param {Function} config.toRaw Vue fn to unwrap reactive object\n * @returns {Object} widget object\n */\n static createWidget<T extends AnyWidget>(config: WidgetConfig<T>): InstanceType<T> {\n const\n { instanceClass } = config.widgetData,\n cfg = WrapperHelper.createConfig(config);\n return (instanceClass.$name === 'Widget' ? Widget.create(cfg) : new instanceClass(cfg)) as InstanceType<T>;\n }\n\n /**\n * Applies property value to Bryntum config or instance.\n * @param {Object} configOrInstance target object\n * @param {String} prop property name\n * @param {Object} value value\n * @param {Boolean} [isConfig] config setting mode\n * @param {Function} [toRaw] Vue fn to unwrap reactive object\n */\n static applyPropValue(configOrInstance: any, prop: string, value: any, isConfig = true, toRaw?: Function) {\n\n if (prop === 'project') {\n // Allow use ProjectModel component as project\n if (value && typeof value === 'object') {\n configOrInstance[prop] = value.instance ? value.instance.value || value.instance : value;\n }\n }\n else if (prop === 'features' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, `${key}Feature`, value[key], isConfig, toRaw));\n }\n else if (prop === 'config' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, key, value[key], isConfig, toRaw));\n }\n else if (prop === 'columns' && !isConfig) {\n configOrInstance['columns'].data = value;\n }\n else if (prop.endsWith('Feature')) {\n const\n features = configOrInstance['features'],\n featureName = prop.replace('Feature', '');\n if (isConfig) {\n features[featureName] = value;\n }\n else {\n const feature = features[featureName];\n if (feature) {\n feature.setConfig(value);\n }\n }\n }\n else {\n configOrInstance[prop] = toRaw ? toRaw(value) : value;\n }\n }\n\n /**\n * Creates watches for vue component properties\n * @param {Object} me vue component instance\n * @param {Object} instance bryntum widget instance\n * @param {Object} props reference to props\n * @param {Object} data reference to data\n * @param {Function} watcher watch method reference (Accepts: prop and newValue)\n */\n static watchProps<T extends AnyWidget>(\n instance: InstanceType<T>,\n data: WidgetData<T>,\n watcher: (prop: string, callback: (value: any) => void) => void) {\n const\n {\n configNames,\n propertyNames,\n instanceClass\n } = data;\n\n propertyNames.forEach(prop => watcher(prop, newValue => {\n const value = Array.isArray(newValue) ? newValue.slice() : newValue;\n WrapperHelper.applyPropValue(instance, prop, value, false);\n\n // Check if property is a config and notify\n if (configNames.includes(prop)) {\n WrapperHelper.devWarningUpdateProp(instanceClass.$name, prop);\n }\n }));\n\n // Cleanup unused instance arrays\n data.configNames = [];\n data.propertyNames = [];\n }\n\n /**\n * Called from Widget.js to add the Vue component to teleports\n * @param {Object} context\n * @param {Widget} context.widget Widget which content is rendered by the Vue component\n * @param {Object} context.html Object containing the Vue component properties and event listeners\n */\n static processWidgetContent({ widget, html }: { widget: Widget; html: VueTeleportConfig }) {\n const\n { is, bind = {}, vue, on = {} } = html,\n // @ts-ignore\n { vueComponent } = this,\n { teleports : { value : teleports } } = vueComponent.provides,\n { contentElement : to, id } = widget;\n\n if (vue) {\n const key = `key-${id}`;\n\n // delete the teleport with the same key if any\n if (teleports.has(key)) {\n teleports.delete(key);\n }\n\n nextTick(() => {\n teleports.set(key, { bind, on, key, is, to });\n });\n }\n }\n\n /**\n * Handles the content provided by a Vue component for the widget.\n * @param {Widget} widget Owner widget\n * @param {String} html The HTML content to be processed\n */\n static handleVueContent(widget: Widget, html: VueConfig): void {\n // Called when a Vue component is to provide the widget content\n const\n hasTeleports = (element: any) => Boolean(element.vueComponent?.provides?.teleports),\n parentView = widget.closest(hasTeleports) as any,\n // Find a view (grid, scheduler, etc.) which has `teleports` defined. It also has `processWidgetContent`\n view = parentView?.vueComponent ? parentView : Widget.query(hasTeleports);\n\n view?.processWidgetContent?.({ widget, html });\n }\n\n /**\n * Event renderer method\n * @param {Object} context\n * @param {*} context.jsx\n * @param {DomConfig} context.domConfig\n * @param {HTMLElement} context.targetElement\n * @param {Boolean} context.isRelease\n * @returns {Boolean}\n */\n static processEventContent({\n // Core passes it as jsx for React wrappers.\n // Let's rename it to a more appropriate name.\n jsx : rendererConfig,\n domConfig,\n targetElement,\n isRelease\n }: {\n jsx: { [key: string]: any },\n domConfig: any;\n isRelease: boolean;\n targetElement: HTMLElement & { vueKey: string }\n scrolling: boolean\n }) {\n\n let wrap: any = targetElement,\n returnValue = false;\n\n // @ts-ignore\n const domConfigData = this.isVertical ? domConfig?.elementData?.renderData : domConfig?.elementData;\n\n if (WrapperHelper.isVueConfig(rendererConfig) && rendererConfig?.is) {\n if (domConfig?.dataset?.isMilestone) {\n wrap = targetElement.parentElement!.parentElement!.parentElement!;\n }\n else {\n wrap = targetElement.parentElement!.parentElement!;\n }\n const\n // Vertical nests renderData, while horizontal does not\n // @ts-ignore\n wrapData = this.isVertical ? wrap.elementData.renderData : wrap.elementData,\n { assignmentRecord } = isRelease ? domConfigData : wrapData,\n { eventRecord } = wrapData,\n { vueComponent } = this as any,\n { teleports : { value : teleports } } = vueComponent.provides,\n\n // Recurring events are handled a bit differently so get the flag\n isRecurring = eventRecord.isRecurring || eventRecord.isOccurrence,\n key = `assignment-${assignmentRecord?.id}${isRecurring ? '-' + eventRecord.id : ''}`;\n\n if (wrap.vueKey) {\n teleports.delete(wrap.vueKey);\n }\n const\n bind = { ...rendererConfig },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n nextTick(() => {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : targetElement,\n generation : assignmentRecord.generation\n });\n\n });\n\n wrap.vueKey = key;\n returnValue = true;\n }\n\n return returnValue;\n }\n\n /**\n * Cell renderer method\n * @param {Object} context\n * @param {RenderData} context.rendererData\n * @param {*} context.rendererHtml\n * @returns {Boolean}\n */\n static processCellContent({ rendererData, rendererHtml }: { rendererData: RenderData, rendererHtml: any }) {\n const { record, column, cellElement, row } = rendererData;\n\n // Only run for cells with vue renderers\n if (WrapperHelper.isVueConfig(column.data) && column.data?.renderer) {\n const\n // `this` is a caller component\n { vueComponent } = this as any,\n // `teleports` is javascript Map object\n { teleports : { value : teleports } } = vueComponent.provides,\n key = `${column.id}-${record.id}`,\n renderElement = column.tree\n ? cellElement.querySelector('.b-tree-cell-value')\n : cellElement;\n\n // If the cell already has a teleport, release it\n if (cellElement.vueKey) {\n teleports.delete(cellElement.vueKey);\n }\n\n const\n bind = { ...rendererHtml },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n // Create new teleport\n nextTick(() => {\n // Only teleport if the row is still used for the same record. Since this happens async, we might have\n // scrolled over the entire block of rows since the render\n if (row.id === record.id) {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : renderElement,\n generation : record.generation\n });\n }\n });\n\n // Link cell to the teleport, to be able to release it above\n cellElement.vueKey = key;\n }\n }\n\n /**\n *\n * @param {Object} context\n * @param {*} context.cellContent Content to be rendered in cell (set by renderer)\n * @param {*} context.column Column being rendered\n * @returns {Boolean} `true` if there is a Vue Renderer in this cell, `false` otherwise\n */\n static hasFrameworkRenderer({ cellContent, column }: { cellContent: any, column: any }) {\n return cellContent && typeof cellContent === 'object' && WrapperHelper.isVueConfig(column?.data);\n }\n}\n\n// Expose wrapper methods on window.bryntum\nwindow.bryntum = window.bryntum || {};\nwindow.bryntum.vue = {\n isVueConfig : WrapperHelper.isVueConfig,\n handleVueContent : WrapperHelper.handleVueContent\n};\n"],"names":["WrapperHelper","clsName","msg","containerParam","prop","str","s","config","me","widgetData","emit","element","processCellContent","processEventContent","processWidgetContent","hasFrameworkRenderer","toRaw","props","vProps","key","instanceClass","instanceName","isValidProp","propName","configNames","propertyConfigNames","propertyNames","featureNames","eventNames","eventName","bryntumConfig","params","data","instance","dataStores","projectStores","storeName","store","cfg","Widget","configOrInstance","value","isConfig","features","featureName","feature","watcher","newValue","widget","html","is","bind","vue","on","vueComponent","teleports","to","id","nextTick","hasTeleports","parentView","rendererConfig","domConfig","targetElement","isRelease","wrap","returnValue","domConfigData","wrapData","assignmentRecord","eventRecord","isRecurring","rendererData","rendererHtml","record","column","cellElement","row","renderElement","cellContent"],"mappings":"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"}
1
+ {"version":3,"file":"WrapperHelper.js","sources":["../../src/helper/WrapperHelper.ts"],"sourcesContent":["/**\n * Vue 3 widget helper\n */\n\nimport { type ComponentInternalInstance, nextTick } from 'vue';\nimport { type VueConfig, Widget } from '@bryntum/core-thin';\n\ndeclare global {\n interface Window {\n bryntum: {\n isTestEnv?: boolean;\n vue?: {\n isVueConfig?: (config: any) => boolean;\n handleVueContent?: (widget: Widget, html: VueConfig) => void;\n };\n };\n }\n}\n\ninterface RenderElement extends HTMLElement {\n vueKey: string;\n}\n\nexport type Data = Record<string, unknown>;\n\ntype SuppressNew<T> = { [K in keyof T]: T[ K ] }\n\ntype AnyConstructor<\n Instance extends object = object,\n Static extends object = object\n> = (new (...input: any[]) => Instance) & SuppressNew<Static>\n\ntype AnyWidget = AnyConstructor<any, any>;\n\ntype RenderData = {\n record: any,\n row: any,\n column: any,\n cellElement: RenderElement\n}\n\ntype VueTeleportConfig = {\n vue: boolean,\n is: string,\n bind?: object\n on?: object\n}\n\nexport type WidgetData<T extends AnyWidget> = {\n instanceClass: T,\n instanceName: string\n isView?: boolean,\n dataStores?: object,\n projectStores?: boolean,\n configNames: string[]\n propertyConfigNames: string[]\n propertyNames: string[]\n eventNames: string[]\n featureNames?: string[]\n}\n\nexport type WidgetConfig<T extends AnyWidget> = {\n me?: ComponentInternalInstance;\n widgetData: WidgetData<T>,\n emit: (...args: any[]) => any\n element: HTMLDivElement;\n processCellContent?: Function;\n processEventContent?: Function;\n processWidgetContent?: Function;\n hasFrameworkRenderer?: Function;\n toRaw?: Function\n}\n\nexport type BryntumConfig = Record<string, any> & {\n vueComponent?: Object,\n listeners: Record<string, Function>,\n features: {},\n processCellContent: Function,\n processEventContent: Function,\n processWidgetContent: Function;\n hasFrameworkRenderer: Function\n};\n\nexport class WrapperHelper {\n\n /**\n * Development warning. Showed when environment is set to 'development'\n * @param {String} clsName vue component instance\n * @param {String} msg console message\n */\n static devWarning(clsName: string, msg: string) {\n // @ts-ignore\n if (window.bryntum?.isTestEnv || process.env.NODE_ENV === 'development') {\n console.warn(`Bryntum${clsName}Component development warning!\\n${msg}\\n` +\n 'Please check Vue integration guide: https://bryntum.com/products/grid/docs/guide/Grid/integration/vue/guide'\n );\n }\n }\n\n static devWarningContainer(clsName: string, containerParam: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${containerParam}\" parameter for configuration is not recommended.\\n` +\n 'Widget is placed automatically inside it\\'s container element.\\n' +\n `Solution: remove \"${containerParam}\" parameter from configuration.`\n );\n }\n\n static devWarningConfigProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `Using \"${prop}\" parameter for configuration is not recommended.\\n` +\n `Solution: Use separate parameter for each \"${prop}\" value to enable reactive updates of the API instance`\n );\n }\n\n static devWarningUpdateProp(clsName: string, prop: string) {\n WrapperHelper.devWarning(clsName,\n `\"${prop}\" is a static config option for component constructor only. No runtime changes are supported!`\n );\n }\n\n static camelize(str: string) {\n return str.replace(/-./g, s => (s[1] || '').toUpperCase());\n }\n\n static capitalize(str: string) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n }\n\n /**\n * Returns `true` if the provided configuration object is valid for Vue processing.\n * @param {*} config\n * @returns {Boolean}\n */\n static isVueConfig(config: any): boolean {\n return Boolean(config?.vue);\n }\n\n /**\n * Creates bryntum component config from vue component\n * @param {Object} context\n * @param {Object} context.me vue component instance\n * @param {Object} context.widgetData reference to data\n * @param {Function} context.emit reference to emit\n * @param {Object} context.element HTML element\n * @param {Function} context.processCellContent cell renderer method\n * @param {Function} context.processEventContent event renderer method\n * @param {Function} context.processWidgetContent widget renderer method\n * @param {Function} context.hasFrameworkRenderer checks presence of vue renderer\n * @param {Function} context.toRaw Vue fn to unwrap reactive object\n * @returns {Object} config object\n */\n static createConfig<T extends AnyWidget>({\n me,\n widgetData,\n emit,\n element,\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer,\n toRaw\n }: WidgetConfig<T>) {\n\n const\n props: Record<string, any> = {},\n vProps = me!.vnode!.props! || {};\n\n for (const key of Object.keys(vProps)) {\n // Convert possible kebab keys to camelCase\n props[this.camelize(key)] = vProps[key];\n }\n\n const\n {\n instanceClass,\n instanceName\n } = widgetData,\n isValidProp = (propName: string) => props[propName] !== undefined,\n configNames = (widgetData.configNames || []).filter(isValidProp),\n propertyConfigNames = (widgetData.propertyConfigNames || []).filter(isValidProp),\n propertyNames = (widgetData.propertyNames || []).filter(isValidProp),\n featureNames = (widgetData.featureNames || []).filter(isValidProp),\n // Disable event listeners for onProps, which are duplicating functions with preventable result support\n eventNames = widgetData.eventNames.filter(eventName => !isValidProp(eventName) && !props[`on${this.capitalize(eventName)}`]),\n bryntumConfig = {\n vueComponent : me,\n listeners : {},\n features : {},\n processCellContent,\n processEventContent,\n processWidgetContent,\n hasFrameworkRenderer\n } as BryntumConfig;\n\n // Setup events listeners\n eventNames.forEach(eventName => bryntumConfig.listeners[eventName] = (params: any) => emit(eventName, params));\n\n // Setup configs\n [\n ...configNames,\n ...propertyConfigNames,\n ...featureNames\n ].forEach(propName => {\n WrapperHelper.applyPropValue(bryntumConfig, propName, props[propName], true, toRaw);\n if (['features', 'config'].includes(propName)) {\n WrapperHelper.devWarningConfigProp(instanceClass.$name, propName);\n }\n });\n\n // Add vue wrapper class name\n bryntumConfig.cls = (bryntumConfig.cls || '') + ` b-vue-${instanceClass.$name.toLowerCase()}-container`;\n\n // Prepare watch arrays\n widgetData.configNames = configNames;\n widgetData.propertyNames = [\n ...configNames,\n ...propertyNames,\n ...propertyConfigNames,\n ...featureNames\n ];\n\n // Cleanup unused instance arrays\n widgetData.eventNames = [];\n widgetData.propertyConfigNames = [];\n widgetData.featureNames = [];\n\n // If component has no container specified in config then use adopt to Wrapper's element\n const\n containerParam = [\n 'adopt',\n 'appendTo',\n 'insertAfter',\n 'insertBefore'\n ].find((prop: string) => bryntumConfig[prop]);\n\n if (!containerParam) {\n if (instanceName === 'Button') {\n // Button should always be <a> or <button> inside owner element\n bryntumConfig.appendTo = element;\n }\n else {\n bryntumConfig.adopt = element;\n }\n }\n else {\n WrapperHelper.devWarningContainer(instanceClass.$name, containerParam);\n }\n return bryntumConfig;\n }\n\n /**\n * Setup store events relay\n * @param {Object} data reference to data\n * @param {Object} instance bryntum widget instance\n */\n static relayStores(data: any, instance: any) {\n const { dataStores, projectStores } = data;\n\n if (dataStores) {\n Object.keys(dataStores).forEach(storeName => {\n const store = projectStores ? instance.project[storeName] : instance[storeName];\n if (store) {\n\n\n if (store.syncDataOnLoad == null && !store.readUrl && !store.lazyLoad && (!store.crudManager || !store.crudManager.loadUrl)) {\n store.syncDataOnLoad = true;\n }\n\n\n\n // Makes relaying store events configurable but off by default\n if (instance && instance.relayStoreEvents) {\n store.relayAll(instance, dataStores[storeName]);\n }\n }\n });\n delete data.dataStores;\n }\n }\n\n /**\n * Creates bryntum Widget from vue component\n * @param {Object} config\n * @param {Object} config.me vue component instance\n * @param {Object} config.widgetData reference to data\n * @param {Function} config.emit reference to emit\n * @param {Object} config.element HTML element\n * @param {Function} config.processCellContent cell renderer method\n * @param {Function} config.hasFrameworkRenderer check the presence of vue renderer\n * @param {Function} config.toRaw Vue fn to unwrap reactive object\n * @returns {Object} widget object\n */\n static createWidget<T extends AnyWidget>(config: WidgetConfig<T>): InstanceType<T> {\n const\n { instanceClass } = config.widgetData,\n cfg = WrapperHelper.createConfig(config);\n return (instanceClass.$name === 'Widget' ? Widget.create(cfg) : new instanceClass(cfg)) as InstanceType<T>;\n }\n\n /**\n * Applies property value to Bryntum config or instance.\n * @param {Object} configOrInstance target object\n * @param {String} prop property name\n * @param {Object} value value\n * @param {Boolean} [isConfig] config setting mode\n * @param {Function} [toRaw] Vue fn to unwrap reactive object\n */\n static applyPropValue(configOrInstance: any, prop: string, value: any, isConfig = true, toRaw?: Function) {\n\n if (prop === 'project') {\n // Allow use ProjectModel component as project\n if (value && typeof value === 'object') {\n configOrInstance[prop] = value.instance ? value.instance.value || value.instance : value;\n }\n }\n else if (prop === 'features' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, `${key}Feature`, value[key], isConfig, toRaw));\n }\n else if (prop === 'config' && typeof value === 'object') {\n Object.keys(value).forEach(key => WrapperHelper.applyPropValue(configOrInstance, key, value[key], isConfig, toRaw));\n }\n else if (prop === 'columns' && !isConfig) {\n configOrInstance['columns'].data = value;\n }\n else if (prop.endsWith('Feature')) {\n const\n features = configOrInstance['features'],\n featureName = prop.replace('Feature', '');\n if (isConfig) {\n features[featureName] = value;\n }\n else {\n const feature = features[featureName];\n if (feature) {\n feature.setConfig(value);\n }\n }\n }\n else {\n configOrInstance[prop] = toRaw ? toRaw(value) : value;\n }\n }\n\n /**\n * Creates watches for vue component properties\n * @param {Object} me vue component instance\n * @param {Object} instance bryntum widget instance\n * @param {Object} props reference to props\n * @param {Object} data reference to data\n * @param {Function} watcher watch method reference (Accepts: prop and newValue)\n */\n static watchProps<T extends AnyWidget>(\n instance: InstanceType<T>,\n data: WidgetData<T>,\n watcher: (prop: string, callback: (value: any) => void) => void) {\n const\n {\n configNames,\n propertyNames,\n instanceClass\n } = data;\n\n propertyNames.forEach(prop => watcher(prop, newValue => {\n const value = Array.isArray(newValue) ? newValue.slice() : newValue;\n WrapperHelper.applyPropValue(instance, prop, value, false);\n\n // Check if property is a config and notify\n if (configNames.includes(prop)) {\n WrapperHelper.devWarningUpdateProp(instanceClass.$name, prop);\n }\n }));\n\n // Cleanup unused instance arrays\n data.configNames = [];\n data.propertyNames = [];\n }\n\n /**\n * Called from Widget.js to add the Vue component to teleports\n * @param {Object} context\n * @param {Widget} context.widget Widget which content is rendered by the Vue component\n * @param {Object} context.html Object containing the Vue component properties and event listeners\n */\n static processWidgetContent({ widget, html }: { widget: Widget; html: VueTeleportConfig }) {\n const\n { is, bind = {}, vue, on = {} } = html,\n // @ts-ignore\n { vueComponent } = this,\n { teleports : { value : teleports } } = vueComponent.provides,\n { contentElement : to, id } = widget;\n\n if (vue) {\n const key = `key-${id}`;\n\n // delete the teleport with the same key if any\n if (teleports.has(key)) {\n teleports.delete(key);\n }\n\n nextTick(() => {\n teleports.set(key, { bind, on, key, is, to });\n });\n }\n }\n\n /**\n * Handles the content provided by a Vue component for the widget.\n * @param {Widget} widget Owner widget\n * @param {String} html The HTML content to be processed\n */\n static handleVueContent(widget: Widget, html: VueConfig): void {\n // Called when a Vue component is to provide the widget content\n const\n hasTeleports = (element: any) => Boolean(element.vueComponent?.provides?.teleports),\n parentView = widget.closest(hasTeleports) as any,\n // Find a view (grid, scheduler, etc.) which has `teleports` defined. It also has `processWidgetContent`\n view = parentView?.vueComponent ? parentView : Widget.query(hasTeleports);\n\n view?.processWidgetContent?.({ widget, html });\n }\n\n /**\n * Event renderer method\n * @param {Object} context\n * @param {*} context.jsx\n * @param {DomConfig} context.domConfig\n * @param {HTMLElement} context.targetElement\n * @param {Boolean} context.isRelease\n * @returns {Boolean}\n */\n static processEventContent({\n // Core passes it as jsx for React wrappers.\n // Let's rename it to a more appropriate name.\n jsx : rendererConfig,\n domConfig,\n targetElement,\n isRelease\n }: {\n jsx: { [key: string]: any },\n domConfig: any;\n isRelease: boolean;\n targetElement: HTMLElement & { vueKey: string }\n scrolling: boolean\n }) {\n\n let wrap: any = targetElement,\n returnValue = false;\n\n // @ts-ignore\n const domConfigData = this.isVertical ? domConfig?.elementData?.renderData : domConfig?.elementData;\n\n if (WrapperHelper.isVueConfig(rendererConfig) && rendererConfig?.is) {\n if (domConfig?.dataset?.isMilestone) {\n wrap = targetElement.parentElement!.parentElement!.parentElement!;\n }\n else {\n wrap = targetElement.parentElement!.parentElement!;\n }\n const\n // Vertical nests renderData, while horizontal does not\n // @ts-ignore\n wrapData = this.isVertical ? wrap.elementData.renderData : wrap.elementData,\n { assignmentRecord } = isRelease ? domConfigData : wrapData,\n { eventRecord } = wrapData,\n { vueComponent } = this as any,\n { teleports : { value : teleports } } = vueComponent.provides,\n\n // Recurring events are handled a bit differently so get the flag\n isRecurring = eventRecord.isRecurring || eventRecord.isOccurrence,\n key = `assignment-${assignmentRecord?.id}${isRecurring ? '-' + eventRecord.id : ''}`;\n\n // Only delete the teleport if it's rendering into this specific targetElement.\n // Prevents issues when elements are reused during scrolling with LockRows feature.\n if (wrap.vueKey && teleports.get(wrap.vueKey)?.to === targetElement) {\n // Only delete if the existing teleport is rendering into this specific targetElement\n teleports.delete(wrap.vueKey);\n }\n\n const\n bind = { ...rendererConfig },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n nextTick(() => {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : targetElement,\n generation : assignmentRecord.generation\n });\n\n });\n\n wrap.vueKey = key;\n returnValue = true;\n }\n\n return returnValue;\n }\n\n /**\n * Cell renderer method\n * @param {Object} context\n * @param {RenderData} context.rendererData\n * @param {*} context.rendererHtml\n * @returns {Boolean}\n */\n static processCellContent({ rendererData, rendererHtml }: { rendererData: RenderData, rendererHtml: any }) {\n const { record, column, cellElement, row } = rendererData;\n\n // Only run for cells with vue renderers\n if (WrapperHelper.isVueConfig(column.data) && column.data?.renderer) {\n const\n // `this` is a caller component\n { vueComponent } = this as any,\n // `teleports` is javascript Map object\n { teleports : { value : teleports } } = vueComponent.provides,\n key = `${column.id}-${record.id}`,\n renderElement = column.tree\n ? cellElement.querySelector('.b-tree-cell-value')\n : cellElement;\n\n // If the cell already has a teleport, release it\n if (cellElement.vueKey) {\n teleports.delete(cellElement.vueKey);\n }\n\n const\n bind = { ...rendererHtml },\n { is, on = {} } = bind;\n\n delete bind.is;\n delete bind.on;\n\n // Create new teleport\n nextTick(() => {\n // Only teleport if the row is still used for the same record. Since this happens async, we might have\n // scrolled over the entire block of rows since the render\n if (row.id === record.id) {\n teleports.set(key, {\n bind,\n key,\n is,\n on,\n to : renderElement,\n generation : record.generation\n });\n }\n });\n\n // Link cell to the teleport, to be able to release it above\n cellElement.vueKey = key;\n }\n }\n\n /**\n *\n * @param {Object} context\n * @param {*} context.cellContent Content to be rendered in cell (set by renderer)\n * @param {*} context.column Column being rendered\n * @returns {Boolean} `true` if there is a Vue Renderer in this cell, `false` otherwise\n */\n static hasFrameworkRenderer({ cellContent, column }: { cellContent: any, column: any }) {\n return cellContent && typeof cellContent === 'object' && WrapperHelper.isVueConfig(column?.data);\n }\n}\n\n// Expose wrapper methods on window.bryntum\nwindow.bryntum = window.bryntum || {};\nwindow.bryntum.vue = {\n isVueConfig : WrapperHelper.isVueConfig,\n handleVueContent : WrapperHelper.handleVueContent\n};\n"],"names":["WrapperHelper","clsName","msg","containerParam","prop","str","s","config","me","widgetData","emit","element","processCellContent","processEventContent","processWidgetContent","hasFrameworkRenderer","toRaw","props","vProps","key","instanceClass","instanceName","isValidProp","propName","configNames","propertyConfigNames","propertyNames","featureNames","eventNames","eventName","bryntumConfig","params","data","instance","dataStores","projectStores","storeName","store","cfg","Widget","configOrInstance","value","isConfig","features","featureName","feature","watcher","newValue","widget","html","is","bind","vue","on","vueComponent","teleports","to","id","nextTick","hasTeleports","parentView","rendererConfig","domConfig","targetElement","isRelease","wrap","returnValue","domConfigData","wrapData","assignmentRecord","eventRecord","isRecurring","rendererData","rendererHtml","record","column","cellElement","row","renderElement","cellContent"],"mappings":"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"}
package/lib/index.js CHANGED
@@ -3,10 +3,10 @@ import { _ as m } from "./chunks/COu_0bRA.js";
3
3
  import { _ as s } from "./chunks/BD-Hg3lY.js";
4
4
  import { _ as n } from "./chunks/ga9EWphl.js";
5
5
  import { _ as f } from "./chunks/fiUsZcET.js";
6
- import { _ as x } from "./chunks/dnU2pCDo.js";
7
- import { _ } from "./chunks/Cz79kyyi.js";
6
+ import { _ as x } from "./chunks/6EoHCTY_.js";
7
+ import { _ } from "./chunks/w9YPCarT.js";
8
8
  import { _ as l } from "./chunks/C8aIKZog.js";
9
- import { _ as i } from "./chunks/DDnFIp_o.js";
9
+ import { _ as i } from "./chunks/CS2Ou_bo.js";
10
10
  import { _ as C } from "./chunks/V0ER-Huj.js";
11
11
  import { _ as S } from "./chunks/BIDAJ9KI.js";
12
12
  export {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bryntum/scheduler-vue-3-thin",
3
- "version": "7.1.2",
3
+ "version": "7.1.3",
4
4
  "description": "Vue 3 wrappers for Bryntum Scheduler JavaScript component",
5
5
  "keywords": [
6
6
  "bryntum",
@@ -2300,6 +2300,18 @@ const emit = defineEmits<{
2300
2300
  * @param {any} params.params.event.value The value being set
2301
2301
  */
2302
2302
  (e: 'beforeCellRangeEdit', params: ((event: { record: Model, field: string, value: any }) => Promise<boolean>|boolean|void)|string): Promise<boolean>|boolean|void
2303
+ /**
2304
+ * This event is triggered before a parent column is collapsed or expanded.
2305
+ * @param {string} e Event name
2306
+ * @param {object} params Event parameters
2307
+ * @param {string} params.e Event name
2308
+ * @param {object} params.params Event parameters
2309
+ * @param {object} params.params.event Event object
2310
+ * @param {Grid.view.GridBase} params.params.event.source The grid instance
2311
+ * @param {Grid.column.Column} params.params.event.column The column
2312
+ * @param {boolean} params.params.event.collapsed `true` if the column is being collapsed, `false` if expanded
2313
+ */
2314
+ (e: 'beforeColumnCollapseToggle', params: ((event: { source: GridBase, column: Column, collapsed: boolean }) => void)|string): void
2303
2315
  /**
2304
2316
  * This event is fired prior to starting a column drag gesture. The drag is canceled if a listener returns `false`.
2305
2317
  * @param {string} e Event name
@@ -2821,12 +2833,12 @@ const emit = defineEmits<{
2821
2833
  * @param {string} params.e Event name
2822
2834
  * @param {object} params.params Event parameters
2823
2835
  * @param {object} params.params.event Event object
2824
- * @param {Grid.view.Grid} params.params.event.source The firing Grid instance.
2825
- * @param {Grid.row.Row} params.params.event.row The row about to be rendered.
2826
- * @param {Core.data.Model} params.params.event.record The record for the row.
2827
- * @param {number} params.params.event.recordIndex The zero-based index of the record.
2836
+ * @param {Grid.view.GridBase} params.params.event.source The firing Grid instance
2837
+ * @param {Grid.row.Row} params.params.event.row The row about to be rendered
2838
+ * @param {Core.data.Model} params.params.event.record The record for the row
2839
+ * @param {number} params.params.event.recordIndex The zero-based index of the record
2828
2840
  */
2829
- (e: 'beforeRenderRow', params: ((event: { source: Grid, row: Row, record: Model, recordIndex: number }) => void)|string): void
2841
+ (e: 'beforeRenderRow', params: ((event: { source: GridBase, row: Row, record: Model, recordIndex: number }) => void)|string): void
2830
2842
  /**
2831
2843
  * Grid rows are about to be rendered
2832
2844
  * @param {string} e Event name
@@ -2834,9 +2846,9 @@ const emit = defineEmits<{
2834
2846
  * @param {string} params.e Event name
2835
2847
  * @param {object} params.params Event parameters
2836
2848
  * @param {object} params.params.event Event object
2837
- * @param {Grid.view.Grid} params.params.event.source This grid.
2849
+ * @param {Grid.view.GridBase} params.params.event.source This grid.
2838
2850
  */
2839
- (e: 'beforeRenderRows', params: ((event: { source: Grid }) => void)|string): void
2851
+ (e: 'beforeRenderRows', params: ((event: { source: GridBase }) => void)|string): void
2840
2852
  /**
2841
2853
  * This event fires before row collapse is started.
2842
2854
  * ...
@@ -3193,6 +3205,18 @@ const emit = defineEmits<{
3193
3205
  * @param {Core.data.Model} params.params.event.record The record which has been collapsed.
3194
3206
  */
3195
3207
  (e: 'collapseNode', params: ((event: { source: Grid, record: Model }) => void)|string): void
3208
+ /**
3209
+ * This event is triggered after a parent column has been collapsed or expanded.
3210
+ * @param {string} e Event name
3211
+ * @param {object} params Event parameters
3212
+ * @param {string} params.e Event name
3213
+ * @param {object} params.params Event parameters
3214
+ * @param {object} params.params.event Event object
3215
+ * @param {Grid.view.GridBase} params.params.event.source The Grid instance
3216
+ * @param {Grid.column.Column} params.params.event.column The column being toggled
3217
+ * @param {boolean} params.params.event.collapsed `true` if the column is now collapsed, `false` if expanded
3218
+ */
3219
+ (e: 'columnCollapseToggle', params: ((event: { source: GridBase, column: Column, collapsed: boolean }) => void)|string): void
3196
3220
  /**
3197
3221
  * This event is fired when a column is being dragged, and you can set the `valid` flag on the `context` object
3198
3222
  * to indicate whether the drop position is valid or not.
@@ -3321,14 +3345,14 @@ const emit = defineEmits<{
3321
3345
  * @param {string} params.e Event name
3322
3346
  * @param {object} params.params Event parameters
3323
3347
  * @param {object} params.params.event Event object
3324
- * @param {Grid.view.Grid} params.params.event.source Owning grid
3348
+ * @param {Grid.view.GridBase} params.params.event.source Owning grid
3325
3349
  * @param {Core.data.Store} params.params.event.store The originating store
3326
3350
  * @param {'remove','removeAll','add','clearchanges','filter','update','dataset','replace'} params.params.event.action Name of action which triggered the change. May be one of: * `'remove'` * `'removeAll'` * `'add'` * `'clearchanges'` * `'filter'` * `'update'` * `'dataset'` * `'replace'`
3327
3351
  * @param {Core.data.Model} params.params.event.record Changed record, for actions that affects exactly one record (`'update'`)
3328
3352
  * @param {Core.data.Model[]} params.params.event.records Changed records, passed for all actions except `'removeAll'`
3329
3353
  * @param {object} params.params.event.changes Passed for the `'update'` action, info on which record fields changed
3330
3354
  */
3331
- (e: 'dataChange', params: ((event: { source: Grid, store: Store, action: 'remove'|'removeAll'|'add'|'clearchanges'|'filter'|'update'|'dataset'|'replace', record: Model, records: Model[], changes: object }) => void)|string): void
3355
+ (e: 'dataChange', params: ((event: { source: GridBase, store: Store, action: 'remove'|'removeAll'|'add'|'clearchanges'|'filter'|'update'|'dataset'|'replace', record: Model, records: Model[], changes: object }) => void)|string): void
3332
3356
  /**
3333
3357
  * Fired when the range of dates encapsulated by the UI changes. This will be when
3334
3358
  * moving a view in time by reconfiguring its [timeAxis](https://bryntum.com/products/scheduler/docs/api/Scheduler/view/TimelineBase#config-timeAxis). This will happen
@@ -4519,12 +4543,12 @@ const emit = defineEmits<{
4519
4543
  * @param {string} params.e Event name
4520
4544
  * @param {object} params.params Event parameters
4521
4545
  * @param {object} params.params.event Event object
4522
- * @param {Grid.view.Grid} params.params.event.source The firing Grid instance.
4523
- * @param {Grid.row.Row} params.params.event.row The row that has been rendered.
4524
- * @param {Core.data.Model} params.params.event.record The record for the row.
4525
- * @param {number} params.params.event.recordIndex The zero-based index of the record.
4546
+ * @param {Grid.view.GridBase} params.params.event.source The firing Grid instance
4547
+ * @param {Grid.row.Row} params.params.event.row The row that has been rendered
4548
+ * @param {Core.data.Model} params.params.event.record The record for the row
4549
+ * @param {number} params.params.event.recordIndex The zero-based index of the record
4526
4550
  */
4527
- (e: 'renderRow', params: ((event: { source: Grid, row: Row, record: Model, recordIndex: number }) => void)|string): void
4551
+ (e: 'renderRow', params: ((event: { source: GridBase, row: Row, record: Model, recordIndex: number }) => void)|string): void
4528
4552
  /**
4529
4553
  * Grid rows have been rendered
4530
4554
  * @param {string} e Event name
@@ -4532,9 +4556,9 @@ const emit = defineEmits<{
4532
4556
  * @param {string} params.e Event name
4533
4557
  * @param {object} params.params Event parameters
4534
4558
  * @param {object} params.params.event Event object
4535
- * @param {Grid.view.Grid} params.params.event.source This grid.
4559
+ * @param {Grid.view.GridBase} params.params.event.source This grid.
4536
4560
  */
4537
- (e: 'renderRows', params: ((event: { source: Grid }) => void)|string): void
4561
+ (e: 'renderRows', params: ((event: { source: GridBase }) => void)|string): void
4538
4562
  /**
4539
4563
  * Fired when the encapsulating element of a Widget resizes *only when [monitorResize](https://bryntum.com/products/scheduler/docs/api/Core/widget/Widget#config-monitorResize) is `true`*.
4540
4564
  * @param {string} e Event name
@@ -5004,10 +5028,10 @@ const emit = defineEmits<{
5004
5028
  * @param {string} params.e Event name
5005
5029
  * @param {object} params.params Event parameters
5006
5030
  * @param {object} params.params.event Event object
5007
- * @param {Grid.view.Grid} params.params.event.source The firing Grid instance.
5031
+ * @param {Grid.view.GridBase} params.params.event.source The firing Grid instance.
5008
5032
  * @param {number} params.params.event.scrollTop The vertical scroll position.
5009
5033
  */
5010
- (e: 'scroll', params: ((event: { source: Grid, scrollTop: number }) => void)|string): void
5034
+ (e: 'scroll', params: ((event: { source: GridBase, scrollTop: number }) => void)|string): void
5011
5035
  /**
5012
5036
  * Fires on owner when the scroll button is clicked, return `false` to prevent default scroll behavior
5013
5037
  * @param {string} e Event name
@@ -5163,10 +5187,10 @@ const emit = defineEmits<{
5163
5187
  * @param {string} params.e Event name
5164
5188
  * @param {object} params.params Event parameters
5165
5189
  * @param {object} params.params.event Event object
5166
- * @param {Grid.view.Grid} params.params.event.source The firing Grid instance
5190
+ * @param {Grid.view.GridBase} params.params.event.source The firing Grid instance
5167
5191
  * @param {Grid.view.SubGrid} params.params.event.subGrid The sub grid instance
5168
5192
  */
5169
- (e: 'subGridCollapse', params: ((event: { source: Grid, subGrid: SubGrid }) => void)|string): void
5193
+ (e: 'subGridCollapse', params: ((event: { source: GridBase, subGrid: SubGrid }) => void)|string): void
5170
5194
  /**
5171
5195
  * Fires after a sub grid is expanded.
5172
5196
  * @param {string} e Event name
@@ -5174,10 +5198,10 @@ const emit = defineEmits<{
5174
5198
  * @param {string} params.e Event name
5175
5199
  * @param {object} params.params Event parameters
5176
5200
  * @param {object} params.params.event Event object
5177
- * @param {Grid.view.Grid} params.params.event.source The firing Grid instance
5201
+ * @param {Grid.view.GridBase} params.params.event.source The firing Grid instance
5178
5202
  * @param {Grid.view.SubGrid} params.params.event.subGrid The sub grid instance
5179
5203
  */
5180
- (e: 'subGridExpand', params: ((event: { source: Grid, subGrid: SubGrid }) => void)|string): void
5204
+ (e: 'subGridExpand', params: ((event: { source: GridBase, subGrid: SubGrid }) => void)|string): void
5181
5205
  /**
5182
5206
  * Triggered for click on a tick cell. Only triggered if the TreeSummary feature is configured with
5183
5207
  * `[enableMouseEvents](https://bryntum.com/products/scheduler/docs/api/Scheduler/feature/TreeSummary#config-enableMouseEvents): true`.
@@ -5831,6 +5855,7 @@ const widgetData = {
5831
5855
  'onBeforeCellEditStart',
5832
5856
  'onBeforeCellRangeDelete',
5833
5857
  'onBeforeCellRangeEdit',
5858
+ 'onBeforeColumnCollapseToggle',
5834
5859
  'onBeforeColumnDragStart',
5835
5860
  'onBeforeColumnDropFinalize',
5836
5861
  'onBeforeColumnResize',
@@ -5896,6 +5921,7 @@ const widgetData = {
5896
5921
  'onCellMouseOver',
5897
5922
  'onCollapse',
5898
5923
  'onCollapseNode',
5924
+ 'onColumnCollapseToggle',
5899
5925
  'onColumnDrag',
5900
5926
  'onColumnDragStart',
5901
5927
  'onColumnDrop',
@@ -6154,6 +6180,7 @@ const widgetData = {
6154
6180
  'beforeCellEditStart',
6155
6181
  'beforeCellRangeDelete',
6156
6182
  'beforeCellRangeEdit',
6183
+ 'beforeColumnCollapseToggle',
6157
6184
  'beforeColumnDragStart',
6158
6185
  'beforeColumnDropFinalize',
6159
6186
  'beforeColumnResize',
@@ -6219,6 +6246,7 @@ const widgetData = {
6219
6246
  'cellMouseOver',
6220
6247
  'collapse',
6221
6248
  'collapseNode',
6249
+ 'columnCollapseToggle',
6222
6250
  'columnDrag',
6223
6251
  'columnDragStart',
6224
6252
  'columnDrop',