@sigmacomputing/plugin 1.0.4 → 1.1.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/cjs/client/index.js +9 -0
  2. package/dist/cjs/client/index.js.map +1 -0
  3. package/dist/cjs/client/initialize.js +158 -0
  4. package/dist/cjs/client/initialize.js.map +1 -0
  5. package/dist/cjs/index.js +12 -0
  6. package/dist/cjs/index.js.map +1 -0
  7. package/dist/cjs/utils/polyfillRequestAnimationFrame.js +17 -0
  8. package/dist/cjs/utils/polyfillRequestAnimationFrame.js.map +1 -0
  9. package/dist/esm/client/index.esm.js +6 -0
  10. package/dist/esm/client/index.esm.js.map +1 -0
  11. package/dist/esm/client/initialize.esm.js +156 -0
  12. package/dist/esm/client/initialize.esm.js.map +1 -0
  13. package/dist/esm/index.esm.js +4 -0
  14. package/dist/esm/index.esm.js.map +1 -0
  15. package/dist/esm/utils/polyfillRequestAnimationFrame.esm.js +15 -0
  16. package/dist/esm/utils/polyfillRequestAnimationFrame.esm.js.map +1 -0
  17. package/dist/mjs/client/index.mjs +6 -0
  18. package/dist/mjs/client/index.mjs.map +1 -0
  19. package/dist/mjs/client/initialize.mjs +156 -0
  20. package/dist/mjs/client/initialize.mjs.map +1 -0
  21. package/dist/mjs/index.mjs +4 -0
  22. package/dist/mjs/index.mjs.map +1 -0
  23. package/dist/mjs/utils/polyfillRequestAnimationFrame.mjs +15 -0
  24. package/dist/mjs/utils/polyfillRequestAnimationFrame.mjs.map +1 -0
  25. package/dist/types/.tsbuildinfo +1 -0
  26. package/dist/types/client/index.d.ts +4 -0
  27. package/dist/types/client/index.d.ts.map +1 -0
  28. package/dist/types/client/initialize.d.ts +3 -0
  29. package/dist/types/client/initialize.d.ts.map +1 -0
  30. package/dist/types/index.d.ts +4 -0
  31. package/dist/types/index.d.ts.map +1 -0
  32. package/dist/{types.d.ts → types/types/index.d.ts} +1 -1
  33. package/dist/types/types/index.d.ts.map +1 -0
  34. package/dist/types/utils/polyfillRequestAnimationFrame.d.ts +8 -0
  35. package/dist/types/utils/polyfillRequestAnimationFrame.d.ts.map +1 -0
  36. package/dist/umd/plugin.development.js +181 -0
  37. package/dist/umd/plugin.development.js.map +1 -0
  38. package/dist/umd/plugin.production.js +2 -0
  39. package/dist/umd/plugin.production.js.map +1 -0
  40. package/package.json +27 -39
  41. package/src/client/index.ts +5 -0
  42. package/src/client/initialize.ts +196 -0
  43. package/src/globals.d.ts +5 -0
  44. package/src/index.ts +4 -0
  45. package/src/types/index.ts +322 -0
  46. package/src/utils/polyfillRequestAnimationFrame.ts +13 -0
  47. package/LICENSE +0 -21
  48. package/README.md +0 -795
  49. package/dist/client/initialize.d.ts +0 -3
  50. package/dist/client/initialize.d.ts.map +0 -1
  51. package/dist/client/initialize.js +0 -157
  52. package/dist/client.d.ts +0 -2
  53. package/dist/client.d.ts.map +0 -1
  54. package/dist/client.js +0 -5
  55. package/dist/index.d.ts +0 -5
  56. package/dist/index.d.ts.map +0 -1
  57. package/dist/index.js +0 -20
  58. package/dist/react/Context.d.ts +0 -4
  59. package/dist/react/Context.d.ts.map +0 -1
  60. package/dist/react/Context.js +0 -6
  61. package/dist/react/Provider.d.ts +0 -8
  62. package/dist/react/Provider.d.ts.map +0 -1
  63. package/dist/react/Provider.js +0 -9
  64. package/dist/react/hooks.d.ts +0 -48
  65. package/dist/react/hooks.d.ts.map +0 -1
  66. package/dist/react/hooks.js +0 -136
  67. package/dist/react.d.ts +0 -3
  68. package/dist/react.d.ts.map +0 -1
  69. package/dist/react.js +0 -20
  70. package/dist/types.d.ts.map +0 -1
  71. package/dist/types.js +0 -2
  72. package/dist/utils/deepEqual.d.ts +0 -2
  73. package/dist/utils/deepEqual.d.ts.map +0 -1
  74. package/dist/utils/deepEqual.js +0 -28
  75. package/dist/utils/requestAnimationFramePolyfill.d.ts +0 -2
  76. package/dist/utils/requestAnimationFramePolyfill.d.ts.map +0 -1
  77. package/dist/utils/requestAnimationFramePolyfill.js +0 -8
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var initialize = require('./initialize.js');
4
+
5
+ const client = initialize.initialize();
6
+
7
+ exports.initialize = initialize.initialize;
8
+ exports.client = client;
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":["../../../src/client/index.ts"],"sourcesContent":["import { initialize } from './initialize';\n\nexport const client = initialize();\n\nexport { initialize };\n"],"names":["client","initialize"],"mappings":";;;;AAEaA,MAAAA,MAAM,GAAGC,qBAAU;;;;;"}
@@ -0,0 +1,158 @@
1
+ 'use strict';
2
+
3
+ function initialize() {
4
+ const pluginConfig = {
5
+ config: {}
6
+ };
7
+ let subscribedInteractions = {};
8
+ let subscribedWorkbookVars = {};
9
+ const listeners = {};
10
+ for (const [key, value] of new URL(document.location.toString()).searchParams.entries()) pluginConfig[key] = JSON.parse(value);
11
+ const listener = e => {
12
+ emit(e.data.type, e.data.result, e.data.error);
13
+ };
14
+ window.addEventListener('message', listener, false);
15
+ window.addEventListener('click', () => execPromise('wb:plugin:focus'));
16
+ on('wb:plugin:config:update', config => {
17
+ var _pluginConfig$config;
18
+ Object.assign(pluginConfig, config);
19
+ emit('config', (_pluginConfig$config = pluginConfig.config) != null ? _pluginConfig$config : {});
20
+ });
21
+
22
+ // send initialize event
23
+ void execPromise('wb:plugin:init', "1.1.0").then(config => {
24
+ Object.assign(pluginConfig, config);
25
+ emit('init', pluginConfig);
26
+ emit('config', pluginConfig.config);
27
+ });
28
+ on('wb:plugin:variable:update', updatedVariables => {
29
+ subscribedWorkbookVars = {};
30
+ Object.assign(subscribedWorkbookVars, updatedVariables);
31
+ });
32
+ on('wb:plugin:selection:update', updatedInteractions => {
33
+ subscribedInteractions = {};
34
+ Object.assign(subscribedInteractions, updatedInteractions);
35
+ });
36
+ function on(event, listener) {
37
+ listeners[event] = listeners[event] || [];
38
+ listeners[event].push(listener);
39
+ }
40
+ function off(event, listener) {
41
+ if (listeners[event] == null) return;
42
+ listeners[event] = listeners[event].filter(a => a !== listener);
43
+ }
44
+ function emit(event, ...args) {
45
+ Object.values(listeners[event] || []).forEach(fn => fn(...args));
46
+ }
47
+ function execPromise(event, ...args) {
48
+ return new Promise((resolve, reject) => {
49
+ var _pluginConfig$wbOrigi;
50
+ const callback = (data, error) => {
51
+ if (error) reject(error);else resolve(data);
52
+ off(event, callback);
53
+ };
54
+ on(event, callback);
55
+ window.parent.postMessage({
56
+ type: event,
57
+ args,
58
+ elementId: pluginConfig.id
59
+ }, (_pluginConfig$wbOrigi = pluginConfig == null ? void 0 : pluginConfig.wbOrigin) != null ? _pluginConfig$wbOrigi : '*');
60
+ });
61
+ }
62
+ return {
63
+ get sigmaEnv() {
64
+ return pluginConfig.sigmaEnv;
65
+ },
66
+ get isScreenshot() {
67
+ return pluginConfig.screenshot;
68
+ },
69
+ config: {
70
+ // @ts-ignore
71
+ getKey(key) {
72
+ var _pluginConfig$config2;
73
+ return pluginConfig == null ? void 0 : (_pluginConfig$config2 = pluginConfig.config) == null ? void 0 : _pluginConfig$config2[key];
74
+ },
75
+ get() {
76
+ return pluginConfig.config;
77
+ },
78
+ set(partialConfig) {
79
+ void execPromise('wb:plugin:config:update', partialConfig);
80
+ },
81
+ setKey(key, value) {
82
+ void execPromise('wb:plugin:config:update', {
83
+ [key]: value
84
+ });
85
+ },
86
+ subscribe(listener) {
87
+ on('config', listener);
88
+ return () => off('config', listener);
89
+ },
90
+ getVariable(id) {
91
+ return subscribedWorkbookVars[id];
92
+ },
93
+ setVariable(id, ...values) {
94
+ void execPromise('wb:plugin:variable:set', id, ...values);
95
+ },
96
+ getInteraction(id) {
97
+ return subscribedInteractions[id];
98
+ },
99
+ setInteraction(id, elementId, selection) {
100
+ void execPromise('wb:plugin:selection:set', id, elementId, selection);
101
+ },
102
+ configureEditorPanel(options) {
103
+ void execPromise('wb:plugin:config:inspector', options);
104
+ },
105
+ setLoadingState(loadingState) {
106
+ void execPromise('wb:plugin:config:loading-state', loadingState);
107
+ },
108
+ subscribeToWorkbookVariable(id, callback) {
109
+ const setValues = values => {
110
+ callback(values[id]);
111
+ };
112
+ on('wb:plugin:variable:update', setValues);
113
+ return () => {
114
+ off('wb:plugin:variable:update', setValues);
115
+ };
116
+ },
117
+ subscribeToWorkbookInteraction(id, callback) {
118
+ const setValues = values => {
119
+ callback(values[id]);
120
+ };
121
+ on('wb:plugin:selection:update', setValues);
122
+ return () => {
123
+ off('wb:plugin:selection:update', setValues);
124
+ };
125
+ }
126
+ },
127
+ elements: {
128
+ getElementColumns(id) {
129
+ return execPromise('wb:plugin:element:columns:get', id);
130
+ },
131
+ subscribeToElementColumns(id, callback) {
132
+ const eventName = `wb:plugin:element:${id}:columns`;
133
+ on(eventName, callback);
134
+ void execPromise('wb:plugin:element:subscribe:columns', id);
135
+ return () => {
136
+ off(eventName, callback);
137
+ void execPromise('wb:plugin:element:unsubscribe:columns', id);
138
+ };
139
+ },
140
+ subscribeToElementData(id, callback) {
141
+ const eventName = `wb:plugin:element:${id}:data`;
142
+ on(eventName, callback);
143
+ void execPromise('wb:plugin:element:subscribe:data', id);
144
+ return () => {
145
+ off(eventName, callback);
146
+ void execPromise('wb:plugin:element:unsubscribe:data', id);
147
+ };
148
+ }
149
+ },
150
+ destroy() {
151
+ Object.keys(listeners).forEach(event => delete listeners[event]);
152
+ window.removeEventListener('message', listener, false);
153
+ }
154
+ };
155
+ }
156
+
157
+ exports.initialize = initialize;
158
+ //# sourceMappingURL=initialize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.js","sources":["../../../src/client/initialize.ts"],"sourcesContent":["import type {\n PluginConfig,\n PluginInstance,\n PluginMessageResponse,\n WorkbookSelection,\n WorkbookVariable,\n Unsubscriber,\n} from '../types';\n\nexport function initialize<T = {}>(): PluginInstance<T> {\n const pluginConfig: Partial<PluginConfig<T>> = {\n config: {} as T,\n };\n\n let subscribedInteractions: Record<string, WorkbookSelection[]> = {};\n let subscribedWorkbookVars: Record<string, WorkbookVariable> = {};\n\n const listeners: {\n [event: string]: Function[];\n } = {};\n\n for (const [key, value] of new URL(\n document.location.toString(),\n ).searchParams.entries())\n pluginConfig[key] = JSON.parse(value);\n\n const listener = (e: PluginMessageResponse) => {\n emit(e.data.type, e.data.result, e.data.error);\n };\n\n window.addEventListener('message', listener, false);\n window.addEventListener('click', () => execPromise('wb:plugin:focus'));\n\n on('wb:plugin:config:update', (config: PluginConfig<T>) => {\n Object.assign(pluginConfig, config);\n emit('config', pluginConfig.config ?? {});\n });\n\n // send initialize event\n void execPromise('wb:plugin:init', __VERSION__).then(config => {\n Object.assign(pluginConfig, config);\n emit('init', pluginConfig);\n emit('config', pluginConfig.config);\n });\n\n on(\n 'wb:plugin:variable:update',\n (updatedVariables: Record<string, WorkbookVariable>) => {\n subscribedWorkbookVars = {};\n Object.assign(subscribedWorkbookVars, updatedVariables);\n },\n );\n\n on('wb:plugin:selection:update', (updatedInteractions: unknown) => {\n subscribedInteractions = {};\n Object.assign(subscribedInteractions, updatedInteractions);\n });\n\n function on(event: string, listener: Function) {\n listeners[event] = listeners[event] || [];\n listeners[event].push(listener);\n }\n\n function off(event: string, listener: Function) {\n if (listeners[event] == null) return;\n listeners[event] = listeners[event].filter(a => a !== listener);\n }\n\n function emit(event: string, ...args: any) {\n Object.values(listeners[event] || []).forEach(fn => fn(...args));\n }\n\n function execPromise<R>(event: string, ...args: any): Promise<R> {\n return new Promise((resolve, reject) => {\n const callback = (data: R, error: any) => {\n if (error) reject(error);\n else resolve(data);\n off(event, callback);\n };\n on(event, callback);\n window.parent.postMessage(\n { type: event, args, elementId: pluginConfig.id },\n pluginConfig?.wbOrigin ?? '*',\n );\n });\n }\n\n return {\n get sigmaEnv() {\n return pluginConfig.sigmaEnv;\n },\n\n get isScreenshot() {\n return pluginConfig.screenshot;\n },\n\n config: {\n // @ts-ignore\n getKey(key) {\n return pluginConfig?.config?.[key]!;\n },\n get() {\n return pluginConfig.config;\n },\n set(partialConfig) {\n void execPromise('wb:plugin:config:update', partialConfig);\n },\n setKey(key, value) {\n void execPromise('wb:plugin:config:update', {\n [key]: value,\n });\n },\n subscribe(listener) {\n on('config', listener);\n return () => off('config', listener);\n },\n getVariable(id: string): WorkbookVariable {\n return subscribedWorkbookVars[id];\n },\n setVariable(id: string, ...values: unknown[]) {\n void execPromise('wb:plugin:variable:set', id, ...values);\n },\n getInteraction(id: string) {\n return subscribedInteractions[id];\n },\n setInteraction(\n id: string,\n elementId: string,\n selection:\n | string[]\n | Array<Record<string, { type: string; val?: unknown }>>,\n ) {\n void execPromise('wb:plugin:selection:set', id, elementId, selection);\n },\n configureEditorPanel(options) {\n void execPromise('wb:plugin:config:inspector', options);\n },\n setLoadingState(loadingState) {\n void execPromise('wb:plugin:config:loading-state', loadingState);\n },\n subscribeToWorkbookVariable(\n id: string,\n callback: (input: WorkbookVariable) => void,\n ): Unsubscriber {\n const setValues = (values: Record<string, WorkbookVariable>) => {\n callback(values[id]);\n };\n on('wb:plugin:variable:update', setValues);\n return () => {\n off('wb:plugin:variable:update', setValues);\n };\n },\n subscribeToWorkbookInteraction(\n id: string,\n callback: (input: WorkbookSelection[]) => void,\n ): Unsubscriber {\n const setValues = (values: Record<string, WorkbookSelection[]>) => {\n callback(values[id]);\n };\n on('wb:plugin:selection:update', setValues);\n return () => {\n off('wb:plugin:selection:update', setValues);\n };\n },\n },\n elements: {\n getElementColumns(id) {\n return execPromise('wb:plugin:element:columns:get', id);\n },\n subscribeToElementColumns(id, callback) {\n const eventName = `wb:plugin:element:${id}:columns`;\n on(eventName, callback);\n void execPromise('wb:plugin:element:subscribe:columns', id);\n\n return () => {\n off(eventName, callback);\n void execPromise('wb:plugin:element:unsubscribe:columns', id);\n };\n },\n subscribeToElementData(id, callback) {\n const eventName = `wb:plugin:element:${id}:data`;\n on(eventName, callback);\n void execPromise('wb:plugin:element:subscribe:data', id);\n\n return () => {\n off(eventName, callback);\n void execPromise('wb:plugin:element:unsubscribe:data', id);\n };\n },\n },\n destroy() {\n Object.keys(listeners).forEach(event => delete listeners[event]);\n window.removeEventListener('message', listener, false);\n },\n };\n}\n"],"names":["initialize","pluginConfig","config","subscribedInteractions","subscribedWorkbookVars","listeners","key","value","URL","document","location","toString","searchParams","entries","JSON","parse","listener","e","emit","data","type","result","error","window","addEventListener","execPromise","on","Object","assign","__VERSION__","then","updatedVariables","updatedInteractions","event","push","off","filter","a","args","values","forEach","fn","Promise","resolve","reject","callback","parent","postMessage","elementId","id","wbOrigin","sigmaEnv","isScreenshot","screenshot","getKey","get","set","partialConfig","setKey","subscribe","getVariable","setVariable","getInteraction","setInteraction","selection","configureEditorPanel","options","setLoadingState","loadingState","subscribeToWorkbookVariable","setValues","subscribeToWorkbookInteraction","elements","getElementColumns","subscribeToElementColumns","eventName","subscribeToElementData","destroy","keys","removeEventListener"],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var index = require('./client/index.js');
4
+ var polyfillRequestAnimationFrame = require('./utils/polyfillRequestAnimationFrame.js');
5
+ var initialize = require('./client/initialize.js');
6
+
7
+
8
+
9
+ exports.client = index.client;
10
+ exports.polyfillRequestAnimationFrame = polyfillRequestAnimationFrame.polyfillRequestAnimationFrame;
11
+ exports.initialize = initialize.initialize;
12
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * requestAnimationFrame() calls are paused in most browsers when running in background tabs or hidden <iframe>s in order to improve performance and battery life
5
+ *
6
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
7
+ * @param w Window Object
8
+ */
9
+ function polyfillRequestAnimationFrame(window) {
10
+ if ('requestAnimationFrame' in window) {
11
+ window.requestAnimationFrame = handler => window.setTimeout(handler, 1000 / 60);
12
+ window.cancelAnimationFrame = id => window.clearTimeout(id);
13
+ }
14
+ }
15
+
16
+ exports.polyfillRequestAnimationFrame = polyfillRequestAnimationFrame;
17
+ //# sourceMappingURL=polyfillRequestAnimationFrame.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfillRequestAnimationFrame.js","sources":["../../../src/utils/polyfillRequestAnimationFrame.ts"],"sourcesContent":["/**\n * requestAnimationFrame() calls are paused in most browsers when running in background tabs or hidden <iframe>s in order to improve performance and battery life\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n * @param w Window Object\n */\nexport function polyfillRequestAnimationFrame(window: Window) {\n if ('requestAnimationFrame' in window) {\n window.requestAnimationFrame = (handler: TimerHandler): number =>\n window.setTimeout(handler, 1000 / 60);\n window.cancelAnimationFrame = (id?: number) => window.clearTimeout(id);\n }\n}\n"],"names":["polyfillRequestAnimationFrame","window","requestAnimationFrame","handler","setTimeout","cancelAnimationFrame","id","clearTimeout"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,6BAA6B,CAACC,MAAc,EAAE;EAC5D,IAAI,uBAAuB,IAAIA,MAAM,EAAE;AACrCA,IAAAA,MAAM,CAACC,qBAAqB,GAAIC,OAAqB,IACnDF,MAAM,CAACG,UAAU,CAACD,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IACvCF,MAAM,CAACI,oBAAoB,GAAIC,EAAW,IAAKL,MAAM,CAACM,YAAY,CAACD,EAAE,CAAC,CAAA;AACxE,GAAA;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ import { initialize } from './initialize.esm.js';
2
+
3
+ const client = initialize();
4
+
5
+ export { client, initialize };
6
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":["../../../src/client/index.ts"],"sourcesContent":["import { initialize } from './initialize';\n\nexport const client = initialize();\n\nexport { initialize };\n"],"names":["client","initialize"],"mappings":";;AAEaA,MAAAA,MAAM,GAAGC,UAAU;;;;"}
@@ -0,0 +1,156 @@
1
+ function initialize() {
2
+ const pluginConfig = {
3
+ config: {}
4
+ };
5
+ let subscribedInteractions = {};
6
+ let subscribedWorkbookVars = {};
7
+ const listeners = {};
8
+ for (const [key, value] of new URL(document.location.toString()).searchParams.entries()) pluginConfig[key] = JSON.parse(value);
9
+ const listener = e => {
10
+ emit(e.data.type, e.data.result, e.data.error);
11
+ };
12
+ window.addEventListener('message', listener, false);
13
+ window.addEventListener('click', () => execPromise('wb:plugin:focus'));
14
+ on('wb:plugin:config:update', config => {
15
+ var _pluginConfig$config;
16
+ Object.assign(pluginConfig, config);
17
+ emit('config', (_pluginConfig$config = pluginConfig.config) != null ? _pluginConfig$config : {});
18
+ });
19
+
20
+ // send initialize event
21
+ void execPromise('wb:plugin:init', "1.1.0").then(config => {
22
+ Object.assign(pluginConfig, config);
23
+ emit('init', pluginConfig);
24
+ emit('config', pluginConfig.config);
25
+ });
26
+ on('wb:plugin:variable:update', updatedVariables => {
27
+ subscribedWorkbookVars = {};
28
+ Object.assign(subscribedWorkbookVars, updatedVariables);
29
+ });
30
+ on('wb:plugin:selection:update', updatedInteractions => {
31
+ subscribedInteractions = {};
32
+ Object.assign(subscribedInteractions, updatedInteractions);
33
+ });
34
+ function on(event, listener) {
35
+ listeners[event] = listeners[event] || [];
36
+ listeners[event].push(listener);
37
+ }
38
+ function off(event, listener) {
39
+ if (listeners[event] == null) return;
40
+ listeners[event] = listeners[event].filter(a => a !== listener);
41
+ }
42
+ function emit(event, ...args) {
43
+ Object.values(listeners[event] || []).forEach(fn => fn(...args));
44
+ }
45
+ function execPromise(event, ...args) {
46
+ return new Promise((resolve, reject) => {
47
+ var _pluginConfig$wbOrigi;
48
+ const callback = (data, error) => {
49
+ if (error) reject(error);else resolve(data);
50
+ off(event, callback);
51
+ };
52
+ on(event, callback);
53
+ window.parent.postMessage({
54
+ type: event,
55
+ args,
56
+ elementId: pluginConfig.id
57
+ }, (_pluginConfig$wbOrigi = pluginConfig == null ? void 0 : pluginConfig.wbOrigin) != null ? _pluginConfig$wbOrigi : '*');
58
+ });
59
+ }
60
+ return {
61
+ get sigmaEnv() {
62
+ return pluginConfig.sigmaEnv;
63
+ },
64
+ get isScreenshot() {
65
+ return pluginConfig.screenshot;
66
+ },
67
+ config: {
68
+ // @ts-ignore
69
+ getKey(key) {
70
+ var _pluginConfig$config2;
71
+ return pluginConfig == null ? void 0 : (_pluginConfig$config2 = pluginConfig.config) == null ? void 0 : _pluginConfig$config2[key];
72
+ },
73
+ get() {
74
+ return pluginConfig.config;
75
+ },
76
+ set(partialConfig) {
77
+ void execPromise('wb:plugin:config:update', partialConfig);
78
+ },
79
+ setKey(key, value) {
80
+ void execPromise('wb:plugin:config:update', {
81
+ [key]: value
82
+ });
83
+ },
84
+ subscribe(listener) {
85
+ on('config', listener);
86
+ return () => off('config', listener);
87
+ },
88
+ getVariable(id) {
89
+ return subscribedWorkbookVars[id];
90
+ },
91
+ setVariable(id, ...values) {
92
+ void execPromise('wb:plugin:variable:set', id, ...values);
93
+ },
94
+ getInteraction(id) {
95
+ return subscribedInteractions[id];
96
+ },
97
+ setInteraction(id, elementId, selection) {
98
+ void execPromise('wb:plugin:selection:set', id, elementId, selection);
99
+ },
100
+ configureEditorPanel(options) {
101
+ void execPromise('wb:plugin:config:inspector', options);
102
+ },
103
+ setLoadingState(loadingState) {
104
+ void execPromise('wb:plugin:config:loading-state', loadingState);
105
+ },
106
+ subscribeToWorkbookVariable(id, callback) {
107
+ const setValues = values => {
108
+ callback(values[id]);
109
+ };
110
+ on('wb:plugin:variable:update', setValues);
111
+ return () => {
112
+ off('wb:plugin:variable:update', setValues);
113
+ };
114
+ },
115
+ subscribeToWorkbookInteraction(id, callback) {
116
+ const setValues = values => {
117
+ callback(values[id]);
118
+ };
119
+ on('wb:plugin:selection:update', setValues);
120
+ return () => {
121
+ off('wb:plugin:selection:update', setValues);
122
+ };
123
+ }
124
+ },
125
+ elements: {
126
+ getElementColumns(id) {
127
+ return execPromise('wb:plugin:element:columns:get', id);
128
+ },
129
+ subscribeToElementColumns(id, callback) {
130
+ const eventName = `wb:plugin:element:${id}:columns`;
131
+ on(eventName, callback);
132
+ void execPromise('wb:plugin:element:subscribe:columns', id);
133
+ return () => {
134
+ off(eventName, callback);
135
+ void execPromise('wb:plugin:element:unsubscribe:columns', id);
136
+ };
137
+ },
138
+ subscribeToElementData(id, callback) {
139
+ const eventName = `wb:plugin:element:${id}:data`;
140
+ on(eventName, callback);
141
+ void execPromise('wb:plugin:element:subscribe:data', id);
142
+ return () => {
143
+ off(eventName, callback);
144
+ void execPromise('wb:plugin:element:unsubscribe:data', id);
145
+ };
146
+ }
147
+ },
148
+ destroy() {
149
+ Object.keys(listeners).forEach(event => delete listeners[event]);
150
+ window.removeEventListener('message', listener, false);
151
+ }
152
+ };
153
+ }
154
+
155
+ export { initialize };
156
+ //# sourceMappingURL=initialize.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize.esm.js","sources":["../../../src/client/initialize.ts"],"sourcesContent":["import type {\n PluginConfig,\n PluginInstance,\n PluginMessageResponse,\n WorkbookSelection,\n WorkbookVariable,\n Unsubscriber,\n} from '../types';\n\nexport function initialize<T = {}>(): PluginInstance<T> {\n const pluginConfig: Partial<PluginConfig<T>> = {\n config: {} as T,\n };\n\n let subscribedInteractions: Record<string, WorkbookSelection[]> = {};\n let subscribedWorkbookVars: Record<string, WorkbookVariable> = {};\n\n const listeners: {\n [event: string]: Function[];\n } = {};\n\n for (const [key, value] of new URL(\n document.location.toString(),\n ).searchParams.entries())\n pluginConfig[key] = JSON.parse(value);\n\n const listener = (e: PluginMessageResponse) => {\n emit(e.data.type, e.data.result, e.data.error);\n };\n\n window.addEventListener('message', listener, false);\n window.addEventListener('click', () => execPromise('wb:plugin:focus'));\n\n on('wb:plugin:config:update', (config: PluginConfig<T>) => {\n Object.assign(pluginConfig, config);\n emit('config', pluginConfig.config ?? {});\n });\n\n // send initialize event\n void execPromise('wb:plugin:init', __VERSION__).then(config => {\n Object.assign(pluginConfig, config);\n emit('init', pluginConfig);\n emit('config', pluginConfig.config);\n });\n\n on(\n 'wb:plugin:variable:update',\n (updatedVariables: Record<string, WorkbookVariable>) => {\n subscribedWorkbookVars = {};\n Object.assign(subscribedWorkbookVars, updatedVariables);\n },\n );\n\n on('wb:plugin:selection:update', (updatedInteractions: unknown) => {\n subscribedInteractions = {};\n Object.assign(subscribedInteractions, updatedInteractions);\n });\n\n function on(event: string, listener: Function) {\n listeners[event] = listeners[event] || [];\n listeners[event].push(listener);\n }\n\n function off(event: string, listener: Function) {\n if (listeners[event] == null) return;\n listeners[event] = listeners[event].filter(a => a !== listener);\n }\n\n function emit(event: string, ...args: any) {\n Object.values(listeners[event] || []).forEach(fn => fn(...args));\n }\n\n function execPromise<R>(event: string, ...args: any): Promise<R> {\n return new Promise((resolve, reject) => {\n const callback = (data: R, error: any) => {\n if (error) reject(error);\n else resolve(data);\n off(event, callback);\n };\n on(event, callback);\n window.parent.postMessage(\n { type: event, args, elementId: pluginConfig.id },\n pluginConfig?.wbOrigin ?? '*',\n );\n });\n }\n\n return {\n get sigmaEnv() {\n return pluginConfig.sigmaEnv;\n },\n\n get isScreenshot() {\n return pluginConfig.screenshot;\n },\n\n config: {\n // @ts-ignore\n getKey(key) {\n return pluginConfig?.config?.[key]!;\n },\n get() {\n return pluginConfig.config;\n },\n set(partialConfig) {\n void execPromise('wb:plugin:config:update', partialConfig);\n },\n setKey(key, value) {\n void execPromise('wb:plugin:config:update', {\n [key]: value,\n });\n },\n subscribe(listener) {\n on('config', listener);\n return () => off('config', listener);\n },\n getVariable(id: string): WorkbookVariable {\n return subscribedWorkbookVars[id];\n },\n setVariable(id: string, ...values: unknown[]) {\n void execPromise('wb:plugin:variable:set', id, ...values);\n },\n getInteraction(id: string) {\n return subscribedInteractions[id];\n },\n setInteraction(\n id: string,\n elementId: string,\n selection:\n | string[]\n | Array<Record<string, { type: string; val?: unknown }>>,\n ) {\n void execPromise('wb:plugin:selection:set', id, elementId, selection);\n },\n configureEditorPanel(options) {\n void execPromise('wb:plugin:config:inspector', options);\n },\n setLoadingState(loadingState) {\n void execPromise('wb:plugin:config:loading-state', loadingState);\n },\n subscribeToWorkbookVariable(\n id: string,\n callback: (input: WorkbookVariable) => void,\n ): Unsubscriber {\n const setValues = (values: Record<string, WorkbookVariable>) => {\n callback(values[id]);\n };\n on('wb:plugin:variable:update', setValues);\n return () => {\n off('wb:plugin:variable:update', setValues);\n };\n },\n subscribeToWorkbookInteraction(\n id: string,\n callback: (input: WorkbookSelection[]) => void,\n ): Unsubscriber {\n const setValues = (values: Record<string, WorkbookSelection[]>) => {\n callback(values[id]);\n };\n on('wb:plugin:selection:update', setValues);\n return () => {\n off('wb:plugin:selection:update', setValues);\n };\n },\n },\n elements: {\n getElementColumns(id) {\n return execPromise('wb:plugin:element:columns:get', id);\n },\n subscribeToElementColumns(id, callback) {\n const eventName = `wb:plugin:element:${id}:columns`;\n on(eventName, callback);\n void execPromise('wb:plugin:element:subscribe:columns', id);\n\n return () => {\n off(eventName, callback);\n void execPromise('wb:plugin:element:unsubscribe:columns', id);\n };\n },\n subscribeToElementData(id, callback) {\n const eventName = `wb:plugin:element:${id}:data`;\n on(eventName, callback);\n void execPromise('wb:plugin:element:subscribe:data', id);\n\n return () => {\n off(eventName, callback);\n void execPromise('wb:plugin:element:unsubscribe:data', id);\n };\n },\n },\n destroy() {\n Object.keys(listeners).forEach(event => delete listeners[event]);\n window.removeEventListener('message', listener, false);\n },\n };\n}\n"],"names":["initialize","pluginConfig","config","subscribedInteractions","subscribedWorkbookVars","listeners","key","value","URL","document","location","toString","searchParams","entries","JSON","parse","listener","e","emit","data","type","result","error","window","addEventListener","execPromise","on","Object","assign","__VERSION__","then","updatedVariables","updatedInteractions","event","push","off","filter","a","args","values","forEach","fn","Promise","resolve","reject","callback","parent","postMessage","elementId","id","wbOrigin","sigmaEnv","isScreenshot","screenshot","getKey","get","set","partialConfig","setKey","subscribe","getVariable","setVariable","getInteraction","setInteraction","selection","configureEditorPanel","options","setLoadingState","loadingState","subscribeToWorkbookVariable","setValues","subscribeToWorkbookInteraction","elements","getElementColumns","subscribeToElementColumns","eventName","subscribeToElementData","destroy","keys","removeEventListener"],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { client } from './client/index.esm.js';
2
+ export { polyfillRequestAnimationFrame } from './utils/polyfillRequestAnimationFrame.esm.js';
3
+ export { initialize } from './client/initialize.esm.js';
4
+ //# sourceMappingURL=index.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * requestAnimationFrame() calls are paused in most browsers when running in background tabs or hidden <iframe>s in order to improve performance and battery life
3
+ *
4
+ * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame
5
+ * @param w Window Object
6
+ */
7
+ function polyfillRequestAnimationFrame(window) {
8
+ if ('requestAnimationFrame' in window) {
9
+ window.requestAnimationFrame = handler => window.setTimeout(handler, 1000 / 60);
10
+ window.cancelAnimationFrame = id => window.clearTimeout(id);
11
+ }
12
+ }
13
+
14
+ export { polyfillRequestAnimationFrame };
15
+ //# sourceMappingURL=polyfillRequestAnimationFrame.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"polyfillRequestAnimationFrame.esm.js","sources":["../../../src/utils/polyfillRequestAnimationFrame.ts"],"sourcesContent":["/**\n * requestAnimationFrame() calls are paused in most browsers when running in background tabs or hidden <iframe>s in order to improve performance and battery life\n *\n * @see https://developer.mozilla.org/en-US/docs/Web/API/window/requestAnimationFrame\n * @param w Window Object\n */\nexport function polyfillRequestAnimationFrame(window: Window) {\n if ('requestAnimationFrame' in window) {\n window.requestAnimationFrame = (handler: TimerHandler): number =>\n window.setTimeout(handler, 1000 / 60);\n window.cancelAnimationFrame = (id?: number) => window.clearTimeout(id);\n }\n}\n"],"names":["polyfillRequestAnimationFrame","window","requestAnimationFrame","handler","setTimeout","cancelAnimationFrame","id","clearTimeout"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACO,SAASA,6BAA6B,CAACC,MAAc,EAAE;EAC5D,IAAI,uBAAuB,IAAIA,MAAM,EAAE;AACrCA,IAAAA,MAAM,CAACC,qBAAqB,GAAIC,OAAqB,IACnDF,MAAM,CAACG,UAAU,CAACD,OAAO,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;IACvCF,MAAM,CAACI,oBAAoB,GAAIC,EAAW,IAAKL,MAAM,CAACM,YAAY,CAACD,EAAE,CAAC,CAAA;AACxE,GAAA;AACF;;;;"}
@@ -0,0 +1,6 @@
1
+ import { initialize } from './initialize.mjs';
2
+
3
+ const client = initialize();
4
+
5
+ export { client, initialize };
6
+ //# sourceMappingURL=index.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/client/index.ts"],"sourcesContent":["import { initialize } from './initialize';\n\nexport const client = initialize();\n\nexport { initialize };\n"],"names":["client","initialize"],"mappings":";;AAEaA,MAAAA,MAAM,GAAGC,UAAU;;;;"}
@@ -0,0 +1,156 @@
1
+ function initialize() {
2
+ const pluginConfig = {
3
+ config: {}
4
+ };
5
+ let subscribedInteractions = {};
6
+ let subscribedWorkbookVars = {};
7
+ const listeners = {};
8
+ for (const [key, value] of new URL(document.location.toString()).searchParams.entries()) pluginConfig[key] = JSON.parse(value);
9
+ const listener = e => {
10
+ emit(e.data.type, e.data.result, e.data.error);
11
+ };
12
+ window.addEventListener('message', listener, false);
13
+ window.addEventListener('click', () => execPromise('wb:plugin:focus'));
14
+ on('wb:plugin:config:update', config => {
15
+ var _pluginConfig$config;
16
+ Object.assign(pluginConfig, config);
17
+ emit('config', (_pluginConfig$config = pluginConfig.config) != null ? _pluginConfig$config : {});
18
+ });
19
+
20
+ // send initialize event
21
+ void execPromise('wb:plugin:init', "1.1.0").then(config => {
22
+ Object.assign(pluginConfig, config);
23
+ emit('init', pluginConfig);
24
+ emit('config', pluginConfig.config);
25
+ });
26
+ on('wb:plugin:variable:update', updatedVariables => {
27
+ subscribedWorkbookVars = {};
28
+ Object.assign(subscribedWorkbookVars, updatedVariables);
29
+ });
30
+ on('wb:plugin:selection:update', updatedInteractions => {
31
+ subscribedInteractions = {};
32
+ Object.assign(subscribedInteractions, updatedInteractions);
33
+ });
34
+ function on(event, listener) {
35
+ listeners[event] = listeners[event] || [];
36
+ listeners[event].push(listener);
37
+ }
38
+ function off(event, listener) {
39
+ if (listeners[event] == null) return;
40
+ listeners[event] = listeners[event].filter(a => a !== listener);
41
+ }
42
+ function emit(event, ...args) {
43
+ Object.values(listeners[event] || []).forEach(fn => fn(...args));
44
+ }
45
+ function execPromise(event, ...args) {
46
+ return new Promise((resolve, reject) => {
47
+ var _pluginConfig$wbOrigi;
48
+ const callback = (data, error) => {
49
+ if (error) reject(error);else resolve(data);
50
+ off(event, callback);
51
+ };
52
+ on(event, callback);
53
+ window.parent.postMessage({
54
+ type: event,
55
+ args,
56
+ elementId: pluginConfig.id
57
+ }, (_pluginConfig$wbOrigi = pluginConfig == null ? void 0 : pluginConfig.wbOrigin) != null ? _pluginConfig$wbOrigi : '*');
58
+ });
59
+ }
60
+ return {
61
+ get sigmaEnv() {
62
+ return pluginConfig.sigmaEnv;
63
+ },
64
+ get isScreenshot() {
65
+ return pluginConfig.screenshot;
66
+ },
67
+ config: {
68
+ // @ts-ignore
69
+ getKey(key) {
70
+ var _pluginConfig$config2;
71
+ return pluginConfig == null ? void 0 : (_pluginConfig$config2 = pluginConfig.config) == null ? void 0 : _pluginConfig$config2[key];
72
+ },
73
+ get() {
74
+ return pluginConfig.config;
75
+ },
76
+ set(partialConfig) {
77
+ void execPromise('wb:plugin:config:update', partialConfig);
78
+ },
79
+ setKey(key, value) {
80
+ void execPromise('wb:plugin:config:update', {
81
+ [key]: value
82
+ });
83
+ },
84
+ subscribe(listener) {
85
+ on('config', listener);
86
+ return () => off('config', listener);
87
+ },
88
+ getVariable(id) {
89
+ return subscribedWorkbookVars[id];
90
+ },
91
+ setVariable(id, ...values) {
92
+ void execPromise('wb:plugin:variable:set', id, ...values);
93
+ },
94
+ getInteraction(id) {
95
+ return subscribedInteractions[id];
96
+ },
97
+ setInteraction(id, elementId, selection) {
98
+ void execPromise('wb:plugin:selection:set', id, elementId, selection);
99
+ },
100
+ configureEditorPanel(options) {
101
+ void execPromise('wb:plugin:config:inspector', options);
102
+ },
103
+ setLoadingState(loadingState) {
104
+ void execPromise('wb:plugin:config:loading-state', loadingState);
105
+ },
106
+ subscribeToWorkbookVariable(id, callback) {
107
+ const setValues = values => {
108
+ callback(values[id]);
109
+ };
110
+ on('wb:plugin:variable:update', setValues);
111
+ return () => {
112
+ off('wb:plugin:variable:update', setValues);
113
+ };
114
+ },
115
+ subscribeToWorkbookInteraction(id, callback) {
116
+ const setValues = values => {
117
+ callback(values[id]);
118
+ };
119
+ on('wb:plugin:selection:update', setValues);
120
+ return () => {
121
+ off('wb:plugin:selection:update', setValues);
122
+ };
123
+ }
124
+ },
125
+ elements: {
126
+ getElementColumns(id) {
127
+ return execPromise('wb:plugin:element:columns:get', id);
128
+ },
129
+ subscribeToElementColumns(id, callback) {
130
+ const eventName = `wb:plugin:element:${id}:columns`;
131
+ on(eventName, callback);
132
+ void execPromise('wb:plugin:element:subscribe:columns', id);
133
+ return () => {
134
+ off(eventName, callback);
135
+ void execPromise('wb:plugin:element:unsubscribe:columns', id);
136
+ };
137
+ },
138
+ subscribeToElementData(id, callback) {
139
+ const eventName = `wb:plugin:element:${id}:data`;
140
+ on(eventName, callback);
141
+ void execPromise('wb:plugin:element:subscribe:data', id);
142
+ return () => {
143
+ off(eventName, callback);
144
+ void execPromise('wb:plugin:element:unsubscribe:data', id);
145
+ };
146
+ }
147
+ },
148
+ destroy() {
149
+ Object.keys(listeners).forEach(event => delete listeners[event]);
150
+ window.removeEventListener('message', listener, false);
151
+ }
152
+ };
153
+ }
154
+
155
+ export { initialize };
156
+ //# sourceMappingURL=initialize.mjs.map