@gdacm/grafana-items 0.1.18 → 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
45
89
  */
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
90
  /**
70
- *
71
- * @param {typeof GrafanaItem} cls
72
- * @returns {MetaClassInfo}
91
+ * @template T
92
+ * @typedef {import("@gdacm/base-types").MetaConstructor<T>} MetaConstructor
73
93
  */
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
94
  /**
80
- * @param {typeof GrafanaItem} cls
81
- * @param {string} name
95
+ * @template {Object} T
96
+ * @template {T} C
97
+ * @typedef {import("./MetaClassRegistry.js").MetaClassInfo<T,C>} MetaClassInfo
82
98
  */
83
- function hasPrototype(cls, name) {
84
- return cls.prototype[name] !== void 0;
85
- }
86
99
  /**
87
- * @param {typeof GrafanaItem} cls
100
+ * @type {MetaClassRegistry<GrafanaItem>}
101
+ */
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;
127
+ /**
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,85 +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
- if (hasPrototype(cls, setNewName) === false) {
299
- setPrototype(
300
- cls,
301
- setNewName,
302
- /**
303
- * @this GrafanaItem
304
- * @param {(item: T) => T} [onNewCreated]
305
- * @returns {GrafanaItem}
306
- */
307
- function(onNewCreated) {
308
- if (!onNewCreated) onNewCreated = (item) => item;
309
- return this._setGrafanaObject(key, type, onNewCreated(new type(this.metaOptions)));
310
- }
311
- );
312
- metaClassInfo.methods.push(`${setNewName}(onNewCreated: ((item: ${typeName}) => ${typeName}) | undefined): this;`);
313
- }
314
- setPrototype(
389
+ addTypeNameToInclude(cls, type.name);
390
+ setPrototypeWithSignature(
391
+ cls,
392
+ `set${caseName}`,
393
+ `(${name}: ${typeName}): this;`,
394
+ /**
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
409
+ * @param {(item: T) => T} [onNewCreated]
410
+ * @returns {C}
411
+ */
412
+ function(onNewCreated) {
413
+ if (!onNewCreated) onNewCreated = (item) => item;
414
+ return this._setGrafanaObject(key, type, onNewCreated(new type(this.metaOptions)));
415
+ }
416
+ );
417
+ setPrototypeWithSignature(
315
418
  cls,
316
419
  `with${caseName}`,
420
+ `(onWith: (item: ${typeName}) => void): this;`,
317
421
  /**
318
- * @this GrafanaItem
422
+ * @this C
319
423
  * @param {(item: T) => void} onWith
320
- * @returns {GrafanaItem}
424
+ * @returns {C}
321
425
  */
322
426
  function(onWith) {
323
427
  const item = this._getGrafanaObject(key, type);
@@ -325,101 +429,79 @@ function defineGrafanaObject(cls, key, type, option) {
325
429
  return this;
326
430
  }
327
431
  );
328
- metaClassInfo.methods.push(`with${caseName}(onWith: (item: ${typeName}) => void): this;`);
329
- setGetter(cls, name, (self) => self._getGrafanaObject(key, type));
330
- metaClassInfo.methods.push(`get ${name}(): ${typeName};`);
331
- if (option?.onInit) metaClassInfo.onInits.push(option?.onInit);
332
- if (option?.onDefault) {
333
- /**
334
- * @param {GrafanaItem} instance
335
- */
336
- const onInit = (instance) => {
337
- const x = option?.onDefault?.(instance.metaOptions);
338
- instance._setGrafanaObject(key, type, x);
339
- };
340
- metaClassInfo.onInits.push(onInit);
341
- }
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
+ });
342
438
  }
343
439
  /**
344
- * @param {typeof GrafanaItem} cls
345
- * @param {string} key
346
- * @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
347
445
  * @param {Object} [option]
348
446
  * @param {string} [option.name]
349
447
  * @param {string} [option.itemName]
350
448
  * @param {boolean} [option.setEmpty]
351
- * @param {(instance: GrafanaItem) => void} [option.onInit]
352
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
449
+ * @param {(instance: C) => void} [option.onInit]
450
+ * @param {(metaOptions: GenericMetaOptions) => T[]} [option.onDefault]
353
451
  */
354
452
  function defineArray(cls, key, type, option) {
355
- const metaClassInfo = getMetaClassInfo(cls);
356
453
  const name = option?.name ? option.name : key;
357
454
  const caseName = name.charAt(0).toUpperCase() + name.slice(1);
358
455
  const itemName = option?.itemName ? option.itemName : name.endsWith("s") ? name.slice(0, -1) : `${name}Item`;
359
- if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) {
360
- if (type.name !== "String" && type.name !== "Number" && type.name !== "Boolean") metaClassInfo.typeNamesToInclude.push(type.name);
361
- }
362
456
  const caseItemName = itemName.charAt(0).toUpperCase() + itemName.slice(1);
363
- const initName = `init${caseName}`;
364
- if (hasPrototype(cls, initName) === false) {
365
- setPrototype(
366
- cls,
367
- initName,
368
- /**
369
- * @this GrafanaItem
370
- * @returns {GrafanaItem}
371
- */
372
- function() {
373
- return this._initArray(key);
374
- }
375
- );
376
- metaClassInfo.methods.push(`init${caseName}(): this;`);
377
- }
378
- setGetter(cls, name, (self) => self._getArray(key));
379
- metaClassInfo.methods.push(`get ${name}(): ${type.name}[];`);
380
- const addName = `add${caseItemName}`;
381
- if (hasPrototype(cls, addName) === false) {
382
- setPrototype(
383
- cls,
384
- addName,
385
- /**
386
- * @this GrafanaItem
387
- * @template T
388
- * @param {T} item
389
- * @returns {GrafanaItem}
390
- */
391
- function(item) {
392
- return this._addArrayItem(key, item);
393
- }
394
- );
395
- metaClassInfo.methods.push(`${addName}(${itemName}: ${type.name}): this;`);
396
- }
397
- const addNewName = `addNew${caseItemName}`;
398
- if (hasPrototype(cls, addNewName) === false) {
399
- setPrototype(
400
- cls,
401
- addNewName,
402
- /**
403
- * @this GrafanaItem
404
- * @template T
405
- * @param {(item: T) => T} onNewCreated
406
- * @returns {GrafanaItem}
407
- */
408
- function(onNewCreated) {
409
- return this._addArrayItem(key, onNewCreated(new type(this.metaOptions)));
410
- }
411
- );
412
- metaClassInfo.methods.push(`${addNewName}(onNewCreated: (item: ${type.name}) => ${type.name}): this;`);
413
- }
414
- const withName = `with${caseName}`;
415
- setPrototype(
457
+ addTypeNameToInclude(cls, type.name);
458
+ setPrototypeWithSignature(
416
459
  cls,
417
- withName,
460
+ `init${caseName}`,
461
+ `(): this;`,
418
462
  /**
419
- * @this GrafanaItem
420
- * @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
421
503
  * @param {(array: T[]) => void} onWith
422
- * @returns {GrafanaItem}
504
+ * @returns {C}
423
505
  */
424
506
  function(onWith) {
425
507
  const array = this._getArray(key);
@@ -427,97 +509,174 @@ function defineArray(cls, key, type, option) {
427
509
  return this;
428
510
  }
429
511
  );
430
- metaClassInfo.methods.push(`${withName}(onWith: (${name}: ${type.name}[]) => void): this;`);
431
- if (option?.onInit) metaClassInfo.onInits.push(option.onInit);
432
- if (option?.setEmpty) {
433
- /**
434
- * @param {GrafanaItem} instance
435
- */
436
- const onInitArray = (instance) => {
437
- instance._initArray(key);
438
- };
439
- metaClassInfo.onInits.push(onInitArray);
440
- }
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));
441
515
  }
442
516
  /**
443
- * @template {typeof GrafanaItem} T
444
- * @param {typeof GrafanaItem} cls
445
- * @param {string|undefined} method
517
+ * @template {GrafanaItem} C
518
+ * @param {MetaConstructor<C>} cls
519
+ * @param {string} key
520
+ * @param {Function} type
446
521
  * @param {Object} [option]
447
- * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
448
522
  * @param {string} [option.name]
449
- * @param {Function} [option.code]
450
- * @param {(instance: GrafanaItem) => void} [option.constr]
451
- * @param {string} [option.getterSetterType]
452
- * @param {(self: GrafanaItem) => any} [option.getter]
453
- * @param {(self: GrafanaItem, value: any) => void} [option.setter]
454
- */
455
- function defineMemberInternal(cls, method, option) {
456
- const { typesToInclude, name, code, constr, getterSetterType, getter, setter } = option || {};
457
- const metaClassInfo = getMetaClassInfo(cls);
458
- if (method !== void 0) metaClassInfo.methods.push(method);
459
- if (typesToInclude !== void 0) {
460
- for (const type of typesToInclude) if (metaClassInfo.typeNamesToInclude.includes(type.name) === false) metaClassInfo.typeNamesToInclude.push(type.name);
461
- }
462
- let codeCount = 0;
463
- if (code !== void 0) codeCount++;
464
- if (constr !== void 0) codeCount++;
465
- if (getter !== void 0 || setter !== void 0) codeCount++;
466
- if (codeCount > 1) throw new Error(`You can only provide either code or constructor or getter/setter, not all. (codeCount:${codeCount})`);
467
- if (code !== void 0 && name === void 0) throw new Error("You must provide a name when providing code.");
468
- if (constr !== void 0 && name !== void 0) throw new Error("You cannot provide a name when providing constructor.");
469
- if ((getter !== void 0 || setter !== void 0) && name === void 0) throw new Error("You must provide a name when providing getter or setter.");
470
- if (codeCount == 1) {
471
- if (code !== void 0) {
472
- if (!name) throw new Error("You must provide a name when providing code.");
473
- setPrototype(
474
- cls,
475
- name,
476
- /**
477
- * @this {GrafanaItem}
478
- * @param {...any} args
479
- * @returns {any}
480
- */
481
- function(...args) {
482
- return code(this, ...args);
483
- }
484
- );
485
- }
486
- if (constr !== void 0) metaClassInfo.onInits.push((instance) => constr(instance));
487
- if (getter !== void 0 && setter === void 0) {
488
- if (!name) throw new Error("You must provide a name when providing getter or setter.");
489
- setGetter(cls, name, getter);
490
- 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);
491
544
  }
492
- if (getter === void 0 && setter !== void 0) {
493
- if (!name) throw new Error("You must provide a name when providing getter or setter.");
494
- setSetter(cls, name, setter);
495
- 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);
496
559
  }
497
- if (getter !== void 0 && setter !== void 0) {
498
- if (!name) throw new Error("You must provide a name when providing getter or setter.");
499
- setGetterAndSetter(cls, name, getter, setter);
500
- metaClassInfo.methods.push(`get ${name}(): ${getterSetterType};`);
501
- 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;
502
575
  }
503
- }
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));
504
580
  }
505
581
  /**
506
- * @param {typeof GrafanaItem} cls
507
- * @param {(instance: GrafanaItem) => void} code
582
+ * @template {GrafanaItem} C
583
+ * @param {MetaConstructor<C>} cls
584
+ * @param {(instance: C) => void} code
508
585
  */
509
586
  function defineConstructor(cls, code) {
510
- 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);
511
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.");
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
+ */
512
664
  var GrafanaItemClassBuilder = class {
513
665
  /**
514
- * @param {typeof GrafanaItem} cls
666
+ * @param {MetaConstructor<C>} cls
515
667
  */
516
668
  constructor(cls) {
517
- 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;
518
677
  }
519
678
  /**
520
- * @param {typeof GrafanaItem} parent
679
+ * @param {MetaConstructor<GrafanaItem>} parent
521
680
  * @returns
522
681
  */
523
682
  setParent(parent) {
@@ -529,8 +688,8 @@ var GrafanaItemClassBuilder = class {
529
688
  * @param {Function} type
530
689
  * @param {Object} [option]
531
690
  * @param {string} [option.name]
532
- * @param {(instance: InstanceType<typeof GrafanaItem>) => void} [option.onInit]
533
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
691
+ * @param {(instance: C) => void} [option.onInit]
692
+ * @param {(metaOptions: GenericMetaOptions) => C} [option.onDefault]
534
693
  * @param {String} [option.typeName]
535
694
  * @return {this}
536
695
  */
@@ -539,13 +698,15 @@ var GrafanaItemClassBuilder = class {
539
698
  return this;
540
699
  }
541
700
  /**
701
+ * @template {GrafanaItem} T
542
702
  * @param {string} key
543
- * @param {Function} type
703
+ * @param {MetaConstructor<T>} type
544
704
  * @param {Object} [option]
545
705
  * @param {string} [option.name]
546
- * @param {(instance: GrafanaItem) => void} [option.onInit]
547
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
706
+ * @param {(instance: C) => void} [option.onInit]
707
+ * @param {(metaOptions: GenericMetaOptions) => T} [option.onDefault]
548
708
  * @param {String} [option.typeName]
709
+ * @param {String} [option.setNew]
549
710
  * @return {this}
550
711
  */
551
712
  defineObject(key, type, option) {
@@ -553,30 +714,29 @@ var GrafanaItemClassBuilder = class {
553
714
  return this;
554
715
  }
555
716
  /**
556
- * @template {GrafanaItem} T
557
717
  * @param {string} key
558
- * @param {MetaConstructor<T>} type
718
+ * @param {Function} type
559
719
  * @param {Object} [option]
560
720
  * @param {string} [option.name]
561
- * @param {(instance: T) => void} [option.onInit]
562
- * @param {(metaOptions: GenericMetaOptions) => T} [option.onDefault]
721
+ * @param {(instance: C) => void} [option.onInit]
722
+ * @param {(metaOptions: GenericMetaOptions) => Object} [option.onDefault]
563
723
  * @param {String} [option.typeName]
564
- * @param {String} [option.setNew]
565
724
  * @return {this}
566
725
  */
567
- defineGrafanaObject(key, type, option) {
568
- defineGrafanaObject(this.cls, key, type, option);
726
+ defineBasicObject(key, type, option) {
727
+ defineBasicObject(this.cls, key, type, option);
569
728
  return this;
570
729
  }
571
730
  /**
731
+ * @template {GrafanaItem} T
572
732
  * @param {string} key
573
- * @param {Function} type
733
+ * @param {MetaConstructor<T>} type
574
734
  * @param {Object} [option]
575
735
  * @param {string} [option.name]
576
736
  * @param {string} [option.itemName]
577
737
  * @param {boolean} [option.setEmpty]
578
- * @param {(instance: GrafanaItem) => void} [option.onInit]
579
- * @param {(metaOptions: GenericMetaOptions) => InstanceType<typeof GrafanaItem>} [option.onDefault]
738
+ * @param {(instance: C) => void} [option.onInit]
739
+ * @param {(metaOptions: GenericMetaOptions) => T[]} [option.onDefault]
580
740
  * @return {this}
581
741
  */
582
742
  defineArray(key, type, option) {
@@ -584,18 +744,32 @@ var GrafanaItemClassBuilder = class {
584
744
  return this;
585
745
  }
586
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
+ /**
587
762
  * @param {string} method
588
763
  * @param {Object} [option]
589
764
  * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
590
765
  * @return {this}
591
766
  */
592
767
  defineMember(method, option) {
593
- defineMemberInternal(this.cls, method, option);
768
+ defineMember(this.cls, method, option);
594
769
  return this;
595
770
  }
596
771
  /**
597
- * @template {typeof GrafanaItem} T
598
- * @param {(instance: InstanceType<T>) => void} code
772
+ * @param {(instance: C) => void} code
599
773
  * @return {this}
600
774
  */
601
775
  defineConstructor(code) {
@@ -607,36 +781,24 @@ var GrafanaItemClassBuilder = class {
607
781
  * @param {string} args
608
782
  * @param {Object} option
609
783
  * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
610
- * @param {Function} option.code
784
+ * @param {(instance: C, ...args: any[]) => any} option.code
611
785
  * @return {this}
612
786
  */
613
787
  defineMethod(name, args, option) {
614
- defineMemberInternal(this.cls, `${name}${args}`, {
615
- ...option,
616
- name
617
- });
788
+ defineMethod(this.cls, name, args, option);
618
789
  return this;
619
790
  }
620
791
  /**
621
- * @template {typeof GrafanaItem} T
622
792
  * @param {string} name
623
- * @param {string} type
793
+ * @param {string} typeName
624
794
  * @param {Object} option
625
795
  * @param {(typeof GrafanaItem)[]} [option.typesToInclude]
626
- * @param {(instance: InstanceType<T>) => any} [option.getter]
627
- * @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]
628
798
  * @return {this}
629
799
  */
630
- defineGetterSetter(name, type, option) {
631
- const getter = option.getter;
632
- const setter = option.setter;
633
- defineMemberInternal(this.cls, void 0, {
634
- ...option,
635
- getter,
636
- setter,
637
- name,
638
- getterSetterType: type
639
- });
800
+ defineGetterSetter(name, typeName, option) {
801
+ defineGetterSetter(this.cls, name, typeName, option);
640
802
  return this;
641
803
  }
642
804
  /**
@@ -654,15 +816,43 @@ var GrafanaItemClassBuilder = class {
654
816
  }
655
817
  };
656
818
  /**
819
+ * @template {GrafanaItem} C
657
820
  * @param {string} name
658
821
  * @param {typeof GrafanaItem} parent
659
- * @returns {GrafanaItemClassBuilder}
822
+ * @returns {GrafanaItemClassBuilder<C>}
660
823
  */
661
824
  var defineGrafanaItemClass = (name, parent) => {
662
825
  const cls = class extends parent {};
663
826
  Object.defineProperty(cls, "name", { value: name });
664
827
  return defineClass(cls).setParent(parent);
665
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
+ }
666
856
  //#endregion
667
857
  //#region src/items/GrafanaItem.js
668
858
  var GrafanaItem = class {
@@ -823,10 +1013,10 @@ var GrafanaItem = class {
823
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;");
824
1014
  //#endregion
825
1015
  //#region src/items/OverrideMatcher.js
826
- 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;
827
1017
  //#endregion
828
1018
  //#region src/items/OverrideMatcherOptionsByNames.js
829
- 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;
830
1020
  //#endregion
831
1021
  //#region src/items/OverrideProperty.js
832
1022
  var OverrideProperty = defineGrafanaItemClass("OverrideProperty", GrafanaItem).defineValue("id", String).defineValue("value", Object).asClass;
@@ -835,7 +1025,7 @@ var OverrideProperty = defineGrafanaItemClass("OverrideProperty", GrafanaItem).d
835
1025
  var Datasource = defineGrafanaItemClass("Datasource", GrafanaItem).defineValue("type", String).defineValue("uid", String).asClass;
836
1026
  //#endregion
837
1027
  //#region src/items/Annotation.js
838
- 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;
839
1029
  //#endregion
840
1030
  //#region src/items/Annotations.js
841
1031
  var Annotations = defineGrafanaItemClass("Annotations", GrafanaItem).defineArray("list", Annotation, { itemName: "annotation" }).asClass;
@@ -898,7 +1088,7 @@ code: (thresholds, value, color) => {
898
1088
  } }).asClass;
899
1089
  //#endregion
900
1090
  //#region src/items/FieldConfigDefault.js
901
- 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;", {
902
1092
  /**
903
1093
  * @param {FieldConfigDefault} fieldConfigDefault
904
1094
  * @param {String} mode
@@ -911,13 +1101,13 @@ code: (fieldConfigDefault, mode) => {
911
1101
  } }).asClass;
912
1102
  //#endregion
913
1103
  //#region src/items/FieldConfigOverride.js
914
- 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;
915
1105
  //#endregion
916
1106
  //#region src/items/HideFrom.js
917
1107
  var HideFrom = defineGrafanaItemClass("HideFrom", GrafanaItem).defineValue("graph", Boolean).defineValue("legend", Boolean).defineValue("tooltip", Boolean).defineValue("viz", Boolean).asClass;
918
1108
  //#endregion
919
1109
  //#region src/items/FieldConfig.js
920
- 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", {
921
1111
  /**
922
1112
  * @param {FieldConfig} fieldConfig
923
1113
  * @param {String[]} names
@@ -933,16 +1123,16 @@ code: (fieldConfig, names) => {
933
1123
  } }).asClass;
934
1124
  //#endregion
935
1125
  //#region src/items/Target.js
936
- 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;
937
1127
  //#endregion
938
1128
  //#region src/items/Link.js
939
- 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;
940
1130
  //#endregion
941
1131
  //#region src/items/DataTransformation.js
942
1132
  var DataTransformation = defineGrafanaItemClass("DataTransformation", GrafanaItem).asClass;
943
1133
  //#endregion
944
1134
  //#region src/items/Panel.js
945
- 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;", {
946
1136
  /**
947
1137
  * @param {Panel} panel
948
1138
  * @param {number} x
@@ -952,7 +1142,7 @@ var Panel = defineGrafanaItemClass("Panel", GrafanaItem).defineValue("cacheTimeo
952
1142
  */
953
1143
  code: (panel, x, y, w, h) => {
954
1144
  return panel.setNewGridPos((gridPos) => gridPos.setPos(x, y, w, h));
955
- } }).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;", {
956
1146
  /**
957
1147
  * @param {Panel} panel
958
1148
  * @param {string} refId
@@ -970,13 +1160,13 @@ var TemplateCurrent = defineGrafanaItemClass("TemplateCurrent", GrafanaItem).def
970
1160
  var TemplateOption = defineGrafanaItemClass("TemplateOption", GrafanaItem).defineValue("selected", Boolean).defineValue("text", String).defineValue("value", String).asClass;
971
1161
  //#endregion
972
1162
  //#region src/items/Template.js
973
- 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;
974
1164
  //#endregion
975
1165
  //#region src/items/Templating.js
976
1166
  var Templating = defineGrafanaItemClass("Templating", GrafanaItem).defineArray("list", Template, { itemName: "template" }).asClass;
977
1167
  //#endregion
978
1168
  //#region src/items/TimePicker.js
979
- 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;
980
1170
  //#endregion
981
1171
  //#region src/torefactor/index.js
982
1172
  /**
@@ -989,7 +1179,7 @@ var TimePicker = defineGrafanaItemClass("TimePicker", GrafanaItem).defineArray("
989
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"));
990
1180
  //#endregion
991
1181
  //#region src/items/Dashboard.js
992
- 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;", {
993
1183
  /**
994
1184
  * @param {Dashboard} dashboard
995
1185
  * @param {Panel} panel
@@ -1003,10 +1193,10 @@ code: (dashboard, panel) => {
1003
1193
  }, 0);
1004
1194
  panel._setValue("id", max + 1);
1005
1195
  return dashboard._addArrayItem("panels", panel);
1006
- } }).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, {
1007
1197
  onDefault: (options) => [],
1008
1198
  typeName: "Array<String>"
1009
- }).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;", {
1010
1200
  /**
1011
1201
  * @param {Dashboard} dashboard
1012
1202
  * @param {string} from
@@ -1016,21 +1206,21 @@ code: (dashboard, panel) => {
1016
1206
  code: (dashboard, from, to) => {
1017
1207
  dashboard.time.setRange(from, to);
1018
1208
  return dashboard;
1019
- } }).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;
1020
1210
  //#endregion
1021
1211
  //#region src/items/properties/datasource.js
1022
1212
  /**
1023
- * @param {GrafanaItemClassBuilder} builder
1213
+ * @template {Datasource} T
1214
+ * @param {GrafanaItemClassBuilder<T>} builder
1024
1215
  * @param {string} typeName
1025
1216
  * @param {Object} [options]
1026
- * @param {(instance: Datasource) => void} [options.onInit]
1217
+ * @param {(instance: T) => void} [options.onInit]
1027
1218
  */
1028
1219
  var defineDatasource = (builder, typeName, options) => {
1029
1220
  const { onInit } = options ?? {};
1030
1221
  builder.defineConstructor((instance) => {
1031
- const self = instance;
1032
- self.setType(typeName);
1033
- if (onInit) onInit(self);
1222
+ instance.setType(typeName);
1223
+ if (onInit) onInit(instance);
1034
1224
  });
1035
1225
  };
1036
1226
  //#endregion
@@ -1042,7 +1232,8 @@ var ScaleDistribution = defineGrafanaItemClass("ScaleDistribution", GrafanaItem)
1042
1232
  //#endregion
1043
1233
  //#region src/items/properties/axisConfig.js
1044
1234
  /**
1045
- * @param {GrafanaItemClassBuilder} builder
1235
+ * @template {FieldConfigCustom} T
1236
+ * @param {GrafanaItemClassBuilder<T>} builder
1046
1237
  */
1047
1238
  var defineAxisConfig = (builder) => {
1048
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") });
@@ -1050,17 +1241,18 @@ var defineAxisConfig = (builder) => {
1050
1241
  //#endregion
1051
1242
  //#region src/items/properties/hideableFieldConfig.js
1052
1243
  /**
1053
- * @param {GrafanaItemClassBuilder} builder
1244
+ * @template {FieldConfigCustom} T
1245
+ * @param {GrafanaItemClassBuilder<T>} builder
1054
1246
  */
1055
1247
  var defineHideableFieldConfig = (builder) => {
1056
- 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) });
1057
1249
  };
1058
1250
  //#endregion
1059
1251
  //#region src/items/ThresholdStyle.js
1060
1252
  var ThresholdStyle = defineGrafanaItemClass("ThresholdStyle", GrafanaItem).defineValue("mode", String).asClass;
1061
1253
  //#endregion
1062
1254
  //#region src/items/FieldConfigCustomBarChart.js
1063
- 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;", {
1064
1256
  /**
1065
1257
  * @param {FieldConfigCustomBarChart} fieldConfigCustomBarChart
1066
1258
  * @param {String} mode
@@ -1075,7 +1267,7 @@ code: (fieldConfigCustomBarChart, mode) => {
1075
1267
  var FieldConfigCustomGauge = defineGrafanaItemClass("FieldConfigCustomGauge", FieldConfigCustom).asClass;
1076
1268
  //#endregion
1077
1269
  //#region src/items/FieldConfigCustomGeomap.js
1078
- 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;
1079
1271
  //#endregion
1080
1272
  //#region src/items/FieldConfigCustomPieChart.js
1081
1273
  var FieldConfigCustomPieChart = defineGrafanaItemClass("FieldConfigCustomPieChart", FieldConfigCustom).with((builder) => defineHideableFieldConfig(builder)).asClass;
@@ -1087,7 +1279,7 @@ var LineStyle = defineGrafanaItemClass("LineStyle", GrafanaItem).defineValue("fi
1087
1279
  var Stacking = defineGrafanaItemClass("Stacking", GrafanaItem).defineValue("group", String).defineValue("mode", String).asClass;
1088
1280
  //#endregion
1089
1281
  //#region src/items/FieldConfigCustomTimeSerie.js
1090
- 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;", {
1091
1283
  /**
1092
1284
  * @param {FieldConfigCustomTimeSerie} fieldConfigCustomTimeSerie
1093
1285
  * @param {String} fill
@@ -1096,7 +1288,7 @@ var FieldConfigCustomTimeSerie = defineGrafanaItemClass("FieldConfigCustomTimeSe
1096
1288
  code: (fieldConfigCustomTimeSerie, fill) => {
1097
1289
  fieldConfigCustomTimeSerie.lineStyle.setFill(fill);
1098
1290
  return fieldConfigCustomTimeSerie;
1099
- } }).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;", {
1100
1292
  /**
1101
1293
  * @param {FieldConfigCustomTimeSerie} fieldConfigCustomTimeSerie
1102
1294
  * @param {String} mode
@@ -1111,10 +1303,10 @@ code: (fieldConfigCustomTimeSerie, mode) => {
1111
1303
  var FieldConfigCustomTableCellOptions = defineGrafanaItemClass("FieldConfigCustomTableCellOptions", GrafanaItem).defineValue("type", String).asClass;
1112
1304
  //#endregion
1113
1305
  //#region src/items/FieldConfigCustomTableFooter.js
1114
- var FieldConfigCustomTableFooter = defineGrafanaItemClass("FieldConfigCustomTableFooter", GrafanaItem).defineArray("reducers", String).asClass;
1306
+ var FieldConfigCustomTableFooter = defineGrafanaItemClass("FieldConfigCustomTableFooter", GrafanaItem).defineBasicArray("reducers", String).asClass;
1115
1307
  //#endregion
1116
1308
  //#region src/items/FieldConfigCustomTable.js
1117
- 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;
1118
1310
  //#endregion
1119
1311
  //#region src/items/Influxdb.js
1120
1312
  var Influxdb = defineGrafanaItemClass("Influxdb", Datasource).with((builder) => defineDatasource(builder, "influxdb")).asClass;
@@ -1123,7 +1315,7 @@ var Influxdb = defineGrafanaItemClass("Influxdb", Datasource).with((builder) =>
1123
1315
  var PanelOptions = defineGrafanaItemClass("PanelOptions", GrafanaItem).asClass;
1124
1316
  //#endregion
1125
1317
  //#region src/items/VizLegendOptions.js
1126
- 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;
1127
1319
  //#endregion
1128
1320
  //#region src/items/VizTooltipOptions.js
1129
1321
  var VizTooltipOptions = defineGrafanaItemClass("VizTooltipOptions", GrafanaItem).defineValue("hideZeros", Boolean).defineValue("maxHeight", Number).defineValue("maxWidth", Number).defineValue("mode", String).defineValue("sort", String).asClass;
@@ -1132,19 +1324,19 @@ var VizTooltipOptions = defineGrafanaItemClass("VizTooltipOptions", GrafanaItem)
1132
1324
  var VizTextDisplayOptions = defineGrafanaItemClass("VizTextDisplayOptions", GrafanaItem).defineValue("percentSize", Number).defineValue("titleSize", Number).defineValue("valueSize", Number).asClass;
1133
1325
  //#endregion
1134
1326
  //#region src/items/PanelOptionsBarChart.js
1135
- 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;
1136
1328
  //#endregion
1137
1329
  //#region src/items/PanelOptionsGaugeEffect.js
1138
1330
  var PanelOptionsGaugeEffect = defineGrafanaItemClass("PanelOptionsGaugeEffect", GrafanaItem).defineValue("barGlow", Boolean).defineValue("centerGlow", Boolean).defineValue("gradient", Boolean).asClass;
1139
1331
  //#endregion
1140
1332
  //#region src/items/PanelOptionsGaugeReduceOptions.js
1141
- 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;
1142
1334
  //#endregion
1143
1335
  //#region src/items/PanelOptionsGauge.js
1144
- 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;
1145
1337
  //#endregion
1146
1338
  //#region src/items/PanelOptionsGeomapBasemap.js
1147
- 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;
1148
1340
  //#endregion
1149
1341
  //#region src/items/PanelOptionsGeomapControls.js
1150
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;
@@ -1168,16 +1360,16 @@ var StyleSymbolAlign = defineGrafanaItemClass("StyleSymbolAlign", GrafanaItem).d
1168
1360
  var StyleTextConfig = defineGrafanaItemClass("StyleTextConfig", GrafanaItem).defineValue("fontSize", Number).defineValue("offsetX", Number).defineValue("offsetY", Number).defineValue("textAlign", String).defineValue("textBaseline", String).asClass;
1169
1361
  //#endregion
1170
1362
  //#region src/items/PanelOptionsGeomapLayerConfigStyle.js
1171
- 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;
1172
1364
  //#endregion
1173
1365
  //#region src/items/PanelOptionsGeomapLayerConfig.js
1174
- 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;
1175
1367
  //#endregion
1176
1368
  //#region src/items/PanelOptionsGeomapLayerLocation.js
1177
1369
  var PanelOptionsGeomapLayerLocation = defineGrafanaItemClass("PanelOptionsGeomapLayerLocation", GrafanaItem).defineValue("mode", String).asClass;
1178
1370
  //#endregion
1179
1371
  //#region src/items/PanelOptionsGeomapLayer.js
1180
- 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;
1181
1373
  //#endregion
1182
1374
  //#region src/items/PanelOptionsGeomapTooltip.js
1183
1375
  var PanelOptionsGeomapTooltip = defineGrafanaItemClass("PanelOptionsGeomapTooltip", GrafanaItem).defineValue("mode", String).asClass;
@@ -1186,13 +1378,13 @@ var PanelOptionsGeomapTooltip = defineGrafanaItemClass("PanelOptionsGeomapToolti
1186
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;
1187
1379
  //#endregion
1188
1380
  //#region src/items/PanelOptionsGeomap.js
1189
- 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;
1190
1382
  //#endregion
1191
1383
  //#region src/items/PieChartLegendOptions.js
1192
- var PieChartLegendOptions = defineGrafanaItemClass("PieChartLegendOptions", VizLegendOptions).defineArray("values", String).asClass;
1384
+ var PieChartLegendOptions = defineGrafanaItemClass("PieChartLegendOptions", VizLegendOptions).defineBasicArray("values", String).asClass;
1193
1385
  //#endregion
1194
1386
  //#region src/items/PanelOptionsPieChart.js
1195
- 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;
1196
1388
  //#endregion
1197
1389
  //#region src/items/PanelOptionsStat.js
1198
1390
  var PanelOptionsStat = defineGrafanaItemClass("PanelOptionsStat", PanelOptions).asClass;
@@ -1207,13 +1399,13 @@ var PanelOptionsTable = defineGrafanaItemClass("PanelOptionsTable", PanelOptions
1207
1399
  var PanelOptionsTextCode = defineGrafanaItemClass("PanelOptionsTextCode", GrafanaItem).defineValue("language", String).defineValue("showLineNumbers", Boolean).defineValue("showMiniMap", Boolean).asClass;
1208
1400
  //#endregion
1209
1401
  //#region src/items/PanelOptionsText.js
1210
- 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;
1211
1403
  //#endregion
1212
1404
  //#region src/items/PanelOptionsTimeSeries.js
1213
- 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;
1214
1406
  //#endregion
1215
1407
  //#region src/items/TargetInfinity.js
1216
- 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;
1217
1409
  //#endregion
1218
1410
  //#region src/items/Testdata.js
1219
1411
  var Testdata = defineGrafanaItemClass("Testdata", Datasource).with((builder) => defineDatasource(builder, "grafana-testdata-datasource")).asClass;
@@ -1223,33 +1415,37 @@ var FieldConfigCustomText = defineGrafanaItemClass("FieldConfigCustomText", Fiel
1223
1415
  //#endregion
1224
1416
  //#region src/items/properties/panel.js
1225
1417
  /**
1226
- * @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
1227
1424
  * @param {string} typeName
1228
- * @param {typeof FieldConfigCustom} fieldConfigCustom
1229
- * @param {typeof PanelOptions} panelOptions
1425
+ * @param {MetaConstructor<FieldConfigCustom>} fieldConfigCustom
1426
+ * @param {MetaConstructor<PanelOptions>} panelOptions
1230
1427
  * @param {Object} [options]
1231
- * @param {(instance: Panel) => void} [options.onInit]
1428
+ * @param {(instance: T) => void} [options.onInit]
1232
1429
  */
1233
1430
  var definePanel = (builder, typeName, fieldConfigCustom, panelOptions, options) => {
1234
1431
  const { onInit } = options ?? {};
1235
1432
  builder.defineConstructor((instance) => {
1236
- const self = instance;
1237
- self.setType(typeName).withFieldConfig((fieldConfig) => fieldConfig.setDefaults(new FieldConfigDefault(instance.metaOptions).setCustom(new fieldConfigCustom(instance.metaOptions))));
1238
- 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);
1239
1435
  }).defineGetterSetter("custom", `${fieldConfigCustom.name}`, {
1240
1436
  typesToInclude: [fieldConfigCustom],
1241
1437
  getter: (instance) => instance.fieldConfig.defaults.custom
1242
1438
  }).defineMethod(`withCustom`, `(code: (custom: ${fieldConfigCustom.name}) => void): this`, {
1243
1439
  typesToInclude: [fieldConfigCustom],
1244
1440
  /**
1245
- * @param {Panel} instance
1441
+ * @param {T} instance
1246
1442
  * @param {(custom: FieldConfigCustom) => void} code
1247
1443
  * */
1248
1444
  code: (instance, code) => {
1249
1445
  code(instance.fieldConfig.defaults.custom);
1250
1446
  return instance;
1251
1447
  }
1252
- }).defineGrafanaObject("options", panelOptions, { onDefault: (options) => new panelOptions(options) });
1448
+ }).defineObject("options", panelOptions, { onDefault: (options) => new panelOptions(options) });
1253
1449
  };
1254
1450
  //#endregion
1255
1451
  //#region src/items/TextPanel.js
@@ -1259,8 +1455,13 @@ var TextPanel = defineGrafanaItemClass("TextPanel", Panel).with((builder) => def
1259
1455
  var BarChart = defineGrafanaItemClass("BarChart", Panel).with((instance) => definePanel(instance, "barchart", FieldConfigCustomBarChart, PanelOptionsBarChart, { onInit: (instance) => {
1260
1456
  instance.fieldConfig.defaults.setColorMode("palette-classic");
1261
1457
  instance.fieldConfig.defaults.thresholds.setMode("absolute");
1262
- } })).defineMethod("setThresholdsStyleArea", "(): this", { code: (instance) => {
1263
- 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);
1264
1465
  return instance;
1265
1466
  } }).asClass;
1266
1467
  //#endregion
@@ -1291,8 +1492,13 @@ var Table = defineGrafanaItemClass("Table", Panel).with((builder) => definePanel
1291
1492
  var TimeSeries = defineGrafanaItemClass("TimeSeries", Panel).with((builder) => definePanel(builder, "timeseries", FieldConfigCustomTimeSerie, PanelOptionsTimeSeries, { onInit: (instance) => {
1292
1493
  instance.fieldConfig.defaults.setColorMode("palette-classic");
1293
1494
  instance.fieldConfig.defaults.thresholds.setMode("absolute");
1294
- } })).defineMethod("setThresholdsStyleArea", "(): this", { code: (instance) => {
1295
- 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);
1296
1502
  return instance;
1297
1503
  } }).asClass;
1298
1504
  //#endregion