@splunk/visualization-context 28.3.0 → 28.4.0

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.
Files changed (52) hide show
  1. package/BaseRegistry.d.ts +91 -0
  2. package/BaseRegistry.js +4 -12
  3. package/BaseRegistry.js.map +4 -4
  4. package/DataSourceContext.js +1 -1
  5. package/DataSourceContext.js.map +2 -2
  6. package/EventsContext.js +1 -1
  7. package/FeatureFlagContext.d.ts +5 -0
  8. package/FeatureFlagContext.js +4 -4
  9. package/FeatureFlagContext.js.map +3 -3
  10. package/GeoContext.d.ts +5 -0
  11. package/GeoContext.js +4 -4
  12. package/GeoContext.js.map +3 -3
  13. package/GeoJsonProvider.d.ts +26 -0
  14. package/GeoJsonProvider.js +102 -37
  15. package/GeoJsonProvider.js.map +4 -4
  16. package/GeoRegistry.d.ts +20 -0
  17. package/GeoRegistry.js +24 -35
  18. package/GeoRegistry.js.map +4 -4
  19. package/IconContext.d.ts +5 -0
  20. package/IconContext.js +4 -4
  21. package/IconContext.js.map +3 -3
  22. package/IconRegistry.d.ts +23 -0
  23. package/IconRegistry.js +6 -16
  24. package/IconRegistry.js.map +4 -4
  25. package/ImageContext.d.ts +5 -0
  26. package/ImageContext.js +4 -4
  27. package/ImageContext.js.map +3 -3
  28. package/ImageRegistry.d.ts +23 -0
  29. package/ImageRegistry.js +6 -16
  30. package/ImageRegistry.js.map +4 -4
  31. package/LocalIconProvider.d.ts +49 -0
  32. package/LocalIconProvider.js +92 -50
  33. package/LocalIconProvider.js.map +4 -4
  34. package/LocalImageProvider.d.ts +39 -0
  35. package/LocalImageProvider.js +109 -45
  36. package/LocalImageProvider.js.map +4 -4
  37. package/MapContext.js +1 -1
  38. package/MockedProvider.d.ts +56 -0
  39. package/MockedProvider.js +137 -56
  40. package/MockedProvider.js.map +4 -4
  41. package/Provider.d.ts +27 -0
  42. package/Provider.js +1 -1
  43. package/Provider.js.map +3 -3
  44. package/TimezoneContext.js +1 -1
  45. package/package.json +4 -4
  46. package/testDataURIs.d.ts +2 -0
  47. package/testDataURIs.js +1 -1
  48. package/testDataURIs.js.map +3 -3
  49. package/testSVG.d.ts +1 -0
  50. package/testSVG.js +1 -1
  51. package/testSVG.js.map +1 -1
  52. package/tsconfig.json +4 -2
@@ -0,0 +1,20 @@
1
+ import BaseRegistry from './BaseRegistry';
2
+ declare class GeoRegistry extends BaseRegistry {
3
+ static create(): GeoRegistry;
4
+ parseURL(url: any): {
5
+ id: any;
6
+ type: any;
7
+ providerType: string;
8
+ storageType: string;
9
+ mapId: string;
10
+ };
11
+ getByURL(url: any): Promise<any>;
12
+ listIds({ providerType, options }: {
13
+ providerType?: string;
14
+ options?: {
15
+ offset: number;
16
+ count: number;
17
+ };
18
+ }): Promise<any>;
19
+ }
20
+ export default GeoRegistry;
package/GeoRegistry.js CHANGED
@@ -50,7 +50,7 @@ var __async = (__this, __arguments, generator) => {
50
50
  });
51
51
  };
52
52
 
53
- // src/GeoRegistry.js
53
+ // src/GeoRegistry.ts
54
54
  var GeoRegistry_exports = {};
55
55
  __export(GeoRegistry_exports, {
56
56
  default: () => GeoRegistry_default
@@ -66,16 +66,7 @@ var defaultImport = __toESM(require("@splunk/ui-utils/i18n"));
66
66
  __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
67
67
  var i18n_default = "default" in defaultImport ? defaultImport.default : defaultImport;
68
68
 
69
- // esm-externals:@splunk/visualization-context/Provider
70
- var Provider_exports = {};
71
- __export(Provider_exports, {
72
- default: () => Provider_default
73
- });
74
- var defaultImport2 = __toESM(require("@splunk/visualization-context/Provider"));
75
- __reExport(Provider_exports, require("@splunk/visualization-context/Provider"));
76
- var Provider_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
77
-
78
- // src/BaseRegistry.js
69
+ // src/BaseRegistry.ts
79
70
  var BaseRegistry = class _BaseRegistry {
80
71
  constructor() {
81
72
  this.cachedProviders = {};
@@ -90,7 +81,8 @@ var BaseRegistry = class _BaseRegistry {
90
81
  * @returns {Boolean}
91
82
  */
92
83
  isValidProvider(provider) {
93
- if (provider instanceof Provider_default) {
84
+ const hasProviderInterface = provider && typeof provider.getType === "function" && typeof provider.listIds === "function" && typeof provider.upload === "function" && typeof provider.getById === "function" && typeof provider.deleteById === "function";
85
+ if (hasProviderInterface) {
94
86
  return true;
95
87
  }
96
88
  throw new Error((0, i18n_exports._)("Invalid Provider"));
@@ -239,7 +231,7 @@ var BaseRegistry = class _BaseRegistry {
239
231
  };
240
232
  var BaseRegistry_default = BaseRegistry;
241
233
 
242
- // src/GeoRegistry.js
234
+ // src/GeoRegistry.ts
243
235
  var GeoRegistry = class _GeoRegistry extends BaseRegistry_default {
244
236
  static create() {
245
237
  return new _GeoRegistry();
@@ -249,16 +241,16 @@ var GeoRegistry = class _GeoRegistry extends BaseRegistry_default {
249
241
  * @params {String} url the valid url should be geo://default/us
250
242
  * @return {Object}
251
243
  * {String} providerType 'geo'
252
- * {String} storageType 'default' for now // todo: add more in the future if geojson are allowed to save in other storages such as 'kvstore'
253
244
  * {String} mapId 'us' or 'world' for now
254
245
  */
255
246
  parseURL(url) {
256
- if (!/.+:\/\/.*\/.+/.test(url)) {
247
+ const urlPattern = /^[A-Za-z0-9+.-]+:\/\/[^/]+\/[^/]+$/;
248
+ if (typeof url !== "string" || !urlPattern.test(url)) {
257
249
  throw new Error((0, i18n_exports._)("Invalid url."));
258
250
  }
259
251
  const [providerType, geoId] = url.split("://");
260
252
  const [storageType, mapId] = geoId.split("/");
261
- return { providerType, storageType, mapId };
253
+ return { id: void 0, type: void 0, providerType, storageType, mapId };
262
254
  }
263
255
  /*
264
256
  * get geoJson by url
@@ -266,16 +258,17 @@ var GeoRegistry = class _GeoRegistry extends BaseRegistry_default {
266
258
  * @return {Json} geoJson
267
259
  */
268
260
  getByURL(url) {
269
- try {
270
- const { providerType, storageType, mapId } = this.parseURL(url);
271
- const provider = this.findProvider(providerType);
272
- const geoJson = provider.getById({ storageType, mapId });
273
- return geoJson;
274
- } catch (error) {
275
- throw new Error((0, i18n_exports._)("Cannot get geoJson data."));
276
- }
261
+ return __async(this, null, function* () {
262
+ try {
263
+ const { providerType, storageType, mapId } = this.parseURL(url);
264
+ const provider = this.findProvider(providerType);
265
+ const geoJson = yield provider.getById({ storageType, mapId });
266
+ return geoJson;
267
+ } catch (error) {
268
+ throw new Error((0, i18n_exports._)("Cannot get geoJson data."));
269
+ }
270
+ });
277
271
  }
278
- // Todo: return map ids from storage
279
272
  /*
280
273
  * list all available geojson ids
281
274
  * @params {Object}
@@ -283,16 +276,12 @@ var GeoRegistry = class _GeoRegistry extends BaseRegistry_default {
283
276
  * @params {Object} options
284
277
  * @return {Array} ids [{id: "us", url: 'geo://default/us'}, {id: 'world', url: 'geo://default/world'}]
285
278
  */
286
- listIds({ providerType = "geo", options = { offset: 0, count: 100 } }) {
287
- const provider = this.findProvider(providerType);
288
- const ids = provider.listIds(options);
289
- return ids;
290
- }
291
- // Todo: be able to upload geoJson in the future
292
- upload() {
293
- }
294
- // Todo: be able to delete geoJson in the future
295
- deleteByURL() {
279
+ listIds(_0) {
280
+ return __async(this, arguments, function* ({ providerType = "geo", options = { offset: 0, count: 100 } }) {
281
+ const provider = this.findProvider(providerType);
282
+ const ids = yield provider.listIds(options);
283
+ return ids;
284
+ });
296
285
  }
297
286
  };
298
287
  var GeoRegistry_default = GeoRegistry;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/GeoRegistry.js", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/visualization-context/Provider", "src/BaseRegistry.js"],
4
- "sourcesContent": ["/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport BaseRegistry from './BaseRegistry';\n\nclass GeoRegistry extends BaseRegistry {\n static create() {\n return new GeoRegistry();\n }\n\n /*\n * parse url\n * @params {String} url the valid url should be geo://default/us\n * @return {Object}\n * {String} providerType 'geo'\n * {String} storageType 'default' for now // todo: add more in the future if geojson are allowed to save in other storages such as 'kvstore'\n * {String} mapId 'us' or 'world' for now\n */\n parseURL(url) {\n if (!/.+:\\/\\/.*\\/.+/.test(url)) {\n throw new Error(_('Invalid url.'));\n }\n\n const [providerType, geoId] = url.split('://');\n const [storageType, mapId] = geoId.split('/');\n return { providerType, storageType, mapId };\n }\n\n /*\n * get geoJson by url\n * @params {String} url e.g. geo://default/us\n * @return {Json} geoJson\n */\n getByURL(url) {\n try {\n const { providerType, storageType, mapId } = this.parseURL(url);\n const provider = this.findProvider(providerType);\n const geoJson = provider.getById({ storageType, mapId });\n return geoJson;\n } catch (error) {\n throw new Error(_('Cannot get geoJson data.'));\n }\n }\n\n // Todo: return map ids from storage\n /*\n * list all available geojson ids\n * @params {Object}\n * @params {String} providerType\n * @params {Object} options\n * @return {Array} ids [{id: \"us\", url: 'geo://default/us'}, {id: 'world', url: 'geo://default/world'}]\n */\n listIds({ providerType = 'geo', options = { offset: 0, count: 100 } }) {\n const provider = this.findProvider(providerType);\n const ids = provider.listIds(options);\n return ids;\n }\n\n // Todo: be able to upload geoJson in the future\n upload() {}\n\n // Todo: be able to delete geoJson in the future\n deleteByURL() {}\n}\n\nexport default GeoRegistry;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-context/Provider\";\nexport * from \"@splunk/visualization-context/Provider\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport Provider from '@splunk/visualization-context/Provider';\n\n/**\n * Base Registry\n */\nclass BaseRegistry {\n constructor() {\n this.cachedProviders = {};\n this.defaultProvider = null;\n }\n\n static create() {\n return new BaseRegistry();\n }\n\n /**\n * check whether user defined provider extends the base provider\n * @param {Provider} provider\n * @returns {Boolean}\n */\n isValidProvider(provider) {\n if (provider instanceof Provider) {\n return true;\n }\n throw new Error(_('Invalid Provider'));\n }\n\n /**\n * add default provider to cache\n * @param {Provider} provider\n */\n addDefaultProvider(provider) {\n if (this.isValidProvider(provider)) {\n this.addProvider(provider);\n this.defaultProvider = provider;\n }\n }\n\n /**\n * add provider to cache\n * @param {Provider} provider\n */\n addProvider(provider) {\n if (this.isValidProvider(provider)) {\n if (this.cachedProviders[provider.getType()]) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${provider.getType()}\" existed already.`);\n }\n this.cachedProviders[provider.getType()] = provider;\n }\n }\n\n /**\n * delete provider\n * @param {String} providerType\n */\n deleteProvider(providerType) {\n const cachedProvider = this.cachedProviders[providerType];\n if (!cachedProvider) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${providerType}\" does not existed`);\n return;\n }\n\n if (this.defaultProvider && providerType === this.defaultProvider.getType()) {\n this.defaultProvider = null;\n }\n delete this.cachedProviders[providerType];\n }\n\n /**\n * find provider from cache\n * @param {String} type\n * @returns {Provider} provider\n */\n findProvider(type) {\n const provider = this.cachedProviders[type];\n if (provider) {\n return provider;\n }\n throw new Error(_('Provider not found'));\n }\n\n /**\n * list all providers\n * @return {Object} provider = { type: 'local', isDefault: true }\n */\n listProviders() {\n return Object.keys(this.cachedProviders).map(type => ({\n type,\n isDefault: type === this.defaultProvider.getType(),\n }));\n }\n\n /**\n * check whether src is a http url or a url used for icon/image-registry (e.g. 'kvstore://image123')\n */\n isResourceURL(url) {\n if (!url || url.indexOf('://') < 0) {\n return false;\n }\n\n const { type } = this.parseURL(url);\n return type !== 'http' && type !== 'https';\n }\n\n /**\n * parse provider type and id from the url\n * @params {String} url 'kvstore://image123'\n * @returns {Object} obj\n * @returns {String} obj.type 'kvstore'\n * @returns {String} obj.id 'image123'\n */\n parseURL(url) {\n if (url) {\n const [type, id] = url.split('://');\n\n if (type && id) {\n return { type, id };\n }\n }\n throw new Error(_('Invalid url'));\n }\n\n /**\n * upload\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore' or 'sui' or 'local'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n async upload(dataURI, metaData, providerType) {\n if (providerType == null && this.defaultProvider == null) {\n throw new Error(_('No valid provider was found. Please add a provider'));\n }\n const provider = providerType ? this.findProvider(providerType) : this.defaultProvider;\n const id = await provider.upload(dataURI, metaData);\n return `${provider.getType()}://${id}`;\n }\n\n /**\n * get object by url\n * @param {String} url 'kvstore://image123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async getByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.getById(id);\n return obj;\n }\n\n /**\n * delete object by url\n * @param {String} url 'kvstore://image123' || 'sui://icon123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async deleteByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.deleteById(id);\n return obj;\n }\n\n /**\n * list all object ids\n * @params {String} providerType e.g. 'kvstore' or 'sui'\n * @params {Object} options\n * @returns {Array} ids\n */\n async listIds(providerType, options = { offset: 0, count: 100 }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default BaseRegistry;\n"],
5
- "mappings": "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",
6
- "names": ["defaultImport"]
3
+ "sources": ["src/GeoRegistry.ts", "esm-externals:@splunk/ui-utils/i18n", "src/BaseRegistry.ts"],
4
+ "sourcesContent": ["/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport BaseRegistry from './BaseRegistry';\n\nclass GeoRegistry extends BaseRegistry {\n static create() {\n return new GeoRegistry();\n }\n\n /*\n * parse url\n * @params {String} url the valid url should be geo://default/us\n * @return {Object}\n * {String} providerType 'geo'\n * {String} mapId 'us' or 'world' for now\n */\n parseURL(url) {\n const urlPattern = /^[A-Za-z0-9+.-]+:\\/\\/[^/]+\\/[^/]+$/;\n if (typeof url !== 'string' || !urlPattern.test(url)) {\n throw new Error(_('Invalid url.'));\n }\n\n const [providerType, geoId] = url.split('://');\n const [storageType, mapId] = geoId.split('/');\n return { id: undefined, type: undefined, providerType, storageType, mapId };\n }\n\n /*\n * get geoJson by url\n * @params {String} url e.g. geo://default/us\n * @return {Json} geoJson\n */\n async getByURL(url) {\n try {\n const { providerType, storageType, mapId } = this.parseURL(url);\n const provider = this.findProvider(providerType);\n const geoJson = await provider.getById({ storageType, mapId });\n return geoJson;\n } catch (error) {\n throw new Error(_('Cannot get geoJson data.'));\n }\n }\n\n /*\n * list all available geojson ids\n * @params {Object}\n * @params {String} providerType\n * @params {Object} options\n * @return {Array} ids [{id: \"us\", url: 'geo://default/us'}, {id: 'world', url: 'geo://default/world'}]\n */\n async listIds({ providerType = 'geo', options = { offset: 0, count: 100 } }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default GeoRegistry;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Provider from './Provider';\n\n/**\n * Base Registry\n */\nclass BaseRegistry {\n cachedProviders: Record<string, Provider>;\n\n defaultProvider: Provider | null;\n\n constructor() {\n this.cachedProviders = {};\n this.defaultProvider = null;\n }\n\n static create() {\n return new BaseRegistry();\n }\n\n /**\n * check whether user defined provider extends the base provider\n * @param {Provider} provider\n * @returns {Boolean}\n */\n isValidProvider(provider) {\n const hasProviderInterface =\n provider &&\n typeof provider.getType === 'function' &&\n typeof provider.listIds === 'function' &&\n typeof provider.upload === 'function' &&\n typeof provider.getById === 'function' &&\n typeof provider.deleteById === 'function';\n\n if (hasProviderInterface) {\n return true;\n }\n throw new Error(_('Invalid Provider'));\n }\n\n /**\n * add default provider to cache\n * @param {Provider} provider\n */\n addDefaultProvider(provider) {\n if (this.isValidProvider(provider)) {\n this.addProvider(provider);\n this.defaultProvider = provider;\n }\n }\n\n /**\n * add provider to cache\n * @param {Provider} provider\n */\n addProvider(provider) {\n if (this.isValidProvider(provider)) {\n if (this.cachedProviders[provider.getType()]) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${provider.getType()}\" existed already.`);\n }\n this.cachedProviders[provider.getType()] = provider;\n }\n }\n\n /**\n * delete provider\n * @param {String} providerType\n */\n deleteProvider(providerType) {\n const cachedProvider = this.cachedProviders[providerType];\n if (!cachedProvider) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${providerType}\" does not existed`);\n return;\n }\n\n if (this.defaultProvider && providerType === this.defaultProvider.getType()) {\n this.defaultProvider = null;\n }\n delete this.cachedProviders[providerType];\n }\n\n /**\n * find provider from cache\n * @param {String} type\n * @returns {Provider} provider\n */\n findProvider(type) {\n const provider = this.cachedProviders[type];\n if (provider) {\n return provider;\n }\n throw new Error(_('Provider not found'));\n }\n\n /**\n * list all providers\n * @return {Object} provider = { type: 'local', isDefault: true }\n */\n listProviders() {\n return Object.keys(this.cachedProviders).map(type => ({\n type,\n isDefault: type === this.defaultProvider.getType(),\n }));\n }\n\n /**\n * check whether src is a http url or a url used for icon/image-registry (e.g. 'kvstore://image123')\n */\n isResourceURL(url) {\n if (!url || url.indexOf('://') < 0) {\n return false;\n }\n\n const { type } = this.parseURL(url);\n return type !== 'http' && type !== 'https';\n }\n\n /**\n * parse provider type and id from the url\n * @params {String} url 'kvstore://image123'\n * @returns {Object} obj\n * @returns {String} obj.type 'kvstore'\n * @returns {String} obj.id 'image123'\n */\n parseURL(url) {\n if (url) {\n const [type, id] = url.split('://');\n\n if (type && id) {\n return { type, id };\n }\n }\n throw new Error(_('Invalid url'));\n }\n\n /**\n * upload\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore' or 'sui' or 'local'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n async upload(dataURI, metaData, providerType) {\n if (providerType == null && this.defaultProvider == null) {\n throw new Error(_('No valid provider was found. Please add a provider'));\n }\n const provider = providerType ? this.findProvider(providerType) : this.defaultProvider;\n const id = await provider.upload(dataURI, metaData);\n return `${provider.getType()}://${id}`;\n }\n\n /**\n * get object by url\n * @param {String} url 'kvstore://image123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async getByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.getById(id);\n return obj;\n }\n\n /**\n * delete object by url\n * @param {String} url 'kvstore://image123' || 'sui://icon123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async deleteByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.deleteById(id);\n return obj;\n }\n\n /**\n * list all object ids\n * @params {String} providerType e.g. 'kvstore' or 'sui'\n * @params {Object} options\n * @returns {Array} ids\n */\n async listIds(providerType, options = { offset: 0, count: 100 }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default BaseRegistry;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ declare const IconContext: React.Context<{}>;
3
+ export declare const IconContextProvider: React.Provider<{}>;
4
+ export declare const IconContextConsumer: React.Consumer<{}>;
5
+ export default IconContext;
package/IconContext.js CHANGED
@@ -30,7 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
- // src/IconContext.jsx
33
+ // src/IconContext.tsx
34
34
  var IconContext_exports = {};
35
35
  __export(IconContext_exports, {
36
36
  IconContextConsumer: () => IconContextConsumer,
@@ -48,9 +48,9 @@ var defaultImport = __toESM(require("react"));
48
48
  __reExport(react_exports, require("react"));
49
49
  var react_default = "default" in defaultImport ? defaultImport.default : defaultImport;
50
50
 
51
- // src/IconContext.jsx
52
- var IconContext = react_default.createContext();
53
- IconContext.displayName = `data-splunk-visualization-version-IconContext-${"28.3.0 - 843e0f60b"}`;
51
+ // src/IconContext.tsx
52
+ var IconContext = react_exports.createContext({});
53
+ IconContext.displayName = `data-splunk-visualization-version-IconContext-${"28.4.0 - 002bd482f"}`;
54
54
  var IconContextProvider = IconContext.Provider;
55
55
  var IconContextConsumer = IconContext.Consumer;
56
56
  var IconContext_default = IconContext;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/IconContext.jsx", "esm-externals:react"],
4
- "sourcesContent": ["/* global __VISION_VERSION__ */\nimport React from 'react';\n\nconst IconContext = React.createContext();\nIconContext.displayName = `data-splunk-visualization-version-IconContext-${__VISION_VERSION__}`;\n\nexport const IconContextProvider = IconContext.Provider;\nexport const IconContextConsumer = IconContext.Consumer;\nexport default IconContext;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAa,gBAA8B,wBAAU;;;ADArE,IAAM,cAAc,cAAM,cAAc;AACxC,YAAY,cAAc,iDAAiD,oBAAkB;AAEtF,IAAM,sBAAsB,YAAY;AACxC,IAAM,sBAAsB,YAAY;AAC/C,IAAO,sBAAQ;",
3
+ "sources": ["src/IconContext.tsx", "esm-externals:react"],
4
+ "sourcesContent": ["import * as React from 'react';\n\n// Global provided via webpack\n// eslint-disable-next-line no-underscore-dangle\ndeclare const __VISION_VERSION__: string;\nconst IconContext = React.createContext({});\nIconContext.displayName = `data-splunk-visualization-version-IconContext-${__VISION_VERSION__}`;\n\nexport const IconContextProvider = IconContext.Provider;\nexport const IconContextConsumer = IconContext.Consumer;\nexport default IconContext;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAa,gBAA8B,wBAAU;;;ADErE,IAAM,cAAoB,4BAAc,CAAC,CAAC;AAC1C,YAAY,cAAc,iDAAiD,oBAAkB;AAEtF,IAAM,sBAAsB,YAAY;AACxC,IAAM,sBAAsB,YAAY;AAC/C,IAAO,sBAAQ;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,23 @@
1
+ import BaseRegistry from './BaseRegistry';
2
+ /**
3
+ * Icon Registry
4
+ */
5
+ declare class IconRegistry extends BaseRegistry {
6
+ static create(): IconRegistry;
7
+ static VALID_MEDIA_TYPES: string[];
8
+ /**
9
+ * check if the the media type from the dataURI belongs to the supported types
10
+ * @param {DataURI} dataURI
11
+ * @returns {Boolean}
12
+ */
13
+ isValidMediaType(dataURI: any): boolean;
14
+ /**
15
+ * upload image if the image format is supported
16
+ * @param {DataURI} dataURI
17
+ * @param {Object} metaData
18
+ * @param {String} providerType e.g. 'kvstore', or 'sui'
19
+ * @returns {String} id e.g. 'kvstore://image123'
20
+ */
21
+ upload(dataURI: any, metaData: any, providerType: any): Promise<string>;
22
+ }
23
+ export default IconRegistry;
package/IconRegistry.js CHANGED
@@ -7,7 +7,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
7
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
8
  var __getProtoOf = Object.getPrototypeOf;
9
9
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
10
  var __export = (target, all) => {
12
11
  for (var name in all)
13
12
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -30,7 +29,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
29
  mod
31
30
  ));
32
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
34
32
  var __async = (__this, __arguments, generator) => {
35
33
  return new Promise((resolve, reject) => {
36
34
  var fulfilled = (value) => {
@@ -52,7 +50,7 @@ var __async = (__this, __arguments, generator) => {
52
50
  });
53
51
  };
54
52
 
55
- // src/IconRegistry.js
53
+ // src/IconRegistry.ts
56
54
  var IconRegistry_exports = {};
57
55
  __export(IconRegistry_exports, {
58
56
  default: () => IconRegistry_default
@@ -68,16 +66,7 @@ var defaultImport = __toESM(require("@splunk/ui-utils/i18n"));
68
66
  __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
69
67
  var i18n_default = "default" in defaultImport ? defaultImport.default : defaultImport;
70
68
 
71
- // esm-externals:@splunk/visualization-context/Provider
72
- var Provider_exports = {};
73
- __export(Provider_exports, {
74
- default: () => Provider_default
75
- });
76
- var defaultImport2 = __toESM(require("@splunk/visualization-context/Provider"));
77
- __reExport(Provider_exports, require("@splunk/visualization-context/Provider"));
78
- var Provider_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
79
-
80
- // src/BaseRegistry.js
69
+ // src/BaseRegistry.ts
81
70
  var BaseRegistry = class _BaseRegistry {
82
71
  constructor() {
83
72
  this.cachedProviders = {};
@@ -92,7 +81,8 @@ var BaseRegistry = class _BaseRegistry {
92
81
  * @returns {Boolean}
93
82
  */
94
83
  isValidProvider(provider) {
95
- if (provider instanceof Provider_default) {
84
+ const hasProviderInterface = provider && typeof provider.getType === "function" && typeof provider.listIds === "function" && typeof provider.upload === "function" && typeof provider.getById === "function" && typeof provider.deleteById === "function";
85
+ if (hasProviderInterface) {
96
86
  return true;
97
87
  }
98
88
  throw new Error((0, i18n_exports._)("Invalid Provider"));
@@ -241,7 +231,7 @@ var BaseRegistry = class _BaseRegistry {
241
231
  };
242
232
  var BaseRegistry_default = BaseRegistry;
243
233
 
244
- // src/IconRegistry.js
234
+ // src/IconRegistry.ts
245
235
  var _IconRegistry = class _IconRegistry extends BaseRegistry_default {
246
236
  static create() {
247
237
  return new _IconRegistry();
@@ -268,7 +258,7 @@ var _IconRegistry = class _IconRegistry extends BaseRegistry_default {
268
258
  return super.upload(dataURI, metaData, providerType);
269
259
  }
270
260
  };
271
- __publicField(_IconRegistry, "VALID_MEDIA_TYPES", ["svg"]);
261
+ _IconRegistry.VALID_MEDIA_TYPES = ["svg"];
272
262
  var IconRegistry = _IconRegistry;
273
263
  var IconRegistry_default = IconRegistry;
274
264
  //# sourceMappingURL=IconRegistry.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/IconRegistry.js", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/visualization-context/Provider", "src/BaseRegistry.js"],
4
- "sourcesContent": ["/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport BaseRegistry from './BaseRegistry';\n\n/**\n * Icon Registry\n */\nclass IconRegistry extends BaseRegistry {\n static create() {\n return new IconRegistry();\n }\n\n static VALID_MEDIA_TYPES = ['svg'];\n\n /**\n * check if the the media type from the dataURI belongs to the supported types\n * @param {DataURI} dataURI\n * @returns {Boolean}\n */\n isValidMediaType(dataURI) {\n return IconRegistry.VALID_MEDIA_TYPES.some(type => dataURI.indexOf(`image/${type}`) > -1);\n }\n\n /**\n * upload image if the image format is supported\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore', or 'sui'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n upload(dataURI, metaData, providerType) {\n if (!this.isValidMediaType(dataURI)) {\n throw new Error(_('The format of the uploaded file is not supported. Please upload svg file.'));\n }\n\n return super.upload(dataURI, metaData, providerType);\n }\n}\n\nexport default IconRegistry;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-context/Provider\";\nexport * from \"@splunk/visualization-context/Provider\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport Provider from '@splunk/visualization-context/Provider';\n\n/**\n * Base Registry\n */\nclass BaseRegistry {\n constructor() {\n this.cachedProviders = {};\n this.defaultProvider = null;\n }\n\n static create() {\n return new BaseRegistry();\n }\n\n /**\n * check whether user defined provider extends the base provider\n * @param {Provider} provider\n * @returns {Boolean}\n */\n isValidProvider(provider) {\n if (provider instanceof Provider) {\n return true;\n }\n throw new Error(_('Invalid Provider'));\n }\n\n /**\n * add default provider to cache\n * @param {Provider} provider\n */\n addDefaultProvider(provider) {\n if (this.isValidProvider(provider)) {\n this.addProvider(provider);\n this.defaultProvider = provider;\n }\n }\n\n /**\n * add provider to cache\n * @param {Provider} provider\n */\n addProvider(provider) {\n if (this.isValidProvider(provider)) {\n if (this.cachedProviders[provider.getType()]) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${provider.getType()}\" existed already.`);\n }\n this.cachedProviders[provider.getType()] = provider;\n }\n }\n\n /**\n * delete provider\n * @param {String} providerType\n */\n deleteProvider(providerType) {\n const cachedProvider = this.cachedProviders[providerType];\n if (!cachedProvider) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${providerType}\" does not existed`);\n return;\n }\n\n if (this.defaultProvider && providerType === this.defaultProvider.getType()) {\n this.defaultProvider = null;\n }\n delete this.cachedProviders[providerType];\n }\n\n /**\n * find provider from cache\n * @param {String} type\n * @returns {Provider} provider\n */\n findProvider(type) {\n const provider = this.cachedProviders[type];\n if (provider) {\n return provider;\n }\n throw new Error(_('Provider not found'));\n }\n\n /**\n * list all providers\n * @return {Object} provider = { type: 'local', isDefault: true }\n */\n listProviders() {\n return Object.keys(this.cachedProviders).map(type => ({\n type,\n isDefault: type === this.defaultProvider.getType(),\n }));\n }\n\n /**\n * check whether src is a http url or a url used for icon/image-registry (e.g. 'kvstore://image123')\n */\n isResourceURL(url) {\n if (!url || url.indexOf('://') < 0) {\n return false;\n }\n\n const { type } = this.parseURL(url);\n return type !== 'http' && type !== 'https';\n }\n\n /**\n * parse provider type and id from the url\n * @params {String} url 'kvstore://image123'\n * @returns {Object} obj\n * @returns {String} obj.type 'kvstore'\n * @returns {String} obj.id 'image123'\n */\n parseURL(url) {\n if (url) {\n const [type, id] = url.split('://');\n\n if (type && id) {\n return { type, id };\n }\n }\n throw new Error(_('Invalid url'));\n }\n\n /**\n * upload\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore' or 'sui' or 'local'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n async upload(dataURI, metaData, providerType) {\n if (providerType == null && this.defaultProvider == null) {\n throw new Error(_('No valid provider was found. Please add a provider'));\n }\n const provider = providerType ? this.findProvider(providerType) : this.defaultProvider;\n const id = await provider.upload(dataURI, metaData);\n return `${provider.getType()}://${id}`;\n }\n\n /**\n * get object by url\n * @param {String} url 'kvstore://image123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async getByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.getById(id);\n return obj;\n }\n\n /**\n * delete object by url\n * @param {String} url 'kvstore://image123' || 'sui://icon123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async deleteByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.deleteById(id);\n return obj;\n }\n\n /**\n * list all object ids\n * @params {String} providerType e.g. 'kvstore' or 'sui'\n * @params {Object} options\n * @returns {Array} ids\n */\n async listIds(providerType, options = { offset: 0, count: 100 }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default BaseRegistry;\n"],
5
- "mappings": "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",
6
- "names": ["defaultImport"]
3
+ "sources": ["src/IconRegistry.ts", "esm-externals:@splunk/ui-utils/i18n", "src/BaseRegistry.ts"],
4
+ "sourcesContent": ["/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport BaseRegistry from './BaseRegistry';\n\n/**\n * Icon Registry\n */\nclass IconRegistry extends BaseRegistry {\n static create() {\n return new IconRegistry();\n }\n\n static VALID_MEDIA_TYPES = ['svg'];\n\n /**\n * check if the the media type from the dataURI belongs to the supported types\n * @param {DataURI} dataURI\n * @returns {Boolean}\n */\n isValidMediaType(dataURI) {\n return IconRegistry.VALID_MEDIA_TYPES.some(type => dataURI.indexOf(`image/${type}`) > -1);\n }\n\n /**\n * upload image if the image format is supported\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore', or 'sui'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n upload(dataURI, metaData, providerType) {\n if (!this.isValidMediaType(dataURI)) {\n throw new Error(_('The format of the uploaded file is not supported. Please upload svg file.'));\n }\n\n return super.upload(dataURI, metaData, providerType);\n }\n}\n\nexport default IconRegistry;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Provider from './Provider';\n\n/**\n * Base Registry\n */\nclass BaseRegistry {\n cachedProviders: Record<string, Provider>;\n\n defaultProvider: Provider | null;\n\n constructor() {\n this.cachedProviders = {};\n this.defaultProvider = null;\n }\n\n static create() {\n return new BaseRegistry();\n }\n\n /**\n * check whether user defined provider extends the base provider\n * @param {Provider} provider\n * @returns {Boolean}\n */\n isValidProvider(provider) {\n const hasProviderInterface =\n provider &&\n typeof provider.getType === 'function' &&\n typeof provider.listIds === 'function' &&\n typeof provider.upload === 'function' &&\n typeof provider.getById === 'function' &&\n typeof provider.deleteById === 'function';\n\n if (hasProviderInterface) {\n return true;\n }\n throw new Error(_('Invalid Provider'));\n }\n\n /**\n * add default provider to cache\n * @param {Provider} provider\n */\n addDefaultProvider(provider) {\n if (this.isValidProvider(provider)) {\n this.addProvider(provider);\n this.defaultProvider = provider;\n }\n }\n\n /**\n * add provider to cache\n * @param {Provider} provider\n */\n addProvider(provider) {\n if (this.isValidProvider(provider)) {\n if (this.cachedProviders[provider.getType()]) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${provider.getType()}\" existed already.`);\n }\n this.cachedProviders[provider.getType()] = provider;\n }\n }\n\n /**\n * delete provider\n * @param {String} providerType\n */\n deleteProvider(providerType) {\n const cachedProvider = this.cachedProviders[providerType];\n if (!cachedProvider) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${providerType}\" does not existed`);\n return;\n }\n\n if (this.defaultProvider && providerType === this.defaultProvider.getType()) {\n this.defaultProvider = null;\n }\n delete this.cachedProviders[providerType];\n }\n\n /**\n * find provider from cache\n * @param {String} type\n * @returns {Provider} provider\n */\n findProvider(type) {\n const provider = this.cachedProviders[type];\n if (provider) {\n return provider;\n }\n throw new Error(_('Provider not found'));\n }\n\n /**\n * list all providers\n * @return {Object} provider = { type: 'local', isDefault: true }\n */\n listProviders() {\n return Object.keys(this.cachedProviders).map(type => ({\n type,\n isDefault: type === this.defaultProvider.getType(),\n }));\n }\n\n /**\n * check whether src is a http url or a url used for icon/image-registry (e.g. 'kvstore://image123')\n */\n isResourceURL(url) {\n if (!url || url.indexOf('://') < 0) {\n return false;\n }\n\n const { type } = this.parseURL(url);\n return type !== 'http' && type !== 'https';\n }\n\n /**\n * parse provider type and id from the url\n * @params {String} url 'kvstore://image123'\n * @returns {Object} obj\n * @returns {String} obj.type 'kvstore'\n * @returns {String} obj.id 'image123'\n */\n parseURL(url) {\n if (url) {\n const [type, id] = url.split('://');\n\n if (type && id) {\n return { type, id };\n }\n }\n throw new Error(_('Invalid url'));\n }\n\n /**\n * upload\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore' or 'sui' or 'local'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n async upload(dataURI, metaData, providerType) {\n if (providerType == null && this.defaultProvider == null) {\n throw new Error(_('No valid provider was found. Please add a provider'));\n }\n const provider = providerType ? this.findProvider(providerType) : this.defaultProvider;\n const id = await provider.upload(dataURI, metaData);\n return `${provider.getType()}://${id}`;\n }\n\n /**\n * get object by url\n * @param {String} url 'kvstore://image123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async getByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.getById(id);\n return obj;\n }\n\n /**\n * delete object by url\n * @param {String} url 'kvstore://image123' || 'sui://icon123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async deleteByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.deleteById(id);\n return obj;\n }\n\n /**\n * list all object ids\n * @params {String} providerType e.g. 'kvstore' or 'sui'\n * @params {Object} options\n * @returns {Array} ids\n */\n async listIds(providerType, options = { offset: 0, count: 100 }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default BaseRegistry;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }
@@ -0,0 +1,5 @@
1
+ import * as React from 'react';
2
+ declare const ImageContext: React.Context<{}>;
3
+ export declare const ImageContextProvider: React.Provider<{}>;
4
+ export declare const ImageContextConsumer: React.Consumer<{}>;
5
+ export default ImageContext;
package/ImageContext.js CHANGED
@@ -30,7 +30,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
30
  ));
31
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
32
32
 
33
- // src/ImageContext.jsx
33
+ // src/ImageContext.tsx
34
34
  var ImageContext_exports = {};
35
35
  __export(ImageContext_exports, {
36
36
  ImageContextConsumer: () => ImageContextConsumer,
@@ -48,9 +48,9 @@ var defaultImport = __toESM(require("react"));
48
48
  __reExport(react_exports, require("react"));
49
49
  var react_default = "default" in defaultImport ? defaultImport.default : defaultImport;
50
50
 
51
- // src/ImageContext.jsx
52
- var ImageContext = react_default.createContext();
53
- ImageContext.displayName = `data-splunk-visualization-version-ImageContext-${"28.3.0 - 843e0f60b"}`;
51
+ // src/ImageContext.tsx
52
+ var ImageContext = react_exports.createContext({});
53
+ ImageContext.displayName = `data-splunk-visualization-version-ImageContext-${"28.4.0 - 002bd482f"}`;
54
54
  var ImageContextProvider = ImageContext.Provider;
55
55
  var ImageContextConsumer = ImageContext.Consumer;
56
56
  var ImageContext_default = ImageContext;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/ImageContext.jsx", "esm-externals:react"],
4
- "sourcesContent": ["/* global __VISION_VERSION__ */\nimport React from 'react';\n\nconst ImageContext = React.createContext();\nImageContext.displayName = `data-splunk-visualization-version-ImageContext-${__VISION_VERSION__}`;\n\nexport const ImageContextProvider = ImageContext.Provider;\nexport const ImageContextConsumer = ImageContext.Consumer;\nexport default ImageContext;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAa,gBAA8B,wBAAU;;;ADArE,IAAM,eAAe,cAAM,cAAc;AACzC,aAAa,cAAc,kDAAkD,oBAAkB;AAExF,IAAM,uBAAuB,aAAa;AAC1C,IAAM,uBAAuB,aAAa;AACjD,IAAO,uBAAQ;",
3
+ "sources": ["src/ImageContext.tsx", "esm-externals:react"],
4
+ "sourcesContent": ["import * as React from 'react';\n\n// Global provided via webpack\n// eslint-disable-next-line no-underscore-dangle\ndeclare const __VISION_VERSION__: string;\nconst ImageContext = React.createContext({});\nImageContext.displayName = `data-splunk-visualization-version-ImageContext-${__VISION_VERSION__}`;\n\nexport const ImageContextProvider = ImageContext.Provider;\nexport const ImageContextConsumer = ImageContext.Consumer;\nexport default ImageContext;\n", "\nimport * as defaultImport from \"react\";\nexport * from \"react\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA;AAAA;AAAA;AAAA;AACA,oBAA+B;AAC/B,0BAAc;AACd,IAAO,gBAAS,aAAa,gBAA8B,wBAAU;;;ADErE,IAAM,eAAqB,4BAAc,CAAC,CAAC;AAC3C,aAAa,cAAc,kDAAkD,oBAAkB;AAExF,IAAM,uBAAuB,aAAa;AAC1C,IAAM,uBAAuB,aAAa;AACjD,IAAO,uBAAQ;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,23 @@
1
+ import BaseRegistry from './BaseRegistry';
2
+ /**
3
+ * Image Registry
4
+ */
5
+ declare class ImageRegistry extends BaseRegistry {
6
+ static create(): ImageRegistry;
7
+ static VALID_MEDIA_TYPES: string[];
8
+ /**
9
+ * check if the the media type from the dataURI belongs to the supported types
10
+ * @param {DataURI} dataURI
11
+ * @returns {Boolean}
12
+ */
13
+ isValidMediaType(dataURI: any, validMediaType?: string[]): boolean;
14
+ /**
15
+ * upload image if the image format is supported
16
+ * @param {DataURI} dataURI
17
+ * @param {Object} metaData
18
+ * @param {String} providerType e.g. 'kvstore', or 'sui'
19
+ * @returns {String} id e.g. 'kvstore://image123'
20
+ */
21
+ upload(dataURI: any, metaData: any, providerType: any, validMediaType?: string[]): Promise<string>;
22
+ }
23
+ export default ImageRegistry;
package/ImageRegistry.js CHANGED
@@ -7,7 +7,6 @@ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
7
  var __getOwnPropNames = Object.getOwnPropertyNames;
8
8
  var __getProtoOf = Object.getPrototypeOf;
9
9
  var __hasOwnProp = Object.prototype.hasOwnProperty;
10
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
11
10
  var __export = (target, all) => {
12
11
  for (var name in all)
13
12
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -30,7 +29,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
30
29
  mod
31
30
  ));
32
31
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
33
- var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
34
32
  var __async = (__this, __arguments, generator) => {
35
33
  return new Promise((resolve, reject) => {
36
34
  var fulfilled = (value) => {
@@ -52,7 +50,7 @@ var __async = (__this, __arguments, generator) => {
52
50
  });
53
51
  };
54
52
 
55
- // src/ImageRegistry.js
53
+ // src/ImageRegistry.ts
56
54
  var ImageRegistry_exports = {};
57
55
  __export(ImageRegistry_exports, {
58
56
  default: () => ImageRegistry_default
@@ -68,16 +66,7 @@ var defaultImport = __toESM(require("@splunk/ui-utils/i18n"));
68
66
  __reExport(i18n_exports, require("@splunk/ui-utils/i18n"));
69
67
  var i18n_default = "default" in defaultImport ? defaultImport.default : defaultImport;
70
68
 
71
- // esm-externals:@splunk/visualization-context/Provider
72
- var Provider_exports = {};
73
- __export(Provider_exports, {
74
- default: () => Provider_default
75
- });
76
- var defaultImport2 = __toESM(require("@splunk/visualization-context/Provider"));
77
- __reExport(Provider_exports, require("@splunk/visualization-context/Provider"));
78
- var Provider_default = "default" in defaultImport2 ? defaultImport2.default : defaultImport2;
79
-
80
- // src/BaseRegistry.js
69
+ // src/BaseRegistry.ts
81
70
  var BaseRegistry = class _BaseRegistry {
82
71
  constructor() {
83
72
  this.cachedProviders = {};
@@ -92,7 +81,8 @@ var BaseRegistry = class _BaseRegistry {
92
81
  * @returns {Boolean}
93
82
  */
94
83
  isValidProvider(provider) {
95
- if (provider instanceof Provider_default) {
84
+ const hasProviderInterface = provider && typeof provider.getType === "function" && typeof provider.listIds === "function" && typeof provider.upload === "function" && typeof provider.getById === "function" && typeof provider.deleteById === "function";
85
+ if (hasProviderInterface) {
96
86
  return true;
97
87
  }
98
88
  throw new Error((0, i18n_exports._)("Invalid Provider"));
@@ -241,7 +231,7 @@ var BaseRegistry = class _BaseRegistry {
241
231
  };
242
232
  var BaseRegistry_default = BaseRegistry;
243
233
 
244
- // src/ImageRegistry.js
234
+ // src/ImageRegistry.ts
245
235
  var _ImageRegistry = class _ImageRegistry extends BaseRegistry_default {
246
236
  static create() {
247
237
  return new _ImageRegistry();
@@ -277,7 +267,7 @@ var _ImageRegistry = class _ImageRegistry extends BaseRegistry_default {
277
267
  return super.upload(dataURI, metaData, providerType);
278
268
  }
279
269
  };
280
- __publicField(_ImageRegistry, "VALID_MEDIA_TYPES", ["png", "jpeg", "svg", "gif", "webp"]);
270
+ _ImageRegistry.VALID_MEDIA_TYPES = ["png", "jpeg", "svg", "gif", "webp"];
281
271
  var ImageRegistry = _ImageRegistry;
282
272
  var ImageRegistry_default = ImageRegistry;
283
273
  //# sourceMappingURL=ImageRegistry.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["src/ImageRegistry.js", "esm-externals:@splunk/ui-utils/i18n", "esm-externals:@splunk/visualization-context/Provider", "src/BaseRegistry.js"],
4
- "sourcesContent": ["/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport BaseRegistry from './BaseRegistry';\n\n/**\n * Image Registry\n */\nclass ImageRegistry extends BaseRegistry {\n static create() {\n return new ImageRegistry();\n }\n\n static VALID_MEDIA_TYPES = ['png', 'jpeg', 'svg', 'gif', 'webp'];\n\n /**\n * check if the the media type from the dataURI belongs to the supported types\n * @param {DataURI} dataURI\n * @returns {Boolean}\n */\n isValidMediaType(dataURI, validMediaType = ImageRegistry.VALID_MEDIA_TYPES) {\n return validMediaType.some(type => {\n const regex = `^data:image\\\\/${type === 'svg' ? `${type}\\\\+xml` : type};base64,.*$`;\n return new RegExp(regex).test(dataURI);\n });\n }\n\n /**\n * upload image if the image format is supported\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore', or 'sui'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n upload(dataURI, metaData, providerType, validMediaType = ImageRegistry.VALID_MEDIA_TYPES) {\n if (!this.isValidMediaType(dataURI, validMediaType)) {\n throw new Error(\n _(\n `The format of the uploaded file is not supported. Please upload ${validMediaType.join(\n ', '\n )}.`\n )\n );\n }\n\n return super.upload(dataURI, metaData, providerType);\n }\n}\n\nexport default ImageRegistry;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "\nimport * as defaultImport from \"@splunk/visualization-context/Provider\";\nexport * from \"@splunk/visualization-context/Provider\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\n// eslint-disable-next-line import/no-extraneous-dependencies\nimport Provider from '@splunk/visualization-context/Provider';\n\n/**\n * Base Registry\n */\nclass BaseRegistry {\n constructor() {\n this.cachedProviders = {};\n this.defaultProvider = null;\n }\n\n static create() {\n return new BaseRegistry();\n }\n\n /**\n * check whether user defined provider extends the base provider\n * @param {Provider} provider\n * @returns {Boolean}\n */\n isValidProvider(provider) {\n if (provider instanceof Provider) {\n return true;\n }\n throw new Error(_('Invalid Provider'));\n }\n\n /**\n * add default provider to cache\n * @param {Provider} provider\n */\n addDefaultProvider(provider) {\n if (this.isValidProvider(provider)) {\n this.addProvider(provider);\n this.defaultProvider = provider;\n }\n }\n\n /**\n * add provider to cache\n * @param {Provider} provider\n */\n addProvider(provider) {\n if (this.isValidProvider(provider)) {\n if (this.cachedProviders[provider.getType()]) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${provider.getType()}\" existed already.`);\n }\n this.cachedProviders[provider.getType()] = provider;\n }\n }\n\n /**\n * delete provider\n * @param {String} providerType\n */\n deleteProvider(providerType) {\n const cachedProvider = this.cachedProviders[providerType];\n if (!cachedProvider) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${providerType}\" does not existed`);\n return;\n }\n\n if (this.defaultProvider && providerType === this.defaultProvider.getType()) {\n this.defaultProvider = null;\n }\n delete this.cachedProviders[providerType];\n }\n\n /**\n * find provider from cache\n * @param {String} type\n * @returns {Provider} provider\n */\n findProvider(type) {\n const provider = this.cachedProviders[type];\n if (provider) {\n return provider;\n }\n throw new Error(_('Provider not found'));\n }\n\n /**\n * list all providers\n * @return {Object} provider = { type: 'local', isDefault: true }\n */\n listProviders() {\n return Object.keys(this.cachedProviders).map(type => ({\n type,\n isDefault: type === this.defaultProvider.getType(),\n }));\n }\n\n /**\n * check whether src is a http url or a url used for icon/image-registry (e.g. 'kvstore://image123')\n */\n isResourceURL(url) {\n if (!url || url.indexOf('://') < 0) {\n return false;\n }\n\n const { type } = this.parseURL(url);\n return type !== 'http' && type !== 'https';\n }\n\n /**\n * parse provider type and id from the url\n * @params {String} url 'kvstore://image123'\n * @returns {Object} obj\n * @returns {String} obj.type 'kvstore'\n * @returns {String} obj.id 'image123'\n */\n parseURL(url) {\n if (url) {\n const [type, id] = url.split('://');\n\n if (type && id) {\n return { type, id };\n }\n }\n throw new Error(_('Invalid url'));\n }\n\n /**\n * upload\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore' or 'sui' or 'local'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n async upload(dataURI, metaData, providerType) {\n if (providerType == null && this.defaultProvider == null) {\n throw new Error(_('No valid provider was found. Please add a provider'));\n }\n const provider = providerType ? this.findProvider(providerType) : this.defaultProvider;\n const id = await provider.upload(dataURI, metaData);\n return `${provider.getType()}://${id}`;\n }\n\n /**\n * get object by url\n * @param {String} url 'kvstore://image123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async getByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.getById(id);\n return obj;\n }\n\n /**\n * delete object by url\n * @param {String} url 'kvstore://image123' || 'sui://icon123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async deleteByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.deleteById(id);\n return obj;\n }\n\n /**\n * list all object ids\n * @params {String} providerType e.g. 'kvstore' or 'sui'\n * @params {Object} options\n * @returns {Array} ids\n */\n async listIds(providerType, options = { offset: 0, count: 100 }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default BaseRegistry;\n"],
5
- "mappings": "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",
6
- "names": ["defaultImport"]
3
+ "sources": ["src/ImageRegistry.ts", "esm-externals:@splunk/ui-utils/i18n", "src/BaseRegistry.ts"],
4
+ "sourcesContent": ["/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport BaseRegistry from './BaseRegistry';\n\n/**\n * Image Registry\n */\nclass ImageRegistry extends BaseRegistry {\n static create() {\n return new ImageRegistry();\n }\n\n static VALID_MEDIA_TYPES = ['png', 'jpeg', 'svg', 'gif', 'webp'];\n\n /**\n * check if the the media type from the dataURI belongs to the supported types\n * @param {DataURI} dataURI\n * @returns {Boolean}\n */\n isValidMediaType(dataURI, validMediaType = ImageRegistry.VALID_MEDIA_TYPES) {\n return validMediaType.some(type => {\n const regex = `^data:image\\\\/${type === 'svg' ? `${type}\\\\+xml` : type};base64,.*$`;\n return new RegExp(regex).test(dataURI);\n });\n }\n\n /**\n * upload image if the image format is supported\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore', or 'sui'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n upload(dataURI, metaData, providerType, validMediaType = ImageRegistry.VALID_MEDIA_TYPES) {\n if (!this.isValidMediaType(dataURI, validMediaType)) {\n throw new Error(\n _(\n `The format of the uploaded file is not supported. Please upload ${validMediaType.join(\n ', '\n )}.`\n )\n );\n }\n\n return super.upload(dataURI, metaData, providerType);\n }\n}\n\nexport default ImageRegistry;\n", "\nimport * as defaultImport from \"@splunk/ui-utils/i18n\";\nexport * from \"@splunk/ui-utils/i18n\";\nexport default ('default' in defaultImport ? defaultImport.default : defaultImport);\n", "/* eslint-disable class-methods-use-this */\nimport { _ } from '@splunk/ui-utils/i18n';\nimport Provider from './Provider';\n\n/**\n * Base Registry\n */\nclass BaseRegistry {\n cachedProviders: Record<string, Provider>;\n\n defaultProvider: Provider | null;\n\n constructor() {\n this.cachedProviders = {};\n this.defaultProvider = null;\n }\n\n static create() {\n return new BaseRegistry();\n }\n\n /**\n * check whether user defined provider extends the base provider\n * @param {Provider} provider\n * @returns {Boolean}\n */\n isValidProvider(provider) {\n const hasProviderInterface =\n provider &&\n typeof provider.getType === 'function' &&\n typeof provider.listIds === 'function' &&\n typeof provider.upload === 'function' &&\n typeof provider.getById === 'function' &&\n typeof provider.deleteById === 'function';\n\n if (hasProviderInterface) {\n return true;\n }\n throw new Error(_('Invalid Provider'));\n }\n\n /**\n * add default provider to cache\n * @param {Provider} provider\n */\n addDefaultProvider(provider) {\n if (this.isValidProvider(provider)) {\n this.addProvider(provider);\n this.defaultProvider = provider;\n }\n }\n\n /**\n * add provider to cache\n * @param {Provider} provider\n */\n addProvider(provider) {\n if (this.isValidProvider(provider)) {\n if (this.cachedProviders[provider.getType()]) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${provider.getType()}\" existed already.`);\n }\n this.cachedProviders[provider.getType()] = provider;\n }\n }\n\n /**\n * delete provider\n * @param {String} providerType\n */\n deleteProvider(providerType) {\n const cachedProvider = this.cachedProviders[providerType];\n if (!cachedProvider) {\n // eslint-disable-next-line no-console\n console.warn(`The provider \"${providerType}\" does not existed`);\n return;\n }\n\n if (this.defaultProvider && providerType === this.defaultProvider.getType()) {\n this.defaultProvider = null;\n }\n delete this.cachedProviders[providerType];\n }\n\n /**\n * find provider from cache\n * @param {String} type\n * @returns {Provider} provider\n */\n findProvider(type) {\n const provider = this.cachedProviders[type];\n if (provider) {\n return provider;\n }\n throw new Error(_('Provider not found'));\n }\n\n /**\n * list all providers\n * @return {Object} provider = { type: 'local', isDefault: true }\n */\n listProviders() {\n return Object.keys(this.cachedProviders).map(type => ({\n type,\n isDefault: type === this.defaultProvider.getType(),\n }));\n }\n\n /**\n * check whether src is a http url or a url used for icon/image-registry (e.g. 'kvstore://image123')\n */\n isResourceURL(url) {\n if (!url || url.indexOf('://') < 0) {\n return false;\n }\n\n const { type } = this.parseURL(url);\n return type !== 'http' && type !== 'https';\n }\n\n /**\n * parse provider type and id from the url\n * @params {String} url 'kvstore://image123'\n * @returns {Object} obj\n * @returns {String} obj.type 'kvstore'\n * @returns {String} obj.id 'image123'\n */\n parseURL(url) {\n if (url) {\n const [type, id] = url.split('://');\n\n if (type && id) {\n return { type, id };\n }\n }\n throw new Error(_('Invalid url'));\n }\n\n /**\n * upload\n * @param {DataURI} dataURI\n * @param {Object} metaData\n * @param {String} providerType e.g. 'kvstore' or 'sui' or 'local'\n * @returns {String} id e.g. 'kvstore://image123'\n */\n async upload(dataURI, metaData, providerType) {\n if (providerType == null && this.defaultProvider == null) {\n throw new Error(_('No valid provider was found. Please add a provider'));\n }\n const provider = providerType ? this.findProvider(providerType) : this.defaultProvider;\n const id = await provider.upload(dataURI, metaData);\n return `${provider.getType()}://${id}`;\n }\n\n /**\n * get object by url\n * @param {String} url 'kvstore://image123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async getByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.getById(id);\n return obj;\n }\n\n /**\n * delete object by url\n * @param {String} url 'kvstore://image123' || 'sui://icon123'\n * @returns {Object} obj e.g. an image object or icon\n */\n async deleteByURL(url) {\n const { type, id } = this.parseURL(url);\n const provider = this.findProvider(type);\n const obj = await provider.deleteById(id);\n return obj;\n }\n\n /**\n * list all object ids\n * @params {String} providerType e.g. 'kvstore' or 'sui'\n * @params {Object} options\n * @returns {Array} ids\n */\n async listIds(providerType, options = { offset: 0, count: 100 }) {\n const provider = this.findProvider(providerType);\n const ids = await provider.listIds(options);\n return ids;\n }\n}\n\nexport default BaseRegistry;\n"],
5
+ "mappings": "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",
6
+ "names": []
7
7
  }