@gdacm/grafana-items 0.1.19 → 0.1.20

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.js CHANGED
@@ -20,7 +20,7 @@ var asJson = (obj) => {
20
20
  return sortKeys(obj);
21
21
  };
22
22
  //#endregion
23
- //#region src/utils/typesDefinition.js
23
+ //#region src/utils/MetaClassRegistry.js
24
24
  /**
25
25
  * @typedef {import("@gdacm/base-types").GenericMetaOptions} GenericMetaOptions
26
26
  */
@@ -29,72 +29,115 @@ var asJson = (obj) => {
29
29
  * @typedef {import("@gdacm/base-types").MetaConstructor<T>} MetaConstructor
30
30
  */
31
31
  /**
32
- * @typedef {Object} MetaClassInfo
33
- * @property {string[]} methods - The methods defined for the class
34
- * @property {((instance: GrafanaItem)=>void)[]} onInits - The onInit functions defined for the class
35
- * @property {string|undefined} parentName - The name of the parent class
36
- * @property {Function|undefined} parent - The parent class constructor
37
- * @property {String[]} typeNamesToInclude - The type names to include in the generated type definition
32
+ * @template {Object} T
33
+ * @template {T} C
34
+ * @typedef {{
35
+ * methods: string[],
36
+ * onInits: ((instance: C)=>void)[],
37
+ * parentName: string|undefined,
38
+ * parent: MetaConstructor<T>|undefined,
39
+ * typeNamesToInclude: string[]
40
+ * }} MetaClassInfo
38
41
  */
39
42
  /**
40
- * @type {Map<typeof GrafanaItem, MetaClassInfo>}
43
+ * @template {Object} T
41
44
  */
42
- var types = /* @__PURE__ */ new Map();
45
+ var MetaClassRegistry = class {
46
+ constructor() {
47
+ /**
48
+ * @type {Map<MetaConstructor<T>, unknown>}
49
+ */
50
+ this.types = /* @__PURE__ */ new Map();
51
+ }
52
+ /**
53
+ * @template {T} C
54
+ * @param {MetaConstructor<C>} cls
55
+ * @param {MetaClassInfo<T,C>} info
56
+ */
57
+ set(cls, info) {
58
+ this.types.set(cls, info);
59
+ }
60
+ /**
61
+ * @template {T} C
62
+ * @param {MetaConstructor<C>} cls
63
+ * @returns {MetaClassInfo<T,C>}
64
+ */
65
+ get(cls) {
66
+ const info = this.types.get(cls);
67
+ if (info === void 0) throw new Error(`MetaClassInfo not found for class ${cls.name}`);
68
+ return info;
69
+ }
70
+ /**
71
+ * @template {T} C
72
+ * @param {MetaConstructor<C>} cls
73
+ * @returns {boolean}
74
+ */
75
+ has(cls) {
76
+ return this.types.has(cls);
77
+ }
78
+ /**
79
+ * @returns {MetaConstructor<T>[]} The keys of the types map
80
+ */
81
+ keys() {
82
+ return [...this.types.keys()];
83
+ }
84
+ };
85
+ //#endregion
86
+ //#region src/utils/typesReference.js
43
87
  /**
44
- * @param {typeof GrafanaItem} cls
88
+ * @typedef {import("@gdacm/base-types").GenericMetaOptions} GenericMetaOptions
89
+ */
90
+ /**
91
+ * @template T
92
+ * @typedef {import("@gdacm/base-types").MetaConstructor<T>} MetaConstructor
45
93
  */
46
- function defineClass(cls) {
47
- if (!types.has(cls)) {
48
- /** @type {Function|undefined} */
49
- let parent = Object.getPrototypeOf(cls);
50
- if (parent && !parent.name) parent = void 0;
51
- /** @type {((instance: GrafanaItem)=>void)[]} */
52
- let onInitsParent = [];
53
- if (parent && parent.name) onInitsParent = getMetaClassInfo(parent).onInits;
54
- /** @type {MetaClassInfo} */
55
- const metaClassInfo = {
56
- methods: [],
57
- onInits: [...onInitsParent],
58
- parentName: parent?.name,
59
- parent,
60
- typeNamesToInclude: []
61
- };
62
- cls.prototype._onInit = function() {
63
- for (const onInit of metaClassInfo.onInits) onInit(this);
64
- };
65
- types.set(cls, metaClassInfo);
66
- }
67
- return new GrafanaItemClassBuilder(cls);
68
- }
69
94
  /**
70
- *
71
- * @param {typeof GrafanaItem} cls
72
- * @returns {MetaClassInfo}
95
+ * @template {Object} T
96
+ * @template {T} C
97
+ * @typedef {import("./MetaClassRegistry.js").MetaClassInfo<T,C>} MetaClassInfo
73
98
  */
74
- function getMetaClassInfo(cls) {
75
- const metaClassInfo = types.get(cls);
76
- if (metaClassInfo === void 0) throw new Error(`MetaClassInfo not found for class ${cls.name}`);
77
- return metaClassInfo;
78
- }
79
99
  /**
80
- * @param {typeof GrafanaItem} cls
81
- * @param {string} name
100
+ * @type {MetaClassRegistry<GrafanaItem>}
82
101
  */
83
- function hasPrototype(cls, name) {
84
- return cls.prototype[name] !== void 0;
85
- }
102
+ var types = new MetaClassRegistry();
103
+ /**
104
+ * @template {GrafanaItem} C
105
+ * @param {MetaConstructor<C>} cls
106
+ * @returns {boolean} Whether the type exists in the map
107
+ */
108
+ var hasType = (cls) => types.has(cls);
109
+ /**
110
+ * @template {GrafanaItem} C
111
+ * @param {MetaConstructor<C>} cls
112
+ * @returns {MetaClassInfo<GrafanaItem,C>}
113
+ */
114
+ var getMetaClassInfo = (cls) => types.get(cls);
115
+ /**
116
+ * @template {GrafanaItem} C
117
+ * @param {MetaConstructor<C>} cls
118
+ * @param {MetaClassInfo<GrafanaItem,C>} metaClassInfo
119
+ */
120
+ var setTypeMetaClassInfo = (cls, metaClassInfo) => types.set(cls, metaClassInfo);
121
+ /**
122
+ * @template {GrafanaItem} C
123
+ * @param {MetaConstructor<C>} cls
124
+ * @returns {Record<string, unknown>}
125
+ */
126
+ var getPrototype = (cls) => cls.prototype;
86
127
  /**
87
- * @param {typeof GrafanaItem} cls
128
+ * @template {GrafanaItem} C
129
+ * @param {MetaConstructor<C>} cls
88
130
  * @param {string} name
89
131
  * @param {Function} value
90
132
  */
91
133
  function setPrototype(cls, name, value) {
92
- cls.prototype[name] = value;
134
+ getPrototype(cls)[name] = value;
93
135
  }
94
136
  /**
95
- * @param {typeof GrafanaItem} cls
137
+ * @template {GrafanaItem} C
138
+ * @param {MetaConstructor<C>} cls
96
139
  * @param {string} name
97
- * @param {(self: GrafanaItem) => any} getter
140
+ * @param {(self: C) => any} getter
98
141
  */
99
142
  function setGetter(cls, name, getter) {
100
143
  Object.defineProperty(cls.prototype, name, {
@@ -106,9 +149,10 @@ function setGetter(cls, name, getter) {
106
149
  });
107
150
  }
108
151
  /**
109
- * @param {typeof GrafanaItem} cls
152
+ * @template {GrafanaItem} C
153
+ * @param {MetaConstructor<C>} cls
110
154
  * @param {string} name
111
- * @param {(instance: GrafanaItem, value: any) => void} setter
155
+ * @param {(instance: C, value: any) => void} setter
112
156
  */
113
157
  function setSetter(cls, name, setter) {
114
158
  Object.defineProperty(cls.prototype, name, {
@@ -120,10 +164,11 @@ function setSetter(cls, name, setter) {
120
164
  });
121
165
  }
122
166
  /**
123
- * @param {typeof GrafanaItem} cls
167
+ * @template {GrafanaItem} C
168
+ * @param {MetaConstructor<C>} cls
124
169
  * @param {string} name
125
- * @param {(self: GrafanaItem) => any} getter
126
- * @param {(instance: GrafanaItem, value: any) => void} setter
170
+ * @param {(self: C) => any} getter
171
+ * @param {(instance: C, value: any) => void} setter
127
172
  */
128
173
  function setGetterAndSetter(cls, name, getter, setter) {
129
174
  Object.defineProperty(cls.prototype, name, {
@@ -138,100 +183,182 @@ function setGetterAndSetter(cls, name, getter, setter) {
138
183
  });
139
184
  }
140
185
  /**
141
- * @param {typeof GrafanaItem} cls
186
+ * @template {GrafanaItem} C
187
+ * @param {MetaConstructor<C>} cls
188
+ * @param {string} typeName
189
+ */
190
+ var addTypeNameToInclude = (cls, typeName) => {
191
+ const metaClassInfo = getMetaClassInfo(cls);
192
+ if (metaClassInfo.typeNamesToInclude.includes(typeName) === false) {
193
+ if ([
194
+ "String",
195
+ "Number",
196
+ "Boolean",
197
+ "Array",
198
+ "Object"
199
+ ].indexOf(typeName) === -1) metaClassInfo.typeNamesToInclude.push(typeName);
200
+ }
201
+ };
202
+ /**
203
+ * @template {GrafanaItem} C
204
+ * @param {MetaConstructor<C>} cls
205
+ * @param {(typeof GrafanaItem)[]} [typesToInclude]
206
+ */
207
+ var addTypesToInclude = (cls, typesToInclude) => {
208
+ if (typesToInclude !== void 0) for (const type of typesToInclude) addTypeNameToInclude(cls, type.name);
209
+ };
210
+ /**
211
+ * @template {GrafanaItem} C
212
+ * @param {MetaClassInfo<GrafanaItem,C>} metaClassInfo
213
+ * @param {string} signature
214
+ */
215
+ var addSignatureOnMetaClassInfo = (metaClassInfo, signature) => {
216
+ if (metaClassInfo.methods.includes(signature) === false) metaClassInfo.methods.push(signature);
217
+ };
218
+ /**
219
+ * @template {GrafanaItem} C
220
+ * @param {MetaConstructor<C>} cls
221
+ * @param {string} signature
222
+ */
223
+ var addSignature = (cls, signature) => {
224
+ addSignatureOnMetaClassInfo(getMetaClassInfo(cls), signature);
225
+ };
226
+ /**
227
+ * @template {GrafanaItem} C
228
+ * @param {MetaConstructor<C>} cls
229
+ * @param {string} name
230
+ * @param {string} postSignature
231
+ * @param {Function} value
232
+ */
233
+ var setPrototypeWithSignature = (cls, name, postSignature, value) => {
234
+ setPrototype(cls, name, value);
235
+ addSignature(cls, `${name}${postSignature}`);
236
+ };
237
+ /**
238
+ * @template {GrafanaItem} C
239
+ * @param {MetaConstructor<C>} cls
240
+ * @param {string} name
241
+ * @param {(self: C) => any} getter
242
+ * @param {(instance: C, value: any) => void} setter
243
+ * @param {string} typeName
244
+ */
245
+ function setGetterAndSetterWithSignature(cls, name, getter, setter, typeName) {
246
+ setGetterAndSetter(cls, name, getter, setter);
247
+ addSignature(cls, `get ${name}(): ${typeName};`);
248
+ addSignature(cls, `set ${name}(value: ${typeName});`);
249
+ }
250
+ /**
251
+ * @template {GrafanaItem} C
252
+ * @param {MetaConstructor<C>} cls
253
+ * @param {string} name
254
+ * @param {(self: C) => any} getter
255
+ * @param {string} typeName
256
+ */
257
+ function setGetterWithSignature(cls, name, getter, typeName) {
258
+ setGetter(cls, name, getter);
259
+ addSignature(cls, `get ${name}(): ${typeName};`);
260
+ }
261
+ /**
262
+ * @template {GrafanaItem} C
263
+ * @param {MetaConstructor<C>} cls
264
+ * @param {string} name
265
+ * @param {(instance: C, value: any) => void} setter
266
+ * @param {string} typeName
267
+ */
268
+ function setSetterWithSignature(cls, name, setter, typeName) {
269
+ setSetter(cls, name, setter);
270
+ addSignature(cls, `set ${name}(value: ${typeName});`);
271
+ }
272
+ /**
273
+ * @template {GrafanaItem} C
274
+ * @param {MetaConstructor<C>} cls
275
+ * @param {((instance: C) => void)|undefined} onInit
276
+ */
277
+ function addOnInit(cls, onInit) {
278
+ const metaClassInfo = getMetaClassInfo(cls);
279
+ if (onInit) metaClassInfo.onInits.push(onInit);
280
+ }
281
+ //#endregion
282
+ //#region src/utils/typesDefinition.js
283
+ /**
284
+ * @typedef {import("@gdacm/base-types").GenericMetaOptions} GenericMetaOptions
285
+ */
286
+ /**
287
+ * @template T
288
+ * @typedef {import("@gdacm/base-types").MetaConstructor<T>} MetaConstructor
289
+ */
290
+ /**
291
+ * @template {GrafanaItem} C
292
+ * @param {MetaConstructor<C>} cls
142
293
  * @param {string} key
143
294
  * @param {Function} type
144
295
  * @param {Object} [option]
145
296
  * @param {string} [option.name]
146
- * @param {(instance: GrafanaItem) => void} [option.onInit]
147
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
297
+ * @param {(instance: C) => void} [option.onInit]
298
+ * @param {(metaOptions: GenericMetaOptions) => unknown} [option.onDefault]
148
299
  * @param {String} [option.typeName]
149
300
  */
150
301
  function defineValue(cls, key, type, option) {
151
- const metaClassInfo = getMetaClassInfo(cls);
152
302
  const name = option?.name ? option.name : key;
153
303
  const caseName = name.charAt(0).toUpperCase() + name.slice(1);
154
304
  const typeName = option?.typeName ? option.typeName : type.name;
155
- if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) {
156
- if ([
157
- "String",
158
- "Number",
159
- "Boolean",
160
- "Array",
161
- "Object"
162
- ].indexOf(type.name) === -1) metaClassInfo.typeNamesToInclude.push(type.name);
163
- }
164
- const setName = `set${caseName}`;
165
- if (!hasPrototype(cls, setName)) {
166
- setPrototype(
167
- cls,
168
- setName,
169
- /**
170
- * @this GrafanaItem
171
- * @template T
172
- * @param {T} value
173
- * @returns {GrafanaItem}
174
- */
175
- function(value) {
176
- return this._setValue(key, value);
177
- }
178
- );
179
- metaClassInfo.methods.push(`${setName}(${name}: ${typeName}): this;`);
180
- }
181
- if (option?.onInit) metaClassInfo.onInits.push(option.onInit);
182
- if (option?.onDefault) metaClassInfo.onInits.push(function(instance) {
183
- instance._setValue(key, option?.onDefault?.(instance.metaOptions));
184
- });
305
+ addTypeNameToInclude(cls, type.name);
306
+ setPrototypeWithSignature(
307
+ cls,
308
+ `set${caseName}`,
309
+ `(${name}: ${typeName}): this;`,
310
+ /**
311
+ * @this C
312
+ * @template T
313
+ * @param {T} value
314
+ * @returns {C}
315
+ */
316
+ function(value) {
317
+ return this._setValue(key, value);
318
+ }
319
+ );
320
+ addOnInit(cls, option?.onInit);
321
+ if (option?.onDefault) addOnInit(cls, (instance) => instance._setValue(key, option?.onDefault?.(instance.metaOptions)));
185
322
  }
186
323
  /**
187
- * @param {typeof GrafanaItem} cls
324
+ * @template {GrafanaItem} C
325
+ * @param {MetaConstructor<C>} cls
188
326
  * @param {string} key
189
327
  * @param {Function} type
190
328
  * @param {Object} [option]
191
329
  * @param {string} [option.name]
192
- * @param {(instance: GrafanaItem) => void} [option.onInit]
193
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
330
+ * @param {(instance: C) => void} [option.onInit]
331
+ * @param {(metaOptions: GenericMetaOptions) => unknown} [option.onDefault]
194
332
  * @param {String} [option.typeName]
195
333
  */
196
- function defineObject(cls, key, type, option) {
197
- const metaClassInfo = getMetaClassInfo(cls);
334
+ function defineBasicObject(cls, key, type, option) {
198
335
  const name = option?.name ? option.name : key;
199
336
  const caseName = name.charAt(0).toUpperCase() + name.slice(1);
200
337
  const typeName = option?.typeName ? option.typeName : type.name;
201
- if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) {
202
- if ([
203
- "String",
204
- "Number",
205
- "Boolean",
206
- "Array",
207
- "Object"
208
- ].indexOf(type.name) === -1) metaClassInfo.typeNamesToInclude.push(type.name);
209
- }
210
- const setName = `set${caseName}`;
211
- if (hasPrototype(cls, setName) === false) {
212
- setPrototype(
213
- cls,
214
- setName,
215
- /**
216
- * @this GrafanaItem
217
- * @template T
218
- * @param {T} value
219
- * @returns {GrafanaItem}
220
- */
221
- function(value) {
222
- return this._setObject(key, value);
223
- }
224
- );
225
- metaClassInfo.methods.push(`${setName}(${name}: ${typeName}): this;`);
226
- }
227
- setPrototype(
338
+ addTypeNameToInclude(cls, type.name);
339
+ setPrototypeWithSignature(
340
+ cls,
341
+ `set${caseName}`,
342
+ `(${name}: ${typeName}): this;`,
343
+ /**
344
+ * @this C
345
+ * @template T
346
+ * @param {T} value
347
+ * @returns {C}
348
+ */
349
+ function(value) {
350
+ return this._setObject(key, value);
351
+ }
352
+ );
353
+ setPrototypeWithSignature(
228
354
  cls,
229
355
  `with${caseName}`,
356
+ `(onWith: (item: ${typeName}) => void): this;`,
230
357
  /**
231
- * @this GrafanaItem
358
+ * @this C
232
359
  * @template {GrafanaItem} T
233
360
  * @param {(item: T) => void} onWith
234
- * @returns {GrafanaItem}
361
+ * @returns {C}
235
362
  */
236
363
  function(onWith) {
237
364
  const item = this._getObject(key);
@@ -239,83 +366,62 @@ function defineObject(cls, key, type, option) {
239
366
  return this;
240
367
  }
241
368
  );
242
- metaClassInfo.methods.push(`with${caseName}(onWith: (item: ${typeName}) => void): this;`);
243
- setGetter(cls, name, (self) => self._getObject(key));
244
- metaClassInfo.methods.push(`get ${name}(): ${typeName};`);
245
- if (option?.onInit) metaClassInfo.onInits.push(option?.onInit);
246
- if (option?.onDefault) {
247
- /**
248
- * @param {GrafanaItem} instance
249
- */
250
- const onInit = (instance) => {
251
- instance._setObject(key, option?.onDefault?.(instance.metaOptions));
252
- };
253
- metaClassInfo.onInits.push(onInit);
254
- }
369
+ setGetterWithSignature(cls, name, (self) => self._getObject(key), typeName);
370
+ addOnInit(cls, option?.onInit);
371
+ if (option?.onDefault) addOnInit(cls, (instance) => instance._setObject(key, option?.onDefault?.(instance.metaOptions)));
255
372
  }
256
373
  /**
374
+ * @template {GrafanaItem} C
257
375
  * @template {GrafanaItem} T
258
- * @param {typeof GrafanaItem} cls
376
+ * @param {MetaConstructor<C>} cls
259
377
  * @param {string} key
260
378
  * @param {MetaConstructor<T>} type
261
379
  * @param {Object} [option]
262
380
  * @param {string} [option.name]
263
- * @param {(instance: T) => void} [option.onInit]
381
+ * @param {(instance: C) => void} [option.onInit]
264
382
  * @param {(metaOptions: GenericMetaOptions) => T} [option.onDefault]
265
383
  * @param {String} [option.typeName]
266
384
  */
267
- function defineGrafanaObject(cls, key, type, option) {
268
- const metaClassInfo = getMetaClassInfo(cls);
385
+ function defineObject(cls, key, type, option) {
269
386
  const name = option?.name ? option.name : key;
270
387
  const caseName = name.charAt(0).toUpperCase() + name.slice(1);
271
388
  const typeName = option?.typeName ? option.typeName : type.name;
272
- if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) {
273
- if ([
274
- "String",
275
- "Number",
276
- "Boolean",
277
- "Array",
278
- "Object"
279
- ].indexOf(type.name) === -1) metaClassInfo.typeNamesToInclude.push(type.name);
280
- }
281
- const setName = `set${caseName}`;
282
- if (hasPrototype(cls, setName) === false) {
283
- setPrototype(
284
- cls,
285
- setName,
286
- /**
287
- * @this GrafanaItem
288
- * @param {T} value
289
- * @returns {GrafanaItem}
290
- */
291
- function(value) {
292
- return this._setGrafanaObject(key, type, value);
293
- }
294
- );
295
- metaClassInfo.methods.push(`${setName}(${name}: ${typeName}): this;`);
296
- }
297
- const setNewName = `setNew${caseName}`;
298
- setPrototype(
389
+ addTypeNameToInclude(cls, type.name);
390
+ setPrototypeWithSignature(
299
391
  cls,
300
- setNewName,
392
+ `set${caseName}`,
393
+ `(${name}: ${typeName}): this;`,
301
394
  /**
302
- * @this GrafanaItem
395
+ * @this C
396
+ * @param {T} value
397
+ * @returns {C}
398
+ */
399
+ function(value) {
400
+ return this._setGrafanaObject(key, type, value);
401
+ }
402
+ );
403
+ setPrototypeWithSignature(
404
+ cls,
405
+ `setNew${caseName}`,
406
+ `(onNewCreated: ((item: ${typeName}) => ${typeName}) | undefined): this;`,
407
+ /**
408
+ * @this C
303
409
  * @param {(item: T) => T} [onNewCreated]
304
- * @returns {GrafanaItem}
410
+ * @returns {C}
305
411
  */
306
412
  function(onNewCreated) {
307
413
  if (!onNewCreated) onNewCreated = (item) => item;
308
414
  return this._setGrafanaObject(key, type, onNewCreated(new type(this.metaOptions)));
309
415
  }
310
416
  );
311
- metaClassInfo.methods.push(`${setNewName}(onNewCreated: ((item: ${typeName}) => ${typeName}) | undefined): this;`);
312
- setPrototype(
417
+ setPrototypeWithSignature(
313
418
  cls,
314
419
  `with${caseName}`,
420
+ `(onWith: (item: ${typeName}) => void): this;`,
315
421
  /**
316
- * @this GrafanaItem
422
+ * @this C
317
423
  * @param {(item: T) => void} onWith
318
- * @returns {GrafanaItem}
424
+ * @returns {C}
319
425
  */
320
426
  function(onWith) {
321
427
  const item = this._getGrafanaObject(key, type);
@@ -323,101 +429,79 @@ function defineGrafanaObject(cls, key, type, option) {
323
429
  return this;
324
430
  }
325
431
  );
326
- metaClassInfo.methods.push(`with${caseName}(onWith: (item: ${typeName}) => void): this;`);
327
- setGetter(cls, name, (self) => self._getGrafanaObject(key, type));
328
- metaClassInfo.methods.push(`get ${name}(): ${typeName};`);
329
- if (option?.onInit) metaClassInfo.onInits.push(option?.onInit);
330
- if (option?.onDefault) {
331
- /**
332
- * @param {GrafanaItem} instance
333
- */
334
- const onInit = (instance) => {
335
- const x = option?.onDefault?.(instance.metaOptions);
336
- instance._setGrafanaObject(key, type, x);
337
- };
338
- metaClassInfo.onInits.push(onInit);
339
- }
432
+ setGetterWithSignature(cls, name, (self) => self._getGrafanaObject(key, type), typeName);
433
+ addOnInit(cls, option?.onInit);
434
+ if (option?.onDefault) addOnInit(cls, (instance) => {
435
+ const x = option?.onDefault?.(instance.metaOptions);
436
+ instance._setGrafanaObject(key, type, x);
437
+ });
340
438
  }
341
439
  /**
342
- * @param {typeof GrafanaItem} cls
343
- * @param {string} key
344
- * @param {Function} type
440
+ * @template {GrafanaItem} C
441
+ * @template {GrafanaItem} T
442
+ * @param {MetaConstructor<C>} cls
443
+ * @param {string} key
444
+ * @param {MetaConstructor<T>} type
345
445
  * @param {Object} [option]
346
446
  * @param {string} [option.name]
347
447
  * @param {string} [option.itemName]
348
448
  * @param {boolean} [option.setEmpty]
349
- * @param {(instance: GrafanaItem) => void} [option.onInit]
350
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
449
+ * @param {(instance: C) => void} [option.onInit]
450
+ * @param {(metaOptions: GenericMetaOptions) => T[]} [option.onDefault]
351
451
  */
352
452
  function defineArray(cls, key, type, option) {
353
- const metaClassInfo = getMetaClassInfo(cls);
354
453
  const name = option?.name ? option.name : key;
355
454
  const caseName = name.charAt(0).toUpperCase() + name.slice(1);
356
455
  const itemName = option?.itemName ? option.itemName : name.endsWith("s") ? name.slice(0, -1) : `${name}Item`;
357
- if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) {
358
- if (type.name !== "String" && type.name !== "Number" && type.name !== "Boolean") metaClassInfo.typeNamesToInclude.push(type.name);
359
- }
360
456
  const caseItemName = itemName.charAt(0).toUpperCase() + itemName.slice(1);
361
- const initName = `init${caseName}`;
362
- if (hasPrototype(cls, initName) === false) {
363
- setPrototype(
364
- cls,
365
- initName,
366
- /**
367
- * @this GrafanaItem
368
- * @returns {GrafanaItem}
369
- */
370
- function() {
371
- return this._initArray(key);
372
- }
373
- );
374
- metaClassInfo.methods.push(`init${caseName}(): this;`);
375
- }
376
- setGetter(cls, name, (self) => self._getArray(key));
377
- metaClassInfo.methods.push(`get ${name}(): ${type.name}[];`);
378
- const addName = `add${caseItemName}`;
379
- if (hasPrototype(cls, addName) === false) {
380
- setPrototype(
381
- cls,
382
- addName,
383
- /**
384
- * @this GrafanaItem
385
- * @template T
386
- * @param {T} item
387
- * @returns {GrafanaItem}
388
- */
389
- function(item) {
390
- return this._addArrayItem(key, item);
391
- }
392
- );
393
- metaClassInfo.methods.push(`${addName}(${itemName}: ${type.name}): this;`);
394
- }
395
- const addNewName = `addNew${caseItemName}`;
396
- if (hasPrototype(cls, addNewName) === false) {
397
- setPrototype(
398
- cls,
399
- addNewName,
400
- /**
401
- * @this GrafanaItem
402
- * @template T
403
- * @param {(item: T) => T} onNewCreated
404
- * @returns {GrafanaItem}
405
- */
406
- function(onNewCreated) {
407
- return this._addArrayItem(key, onNewCreated(new type(this.metaOptions)));
408
- }
409
- );
410
- metaClassInfo.methods.push(`${addNewName}(onNewCreated: (item: ${type.name}) => ${type.name}): this;`);
411
- }
412
- const withName = `with${caseName}`;
413
- setPrototype(
457
+ addTypeNameToInclude(cls, type.name);
458
+ setPrototypeWithSignature(
414
459
  cls,
415
- withName,
460
+ `init${caseName}`,
461
+ `(): this;`,
416
462
  /**
417
- * @this GrafanaItem
418
- * @template T
463
+ * @this C
464
+ * @returns {C}
465
+ */
466
+ function() {
467
+ return this._initArray(key);
468
+ }
469
+ );
470
+ setGetterWithSignature(cls, name, (self) => self._getArray(key), `${type.name}[]`);
471
+ setPrototypeWithSignature(
472
+ cls,
473
+ `add${caseItemName}`,
474
+ `(${itemName}: ${type.name}): this;`,
475
+ /**
476
+ * @this C
477
+ * @param {T} item
478
+ * @returns {C}
479
+ */
480
+ function(item) {
481
+ return this._addArrayItem(key, item);
482
+ }
483
+ );
484
+ setPrototypeWithSignature(
485
+ cls,
486
+ `addNew${caseItemName}`,
487
+ `(onNewCreated: (item: ${type.name}) => ${type.name}): this;`,
488
+ /**
489
+ * @this C
490
+ * @param {(item: T) => T} onNewCreated
491
+ * @returns {C}
492
+ */
493
+ function(onNewCreated) {
494
+ return this._addArrayItem(key, onNewCreated(new type(this.metaOptions)));
495
+ }
496
+ );
497
+ setPrototypeWithSignature(
498
+ cls,
499
+ `with${caseName}`,
500
+ `(onWith: (${name}: ${type.name}[]) => void): this;`,
501
+ /**
502
+ * @this C
419
503
  * @param {(array: T[]) => void} onWith
420
- * @returns {GrafanaItem}
504
+ * @returns {C}
421
505
  */
422
506
  function(onWith) {
423
507
  const array = this._getArray(key);
@@ -425,97 +509,174 @@ function defineArray(cls, key, type, option) {
425
509
  return this;
426
510
  }
427
511
  );
428
- metaClassInfo.methods.push(`${withName}(onWith: (${name}: ${type.name}[]) => void): this;`);
429
- if (option?.onInit) metaClassInfo.onInits.push(option.onInit);
430
- if (option?.setEmpty) {
431
- /**
432
- * @param {GrafanaItem} instance
433
- */
434
- const onInitArray = (instance) => {
435
- instance._initArray(key);
436
- };
437
- metaClassInfo.onInits.push(onInitArray);
438
- }
512
+ addOnInit(cls, option?.onInit);
513
+ if (option?.onDefault) addOnInit(cls, (instance) => option.onDefault?.(instance.metaOptions)?.forEach((item) => instance._addArrayItem(key, item)));
514
+ if (option?.setEmpty) addOnInit(cls, (instance) => instance._initArray(key));
439
515
  }
440
516
  /**
441
- * @template {typeof GrafanaItem} T
442
- * @param {typeof GrafanaItem} cls
443
- * @param {string|undefined} method
517
+ * @template {GrafanaItem} C
518
+ * @param {MetaConstructor<C>} cls
519
+ * @param {string} key
520
+ * @param {Function} type
444
521
  * @param {Object} [option]
445
- * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
446
522
  * @param {string} [option.name]
447
- * @param {Function} [option.code]
448
- * @param {(instance: GrafanaItem) => void} [option.constr]
449
- * @param {string} [option.getterSetterType]
450
- * @param {(self: GrafanaItem) => any} [option.getter]
451
- * @param {(self: GrafanaItem, value: any) => void} [option.setter]
452
- */
453
- function defineMemberInternal(cls, method, option) {
454
- const { typesToInclude, name, code, constr, getterSetterType, getter, setter } = option || {};
455
- const metaClassInfo = getMetaClassInfo(cls);
456
- if (method !== void 0) metaClassInfo.methods.push(method);
457
- if (typesToInclude !== void 0) {
458
- for (const type of typesToInclude) if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) metaClassInfo.typeNamesToInclude.push(type.name);
459
- }
460
- let codeCount = 0;
461
- if (code !== void 0) codeCount++;
462
- if (constr !== void 0) codeCount++;
463
- if (getter !== void 0 || setter !== void 0) codeCount++;
464
- if (codeCount > 1) throw new Error(`You can only provide either code or constructor or getter/setter, not all. (codeCount:${codeCount})`);
465
- if (code !== void 0 && name === void 0) throw new Error("You must provide a name when providing code.");
466
- if (constr !== void 0 && name !== void 0) throw new Error("You cannot provide a name when providing constructor.");
467
- if ((getter !== void 0 || setter !== void 0) && name === void 0) throw new Error("You must provide a name when providing getter or setter.");
468
- if (codeCount == 1) {
469
- if (code !== void 0) {
470
- if (!name) throw new Error("You must provide a name when providing code.");
471
- setPrototype(
472
- cls,
473
- name,
474
- /**
475
- * @this {GrafanaItem}
476
- * @param {...any} args
477
- * @returns {any}
478
- */
479
- function(...args) {
480
- return code(this, ...args);
481
- }
482
- );
483
- }
484
- if (constr !== void 0) metaClassInfo.onInits.push((instance) => constr(instance));
485
- if (getter !== void 0 && setter === void 0) {
486
- if (!name) throw new Error("You must provide a name when providing getter or setter.");
487
- setGetter(cls, name, getter);
488
- metaClassInfo.methods.push(`get ${name}(): ${getterSetterType};`);
523
+ * @param {string} [option.itemName]
524
+ * @param {boolean} [option.setEmpty]
525
+ * @param {(instance: C) => void} [option.onInit]
526
+ * @param {(metaOptions: GenericMetaOptions) => Object[]} [option.onDefault]
527
+ */
528
+ function defineBasicArray(cls, key, type, option) {
529
+ const name = option?.name ? option.name : key;
530
+ const caseName = name.charAt(0).toUpperCase() + name.slice(1);
531
+ const itemName = option?.itemName ? option.itemName : name.endsWith("s") ? name.slice(0, -1) : `${name}Item`;
532
+ const caseItemName = itemName.charAt(0).toUpperCase() + itemName.slice(1);
533
+ addTypeNameToInclude(cls, type.name);
534
+ setPrototypeWithSignature(
535
+ cls,
536
+ `init${caseName}`,
537
+ `(): this;`,
538
+ /**
539
+ * @this C
540
+ * @returns {C}
541
+ */
542
+ function() {
543
+ return this._initArray(key);
489
544
  }
490
- if (getter === void 0 && setter !== void 0) {
491
- if (!name) throw new Error("You must provide a name when providing getter or setter.");
492
- setSetter(cls, name, setter);
493
- metaClassInfo.methods.push(`set ${name}(value: ${getterSetterType});`);
545
+ );
546
+ setGetterWithSignature(cls, name, (self) => self._getArray(key), `${type.name}[]`);
547
+ setPrototypeWithSignature(
548
+ cls,
549
+ `add${caseItemName}`,
550
+ `(${itemName}: ${type.name}): this;`,
551
+ /**
552
+ * @this C
553
+ * @template T
554
+ * @param {T} item
555
+ * @returns {C}
556
+ */
557
+ function(item) {
558
+ return this._addArrayItem(key, item);
494
559
  }
495
- if (getter !== void 0 && setter !== void 0) {
496
- if (!name) throw new Error("You must provide a name when providing getter or setter.");
497
- setGetterAndSetter(cls, name, getter, setter);
498
- metaClassInfo.methods.push(`get ${name}(): ${getterSetterType};`);
499
- metaClassInfo.methods.push(`set ${name}(value: ${getterSetterType});`);
560
+ );
561
+ setPrototypeWithSignature(
562
+ cls,
563
+ `with${caseName}`,
564
+ `(onWith: (${name}: ${type.name}[]) => void): this;`,
565
+ /**
566
+ * @this C
567
+ * @template T
568
+ * @param {(array: T[]) => void} onWith
569
+ * @returns {C}
570
+ */
571
+ function(onWith) {
572
+ const array = this._getArray(key);
573
+ if (array) onWith(array);
574
+ return this;
500
575
  }
501
- }
576
+ );
577
+ addOnInit(cls, option?.onInit);
578
+ if (option?.onDefault) addOnInit(cls, (instance) => option.onDefault?.(instance.metaOptions)?.forEach((item) => instance._addArrayItem(key, item)));
579
+ if (option?.setEmpty) addOnInit(cls, (instance) => instance._initArray(key));
502
580
  }
503
581
  /**
504
- * @param {typeof GrafanaItem} cls
505
- * @param {(instance: GrafanaItem) => void} code
582
+ * @template {GrafanaItem} C
583
+ * @param {MetaConstructor<C>} cls
584
+ * @param {(instance: C) => void} code
506
585
  */
507
586
  function defineConstructor(cls, code) {
508
- defineMemberInternal(cls, "constructor(metaOptions: GenericMetaOptions)", { constr: code });
587
+ addSignature(cls, "constructor(metaOptions: GenericMetaOptions)");
588
+ addOnInit(cls, (instance) => code(instance));
589
+ }
590
+ /**
591
+ * @template {GrafanaItem} C
592
+ * @param {MetaConstructor<C>} cls
593
+ * @param {string} method
594
+ * @param {Object} [option]
595
+ * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
596
+ */
597
+ function defineMember(cls, method, option) {
598
+ const { typesToInclude } = option || {};
599
+ addSignature(cls, method);
600
+ addTypesToInclude(cls, typesToInclude);
601
+ }
602
+ /**
603
+ * @template {GrafanaItem} C
604
+ * @param {MetaConstructor<C>} cls
605
+ * @param {string} name
606
+ * @param {string} args
607
+ * @param {Object} option
608
+ * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
609
+ * @param {(instance: C, ...args: any[]) => any} option.code
610
+ */
611
+ var defineMethod = (cls, name, args, option) => {
612
+ const { typesToInclude, code } = option || {};
613
+ addTypesToInclude(cls, typesToInclude);
614
+ setPrototypeWithSignature(
615
+ cls,
616
+ name,
617
+ args,
618
+ /**
619
+ * @this {C}
620
+ * @param {...any} args
621
+ * @returns {any}
622
+ */
623
+ function(...args) {
624
+ return code(this, ...args);
625
+ }
626
+ );
627
+ };
628
+ /**
629
+ * @template {GrafanaItem} C
630
+ * @param {MetaConstructor<C>} cls
631
+ * @param {string} name
632
+ * @param {string} typeName
633
+ * @param {Object} option
634
+ * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
635
+ * @param {(self: C) => any} [option.getter]
636
+ * @param {(self: C, value: any) => void} [option.setter]
637
+ */
638
+ function defineGetterSetter(cls, name, typeName, option) {
639
+ const { typesToInclude, getter, setter } = option || {};
640
+ addTypesToInclude(cls, typesToInclude);
641
+ if (getter !== void 0) {
642
+ if (setter !== void 0) setGetterAndSetterWithSignature(cls, name, getter, setter, typeName);
643
+ else setGetterWithSignature(cls, name, getter, typeName);
644
+ } else if (setter !== void 0) setSetterWithSignature(cls, name, setter, typeName);
645
+ else throw new Error("You must provide either a getter or a setter.");
509
646
  }
647
+ //#endregion
648
+ //#region src/utils/GrafanaItemClassBuilder.js
649
+ /**
650
+ * @typedef {import("@gdacm/base-types").GenericMetaOptions} GenericMetaOptions
651
+ */
652
+ /**
653
+ * @template {Object} T
654
+ * @template {T} C
655
+ * @typedef {import("./MetaClassRegistry.js").MetaClassInfo<T,C>} MetaClassInfo
656
+ */
657
+ /**
658
+ * @template T
659
+ * @typedef {import("@gdacm/base-types").MetaConstructor<T>} MetaConstructor
660
+ */
661
+ /**
662
+ * @template {GrafanaItem} C
663
+ */
510
664
  var GrafanaItemClassBuilder = class {
511
665
  /**
512
- * @param {typeof GrafanaItem} cls
666
+ * @param {MetaConstructor<C>} cls
513
667
  */
514
668
  constructor(cls) {
515
- this.cls = cls;
669
+ /** @type {MetaConstructor<C>} */
670
+ this._cls = cls;
671
+ }
672
+ /**
673
+ * @return {MetaConstructor<C>}
674
+ */
675
+ get cls() {
676
+ return this._cls;
516
677
  }
517
678
  /**
518
- * @param {typeof GrafanaItem} parent
679
+ * @param {MetaConstructor<GrafanaItem>} parent
519
680
  * @returns
520
681
  */
521
682
  setParent(parent) {
@@ -527,8 +688,8 @@ var GrafanaItemClassBuilder = class {
527
688
  * @param {Function} type
528
689
  * @param {Object} [option]
529
690
  * @param {string} [option.name]
530
- * @param {(instance: InstanceType<typeof GrafanaItem>) => void} [option.onInit]
531
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
691
+ * @param {(instance: C) => void} [option.onInit]
692
+ * @param {(metaOptions: GenericMetaOptions) => C} [option.onDefault]
532
693
  * @param {String} [option.typeName]
533
694
  * @return {this}
534
695
  */
@@ -537,13 +698,15 @@ var GrafanaItemClassBuilder = class {
537
698
  return this;
538
699
  }
539
700
  /**
701
+ * @template {GrafanaItem} T
540
702
  * @param {string} key
541
- * @param {Function} type
703
+ * @param {MetaConstructor<T>} type
542
704
  * @param {Object} [option]
543
705
  * @param {string} [option.name]
544
- * @param {(instance: GrafanaItem) => void} [option.onInit]
545
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
706
+ * @param {(instance: C) => void} [option.onInit]
707
+ * @param {(metaOptions: GenericMetaOptions) => T} [option.onDefault]
546
708
  * @param {String} [option.typeName]
709
+ * @param {String} [option.setNew]
547
710
  * @return {this}
548
711
  */
549
712
  defineObject(key, type, option) {
@@ -551,30 +714,29 @@ var GrafanaItemClassBuilder = class {
551
714
  return this;
552
715
  }
553
716
  /**
554
- * @template {GrafanaItem} T
555
717
  * @param {string} key
556
- * @param {MetaConstructor<T>} type
718
+ * @param {Function} type
557
719
  * @param {Object} [option]
558
720
  * @param {string} [option.name]
559
- * @param {(instance: T) => void} [option.onInit]
560
- * @param {(metaOptions: GenericMetaOptions) => T} [option.onDefault]
721
+ * @param {(instance: C) => void} [option.onInit]
722
+ * @param {(metaOptions: GenericMetaOptions) => Object} [option.onDefault]
561
723
  * @param {String} [option.typeName]
562
- * @param {String} [option.setNew]
563
724
  * @return {this}
564
725
  */
565
- defineGrafanaObject(key, type, option) {
566
- defineGrafanaObject(this.cls, key, type, option);
726
+ defineBasicObject(key, type, option) {
727
+ defineBasicObject(this.cls, key, type, option);
567
728
  return this;
568
729
  }
569
730
  /**
731
+ * @template {GrafanaItem} T
570
732
  * @param {string} key
571
- * @param {Function} type
733
+ * @param {MetaConstructor<T>} type
572
734
  * @param {Object} [option]
573
735
  * @param {string} [option.name]
574
736
  * @param {string} [option.itemName]
575
737
  * @param {boolean} [option.setEmpty]
576
- * @param {(instance: GrafanaItem) => void} [option.onInit]
577
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
738
+ * @param {(instance: C) => void} [option.onInit]
739
+ * @param {(metaOptions: GenericMetaOptions) => T[]} [option.onDefault]
578
740
  * @return {this}
579
741
  */
580
742
  defineArray(key, type, option) {
@@ -582,18 +744,32 @@ var GrafanaItemClassBuilder = class {
582
744
  return this;
583
745
  }
584
746
  /**
747
+ * @param {string} key
748
+ * @param {Function} type
749
+ * @param {Object} [option]
750
+ * @param {string} [option.name]
751
+ * @param {string} [option.itemName]
752
+ * @param {boolean} [option.setEmpty]
753
+ * @param {(instance: C) => void} [option.onInit]
754
+ * @param {(metaOptions: GenericMetaOptions) => Object[]} [option.onDefault]
755
+ * @return {this}
756
+ */
757
+ defineBasicArray(key, type, option) {
758
+ defineBasicArray(this.cls, key, type, option);
759
+ return this;
760
+ }
761
+ /**
585
762
  * @param {string} method
586
763
  * @param {Object} [option]
587
764
  * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
588
765
  * @return {this}
589
766
  */
590
767
  defineMember(method, option) {
591
- defineMemberInternal(this.cls, method, option);
768
+ defineMember(this.cls, method, option);
592
769
  return this;
593
770
  }
594
771
  /**
595
- * @template {typeof GrafanaItem} T
596
- * @param {(instance: InstanceType<T>) => void} code
772
+ * @param {(instance: C) => void} code
597
773
  * @return {this}
598
774
  */
599
775
  defineConstructor(code) {
@@ -605,36 +781,24 @@ var GrafanaItemClassBuilder = class {
605
781
  * @param {string} args
606
782
  * @param {Object} option
607
783
  * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
608
- * @param {Function} option.code
784
+ * @param {(instance: C, ...args: any[]) => any} option.code
609
785
  * @return {this}
610
786
  */
611
787
  defineMethod(name, args, option) {
612
- defineMemberInternal(this.cls, `${name}${args}`, {
613
- ...option,
614
- name
615
- });
788
+ defineMethod(this.cls, name, args, option);
616
789
  return this;
617
790
  }
618
791
  /**
619
- * @template {typeof GrafanaItem} T
620
792
  * @param {string} name
621
- * @param {string} type
793
+ * @param {string} typeName
622
794
  * @param {Object} option
623
795
  * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
624
- * @param {(instance: InstanceType<T>) => any} [option.getter]
625
- * @param {(instance: InstanceType<T>, value: any) => void} [option.setter]
796
+ * @param {(instance: C) => any} [option.getter]
797
+ * @param {(instance: C, value: any) => void} [option.setter]
626
798
  * @return {this}
627
799
  */
628
- defineGetterSetter(name, type, option) {
629
- const getter = option.getter;
630
- const setter = option.setter;
631
- defineMemberInternal(this.cls, void 0, {
632
- ...option,
633
- getter,
634
- setter,
635
- name,
636
- getterSetterType: type
637
- });
800
+ defineGetterSetter(name, typeName, option) {
801
+ defineGetterSetter(this.cls, name, typeName, option);
638
802
  return this;
639
803
  }
640
804
  /**
@@ -652,15 +816,43 @@ var GrafanaItemClassBuilder = class {
652
816
  }
653
817
  };
654
818
  /**
819
+ * @template {GrafanaItem} C
655
820
  * @param {string} name
656
821
  * @param {typeof GrafanaItem} parent
657
- * @returns {GrafanaItemClassBuilder}
822
+ * @returns {GrafanaItemClassBuilder<C>}
658
823
  */
659
824
  var defineGrafanaItemClass = (name, parent) => {
660
825
  const cls = class extends parent {};
661
826
  Object.defineProperty(cls, "name", { value: name });
662
827
  return defineClass(cls).setParent(parent);
663
828
  };
829
+ /**
830
+ * @template {GrafanaItem} C
831
+ * @param {MetaConstructor<C>} cls
832
+ */
833
+ function defineClass(cls) {
834
+ if (!hasType(cls)) {
835
+ /** @type {Function|undefined} */
836
+ let parent = Object.getPrototypeOf(cls);
837
+ if (parent && !parent.name) parent = void 0;
838
+ /** @type {((instance: C)=>void)[]} */
839
+ let onInitsParent = [];
840
+ if (parent && parent.name) onInitsParent = getMetaClassInfo(parent).onInits;
841
+ /** @type {MetaClassInfo<GrafanaItem,C>} */
842
+ const metaClassInfo = {
843
+ methods: [],
844
+ onInits: [...onInitsParent],
845
+ parentName: parent?.name,
846
+ parent,
847
+ typeNamesToInclude: []
848
+ };
849
+ cls.prototype._onInit = function() {
850
+ for (const onInit of metaClassInfo.onInits) onInit(this);
851
+ };
852
+ setTypeMetaClassInfo(cls, metaClassInfo);
853
+ }
854
+ return new GrafanaItemClassBuilder(cls);
855
+ }
664
856
  //#endregion
665
857
  //#region src/items/GrafanaItem.js
666
858
  var GrafanaItem = class {
@@ -821,10 +1013,10 @@ var GrafanaItem = class {
821
1013
  defineClass(GrafanaItem).defineMember("constructor(metaOptions: GenericMetaOptions)").defineMember("get metaOptions(): GenericMetaOptions").defineMember("withMetaOptions(code: (metaOptions: GenericMetaOptions) => void): this").defineMember("with(code: (item: this) => void): this").defineMember("asJson(): Object;").defineMember("_onInit(): void;").defineMember("_setValue<T>(key: string, value: T): this;").defineMember("_getValue<T>(key: string): T;").defineMember("_initArray(key: string): this;").defineMember("_getArray<T>(key: string): T[];").defineMember("_addArrayItem<T>(key: string, item: T): this;").defineMember("_setObject<T>(key: string, value: T): this;").defineMember("_getObject<T>(key: string): T;").defineMember("_withObject<T>(key: string, code: (item: T) => void): this;").defineMember("_setGrafanaObject<T extends GrafanaItem>(key: string, type: new (metaOptions: GenericMetaOptions) => T, value: T | undefined): this;").defineMember("_getGrafanaObject<T extends GrafanaItem>(key: string, type: new (metaOptions: GenericMetaOptions) => T): T;").defineMember("_withGrafanaObject<T extends GrafanaItem>(key: string, type: new (metaOptions: GenericMetaOptions) => T, code: (item: T) => void): this;");
822
1014
  //#endregion
823
1015
  //#region src/items/OverrideMatcher.js
824
- var OverrideMatcher = defineGrafanaItemClass("OverrideMatcher", GrafanaItem).defineValue("id", String).defineObject("options", Object).asClass;
1016
+ var OverrideMatcher = defineGrafanaItemClass("OverrideMatcher", GrafanaItem).defineValue("id", String).defineBasicObject("options", Object).asClass;
825
1017
  //#endregion
826
1018
  //#region src/items/OverrideMatcherOptionsByNames.js
827
- var OverrideMatcherOptionsByNames = defineGrafanaItemClass("OverrideMatcherOptionsByNames", GrafanaItem).defineValue("mode", String).defineArray("names", String).defineValue("prefix", String).defineValue("readOnly", Boolean).asClass;
1019
+ var OverrideMatcherOptionsByNames = defineGrafanaItemClass("OverrideMatcherOptionsByNames", GrafanaItem).defineValue("mode", String).defineBasicArray("names", String).defineValue("prefix", String).defineValue("readOnly", Boolean).asClass;
828
1020
  //#endregion
829
1021
  //#region src/items/OverrideProperty.js
830
1022
  var OverrideProperty = defineGrafanaItemClass("OverrideProperty", GrafanaItem).defineValue("id", String).defineValue("value", Object).asClass;
@@ -833,7 +1025,7 @@ var OverrideProperty = defineGrafanaItemClass("OverrideProperty", GrafanaItem).d
833
1025
  var Datasource = defineGrafanaItemClass("Datasource", GrafanaItem).defineValue("type", String).defineValue("uid", String).asClass;
834
1026
  //#endregion
835
1027
  //#region src/items/Annotation.js
836
- var Annotation = defineGrafanaItemClass("Annotation", GrafanaItem).defineValue("builtIn", Number).defineGrafanaObject("datasource", Datasource).defineValue("enable", Boolean).defineValue("hide", Boolean).defineValue("iconColor", String).defineValue("name", String).defineValue("type", String).asClass;
1028
+ var Annotation = defineGrafanaItemClass("Annotation", GrafanaItem).defineValue("builtIn", Number).defineObject("datasource", Datasource).defineValue("enable", Boolean).defineValue("hide", Boolean).defineValue("iconColor", String).defineValue("name", String).defineValue("type", String).asClass;
837
1029
  //#endregion
838
1030
  //#region src/items/Annotations.js
839
1031
  var Annotations = defineGrafanaItemClass("Annotations", GrafanaItem).defineArray("list", Annotation, { itemName: "annotation" }).asClass;
@@ -896,7 +1088,7 @@ code: (thresholds, value, color) => {
896
1088
  } }).asClass;
897
1089
  //#endregion
898
1090
  //#region src/items/FieldConfigDefault.js
899
- var FieldConfigDefault = defineGrafanaItemClass("FieldConfigDefault", GrafanaItem).defineGrafanaObject("color", Color).defineGrafanaObject("custom", FieldConfigCustom).defineValue("decimals", Number).defineValue("fieldMinMax", Boolean).defineArray("mappings", Mapping).defineValue("max", Number).defineValue("min", Number).defineGrafanaObject("thresholds", Thresholds).defineValue("unit", String).defineMethod("setColorMode", "(mode: string): this;", {
1091
+ var FieldConfigDefault = defineGrafanaItemClass("FieldConfigDefault", GrafanaItem).defineObject("color", Color).defineObject("custom", FieldConfigCustom).defineValue("decimals", Number).defineValue("fieldMinMax", Boolean).defineArray("mappings", Mapping).defineValue("max", Number).defineValue("min", Number).defineObject("thresholds", Thresholds).defineValue("unit", String).defineMethod("setColorMode", "(mode: string): this;", {
900
1092
  /**
901
1093
  * @param {FieldConfigDefault} fieldConfigDefault
902
1094
  * @param {String} mode
@@ -909,13 +1101,13 @@ code: (fieldConfigDefault, mode) => {
909
1101
  } }).asClass;
910
1102
  //#endregion
911
1103
  //#region src/items/FieldConfigOverride.js
912
- var FieldConfigOverride = defineGrafanaItemClass("FieldConfigOverride", GrafanaItem).defineValue("__systemRef", String, { name: "systemRef" }).defineGrafanaObject("matcher", OverrideMatcher).defineArray("properties", OverrideProperty, { itemName: "property" }).asClass;
1104
+ var FieldConfigOverride = defineGrafanaItemClass("FieldConfigOverride", GrafanaItem).defineValue("__systemRef", String, { name: "systemRef" }).defineObject("matcher", OverrideMatcher).defineArray("properties", OverrideProperty, { itemName: "property" }).asClass;
913
1105
  //#endregion
914
1106
  //#region src/items/HideFrom.js
915
1107
  var HideFrom = defineGrafanaItemClass("HideFrom", GrafanaItem).defineValue("graph", Boolean).defineValue("legend", Boolean).defineValue("tooltip", Boolean).defineValue("viz", Boolean).asClass;
916
1108
  //#endregion
917
1109
  //#region src/items/FieldConfig.js
918
- var FieldConfig = defineGrafanaItemClass("FieldConfig", GrafanaItem).defineGrafanaObject("defaults", FieldConfigDefault).defineArray("overrides", FieldConfigOverride).defineMethod("addNewOverrideHideSeriesFrom", "(names: string[]): this", {
1110
+ var FieldConfig = defineGrafanaItemClass("FieldConfig", GrafanaItem).defineObject("defaults", FieldConfigDefault).defineArray("overrides", FieldConfigOverride).defineMethod("addNewOverrideHideSeriesFrom", "(names: string[]): this", {
919
1111
  /**
920
1112
  * @param {FieldConfig} fieldConfig
921
1113
  * @param {String[]} names
@@ -931,16 +1123,16 @@ code: (fieldConfig, names) => {
931
1123
  } }).asClass;
932
1124
  //#endregion
933
1125
  //#region src/items/Target.js
934
- var Target = defineGrafanaItemClass("Target", GrafanaItem).defineValue("alias", String).defineValue("refId", String).defineValue("query", String).defineGrafanaObject("datasource", Datasource).defineValue("seriesCount", Number).defineValue("scenarioId", String).defineValue("stringInput", String).asClass;
1126
+ var Target = defineGrafanaItemClass("Target", GrafanaItem).defineValue("alias", String).defineValue("refId", String).defineValue("query", String).defineObject("datasource", Datasource).defineValue("seriesCount", Number).defineValue("scenarioId", String).defineValue("stringInput", String).asClass;
935
1127
  //#endregion
936
1128
  //#region src/items/Link.js
937
- var Link = defineGrafanaItemClass("Link", GrafanaItem).defineConstructor((instance) => instance.setType("link")).defineValue("asDropdown", Boolean).defineValue("icon", String).defineValue("includeVars", Boolean).defineValue("keepTime", Boolean).defineArray("tags", String, { setEmpty: true }).defineValue("targetBlank", Boolean).defineValue("title", String).defineValue("tooltip", String).defineValue("type", String).defineValue("url", String).asClass;
1129
+ var Link = defineGrafanaItemClass("Link", GrafanaItem).defineConstructor((instance) => instance.setType("link")).defineValue("asDropdown", Boolean).defineValue("icon", String).defineValue("includeVars", Boolean).defineValue("keepTime", Boolean).defineBasicArray("tags", String, { setEmpty: true }).defineValue("targetBlank", Boolean).defineValue("title", String).defineValue("tooltip", String).defineValue("type", String).defineValue("url", String).asClass;
938
1130
  //#endregion
939
1131
  //#region src/items/DataTransformation.js
940
1132
  var DataTransformation = defineGrafanaItemClass("DataTransformation", GrafanaItem).asClass;
941
1133
  //#endregion
942
1134
  //#region src/items/Panel.js
943
- var Panel = defineGrafanaItemClass("Panel", GrafanaItem).defineValue("cacheTimeout", String).defineGrafanaObject("datasource", Datasource, { onDefault: (options) => void 0 }).defineValue("description", String).defineGrafanaObject("fieldConfig", FieldConfig, { onDefault: (options) => new FieldConfig(options) }).defineGrafanaObject("gridPos", GridPos).defineMethod("setPos", "(x: number, y: number, w: number, h: number): this;", {
1135
+ var Panel = defineGrafanaItemClass("Panel", GrafanaItem).defineValue("cacheTimeout", String).defineObject("datasource", Datasource, { onDefault: (options) => void 0 }).defineValue("description", String).defineObject("fieldConfig", FieldConfig, { onDefault: (options) => new FieldConfig(options) }).defineObject("gridPos", GridPos).defineMethod("setPos", "(x: number, y: number, w: number, h: number): this;", {
944
1136
  /**
945
1137
  * @param {Panel} panel
946
1138
  * @param {number} x
@@ -950,7 +1142,7 @@ var Panel = defineGrafanaItemClass("Panel", GrafanaItem).defineValue("cacheTimeo
950
1142
  */
951
1143
  code: (panel, x, y, w, h) => {
952
1144
  return panel.setNewGridPos((gridPos) => gridPos.setPos(x, y, w, h));
953
- } }).defineValue("hideTimeOverride", Boolean).defineValue("id", Number).defineValue("interval", String).defineArray("links", Link).defineValue("maxDataPoints", Number).defineValue("maxPerRow", Number).defineGrafanaObject("options", Object).defineValue("pluginVersion", String).defineValue("queryCachingTTL", Number).defineValue("repeat", String).defineValue("repeatDirection", String).defineArray("targets", Target).defineMethod("addTargetWithParams", "(refId: string, query: string, datasource: Datasource): this;", {
1145
+ } }).defineValue("hideTimeOverride", Boolean).defineValue("id", Number).defineValue("interval", String).defineArray("links", Link).defineValue("maxDataPoints", Number).defineValue("maxPerRow", Number).defineObject("options", Object).defineValue("pluginVersion", String).defineValue("queryCachingTTL", Number).defineValue("repeat", String).defineValue("repeatDirection", String).defineArray("targets", Target).defineMethod("addTargetWithParams", "(refId: string, query: string, datasource: Datasource): this;", {
954
1146
  /**
955
1147
  * @param {Panel} panel
956
1148
  * @param {string} refId
@@ -968,13 +1160,13 @@ var TemplateCurrent = defineGrafanaItemClass("TemplateCurrent", GrafanaItem).def
968
1160
  var TemplateOption = defineGrafanaItemClass("TemplateOption", GrafanaItem).defineValue("selected", Boolean).defineValue("text", String).defineValue("value", String).asClass;
969
1161
  //#endregion
970
1162
  //#region src/items/Template.js
971
- var Template = defineGrafanaItemClass("Template", GrafanaItem).defineGrafanaObject("current", TemplateCurrent).defineValue("definition", String).defineValue("description", String).defineValue("hide", Number).defineValue("label", String).defineValue("multi", Boolean).defineValue("name", String).defineArray("options", TemplateOption).defineValue("query", Object).defineValue("refresh", Number).defineValue("regex", String).defineValue("sort", Number).defineValue("type", String).defineValue("useTags", Boolean).asClass;
1163
+ var Template = defineGrafanaItemClass("Template", GrafanaItem).defineObject("current", TemplateCurrent).defineValue("definition", String).defineValue("description", String).defineValue("hide", Number).defineValue("label", String).defineValue("multi", Boolean).defineValue("name", String).defineArray("options", TemplateOption).defineValue("query", Object).defineValue("refresh", Number).defineValue("regex", String).defineValue("sort", Number).defineValue("type", String).defineValue("useTags", Boolean).asClass;
972
1164
  //#endregion
973
1165
  //#region src/items/Templating.js
974
1166
  var Templating = defineGrafanaItemClass("Templating", GrafanaItem).defineArray("list", Template, { itemName: "template" }).asClass;
975
1167
  //#endregion
976
1168
  //#region src/items/TimePicker.js
977
- var TimePicker = defineGrafanaItemClass("TimePicker", GrafanaItem).defineArray("refresh_intervals", String, { itemName: "refreshInterval" }).asClass;
1169
+ var TimePicker = defineGrafanaItemClass("TimePicker", GrafanaItem).defineBasicArray("refresh_intervals", String, { itemName: "refreshInterval" }).asClass;
978
1170
  //#endregion
979
1171
  //#region src/torefactor/index.js
980
1172
  /**
@@ -987,7 +1179,7 @@ var TimePicker = defineGrafanaItemClass("TimePicker", GrafanaItem).defineArray("
987
1179
  var getAnnotations = (options) => new Annotations(options).addNewAnnotation((annotation) => annotation.setBuiltIn(1).setNewDatasource((datasource) => datasource.setType("grafana").setUid("-- Grafana --")).setEnable(true).setHide(true).setIconColor("rgba(0, 211, 255, 1)").setName("Annotations & Alerts").setType("dashboard"));
988
1180
  //#endregion
989
1181
  //#region src/items/Dashboard.js
990
- var Dashboard = defineGrafanaItemClass("Dashboard", GrafanaItem).setParent(GrafanaItem).defineGrafanaObject("annotations", Annotations, { onDefault: (options) => getAnnotations(options) }).defineValue("editable", Boolean).defineValue("fiscalYearStartMonth", Number).defineValue("graphTooltip", Number).defineArray("links", Link, { itemName: "link" }).defineValue("liveNow", Boolean).defineMethod("addPanel", "(panel: Panel): this;", {
1182
+ var Dashboard = defineGrafanaItemClass("Dashboard", GrafanaItem).setParent(GrafanaItem).defineObject("annotations", Annotations, { onDefault: (options) => getAnnotations(options) }).defineValue("editable", Boolean).defineValue("fiscalYearStartMonth", Number).defineValue("graphTooltip", Number).defineArray("links", Link, { itemName: "link" }).defineValue("liveNow", Boolean).defineArray("panels", Panel, { itemName: "panel" }).defineMethod("addPanel", "(panel: Panel): this;", {
991
1183
  /**
992
1184
  * @param {Dashboard} dashboard
993
1185
  * @param {Panel} panel
@@ -1001,10 +1193,10 @@ code: (dashboard, panel) => {
1001
1193
  }, 0);
1002
1194
  panel._setValue("id", max + 1);
1003
1195
  return dashboard._addArrayItem("panels", panel);
1004
- } }).defineArray("panels", Panel, { itemName: "panel" }).defineValue("preload", Boolean).defineValue("schemaVersion", Number).defineValue("refresh", String).defineValue("tags", Array, {
1196
+ } }).defineValue("preload", Boolean).defineValue("schemaVersion", Number).defineValue("refresh", String).defineValue("tags", Array, {
1005
1197
  onDefault: (options) => [],
1006
1198
  typeName: "Array<String>"
1007
- }).defineGrafanaObject("templating", Templating, { onDefault: (options) => new Templating(options) }).defineGrafanaObject("time", TimeRange, { onDefault: (options) => new TimeRange(options).setRange("now-6h", "now") }).defineMethod("setTimeRange", "(from: string, to: string): this;", {
1199
+ }).defineObject("templating", Templating, { onDefault: (options) => new Templating(options) }).defineObject("time", TimeRange, { onDefault: (options) => new TimeRange(options).setRange("now-6h", "now") }).defineMethod("setTimeRange", "(from: string, to: string): this;", {
1008
1200
  /**
1009
1201
  * @param {Dashboard} dashboard
1010
1202
  * @param {string} from
@@ -1014,21 +1206,21 @@ code: (dashboard, panel) => {
1014
1206
  code: (dashboard, from, to) => {
1015
1207
  dashboard.time.setRange(from, to);
1016
1208
  return dashboard;
1017
- } }).defineGrafanaObject("timepicker", TimePicker, { onDefault: (options) => new TimePicker(options) }).defineValue("timezone", String, { onDefault: (options) => "browser" }).defineValue("title", String, { onDefault: (options) => "" }).defineValue("uid", String).asClass;
1209
+ } }).defineObject("timepicker", TimePicker, { onDefault: (options) => new TimePicker(options) }).defineValue("timezone", String, { onDefault: (options) => "browser" }).defineValue("title", String, { onDefault: (options) => "" }).defineValue("uid", String).asClass;
1018
1210
  //#endregion
1019
1211
  //#region src/items/properties/datasource.js
1020
1212
  /**
1021
- * @param {GrafanaItemClassBuilder} builder
1213
+ * @template {Datasource} T
1214
+ * @param {GrafanaItemClassBuilder<T>} builder
1022
1215
  * @param {string} typeName
1023
1216
  * @param {Object} [options]
1024
- * @param {(instance: Datasource) => void} [options.onInit]
1217
+ * @param {(instance: T) => void} [options.onInit]
1025
1218
  */
1026
1219
  var defineDatasource = (builder, typeName, options) => {
1027
1220
  const { onInit } = options ?? {};
1028
1221
  builder.defineConstructor((instance) => {
1029
- const self = instance;
1030
- self.setType(typeName);
1031
- if (onInit) onInit(self);
1222
+ instance.setType(typeName);
1223
+ if (onInit) onInit(instance);
1032
1224
  });
1033
1225
  };
1034
1226
  //#endregion
@@ -1040,7 +1232,8 @@ var ScaleDistribution = defineGrafanaItemClass("ScaleDistribution", GrafanaItem)
1040
1232
  //#endregion
1041
1233
  //#region src/items/properties/axisConfig.js
1042
1234
  /**
1043
- * @param {GrafanaItemClassBuilder} builder
1235
+ * @template {FieldConfigCustom} T
1236
+ * @param {GrafanaItemClassBuilder<T>} builder
1044
1237
  */
1045
1238
  var defineAxisConfig = (builder) => {
1046
1239
  builder.defineValue("axisBorderShow", Boolean).defineValue("axisCenteredZero", Boolean).defineValue("axisColorMode", String).defineValue("axisGridShow", Boolean).defineValue("axisLabel", String).defineValue("axisPlacement", String).defineValue("axisSoftMax", Number).defineValue("axisSoftMin", Number).defineValue("axisWidth", Number).defineObject("scaleDistribution", ScaleDistribution, { onDefault: (options) => new ScaleDistribution(options).setType("linear") });
@@ -1048,17 +1241,18 @@ var defineAxisConfig = (builder) => {
1048
1241
  //#endregion
1049
1242
  //#region src/items/properties/hideableFieldConfig.js
1050
1243
  /**
1051
- * @param {GrafanaItemClassBuilder} builder
1244
+ * @template {FieldConfigCustom} T
1245
+ * @param {GrafanaItemClassBuilder<T>} builder
1052
1246
  */
1053
1247
  var defineHideableFieldConfig = (builder) => {
1054
- builder.defineGrafanaObject("hideFrom", HideFrom, { onDefault: (options) => new HideFrom(options).setLegend(false).setTooltip(false).setViz(false) });
1248
+ builder.defineObject("hideFrom", HideFrom, { onDefault: (options) => new HideFrom(options).setLegend(false).setTooltip(false).setViz(false) });
1055
1249
  };
1056
1250
  //#endregion
1057
1251
  //#region src/items/ThresholdStyle.js
1058
1252
  var ThresholdStyle = defineGrafanaItemClass("ThresholdStyle", GrafanaItem).defineValue("mode", String).asClass;
1059
1253
  //#endregion
1060
1254
  //#region src/items/FieldConfigCustomBarChart.js
1061
- var FieldConfigCustomBarChart = defineGrafanaItemClass("FieldConfigCustomBarChart", FieldConfigCustom).with((builder) => defineAxisConfig(builder)).defineValue("fillOpacity", Number).defineValue("gradientMode", String).with((builder) => defineHideableFieldConfig(builder)).defineValue("lineWidth", Number).defineGrafanaObject("thresholdsStyle", ThresholdStyle, { onDefault: (options) => new ThresholdStyle(options).setMode("off") }).defineMethod("setThresholdsStyleMode", "(mode: string): this;", {
1255
+ var FieldConfigCustomBarChart = defineGrafanaItemClass("FieldConfigCustomBarChart", FieldConfigCustom).with((builder) => defineAxisConfig(builder)).defineValue("fillOpacity", Number).defineValue("gradientMode", String).with((builder) => defineHideableFieldConfig(builder)).defineValue("lineWidth", Number).defineObject("thresholdsStyle", ThresholdStyle, { onDefault: (options) => new ThresholdStyle(options).setMode("off") }).defineMethod("setThresholdsStyleMode", "(mode: string): this;", {
1062
1256
  /**
1063
1257
  * @param {FieldConfigCustomBarChart} fieldConfigCustomBarChart
1064
1258
  * @param {String} mode
@@ -1073,7 +1267,7 @@ code: (fieldConfigCustomBarChart, mode) => {
1073
1267
  var FieldConfigCustomGauge = defineGrafanaItemClass("FieldConfigCustomGauge", FieldConfigCustom).asClass;
1074
1268
  //#endregion
1075
1269
  //#region src/items/FieldConfigCustomGeomap.js
1076
- var FieldConfigCustomGeomap = defineGrafanaItemClass("FieldConfigCustomGeomap", FieldConfigCustom).defineGrafanaObject("hideFrom", HideFrom, { onDefault: (options) => new HideFrom(options).setLegend(false).setTooltip(false).setViz(false) }).asClass;
1270
+ var FieldConfigCustomGeomap = defineGrafanaItemClass("FieldConfigCustomGeomap", FieldConfigCustom).defineObject("hideFrom", HideFrom, { onDefault: (options) => new HideFrom(options).setLegend(false).setTooltip(false).setViz(false) }).asClass;
1077
1271
  //#endregion
1078
1272
  //#region src/items/FieldConfigCustomPieChart.js
1079
1273
  var FieldConfigCustomPieChart = defineGrafanaItemClass("FieldConfigCustomPieChart", FieldConfigCustom).with((builder) => defineHideableFieldConfig(builder)).asClass;
@@ -1085,7 +1279,7 @@ var LineStyle = defineGrafanaItemClass("LineStyle", GrafanaItem).defineValue("fi
1085
1279
  var Stacking = defineGrafanaItemClass("Stacking", GrafanaItem).defineValue("group", String).defineValue("mode", String).asClass;
1086
1280
  //#endregion
1087
1281
  //#region src/items/FieldConfigCustomTimeSerie.js
1088
- var FieldConfigCustomTimeSerie = defineGrafanaItemClass("FieldConfigCustomTimeSerie", FieldConfigCustom).with((builder) => defineAxisConfig(builder)).defineValue("barAlignment", Number).defineValue("barMaxWidth", Number).defineValue("barWidthFactor", Number).defineValue("drawStyle", String).defineValue("fillBelowTo", String).defineValue("fillColor", String).defineValue("fillOpacity", Number).defineValue("gradientMode", String).with((builder) => defineHideableFieldConfig(builder)).defineValue("insertNulls", Boolean).defineValue("lineInterpolation", String).defineGrafanaObject("lineStyle", LineStyle, { onDefault: (options) => new LineStyle(options).setFill("solid") }).defineMethod("setLineStyleFill", "(fill: string): this;", {
1282
+ var FieldConfigCustomTimeSerie = defineGrafanaItemClass("FieldConfigCustomTimeSerie", FieldConfigCustom).with((builder) => defineAxisConfig(builder)).defineValue("barAlignment", Number).defineValue("barMaxWidth", Number).defineValue("barWidthFactor", Number).defineValue("drawStyle", String).defineValue("fillBelowTo", String).defineValue("fillColor", String).defineValue("fillOpacity", Number).defineValue("gradientMode", String).with((builder) => defineHideableFieldConfig(builder)).defineValue("insertNulls", Boolean).defineValue("lineInterpolation", String).defineObject("lineStyle", LineStyle, { onDefault: (options) => new LineStyle(options).setFill("solid") }).defineMethod("setLineStyleFill", "(fill: string): this;", {
1089
1283
  /**
1090
1284
  * @param {FieldConfigCustomTimeSerie} fieldConfigCustomTimeSerie
1091
1285
  * @param {String} fill
@@ -1094,7 +1288,7 @@ var FieldConfigCustomTimeSerie = defineGrafanaItemClass("FieldConfigCustomTimeSe
1094
1288
  code: (fieldConfigCustomTimeSerie, fill) => {
1095
1289
  fieldConfigCustomTimeSerie.lineStyle.setFill(fill);
1096
1290
  return fieldConfigCustomTimeSerie;
1097
- } }).defineValue("lineWidth", Number).defineValue("pointColor", String).defineValue("pointSize", Number).defineValue("pointSymbol", String).defineValue("showPoints", String).defineValue("showValues", Boolean).defineValue("spanNulls", Boolean).defineGrafanaObject("stacking", Stacking, { onDefault: (options) => new Stacking(options).setGroup("A").setMode("none") }).defineGrafanaObject("thresholdsStyle", ThresholdStyle, { onDefault: (options) => new ThresholdStyle(options).setMode("off") }).defineMethod("setThresholdsStyleMode", "(mode: string): this;", {
1291
+ } }).defineValue("lineWidth", Number).defineValue("pointColor", String).defineValue("pointSize", Number).defineValue("pointSymbol", String).defineValue("showPoints", String).defineValue("showValues", Boolean).defineValue("spanNulls", Boolean).defineObject("stacking", Stacking, { onDefault: (options) => new Stacking(options).setGroup("A").setMode("none") }).defineObject("thresholdsStyle", ThresholdStyle, { onDefault: (options) => new ThresholdStyle(options).setMode("off") }).defineMethod("setThresholdsStyleMode", "(mode: string): this;", {
1098
1292
  /**
1099
1293
  * @param {FieldConfigCustomTimeSerie} fieldConfigCustomTimeSerie
1100
1294
  * @param {String} mode
@@ -1109,10 +1303,10 @@ code: (fieldConfigCustomTimeSerie, mode) => {
1109
1303
  var FieldConfigCustomTableCellOptions = defineGrafanaItemClass("FieldConfigCustomTableCellOptions", GrafanaItem).defineValue("type", String).asClass;
1110
1304
  //#endregion
1111
1305
  //#region src/items/FieldConfigCustomTableFooter.js
1112
- var FieldConfigCustomTableFooter = defineGrafanaItemClass("FieldConfigCustomTableFooter", GrafanaItem).defineArray("reducers", String).asClass;
1306
+ var FieldConfigCustomTableFooter = defineGrafanaItemClass("FieldConfigCustomTableFooter", GrafanaItem).defineBasicArray("reducers", String).asClass;
1113
1307
  //#endregion
1114
1308
  //#region src/items/FieldConfigCustomTable.js
1115
- var FieldConfigCustomTable = defineGrafanaItemClass("FieldConfigCustomTable", FieldConfigCustom).defineValue("align", String).defineGrafanaObject("cellOptions", FieldConfigCustomTableCellOptions, { onDefault: (options) => new FieldConfigCustomTableCellOptions(options) }).defineGrafanaObject("footer", FieldConfigCustomTableFooter, { onDefault: (options) => new FieldConfigCustomTableFooter(options) }).defineValue("inspect", Boolean).asClass;
1309
+ var FieldConfigCustomTable = defineGrafanaItemClass("FieldConfigCustomTable", FieldConfigCustom).defineValue("align", String).defineObject("cellOptions", FieldConfigCustomTableCellOptions, { onDefault: (options) => new FieldConfigCustomTableCellOptions(options) }).defineObject("footer", FieldConfigCustomTableFooter, { onDefault: (options) => new FieldConfigCustomTableFooter(options) }).defineValue("inspect", Boolean).asClass;
1116
1310
  //#endregion
1117
1311
  //#region src/items/Influxdb.js
1118
1312
  var Influxdb = defineGrafanaItemClass("Influxdb", Datasource).with((builder) => defineDatasource(builder, "influxdb")).asClass;
@@ -1121,7 +1315,7 @@ var Influxdb = defineGrafanaItemClass("Influxdb", Datasource).with((builder) =>
1121
1315
  var PanelOptions = defineGrafanaItemClass("PanelOptions", GrafanaItem).asClass;
1122
1316
  //#endregion
1123
1317
  //#region src/items/VizLegendOptions.js
1124
- var VizLegendOptions = defineGrafanaItemClass("VizLegendOptions", GrafanaItem).defineValue("asTable", Boolean).defineArray("calcs", String).defineValue("displayMode", String).defineValue("isVisible", Boolean).defineValue("limit", Number).defineValue("overflow", String).defineValue("placement", String).defineValue("showLegend", Boolean).defineValue("sortBy", String).defineValue("sortDesc", Boolean).defineValue("width", Number).asClass;
1318
+ var VizLegendOptions = defineGrafanaItemClass("VizLegendOptions", GrafanaItem).defineValue("asTable", Boolean).defineBasicArray("calcs", String).defineValue("displayMode", String).defineValue("isVisible", Boolean).defineValue("limit", Number).defineValue("overflow", String).defineValue("placement", String).defineValue("showLegend", Boolean).defineValue("sortBy", String).defineValue("sortDesc", Boolean).defineValue("width", Number).asClass;
1125
1319
  //#endregion
1126
1320
  //#region src/items/VizTooltipOptions.js
1127
1321
  var VizTooltipOptions = defineGrafanaItemClass("VizTooltipOptions", GrafanaItem).defineValue("hideZeros", Boolean).defineValue("maxHeight", Number).defineValue("maxWidth", Number).defineValue("mode", String).defineValue("sort", String).asClass;
@@ -1130,19 +1324,19 @@ var VizTooltipOptions = defineGrafanaItemClass("VizTooltipOptions", GrafanaItem)
1130
1324
  var VizTextDisplayOptions = defineGrafanaItemClass("VizTextDisplayOptions", GrafanaItem).defineValue("percentSize", Number).defineValue("titleSize", Number).defineValue("valueSize", Number).asClass;
1131
1325
  //#endregion
1132
1326
  //#region src/items/PanelOptionsBarChart.js
1133
- var PanelOptionsBarChart = defineGrafanaItemClass("PanelOptionsBarChart", PanelOptions).defineValue("barRadius", Number).defineValue("barWidth", Number).defineValue("colorByField", String).defineValue("fullHighlight", Boolean).defineValue("groupWidth", Number).defineGrafanaObject("legend", VizLegendOptions, { onDefault: (options) => new VizLegendOptions(options).setDisplayMode("list").setPlacement("bottom").setShowLegend(false) }).defineValue("orientation", String).defineValue("showValue", String).defineValue("stacking", String).defineGrafanaObject("text", VizTextDisplayOptions).defineGrafanaObject("tooltip", VizTooltipOptions, { onDefault: (options) => new VizTooltipOptions(options).setHideZeros(false).setMode("single").setSort("none") }).defineValue("xField", String).defineValue("xTickLabelMaxLength", Number).defineValue("xTickLabelRotation", Number).defineValue("xTickLabelSpacing", Number).asClass;
1327
+ var PanelOptionsBarChart = defineGrafanaItemClass("PanelOptionsBarChart", PanelOptions).defineValue("barRadius", Number).defineValue("barWidth", Number).defineValue("colorByField", String).defineValue("fullHighlight", Boolean).defineValue("groupWidth", Number).defineObject("legend", VizLegendOptions, { onDefault: (options) => new VizLegendOptions(options).setDisplayMode("list").setPlacement("bottom").setShowLegend(false) }).defineValue("orientation", String).defineValue("showValue", String).defineValue("stacking", String).defineObject("text", VizTextDisplayOptions).defineObject("tooltip", VizTooltipOptions, { onDefault: (options) => new VizTooltipOptions(options).setHideZeros(false).setMode("single").setSort("none") }).defineValue("xField", String).defineValue("xTickLabelMaxLength", Number).defineValue("xTickLabelRotation", Number).defineValue("xTickLabelSpacing", Number).asClass;
1134
1328
  //#endregion
1135
1329
  //#region src/items/PanelOptionsGaugeEffect.js
1136
1330
  var PanelOptionsGaugeEffect = defineGrafanaItemClass("PanelOptionsGaugeEffect", GrafanaItem).defineValue("barGlow", Boolean).defineValue("centerGlow", Boolean).defineValue("gradient", Boolean).asClass;
1137
1331
  //#endregion
1138
1332
  //#region src/items/PanelOptionsGaugeReduceOptions.js
1139
- var PanelOptionsGaugeReduceOptions = defineGrafanaItemClass("PanelOptionsGaugeReduceOptions", GrafanaItem).defineArray("calcs", String, { setEmpty: true }).defineValue("fields", String).defineValue("limit", Number).defineValue("values", Boolean).asClass;
1333
+ var PanelOptionsGaugeReduceOptions = defineGrafanaItemClass("PanelOptionsGaugeReduceOptions", GrafanaItem).defineBasicArray("calcs", String, { setEmpty: true }).defineValue("fields", String).defineValue("limit", Number).defineValue("values", Boolean).asClass;
1140
1334
  //#endregion
1141
1335
  //#region src/items/PanelOptionsGauge.js
1142
- var PanelOptionsGauge = defineGrafanaItemClass("PanelOptionsGauge", PanelOptions).defineValue("barShape", String).defineValue("barWidthFactor", Number).defineGrafanaObject("effects", PanelOptionsGaugeEffect).defineValue("endpointMarker", String).defineValue("minVizHeight", Number).defineValue("minVizWidth", Number).defineValue("orientation", String).defineGrafanaObject("reduceOptions", PanelOptionsGaugeReduceOptions).defineValue("segmentCount", Number).defineValue("segmentSpacing", Number).defineValue("shape", String).defineValue("showThresholdLabels", Boolean).defineValue("showThresholdMarkers", Boolean).defineValue("sizing", String).defineValue("sparkline", Boolean).defineValue("textMode", String).asClass;
1336
+ var PanelOptionsGauge = defineGrafanaItemClass("PanelOptionsGauge", PanelOptions).defineValue("barShape", String).defineValue("barWidthFactor", Number).defineObject("effects", PanelOptionsGaugeEffect).defineValue("endpointMarker", String).defineValue("minVizHeight", Number).defineValue("minVizWidth", Number).defineValue("orientation", String).defineObject("reduceOptions", PanelOptionsGaugeReduceOptions).defineValue("segmentCount", Number).defineValue("segmentSpacing", Number).defineValue("shape", String).defineValue("showThresholdLabels", Boolean).defineValue("showThresholdMarkers", Boolean).defineValue("sizing", String).defineValue("sparkline", Boolean).defineValue("textMode", String).asClass;
1143
1337
  //#endregion
1144
1338
  //#region src/items/PanelOptionsGeomapBasemap.js
1145
- var PanelOptionsGeomapBasemap = defineGrafanaItemClass("PanelOptionsGeomapBasemap", GrafanaItem).defineObject("config", Object).defineValue("name", String).defineValue("noRepeat", Boolean).defineValue("type", String).asClass;
1339
+ var PanelOptionsGeomapBasemap = defineGrafanaItemClass("PanelOptionsGeomapBasemap", GrafanaItem).defineBasicObject("config", Object).defineValue("name", String).defineValue("noRepeat", Boolean).defineValue("type", String).asClass;
1146
1340
  //#endregion
1147
1341
  //#region src/items/PanelOptionsGeomapControls.js
1148
1342
  var PanelOptionsGeomapControls = defineGrafanaItemClass("PanelOptionsGeomapControls", GrafanaItem).defineValue("mouseWheelZoom", Boolean).defineValue("showAttribution", Boolean).defineValue("showDebug", Boolean).defineValue("showMeasure", Boolean).defineValue("showScale", Boolean).defineValue("showZoom", Boolean).asClass;
@@ -1166,16 +1360,16 @@ var StyleSymbolAlign = defineGrafanaItemClass("StyleSymbolAlign", GrafanaItem).d
1166
1360
  var StyleTextConfig = defineGrafanaItemClass("StyleTextConfig", GrafanaItem).defineValue("fontSize", Number).defineValue("offsetX", Number).defineValue("offsetY", Number).defineValue("textAlign", String).defineValue("textBaseline", String).asClass;
1167
1361
  //#endregion
1168
1362
  //#region src/items/PanelOptionsGeomapLayerConfigStyle.js
1169
- var PanelOptionsGeomapLayerConfigStyle = defineGrafanaItemClass("PanelOptionsGeomapLayerConfigStyle", GrafanaItem).defineGrafanaObject("color", StyleColor, { onDefault: (options) => new StyleColor(options) }).defineValue("opacity", Number, { onDefault: (options) => 1 }).defineGrafanaObject("rotation", StyleRotation, { onDefault: (options) => new StyleRotation(options) }).defineGrafanaObject("size", StyleSize, { onDefault: (options) => new StyleSize(options) }).defineGrafanaObject("symbol", StyleSymbol, { onDefault: (options) => new StyleSymbol(options) }).defineGrafanaObject("symbolAlign", StyleSymbolAlign, { onDefault: (options) => new StyleSymbolAlign(options) }).defineGrafanaObject("textConfig", StyleTextConfig, { onDefault: (options) => new StyleTextConfig(options) }).asClass;
1363
+ var PanelOptionsGeomapLayerConfigStyle = defineGrafanaItemClass("PanelOptionsGeomapLayerConfigStyle", GrafanaItem).defineObject("color", StyleColor, { onDefault: (options) => new StyleColor(options) }).defineValue("opacity", Number, { onDefault: (options) => 1 }).defineObject("rotation", StyleRotation, { onDefault: (options) => new StyleRotation(options) }).defineObject("size", StyleSize, { onDefault: (options) => new StyleSize(options) }).defineObject("symbol", StyleSymbol, { onDefault: (options) => new StyleSymbol(options) }).defineObject("symbolAlign", StyleSymbolAlign, { onDefault: (options) => new StyleSymbolAlign(options) }).defineObject("textConfig", StyleTextConfig, { onDefault: (options) => new StyleTextConfig(options) }).asClass;
1170
1364
  //#endregion
1171
1365
  //#region src/items/PanelOptionsGeomapLayerConfig.js
1172
- var PanelOptionsGeomapLayerConfig = defineGrafanaItemClass("PanelOptionsGeomapLayerConfig", GrafanaItem).defineValue("showLegend", Boolean).defineGrafanaObject("style", PanelOptionsGeomapLayerConfigStyle, { onDefault: (options) => new PanelOptionsGeomapLayerConfigStyle(options) }).asClass;
1366
+ var PanelOptionsGeomapLayerConfig = defineGrafanaItemClass("PanelOptionsGeomapLayerConfig", GrafanaItem).defineValue("showLegend", Boolean).defineObject("style", PanelOptionsGeomapLayerConfigStyle, { onDefault: (options) => new PanelOptionsGeomapLayerConfigStyle(options) }).asClass;
1173
1367
  //#endregion
1174
1368
  //#region src/items/PanelOptionsGeomapLayerLocation.js
1175
1369
  var PanelOptionsGeomapLayerLocation = defineGrafanaItemClass("PanelOptionsGeomapLayerLocation", GrafanaItem).defineValue("mode", String).asClass;
1176
1370
  //#endregion
1177
1371
  //#region src/items/PanelOptionsGeomapLayer.js
1178
- var PanelOptionsGeomapLayer = defineGrafanaItemClass("PanelOptionsGeomapLayer", GrafanaItem).defineGrafanaObject("config", PanelOptionsGeomapLayerConfig).defineGrafanaObject("location", PanelOptionsGeomapLayerLocation).defineValue("name", String).defineValue("tooltip", Boolean).defineValue("type", String).asClass;
1372
+ var PanelOptionsGeomapLayer = defineGrafanaItemClass("PanelOptionsGeomapLayer", GrafanaItem).defineObject("config", PanelOptionsGeomapLayerConfig).defineObject("location", PanelOptionsGeomapLayerLocation).defineValue("name", String).defineValue("tooltip", Boolean).defineValue("type", String).asClass;
1179
1373
  //#endregion
1180
1374
  //#region src/items/PanelOptionsGeomapTooltip.js
1181
1375
  var PanelOptionsGeomapTooltip = defineGrafanaItemClass("PanelOptionsGeomapTooltip", GrafanaItem).defineValue("mode", String).asClass;
@@ -1184,13 +1378,13 @@ var PanelOptionsGeomapTooltip = defineGrafanaItemClass("PanelOptionsGeomapToolti
1184
1378
  var PanelOptionsGeomapView = defineGrafanaItemClass("PanelOptionsGeomapView", GrafanaItem).defineValue("allLayers", Boolean).defineValue("id", String).defineValue("lat", Number).defineValue("lon", Number).defineValue("noRepeat", Boolean).defineValue("shared", Boolean).defineValue("zoom", Number).asClass;
1185
1379
  //#endregion
1186
1380
  //#region src/items/PanelOptionsGeomap.js
1187
- var PanelOptionsGeomap = defineGrafanaItemClass("PanelOptionsGeomap", PanelOptions).defineGrafanaObject("basemap", PanelOptionsGeomapBasemap).defineGrafanaObject("controls", PanelOptionsGeomapControls).defineArray("layers", PanelOptionsGeomapLayer).defineGrafanaObject("tooltip", PanelOptionsGeomapTooltip).defineGrafanaObject("view", PanelOptionsGeomapView).asClass;
1381
+ var PanelOptionsGeomap = defineGrafanaItemClass("PanelOptionsGeomap", PanelOptions).defineObject("basemap", PanelOptionsGeomapBasemap).defineObject("controls", PanelOptionsGeomapControls).defineArray("layers", PanelOptionsGeomapLayer).defineObject("tooltip", PanelOptionsGeomapTooltip).defineObject("view", PanelOptionsGeomapView).asClass;
1188
1382
  //#endregion
1189
1383
  //#region src/items/PieChartLegendOptions.js
1190
- var PieChartLegendOptions = defineGrafanaItemClass("PieChartLegendOptions", VizLegendOptions).defineArray("values", String).asClass;
1384
+ var PieChartLegendOptions = defineGrafanaItemClass("PieChartLegendOptions", VizLegendOptions).defineBasicArray("values", String).asClass;
1191
1385
  //#endregion
1192
1386
  //#region src/items/PanelOptionsPieChart.js
1193
- var PanelOptionsPieChart = defineGrafanaItemClass("PanelOptionsPieChart", PanelOptions).defineArray("displayLabels", String).defineGrafanaObject("legend", PieChartLegendOptions).defineValue("pieType", String).defineValue("sort", String).defineGrafanaObject("tooltip", VizTooltipOptions).asClass;
1387
+ var PanelOptionsPieChart = defineGrafanaItemClass("PanelOptionsPieChart", PanelOptions).defineBasicArray("displayLabels", String).defineObject("legend", PieChartLegendOptions).defineValue("pieType", String).defineValue("sort", String).defineObject("tooltip", VizTooltipOptions).asClass;
1194
1388
  //#endregion
1195
1389
  //#region src/items/PanelOptionsStat.js
1196
1390
  var PanelOptionsStat = defineGrafanaItemClass("PanelOptionsStat", PanelOptions).asClass;
@@ -1205,13 +1399,13 @@ var PanelOptionsTable = defineGrafanaItemClass("PanelOptionsTable", PanelOptions
1205
1399
  var PanelOptionsTextCode = defineGrafanaItemClass("PanelOptionsTextCode", GrafanaItem).defineValue("language", String).defineValue("showLineNumbers", Boolean).defineValue("showMiniMap", Boolean).asClass;
1206
1400
  //#endregion
1207
1401
  //#region src/items/PanelOptionsText.js
1208
- var PanelOptionsText = defineGrafanaItemClass("PanelOptionsText", PanelOptions).defineGrafanaObject("code", PanelOptionsTextCode, { onDefault: (options) => new PanelOptionsTextCode(options) }).defineValue("content", String).defineValue("mode", String).asClass;
1402
+ var PanelOptionsText = defineGrafanaItemClass("PanelOptionsText", PanelOptions).defineObject("code", PanelOptionsTextCode, { onDefault: (options) => new PanelOptionsTextCode(options) }).defineValue("content", String).defineValue("mode", String).asClass;
1209
1403
  //#endregion
1210
1404
  //#region src/items/PanelOptionsTimeSeries.js
1211
- var PanelOptionsTimeSeries = defineGrafanaItemClass("PanelOptionsTimeSeries", PanelOptions).defineValue("disableKeyboardEvents", Boolean).defineGrafanaObject("legend", VizLegendOptions, { onDefault: (options) => new VizLegendOptions(options).setDisplayMode("list").setPlacement("bottom").setShowLegend(false) }).defineValue("orientation", String).defineGrafanaObject("tooltip", VizTooltipOptions, { onDefault: (options) => new VizTooltipOptions(options).setHideZeros(false).setMode("single").setSort("none") }).asClass;
1405
+ var PanelOptionsTimeSeries = defineGrafanaItemClass("PanelOptionsTimeSeries", PanelOptions).defineValue("disableKeyboardEvents", Boolean).defineObject("legend", VizLegendOptions, { onDefault: (options) => new VizLegendOptions(options).setDisplayMode("list").setPlacement("bottom").setShowLegend(false) }).defineValue("orientation", String).defineObject("tooltip", VizTooltipOptions, { onDefault: (options) => new VizTooltipOptions(options).setHideZeros(false).setMode("single").setSort("none") }).asClass;
1212
1406
  //#endregion
1213
1407
  //#region src/items/TargetInfinity.js
1214
- var TargetInfinity = defineGrafanaItemClass("TargetInfinity", Target).defineObject("columns", Object).defineObject("computed_columns", Object, { name: "computedColumns" }).defineValue("format", String).defineValue("parser", String).defineValue("source", String).defineValue("type", String).defineValue("uql", String).defineValue("url", String).defineValue("url_options", Object, { name: "urlOptions" }).asClass;
1408
+ var TargetInfinity = defineGrafanaItemClass("TargetInfinity", Target).defineBasicObject("columns", Object).defineBasicObject("computed_columns", Object, { name: "computedColumns" }).defineValue("format", String).defineValue("parser", String).defineValue("source", String).defineValue("type", String).defineValue("uql", String).defineValue("url", String).defineValue("url_options", Object, { name: "urlOptions" }).asClass;
1215
1409
  //#endregion
1216
1410
  //#region src/items/Testdata.js
1217
1411
  var Testdata = defineGrafanaItemClass("Testdata", Datasource).with((builder) => defineDatasource(builder, "grafana-testdata-datasource")).asClass;
@@ -1221,33 +1415,37 @@ var FieldConfigCustomText = defineGrafanaItemClass("FieldConfigCustomText", Fiel
1221
1415
  //#endregion
1222
1416
  //#region src/items/properties/panel.js
1223
1417
  /**
1224
- * @param {GrafanaItemClassBuilder} builder
1418
+ * @template T
1419
+ * @typedef {import("@gdacm/base-types").MetaConstructor<T>} MetaConstructor
1420
+ */
1421
+ /**
1422
+ * @template {Panel} T
1423
+ * @param {GrafanaItemClassBuilder<T>} builder
1225
1424
  * @param {string} typeName
1226
- * @param {typeof FieldConfigCustom} fieldConfigCustom
1227
- * @param {typeof PanelOptions} panelOptions
1425
+ * @param {MetaConstructor<FieldConfigCustom>} fieldConfigCustom
1426
+ * @param {MetaConstructor<PanelOptions>} panelOptions
1228
1427
  * @param {Object} [options]
1229
- * @param {(instance: Panel) => void} [options.onInit]
1428
+ * @param {(instance: T) => void} [options.onInit]
1230
1429
  */
1231
1430
  var definePanel = (builder, typeName, fieldConfigCustom, panelOptions, options) => {
1232
1431
  const { onInit } = options ?? {};
1233
1432
  builder.defineConstructor((instance) => {
1234
- const self = instance;
1235
- self.setType(typeName).withFieldConfig((fieldConfig) => fieldConfig.setDefaults(new FieldConfigDefault(instance.metaOptions).setCustom(new fieldConfigCustom(instance.metaOptions))));
1236
- if (onInit) onInit(self);
1433
+ instance.setType(typeName).withFieldConfig((fieldConfig) => fieldConfig.setDefaults(new FieldConfigDefault(instance.metaOptions).setCustom(new fieldConfigCustom(instance.metaOptions))));
1434
+ if (onInit) onInit(instance);
1237
1435
  }).defineGetterSetter("custom", `${fieldConfigCustom.name}`, {
1238
1436
  typesToInclude: [fieldConfigCustom],
1239
1437
  getter: (instance) => instance.fieldConfig.defaults.custom
1240
1438
  }).defineMethod(`withCustom`, `(code: (custom: ${fieldConfigCustom.name}) => void): this`, {
1241
1439
  typesToInclude: [fieldConfigCustom],
1242
1440
  /**
1243
- * @param {Panel} instance
1441
+ * @param {T} instance
1244
1442
  * @param {(custom: FieldConfigCustom) => void} code
1245
1443
  * */
1246
1444
  code: (instance, code) => {
1247
1445
  code(instance.fieldConfig.defaults.custom);
1248
1446
  return instance;
1249
1447
  }
1250
- }).defineGrafanaObject("options", panelOptions, { onDefault: (options) => new panelOptions(options) });
1448
+ }).defineObject("options", panelOptions, { onDefault: (options) => new panelOptions(options) });
1251
1449
  };
1252
1450
  //#endregion
1253
1451
  //#region src/items/TextPanel.js
@@ -1257,8 +1455,13 @@ var TextPanel = defineGrafanaItemClass("TextPanel", Panel).with((builder) => def
1257
1455
  var BarChart = defineGrafanaItemClass("BarChart", Panel).with((instance) => definePanel(instance, "barchart", FieldConfigCustomBarChart, PanelOptionsBarChart, { onInit: (instance) => {
1258
1456
  instance.fieldConfig.defaults.setColorMode("palette-classic");
1259
1457
  instance.fieldConfig.defaults.thresholds.setMode("absolute");
1260
- } })).defineMethod("setThresholdsStyleArea", "(): this", { code: (instance) => {
1261
- instance.custom.thresholdsStyle.setMode("area");
1458
+ } })).defineMethod("setThresholdsStyleMode", "(mode: string): this", {
1459
+ /**
1460
+ * @param {BarChart} instance
1461
+ * @returns
1462
+ */
1463
+ code: (instance, mode) => {
1464
+ instance.custom.thresholdsStyle.setMode(mode);
1262
1465
  return instance;
1263
1466
  } }).asClass;
1264
1467
  //#endregion
@@ -1289,8 +1492,13 @@ var Table = defineGrafanaItemClass("Table", Panel).with((builder) => definePanel
1289
1492
  var TimeSeries = defineGrafanaItemClass("TimeSeries", Panel).with((builder) => definePanel(builder, "timeseries", FieldConfigCustomTimeSerie, PanelOptionsTimeSeries, { onInit: (instance) => {
1290
1493
  instance.fieldConfig.defaults.setColorMode("palette-classic");
1291
1494
  instance.fieldConfig.defaults.thresholds.setMode("absolute");
1292
- } })).defineMethod("setThresholdsStyleArea", "(): this", { code: (instance) => {
1293
- instance.custom.thresholdsStyle.setMode("area");
1495
+ } })).defineMethod("setThresholdsStyleMode", "(mode: string): this", {
1496
+ /**
1497
+ * @param {TimeSeries} instance
1498
+ * @returns
1499
+ */
1500
+ code: (instance, mode) => {
1501
+ instance.custom.thresholdsStyle.setMode(mode);
1294
1502
  return instance;
1295
1503
  } }).asClass;
1296
1504
  //#endregion