variable-explorer 0.7.0__tar.gz → 0.8.1__tar.gz
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.
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/PKG-INFO +1 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/package.json +1 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/SqlPanel.tsx +17 -2
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/VariableExplorerApp.tsx +1 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/VariableList.tsx +8 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/_version.py +1 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/data_provider.py +66 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/introspection.py +25 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/statistics.py +7 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/package.json +2 -2
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/schemas/variable-explorer/package.json.orig +1 -1
- variable_explorer-0.8.1/variable_explorer/labextension/static/746.4c2692f837d17eca522f.js +1 -0
- variable_explorer-0.8.1/variable_explorer/labextension/static/remoteEntry.b815c3430cd7e8ae0b55.js +1 -0
- variable_explorer-0.7.0/variable_explorer/labextension/static/746.58a99d2f32f8834ed814.js +0 -1
- variable_explorer-0.7.0/variable_explorer/labextension/static/remoteEntry.d175bc820329257b7c49.js +0 -1
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/.claude/settings.local.json +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/.gitignore +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/.yarnrc.yml +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/LICENSE +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/MANIFEST.in +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/README.md +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/fix_frontend.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/install.json +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/pyproject.toml +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/schema/plugin.json +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/comm/CommManager.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/comm/protocol.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/Breadcrumb.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/CellReferenceBar.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/DataGrid.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/HistogramHeader.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/MetadataSidebar.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/ResizeHandle.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/components/StatusBar.tsx +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/index.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/utils/colorScales.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/utils/histogramRenderer.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/utils/stylesheetCloner.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/src/widgets/DetachedWindow.ts +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/style/ag-grid-overrides.css +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/style/base.css +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/style/index.css +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/style/index.js +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/tsconfig.json +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/__init__.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/__init__.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/comm_handler.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/editor.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/serialization.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/sorter.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/sql_handler.py +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/schemas/variable-explorer/plugin.json +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/140.0326e0e0e77185d73e92.js +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/719.b1e5abbcc7b2adac64e7.js +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/924.5e98cac11804e1a59d7e.js +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/927.d2072f9536bbda11eb79.js +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/style.js +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/third-party-licenses.json +0 -0
- {variable_explorer-0.7.0 → variable_explorer-0.8.1}/yarn.lock +0 -0
|
@@ -31,9 +31,20 @@ export const SqlPanel: React.FC<Props> = ({ commManager, onPopOut, isDocked, onT
|
|
|
31
31
|
const [duckdbAvailable, setDuckdbAvailable] = React.useState(true);
|
|
32
32
|
const textareaRef = React.useRef<HTMLTextAreaElement>(null);
|
|
33
33
|
|
|
34
|
-
// Request table list on mount
|
|
34
|
+
// Request the table list on mount, and again whenever the kernel connection
|
|
35
|
+
// (re)establishes. Without the connection hook the initial request can be
|
|
36
|
+
// sent before the comm is open and silently dropped, so tables would only
|
|
37
|
+
// appear after a remount (e.g. dock/undock).
|
|
35
38
|
React.useEffect(() => {
|
|
36
|
-
commManager.send({ type: 'sql_tables' });
|
|
39
|
+
const requestTables = () => commManager.send({ type: 'sql_tables' });
|
|
40
|
+
requestTables();
|
|
41
|
+
const onConnectionChanged = (_: CommManager, connected: boolean) => {
|
|
42
|
+
if (connected) requestTables();
|
|
43
|
+
};
|
|
44
|
+
commManager.connectionChanged.connect(onConnectionChanged);
|
|
45
|
+
return () => {
|
|
46
|
+
commManager.connectionChanged.disconnect(onConnectionChanged);
|
|
47
|
+
};
|
|
37
48
|
}, [commManager]);
|
|
38
49
|
|
|
39
50
|
// Listen for SQL responses
|
|
@@ -58,6 +69,10 @@ export const SqlPanel: React.FC<Props> = ({ commManager, onPopOut, isDocked, onT
|
|
|
58
69
|
const t = msg as ISqlTablesResultMsg;
|
|
59
70
|
setTables(t.tables);
|
|
60
71
|
setDuckdbAvailable(t.duckdbAvailable);
|
|
72
|
+
} else if (msg.type === 'variable_list') {
|
|
73
|
+
// Namespace changed (a cell ran) — refresh the available SQL tables so
|
|
74
|
+
// newly-created DataFrames show up without needing to run a query.
|
|
75
|
+
commManager.send({ type: 'sql_tables' });
|
|
61
76
|
}
|
|
62
77
|
};
|
|
63
78
|
commManager.messageReceived.connect(onMessage);
|
|
@@ -46,7 +46,7 @@ export const VariableExplorerApp: React.FC<Props> = ({ commManager }) => {
|
|
|
46
46
|
const [hiddenColumns, setHiddenColumns] = React.useState<Set<string>>(new Set());
|
|
47
47
|
const [navPath, setNavPath] = React.useState<BreadcrumbItem[]>([]);
|
|
48
48
|
const [activeTab, setActiveTab] = React.useState<'data' | 'sql'>('data');
|
|
49
|
-
const [sqlDocked, setSqlDocked] = React.useState(
|
|
49
|
+
const [sqlDocked, setSqlDocked] = React.useState(false);
|
|
50
50
|
const [sqlDockHeight, setSqlDockHeight] = React.useState(300);
|
|
51
51
|
|
|
52
52
|
const onSqlDockResizeStart = React.useCallback(() => sqlDockHeight, [sqlDockHeight]);
|
|
@@ -42,6 +42,10 @@ function getKindLabel(kind: string): string {
|
|
|
42
42
|
case 'list_scalar': return 'values';
|
|
43
43
|
case 'dict_scalar': return 'record';
|
|
44
44
|
case 'scalar': return 'value';
|
|
45
|
+
case 'set': return 'values';
|
|
46
|
+
case 'range': return 'values';
|
|
47
|
+
case 'index': return 'index';
|
|
48
|
+
case 'object': return 'object';
|
|
45
49
|
default: return '';
|
|
46
50
|
}
|
|
47
51
|
}
|
|
@@ -83,6 +87,9 @@ export const VariableList: React.FC<Props> = ({ variables, selectedVar, onSelect
|
|
|
83
87
|
) : (
|
|
84
88
|
sorted.map(v => {
|
|
85
89
|
const kindLabel = getKindLabel(v.tabularKind);
|
|
90
|
+
// 'object' attribute views have no meaningful shape — don't label them "scalar"
|
|
91
|
+
const shapeText = v.shape.length === 0 && v.tabularKind === 'object'
|
|
92
|
+
? '' : formatShape(v.shape);
|
|
86
93
|
return (
|
|
87
94
|
<div
|
|
88
95
|
key={v.name}
|
|
@@ -101,7 +108,7 @@ export const VariableList: React.FC<Props> = ({ variables, selectedVar, onSelect
|
|
|
101
108
|
)}
|
|
102
109
|
</div>
|
|
103
110
|
<div className="ve-var-meta">
|
|
104
|
-
<span>{
|
|
111
|
+
{shapeText && <span>{shapeText}</span>}
|
|
105
112
|
<span>{formatBytes(v.memoryBytes)}</span>
|
|
106
113
|
</div>
|
|
107
114
|
</div>
|
{variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/data_provider.py
RENAMED
|
@@ -204,6 +204,26 @@ def _to_dataframe(obj: Any):
|
|
|
204
204
|
# Simple list of scalars → single column
|
|
205
205
|
return pd.DataFrame({'value': obj})
|
|
206
206
|
|
|
207
|
+
# Sets / frozensets → single column (sorted when comparable for a
|
|
208
|
+
# stable display, since sets are unordered).
|
|
209
|
+
if isinstance(obj, (set, frozenset)):
|
|
210
|
+
vals = list(obj)
|
|
211
|
+
try:
|
|
212
|
+
vals = sorted(vals)
|
|
213
|
+
except Exception:
|
|
214
|
+
pass
|
|
215
|
+
return pd.DataFrame({'value': vals})
|
|
216
|
+
|
|
217
|
+
# range → single column (cap materialization to avoid OOM on huge ranges)
|
|
218
|
+
if isinstance(obj, range):
|
|
219
|
+
cap = 1_000_000
|
|
220
|
+
vals = list(obj[:cap]) if len(obj) > cap else list(obj)
|
|
221
|
+
return pd.DataFrame({'value': vals})
|
|
222
|
+
|
|
223
|
+
# pandas Index → single column
|
|
224
|
+
if isinstance(obj, pd.Index):
|
|
225
|
+
return obj.to_frame(index=False)
|
|
226
|
+
|
|
207
227
|
# Simple scalar (str, int, float, bool, complex, numpy scalar) →
|
|
208
228
|
# single-cell table so the value is visible on click.
|
|
209
229
|
if isinstance(obj, (str, bytes, bool, int, float, complex)):
|
|
@@ -215,12 +235,57 @@ def _to_dataframe(obj: Any):
|
|
|
215
235
|
except ImportError:
|
|
216
236
|
pass
|
|
217
237
|
|
|
218
|
-
|
|
238
|
+
# Fallback: any other object → attribute/value table
|
|
239
|
+
return _object_to_dataframe(obj)
|
|
219
240
|
|
|
220
241
|
except Exception:
|
|
221
242
|
return None
|
|
222
243
|
|
|
223
244
|
|
|
245
|
+
def _object_to_dataframe(obj: Any):
|
|
246
|
+
"""Build an attribute/value table for an arbitrary object.
|
|
247
|
+
|
|
248
|
+
Lists public, non-callable attributes with a type and a short repr so the
|
|
249
|
+
user can inspect figures, model results, file handles, etc. Each attribute
|
|
250
|
+
access is guarded since arbitrary getattr can raise or be expensive.
|
|
251
|
+
"""
|
|
252
|
+
import pandas as pd
|
|
253
|
+
|
|
254
|
+
rows = []
|
|
255
|
+
for attr in dir(obj):
|
|
256
|
+
if attr.startswith('_'):
|
|
257
|
+
continue
|
|
258
|
+
try:
|
|
259
|
+
val = getattr(obj, attr)
|
|
260
|
+
except Exception:
|
|
261
|
+
continue
|
|
262
|
+
if callable(val):
|
|
263
|
+
continue
|
|
264
|
+
try:
|
|
265
|
+
preview = repr(val)
|
|
266
|
+
except Exception:
|
|
267
|
+
preview = f'<{type(val).__name__}>'
|
|
268
|
+
if len(preview) > 200:
|
|
269
|
+
preview = preview[:200] + '...'
|
|
270
|
+
rows.append({
|
|
271
|
+
'attribute': attr,
|
|
272
|
+
'type': type(val).__name__,
|
|
273
|
+
'value': preview,
|
|
274
|
+
})
|
|
275
|
+
if len(rows) >= 500:
|
|
276
|
+
break
|
|
277
|
+
|
|
278
|
+
if rows:
|
|
279
|
+
return pd.DataFrame(rows)
|
|
280
|
+
|
|
281
|
+
# Nothing inspectable → just show the object's repr in a single cell
|
|
282
|
+
try:
|
|
283
|
+
r = repr(obj)
|
|
284
|
+
except Exception:
|
|
285
|
+
r = f'<{type(obj).__name__}>'
|
|
286
|
+
return pd.DataFrame({'value': [r]})
|
|
287
|
+
|
|
288
|
+
|
|
224
289
|
def _get_column_defs(df) -> list[dict]:
|
|
225
290
|
"""Build column definitions from a DataFrame."""
|
|
226
291
|
import pandas as pd
|
{variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/introspection.py
RENAMED
|
@@ -134,12 +134,36 @@ def _classify_tabular(obj: Any) -> dict:
|
|
|
134
134
|
# Simple list of scalars → single-column tabular
|
|
135
135
|
return {'isTabular': True, 'kind': 'list_scalar'}
|
|
136
136
|
|
|
137
|
+
# Sets / frozensets → single column of values
|
|
138
|
+
if isinstance(obj, (set, frozenset)):
|
|
139
|
+
if not obj:
|
|
140
|
+
return {'isTabular': False, 'kind': 'set_empty'}
|
|
141
|
+
return {'isTabular': True, 'kind': 'set'}
|
|
142
|
+
|
|
143
|
+
# range → single column of values
|
|
144
|
+
if isinstance(obj, range):
|
|
145
|
+
if len(obj) == 0:
|
|
146
|
+
return {'isTabular': False, 'kind': 'range_empty'}
|
|
147
|
+
return {'isTabular': True, 'kind': 'range'}
|
|
148
|
+
|
|
149
|
+
# pandas Index → single column
|
|
150
|
+
try:
|
|
151
|
+
import pandas as pd
|
|
152
|
+
if isinstance(obj, pd.Index):
|
|
153
|
+
return {'isTabular': True, 'kind': 'index'}
|
|
154
|
+
except ImportError:
|
|
155
|
+
pass
|
|
156
|
+
|
|
137
157
|
# Simple scalar values (str, int, float, bool, complex, numpy scalars) →
|
|
138
158
|
# viewable as a single cell so the user can click and see the value.
|
|
139
159
|
if _is_scalar(obj):
|
|
140
160
|
return {'isTabular': True, 'kind': 'scalar'}
|
|
141
161
|
|
|
142
|
-
|
|
162
|
+
# Any other object (figures, models, file handles, …) → show an
|
|
163
|
+
# attribute/value table on click so the user can always inspect it.
|
|
164
|
+
# The (potentially expensive) introspection happens lazily in
|
|
165
|
+
# _to_dataframe, not here, so classification stays cheap.
|
|
166
|
+
return {'isTabular': True, 'kind': 'object'}
|
|
143
167
|
|
|
144
168
|
|
|
145
169
|
def _is_scalar(obj: Any) -> bool:
|
|
@@ -82,8 +82,14 @@ def _compute_histogram(series) -> dict:
|
|
|
82
82
|
if len(clean) == 0:
|
|
83
83
|
return {'type': 'unavailable', 'reason': 'All values are null'}
|
|
84
84
|
|
|
85
|
-
# Compute histogram bins
|
|
85
|
+
# Compute histogram bins. Cap the bin count at the number of distinct
|
|
86
|
+
# values so low-cardinality columns (e.g. binary 0/1, small integer
|
|
87
|
+
# sets) get one bar per value sitting side-by-side, instead of two bars
|
|
88
|
+
# spread to opposite ends with empty bins between them.
|
|
86
89
|
n_bins = min(20, max(5, len(clean) // 10))
|
|
90
|
+
n_unique = int(clean.nunique())
|
|
91
|
+
if n_unique < n_bins:
|
|
92
|
+
n_bins = max(1, n_unique)
|
|
87
93
|
try:
|
|
88
94
|
counts, edges = np.histogram(clean, bins=n_bins)
|
|
89
95
|
return {
|
{variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/package.json
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "variable-explorer",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "A Spyder/Stata-grade variable explorer for JupyterLab",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jupyter",
|
|
@@ -88,7 +88,7 @@
|
|
|
88
88
|
}
|
|
89
89
|
},
|
|
90
90
|
"_build": {
|
|
91
|
-
"load": "static/remoteEntry.
|
|
91
|
+
"load": "static/remoteEntry.b815c3430cd7e8ae0b55.js",
|
|
92
92
|
"extension": "./extension",
|
|
93
93
|
"style": "./style"
|
|
94
94
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";(self.webpackChunkvariable_explorer=self.webpackChunkvariable_explorer||[]).push([[746],{746(e,t,n){n.r(t),n.d(t,{default:()=>R});var l=n(980),a=n(428),o=n(436),r=n(760),s=n(602);const i='\ntry:\n from variable_explorer.kernel import init_comm as _ve_init\n _ve_init()\n del _ve_init\nexcept ImportError as e:\n print(f"Variable Explorer: kernel package not found: {e}")\nexcept Exception as e:\n print(f"Variable Explorer: init error: {e}")\n'.trim();class c{constructor(){this._comm=null,this._kernel=null,this._messageReceived=new s.Signal(this),this._connectionChanged=new s.Signal(this),this._isConnected=!1}get messageReceived(){return this._messageReceived}get connectionChanged(){return this._connectionChanged}get isConnected(){return this._isConnected}async connect(e){this.disconnect(),this._kernel=e;const t=e.requestExecute({code:i,silent:!0,store_history:!1});await t.done,this._comm=e.createComm("variable_explorer"),this._comm.onMsg=e=>{const t=e.content.data;t&&t.type&&this._messageReceived.emit(t)},this._comm.onClose=()=>{this._setConnected(!1)},await this._comm.open({}).done,this._setConnected(!0),e.statusChanged.connect(this._onKernelStatus,this)}send(e){this._comm&&this._isConnected&&this._comm.send(e)}refresh(){this.send({type:"refresh"})}disconnect(){if(this._kernel&&this._kernel.statusChanged.disconnect(this._onKernelStatus,this),this._comm){try{this._comm.close({})}catch(e){}this._comm=null}this._kernel=null,this._setConnected(!1)}_setConnected(e){this._isConnected!==e&&(this._isConnected=e,this._connectionChanged.emit(e))}_onKernelStatus(e,t){"restarting"!==t&&"dead"!==t||(this._setConnected(!1),this._comm=null),"idle"===t&&!this._isConnected&&this._kernel&&this.connect(this._kernel).catch(e=>{console.error("Variable Explorer: reconnect failed",e)})}}var d=n(345),u=n(628);function m(e){const t=e.toLowerCase();return"dataframe"===t?"ve-type-dataframe":"series"===t?"ve-type-series":"ndarray"===t?"ve-type-ndarray":"tensor"===t?"ve-type-tensor":"list"===t||"tuple"===t?"ve-type-list":"dict"===t?"ve-type-dict":"ve-type-other"}const v=({variables:e,selectedVar:t,onSelect:n})=>{const[l,a]=d.useState(""),o=d.useMemo(()=>{if(!l)return e;const t=l.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t)||e.typeName.toLowerCase().includes(t))},[e,l]),r=d.useMemo(()=>[...o].sort((e,t)=>e.isTabular!==t.isTabular?e.isTabular?-1:1:e.name.localeCompare(t.name)),[o]);return d.createElement("div",{className:"ve-variable-list"},d.createElement("div",{className:"ve-variable-list-header"},d.createElement("input",{className:"ve-variable-search",type:"text",placeholder:"Filter objects...",value:l,onChange:e=>a(e.target.value)})),d.createElement("div",{className:"ve-variable-items"},0===r.length?d.createElement("div",{style:{padding:"12px 8px",textAlign:"center",opacity:.5,fontSize:"12px"}},0===e.length?"No variables":"No matches"):r.map(e=>{const l=function(e){switch(e){case"list_of_dicts":return"records";case"list_of_lists":return"matrix";case"list_of_dataframes":case"dict_of_dataframes":return"container";case"dict_of_lists":return"table";case"dict_of_dicts":return"nested";case"list_scalar":case"set":case"range":return"values";case"dict_scalar":return"record";case"scalar":return"value";case"index":return"index";case"object":return"object";default:return""}}(e.tabularKind),a=0===e.shape.length&&"object"===e.tabularKind?"":0===(o=e.shape).length?"scalar":1===o.length?`${o[0].toLocaleString()} items`:o.map(e=>e.toLocaleString()).join(" × ");var o,r;return d.createElement("div",{key:e.name,className:"ve-variable-item "+(e.name===t?"ve-selected":""),onClick:()=>e.isTabular&&n(e.name),style:{opacity:e.isTabular?1:.6,cursor:e.isTabular?"pointer":"default"},title:e.isTabular?`Click to view ${e.name}`:`${e.name} (${e.typeName})`},d.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},d.createElement("span",{className:"ve-var-name"},e.name),d.createElement("span",{className:`ve-type-badge ${m(e.typeName)}`},e.typeName),l&&d.createElement("span",{className:"ve-kind-label"},l)),d.createElement("div",{className:"ve-var-meta"},a&&d.createElement("span",null,a),d.createElement("span",null,(r=e.memoryBytes)<1024?`${r} B`:r<1048576?`${(r/1024).toFixed(1)} KB`:r<1073741824?`${(r/1048576).toFixed(1)} MB`:`${(r/1073741824).toFixed(1)} GB`)))})))};var h=n(734);const p=({displayName:e,stats:t,column:n,setSort:l,api:a})=>{const o=d.useRef(null),r=d.useRef(null),[s,i]=d.useState(null),[c,u]=d.useState(null),m=null==t?void 0:t.histogram,v="unavailable"===(null==m?void 0:m.type),h=!!m&&!v;d.useEffect(()=>{const e=o.current;e&&m&&"unavailable"!==m.type&&function(e,t){const n=e.getContext("2d");if(!n)return;const l=window.devicePixelRatio||1,a=e.clientWidth,o=e.clientHeight;switch(e.width=a*l,e.height=o*l,n.scale(l,l),n.clearRect(0,0,a,o),t.type){case"numeric":!function(e,t,n,l){const{counts:a}=l;if(0===a.length)return;const o=Math.max(...a);if(0===o)return;const r=t/a.length,s=getComputedStyle(document.documentElement).getPropertyValue("--jp-brand-color1").trim()||"#1976d2";for(let t=0;t<a.length;t++){const l=a[t]/o*(n-2),i=t*r+.5,c=n-l-1;e.fillStyle=s,e.globalAlpha=.6,e.fillRect(i,c,r-1,l)}e.globalAlpha=1}(n,a,o,t);break;case"categorical":!function(e,t,n,l){const{counts:a}=l;if(0===a.length)return;const o=Math.max(...a);if(0===o)return;const r=n/Math.min(a.length,8),s=["#1976d2","#388e3c","#f57c00","#7b1fa2","#c62828","#00838f","#4e342e","#546e7a"];for(let n=0;n<Math.min(a.length,8);n++){const l=a[n]/o*(t-2),i=n*r+.5;e.fillStyle=s[n%s.length],e.globalAlpha=.6,e.fillRect(1,i,l,r-1)}e.globalAlpha=1}(n,a,o,t);break;case"boolean":!function(e,t,n,l){const a=l.trueCount+l.falseCount+l.nullCount;if(0===a)return;const o=l.trueCount/a*t,r=l.falseCount/a*t,s=.2*n,i=.6*n;e.fillStyle="rgba(52, 168, 83, 0.7)",e.fillRect(0,s,o,i),e.fillStyle="rgba(66, 133, 244, 0.7)",e.fillRect(o,s,r,i),l.nullCount>0&&(e.fillStyle="rgba(128, 128, 128, 0.4)",e.fillRect(o+r,s,t-o-r,i))}(n,a,o,t)}}(e,m)},[m]),d.useEffect(()=>{var e;if(!n||!a)return;const t=()=>{var e;const t=null===(e=a.getColumnState)||void 0===e?void 0:e.call(a);if(t){const e=t.find(e=>e.colId===n.getColId());i((null==e?void 0:e.sort)||null)}};return null===(e=a.addEventListener)||void 0===e||e.call(a,"sortChanged",t),()=>{var e;null===(e=a.removeEventListener)||void 0===e||e.call(a,"sortChanged",t)}},[n,a]);const p=d.useCallback(e=>{const n=null==t?void 0:t.histogram;if(!n||"unavailable"===n.type||!o.current)return;const l=o.current.getBoundingClientRect(),a=function(e,t,n,l,a){const o=e=>Number.isInteger(e)&&Math.abs(e)<1e6?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2});if("numeric"===e.type){const{counts:n,edges:a}=e,r=Math.floor(t/l*n.length);return r<0||r>=n.length?null:`${o(a[r])} – ${o(a[r+1])}: ${n[r].toLocaleString()}`}if("categorical"===e.type){const{labels:t,counts:l}=e,o=Math.min(t.length,8),r=a/o,s=Math.floor(n/r);return s<0||s>=o?null:`${t[s]}: ${l[s].toLocaleString()}`}if("boolean"===e.type){const n=e.trueCount+e.falseCount+e.nullCount;if(0===n)return null;const a=e.trueCount/n*l,o=e.falseCount/n*l;return t<a?`True: ${e.trueCount.toLocaleString()} (${Math.round(100*e.trueCount/n)}%)`:t<a+o?`False: ${e.falseCount.toLocaleString()} (${Math.round(100*e.falseCount/n)}%)`:`Null: ${e.nullCount.toLocaleString()} (${Math.round(100*e.nullCount/n)}%)`}return null}(n,e.clientX-l.left,e.clientY-l.top,l.width,l.height);u(a?{text:a,x:e.clientX,y:l.top-4}:null)},[t]),g=d.useCallback(()=>{u(null)},[]),b="asc"===s?" ▲":"desc"===s?" ▼":"";return d.createElement("div",{className:"ve-histogram-header",style:{width:"100%"}},d.createElement("div",{className:"ve-header-label",onClick:e=>{if(!l)return;let t;t=null===s?"asc":"asc"===s?"desc":"",l(t,e.shiftKey)},title:`Click to sort by ${e}`},d.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},e),b&&d.createElement("span",{className:"ve-sort-icon"},b)),v&&d.createElement("div",{className:"ve-histogram-unavailable",title:m.reason,style:{width:"100%",height:"30px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontStyle:"italic",opacity:.6,textAlign:"center",overflow:"hidden",padding:"0 2px",lineHeight:1.1}},m.reason),h&&d.createElement("div",{style:{position:"relative",width:"100%"}},d.createElement("canvas",{ref:o,width:120,height:30,style:{width:"100%",height:"30px",cursor:"crosshair"},onMouseMove:p,onMouseLeave:g}),c&&d.createElement("div",{ref:r,className:"ve-histogram-tooltip",style:{left:c.x,top:c.y,transform:"translate(-50%, -100%)"}},c.text.split("\n").map((e,t)=>d.createElement("div",{key:t},e)))))};function g(e,t,n){if(null==e||isNaN(e))return"transparent";const l=n-t;if(0===l)return"rgba(100, 149, 237, 0.15)";const a=Math.max(0,Math.min(1,(e-t)/l));return a<.5?`rgba(66, 133, 244, ${(.25*(1-2*a)).toFixed(3)})`:`rgba(234, 67, 53, ${(2*(a-.5)*.25).toFixed(3)})`}const b=({onIndexSort:e,sortModel:t})=>{const n=t.find(e=>"__index__"===e.colId),l=(null==n?void 0:n.sort)||null,a=t.some(e=>"__index__"!==e.colId),o="asc"===l?" ▲":"desc"===l?" ▼":"",r="desc"===l?"Click to sort index ascending (original order)":"asc"===l?"Click to reverse index order":"Click to reset to original index order";return d.createElement("div",{onClick:()=>{e(null===l||a?"asc":"asc"===l?"desc":"asc")},title:r,style:{cursor:"pointer",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",fontWeight:600,fontSize:"12px"}},"Index",o)},f=({rows:e,columns:t,columnStats:n,totalRows:l,sortModel:a,hiddenColumns:o,loading:r,isContainerView:s,onSortChanged:i,onLoadMore:c,onCellSelected:u,onCellEdit:m,onDrillDown:v})=>{const f=d.useRef(null),E=d.useRef(null),y=d.useRef(null),w=d.useMemo(()=>{const e={};for(const t of n)e[t.name]=t;return e},[n]),C=d.useMemo(()=>{const e={headerName:"Index",colId:"__index__",field:"__pandas_index__",headerComponent:b,headerComponentParams:{sortModel:a,onIndexSort:e=>{var t,n;null===(n=null===(t=f.current)||void 0===t?void 0:t.api)||void 0===n||n.applyColumnState({defaultState:{sort:null}}),i(e?[{colId:"__index__",sort:e}]:[])}},width:80,pinned:"left",sortable:!1,resizable:!0,cellStyle:{color:"var(--jp-ui-font-color2)",fontWeight:"500",fontSize:"11px"}},n=t.filter(e=>!o.has(e.name)).map(e=>{const t=w[e.name],n={headerName:e.name,field:e.name,sortable:!0,resizable:!0,editable:!0,minWidth:80,headerComponent:p,headerComponentParams:{displayName:e.name,stats:t}};if(e.isNumeric&&(null==t?void 0:t.histogram)&&"numeric"===t.histogram.type){const e=t.histogram;n.cellStyle=t=>null==t.value?{backgroundColor:"var(--jp-layout-color2)",opacity:.5}:{backgroundColor:g(t.value,e.min,e.max),color:"var(--jp-ui-font-color0)"}}else e.isBool&&(n.cellStyle=e=>{return null==e.value?{backgroundColor:"var(--jp-layout-color2)",opacity:.5}:{backgroundColor:(t=e.value,!0===t||1===t?"rgba(52, 168, 83, 0.7)":!1===t||0===t?"rgba(66, 133, 244, 0.7)":"rgba(128, 128, 128, 0.3)"),color:"#fff",fontWeight:"600",textAlign:"center"};var t});return e.isNumeric&&(n.valueFormatter=e=>{if(null==e.value)return"";const t=Number(e.value);return Number.isInteger(t)?t.toLocaleString():t.toLocaleString(void 0,{maximumFractionDigits:4})}),e.isDatetime&&(n.valueFormatter=e=>null==e.value?"":new Date(e.value).toLocaleString()),n});if(s&&v)for(const e of n)"type"===e.field&&(e.cellRenderer=e=>e.value?`▶ ${e.value}`:"",e.cellStyle={cursor:"pointer",color:"var(--jp-brand-color1)",fontWeight:"600"});return[e,...n]},[t,w,o,s,v,i]),x=d.useCallback(e=>{const t=e.api.getColumnState().filter(e=>e.sort&&"__index__"!==e.colId).sort((e,t)=>(e.sortIndex||0)-(t.sortIndex||0)).map(e=>({colId:e.colId,sort:e.sort}));i(t)},[i]),S=d.useCallback(e=>{var t,n;if(s&&v){const l=e.data,a=String(null!==(n=null!==(t=null==l?void 0:l.index)&&void 0!==t?t:null==l?void 0:l.key)&&void 0!==n?n:e.rowIndex);return void v(a,`[${a}]`)}e.colDef.field&&null!=e.rowIndex&&u(e.rowIndex,e.colDef.field,e.value)},[u,s,v]),_=d.useCallback(e=>{if(e.colDef.field&&null!=e.rowIndex){m(e.rowIndex,e.colDef.field,String(e.newValue));const t=e.api.getRowNode(String(e.rowIndex));t&&t.setDataValue(e.colDef.field,e.newValue)}},[m]),k=d.useCallback(t=>{r||t.api.getLastDisplayedRow()>=e.length-200&&e.length<l&&c(e.length)},[r,e.length,l,c]),N=d.useCallback(()=>{var e,t;const n=null===(e=f.current)||void 0===e?void 0:e.api;return n?((null===(t=n.getAllDisplayedColumns)||void 0===t?void 0:t.call(n))||[]).map(e=>e.getColId()).filter(e=>"__index__"!==e):[]},[]),M=d.useCallback(()=>{const e=E.current;e&&e.querySelectorAll(".ve-cell-selected").forEach(e=>e.classList.remove("ve-cell-selected"))},[]),R=d.useCallback(()=>{const e=y.current,t=E.current;if(!e||!t)return;M();const n=Math.min(e.startRow,e.endRow),l=Math.max(e.startRow,e.endRow),a=Math.min(e.startColIdx,e.endColIdx),o=Math.max(e.startColIdx,e.endColIdx);t.querySelectorAll(".ag-row").forEach(t=>{const r=parseInt(t.getAttribute("row-index")||"-1");r<n||r>l||t.querySelectorAll(".ag-cell").forEach(t=>{const n=t.getAttribute("col-id");if(!n||"__index__"===n)return;const l=e.colFields.indexOf(n);l>=a&&l<=o&&t.classList.add("ve-cell-selected")})})},[M]),L=d.useCallback(e=>{if(s)return;if(0!==e.button)return;const t=e.target.closest(".ag-cell"),n=e.target.closest(".ag-row");if(!t||!n)return;const l=t.getAttribute("col-id"),a=parseInt(n.getAttribute("row-index")||"-1");if(!l||"__index__"===l||a<0)return;const o=N(),r=o.indexOf(l);r<0||(y.current={startRow:a,startColIdx:r,endRow:a,endColIdx:r,dragging:!0,colFields:o},R())},[s,N,R]),D=d.useCallback(e=>{const t=y.current;if(!t||!t.dragging)return;const n=e.target.closest(".ag-cell"),l=e.target.closest(".ag-row");if(!n||!l)return;const a=n.getAttribute("col-id"),o=parseInt(l.getAttribute("row-index")||"-1");if(!a||"__index__"===a||o<0)return;const r=t.colFields.indexOf(a);r<0||(t.endRow=o,t.endColIdx=r,R())},[R]),I=d.useCallback(()=>{y.current&&(y.current.dragging=!1)},[]),q=d.useCallback(()=>{var t,n,l;const a=y.current;if(!a)return;const o=(null===(t=E.current)||void 0===t?void 0:t.ownerDocument)||document,r=Math.min(a.startRow,a.endRow),s=Math.max(a.startRow,a.endRow),i=Math.min(a.startColIdx,a.endColIdx),c=Math.max(a.startColIdx,a.endColIdx),d=a.colFields.slice(i,c+1),u=[];for(let t=r;t<=s;t++)t<e.length&&u.push(d.map(n=>{const l=e[t][n];return null==l?"":String(l)}).join("\t"));const m=u.join("\n");m&&(null===(l=null===(n=o.defaultView)||void 0===n?void 0:n.navigator)||void 0===l?void 0:l.clipboard)&&o.defaultView.navigator.clipboard.writeText(m)},[e]);d.useEffect(()=>{const e=E.current;if(!e)return;const t=e.ownerDocument||document,n=e=>{(e.ctrlKey||e.metaKey)&&"c"===e.key&&y.current&&(e.preventDefault(),q())};return t.addEventListener("keydown",n),()=>t.removeEventListener("keydown",n)},[q]);const[F,$]=d.useState(null),z=d.useCallback(e=>{y.current&&(e.preventDefault(),$({x:e.clientX,y:e.clientY}))},[]);d.useEffect(()=>{var e;if(!F)return;const t=(null===(e=E.current)||void 0===e?void 0:e.ownerDocument)||document,n=()=>$(null);return t.addEventListener("mousedown",n),()=>t.removeEventListener("mousedown",n)},[F]);const T="false"===document.body.getAttribute("data-jp-theme-light")?"ag-theme-quartz-dark":"ag-theme-quartz";return d.createElement("div",{className:"ve-grid-wrapper",ref:E,onMouseDown:L,onMouseMove:D,onMouseUp:I,onContextMenu:z},d.createElement("div",{className:T,style:{width:"100%",height:"100%"}},d.createElement(h.AgGridReact,{ref:f,rowData:e,columnDefs:C,defaultColDef:{sortable:!0,resizable:!0,minWidth:60},headerHeight:64,rowHeight:s?36:28,animateRows:!1,suppressMovableColumns:!1,suppressCellFocus:!1,readOnlyEdit:!s,rowClass:s?"ve-drillable-row":void 0,onSortChanged:x,onCellClicked:S,onCellEditRequest:s?void 0:_,onBodyScrollEnd:k,onRowDoubleClicked:s&&v?e=>{var t,n;const l=e.data,a=String(null!==(n=null!==(t=null==l?void 0:l.index)&&void 0!==t?t:null==l?void 0:l.key)&&void 0!==n?n:e.rowIndex);v(a,`[${a}]`)}:void 0,getRowId:e=>{var t,n,l;return String(null!==(l=null!==(t=e.data.__row_index__)&&void 0!==t?t:null===(n=e.node)||void 0===n?void 0:n.rowIndex)&&void 0!==l?l:0)},loading:r})),F&&d.createElement("div",{className:"ve-context-menu",style:{left:F.x,top:F.y}},d.createElement("div",{className:"ve-context-menu-item",onMouseDown:e=>{e.stopPropagation(),q(),$(null)}},"Copy")))},E=({columns:e,columnStats:t,hiddenColumns:n,onToggleColumn:l,selectedVarInfo:a})=>{var o,r,s,i,c;const[u,m]=d.useState(""),[v,h]=d.useState(null),[p,g]=d.useState(220),b=d.useRef(null),f=d.useMemo(()=>{const e={};for(const n of t)e[n.name]=n;return e},[t]),E=d.useMemo(()=>{if(!u)return e;const t=u.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t))},[e,u]),y=v?f[v]:null,w=v?e.find(e=>e.name===v):null,C=d.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation();const n=e.clientY,l=p,a=(null===(t=b.current)||void 0===t?void 0:t.ownerDocument)||document,o=e=>{e.preventDefault();const t=n-e.clientY;g(Math.max(80,Math.min(500,l+t)))},r=()=>{a.removeEventListener("mousemove",o),a.removeEventListener("mouseup",r),a.body.style.cursor="",a.body.style.userSelect=""};a.addEventListener("mousemove",o),a.addEventListener("mouseup",r),a.body.style.cursor="row-resize",a.body.style.userSelect="none"},[p]);return d.createElement("div",{className:"ve-metadata-sidebar"},d.createElement("div",{className:"ve-metadata-header"},d.createElement("span",null,"Columns"),d.createElement("span",{style:{fontSize:"11px",fontWeight:"normal",opacity:.6}},e.length)),d.createElement("input",{className:"ve-metadata-search",type:"text",placeholder:"Filter columns...",value:u,onChange:e=>m(e.target.value)}),d.createElement("div",{className:"ve-metadata-columns"},E.map(e=>d.createElement("div",{key:e.name,className:"ve-metadata-column-item",onClick:()=>h(e.name),style:{cursor:"pointer",background:e.name===v?"var(--jp-layout-color2)":void 0}},d.createElement("input",{type:"checkbox",checked:!n.has(e.name),onChange:()=>l(e.name),onClick:e=>e.stopPropagation()}),d.createElement("span",{className:"ve-col-name",title:e.name},e.name),d.createElement("span",{className:"ve-col-type"},e.dtype)))),d.createElement("div",{ref:b,className:"ve-resize-handle-horizontal",onMouseDown:C}),d.createElement("div",{className:"ve-properties-panel",style:{height:p,minHeight:80}},y&&w?d.createElement(d.Fragment,null,d.createElement("h4",null,"Column: ",v),d.createElement("table",{className:"ve-properties-table"},d.createElement("tbody",null,d.createElement("tr",null,d.createElement("td",null,"Name"),d.createElement("td",null,w.name)),d.createElement("tr",null,d.createElement("td",null,"Type"),d.createElement("td",null,w.dtype)),d.createElement("tr",null,d.createElement("td",null,"Nulls"),d.createElement("td",null,y.nullCount.toLocaleString())),d.createElement("tr",null,d.createElement("td",null,"Unique"),d.createElement("td",null,y.uniqueCount.toLocaleString())),"numeric"===(null===(o=y.histogram)||void 0===o?void 0:o.type)&&d.createElement(d.Fragment,null,d.createElement("tr",null,d.createElement("td",null,"Min"),d.createElement("td",null,y.histogram.min.toLocaleString(void 0,{maximumFractionDigits:4}))),d.createElement("tr",null,d.createElement("td",null,"Max"),d.createElement("td",null,y.histogram.max.toLocaleString(void 0,{maximumFractionDigits:4}))),d.createElement("tr",null,d.createElement("td",null,"Mean"),d.createElement("td",null,y.histogram.mean.toLocaleString(void 0,{maximumFractionDigits:4}))),d.createElement("tr",null,d.createElement("td",null,"Std"),d.createElement("td",null,y.histogram.std.toLocaleString(void 0,{maximumFractionDigits:4})))),"boolean"===(null===(r=y.histogram)||void 0===r?void 0:r.type)&&d.createElement(d.Fragment,null,d.createElement("tr",null,d.createElement("td",null,"True"),d.createElement("td",null,y.histogram.trueCount.toLocaleString())),d.createElement("tr",null,d.createElement("td",null,"False"),d.createElement("td",null,y.histogram.falseCount.toLocaleString()))),"unavailable"===(null===(s=y.histogram)||void 0===s?void 0:s.type)&&d.createElement("tr",null,d.createElement("td",null,"Distribution"),d.createElement("td",{style:{fontStyle:"italic",opacity:.7}},y.histogram.reason)),"categorical"===(null===(i=y.histogram)||void 0===i?void 0:i.type)&&d.createElement(d.Fragment,null,d.createElement("tr",null,d.createElement("td",null,"Top values"),d.createElement("td",null,y.histogram.labels.slice(0,5).map((e,t)=>{var n;return d.createElement("div",{key:t,style:{fontSize:"11px"}},e,": ","categorical"===y.histogram.type?null===(n=y.histogram.counts[t])||void 0===n?void 0:n.toLocaleString():"")}))))))):a?d.createElement(d.Fragment,null,d.createElement("h4",null,"Dataset"),d.createElement("table",{className:"ve-properties-table"},d.createElement("tbody",null,d.createElement("tr",null,d.createElement("td",null,"Name"),d.createElement("td",null,a.name)),d.createElement("tr",null,d.createElement("td",null,"Type"),d.createElement("td",null,a.typeName)),d.createElement("tr",null,d.createElement("td",null,"Shape"),d.createElement("td",null,a.shape.map(e=>e.toLocaleString()).join(" × "))),d.createElement("tr",null,d.createElement("td",null,"Memory"),d.createElement("td",null,(x=a.memoryBytes)<1024?`${x} B`:x<1048576?`${(x/1024).toFixed(1)} KB`:x<1073741824?`${(x/1048576).toFixed(1)} MB`:`${(x/1073741824).toFixed(1)} GB`)),d.createElement("tr",null,d.createElement("td",null,"Variables"),d.createElement("td",null,e.length)),d.createElement("tr",null,d.createElement("td",null,"Observations"),d.createElement("td",null,null===(c=a.shape[0])||void 0===c?void 0:c.toLocaleString()))))):d.createElement("div",{style:{fontSize:"12px",opacity:.5,textAlign:"center",paddingTop:12}},"Click a column for details")));var x},y=({rowIndex:e,colName:t,value:n})=>{const l=null==n?"null":String(n);return d.createElement("div",{className:"ve-cell-reference-bar"},d.createElement("span",{className:"ve-cell-location"},"Row ",e.toLocaleString()," / Col: ",t),d.createElement("span",{className:"ve-cell-value",title:l},l))},w=({selectedVar:e,totalRows:t,totalCols:n,sortModel:l,connected:a})=>{const o=l.length>0?l.map(e=>`${e.colId} ${e.sort}`).join(", "):"none";return d.createElement("div",{className:"ve-status-bar"},d.createElement("span",{className:"ve-status-item",style:{color:a?"var(--jp-success-color1)":"var(--jp-error-color1)"}},a?"● Connected":"○ Disconnected"),e&&d.createElement(d.Fragment,null,d.createElement("span",{className:"ve-status-separator"},"|"),d.createElement("span",{className:"ve-status-item"},"Vars: ",n),d.createElement("span",{className:"ve-status-separator"},"|"),d.createElement("span",{className:"ve-status-item"},"Obs: ",t.toLocaleString()),d.createElement("span",{className:"ve-status-separator"},"|"),d.createElement("span",{className:"ve-status-item"},"Sorted: ",o)))},C=({onResizeStart:e,onResize:t,direction:n,invert:l})=>{const a=d.useRef(null),o=d.useCallback(n=>{var o;n.preventDefault(),n.stopPropagation();const r=n.clientX,s=e(),i=(null===(o=a.current)||void 0===o?void 0:o.ownerDocument)||document,c=e=>{e.preventDefault();const n=e.clientX-r;t(l?s-n:s+n)},d=()=>{i.removeEventListener("mousemove",c),i.removeEventListener("mouseup",d),i.body.style.cursor="",i.body.style.userSelect=""};i.addEventListener("mousemove",c),i.addEventListener("mouseup",d),i.body.style.cursor="col-resize",i.body.style.userSelect="none"},[e,t,l]);return d.createElement("div",{ref:a,className:"ve-resize-handle",onMouseDown:o})},x=({commManager:e,onPopOut:t,isDocked:n,onToggleDock:l})=>{const[a,o]=d.useState("SELECT * FROM "),[r,s]=d.useState(""),[i,c]=d.useState(!1),[u,m]=d.useState(null),[v,p]=d.useState([]),[g,b]=d.useState([]),[f,E]=d.useState(0),[y,w]=d.useState(null),[C,x]=d.useState([]),[S,_]=d.useState(!0),k=d.useRef(null);d.useEffect(()=>{const t=()=>e.send({type:"sql_tables"});t();const n=(e,n)=>{n&&t()};return e.connectionChanged.connect(n),()=>{e.connectionChanged.disconnect(n)}},[e]),d.useEffect(()=>{const t=(t,n)=>{if("sql_result"===n.type){const e=n;p(e.columns),b(e.rows),E(e.totalRows),w(e.savedAs),x(e.tables.map(e=>({name:e,rows:0,columns:0,columnNames:[]}))),m(null),c(!1)}else if("sql_error"===n.type)m(n.error),p([]),b([]),c(!1);else if("sql_tables"===n.type){const e=n;x(e.tables),_(e.duckdbAvailable)}else"variable_list"===n.type&&e.send({type:"sql_tables"})};return e.messageReceived.connect(t),()=>{e.messageReceived.disconnect(t)}},[e]);const N=d.useCallback(()=>{a.trim()&&(c(!0),m(null),w(null),e.send({type:"sql_execute",query:a.trim(),saveAs:r.trim()||void 0}))},[e,a,r]),M=d.useCallback(e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),N())},[N]),R=d.useCallback(e=>{const t=k.current;if(!t)return;const n=t.selectionStart,l=t.selectionEnd,r=a.substring(0,n)+e+a.substring(l);o(r),setTimeout(()=>{t.focus(),t.selectionStart=t.selectionEnd=n+e.length},0)},[a]),L=d.useCallback(()=>{var e;const t=new Blob([a],{type:"text/sql"}),n=URL.createObjectURL(t),l=((null===(e=k.current)||void 0===e?void 0:e.ownerDocument)||document).createElement("a");l.href=n,l.download="query.sql",l.click(),URL.revokeObjectURL(n)},[a]),D=d.useCallback(()=>{var e;const t=((null===(e=k.current)||void 0===e?void 0:e.ownerDocument)||document).createElement("input");t.type="file",t.accept=".sql,.txt",t.onchange=e=>{var t,n;const l=null===(n=null===(t=e.target)||void 0===t?void 0:t.files)||void 0===n?void 0:n[0];if(!l)return;const a=new FileReader;a.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;"string"==typeof n&&o(n)},a.readAsText(l)},t.click()},[]),I=(d.useCallback(()=>{var e,t,n;if(0===v.length||0===g.length)return;const l=[v.map(e=>e.name).join("\t"),...g.map(e=>v.map(t=>{const n=e[t.name];return null==n?"":String(n)}).join("\t"))].join("\n"),a=(null===(e=k.current)||void 0===e?void 0:e.ownerDocument)||document;(null===(n=null===(t=a.defaultView)||void 0===t?void 0:t.navigator)||void 0===n?void 0:n.clipboard)&&a.defaultView.navigator.clipboard.writeText(l)},[v,g]),d.useMemo(()=>[{headerName:"#",valueGetter:e=>{var t,n;return null!==(n=null===(t=e.node)||void 0===t?void 0:t.rowIndex)&&void 0!==n?n:""},width:60,pinned:"left",sortable:!1,cellStyle:{color:"var(--jp-ui-font-color2)",fontSize:"11px"}},...v.map(e=>({headerName:e.name,field:e.name,sortable:!0,resizable:!0}))],[v])),q="false"===document.body.getAttribute("data-jp-theme-light")?"ag-theme-quartz-dark":"ag-theme-quartz";return S?d.createElement("div",{className:"ve-sql-panel"},d.createElement("div",{className:"ve-sql-top"},d.createElement("div",{className:"ve-sql-tables"},d.createElement("div",{className:"ve-sql-tables-header"},"Tables"),d.createElement("div",{className:"ve-sql-tables-list"},C.map(e=>d.createElement("div",{key:e.name,className:"ve-sql-table-item",onClick:()=>R(e.name),title:`${e.name} (${e.rows} rows, ${e.columns} cols)\nColumns: ${e.columnNames.join(", ")}\nClick to insert`},d.createElement("span",{className:"ve-sql-table-name"},e.name),e.rows>0&&d.createElement("span",{className:"ve-sql-table-meta"},e.rows," × ",e.columns))),0===C.length&&d.createElement("div",{style:{padding:8,fontSize:"11px",opacity:.5}},"No DataFrames in namespace"))),d.createElement("div",{className:"ve-sql-editor"},d.createElement("textarea",{ref:k,className:"ve-sql-textarea",value:a,onChange:e=>o(e.target.value),onKeyDown:M,placeholder:"SELECT * FROM my_dataframe WHERE ...",spellCheck:!1}),d.createElement("div",{className:"ve-sql-controls"},d.createElement("button",{className:"ve-sql-run-btn",onClick:N,disabled:i||!a.trim()},i?"Running...":"▶ Run (Ctrl+Enter)"),d.createElement("button",{className:"ve-tab-action",onClick:D,title:"Open a .sql file"},"Open"),d.createElement("button",{className:"ve-tab-action",onClick:L,title:"Save query to .sql file"},"Save"),d.createElement("div",{className:"ve-sql-save-as"},d.createElement("label",null,"Save result as:"),d.createElement("input",{type:"text",className:"ve-sql-save-input",value:r,onChange:e=>s(e.target.value),placeholder:"object_name"})),d.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:4}},l&&d.createElement("button",{className:"ve-tab-action",onClick:l,title:n?"Show SQL as a separate tab":"Dock SQL below data"},n?"⭱ Undock":"⭳ Dock Below"),t&&d.createElement("button",{className:"ve-tab-action",onClick:t,title:"Open SQL editor in a separate window"},"↗ Pop Out"))))),d.createElement("div",{className:"ve-sql-results"},u&&d.createElement("div",{className:"ve-sql-error"},d.createElement("strong",null,"Error:")," ",u),y&&d.createElement("div",{className:"ve-sql-saved"},"Result saved as ",d.createElement("strong",null,y)," (",f.toLocaleString()," rows)"),g.length>0?d.createElement("div",{className:q,style:{width:"100%",height:"100%"}},d.createElement(h.AgGridReact,{rowData:g,columnDefs:I,headerHeight:32,rowHeight:28,animateRows:!1,enableCellTextSelection:!0,ensureDomOrder:!0,defaultColDef:{sortable:!0,resizable:!0,minWidth:60}})):!u&&d.createElement("div",{className:"ve-sql-placeholder"},i?d.createElement("div",{className:"ve-loading"},d.createElement("div",{className:"ve-spinner"})):d.createElement("div",{style:{opacity:.5}},"Write a SQL query and press Ctrl+Enter to run it.",d.createElement("br",null),"All DataFrames in your namespace are available as tables.")),g.length>0&&d.createElement("div",{className:"ve-sql-result-status"},f.toLocaleString()," rows returned",f>1e4&&" (showing first 10,000)"))):d.createElement("div",{className:"ve-sql-panel"},d.createElement("div",{className:"ve-sql-no-duckdb"},d.createElement("div",{style:{fontSize:"16px",fontWeight:600,marginBottom:8}},"SQL Query Engine"),d.createElement("div",{style:{marginBottom:12,opacity:.8}},"DuckDB is required to query your DataFrames with SQL."),d.createElement("code",{style:{display:"block",padding:"8px 12px",background:"var(--jp-layout-color2)",borderRadius:4,fontSize:"13px"}},"pip install duckdb"),d.createElement("div",{style:{marginTop:12,fontSize:"12px",opacity:.6}},"Then restart your kernel and reopen the Variable Explorer.")))},S=({path:e,onNavigate:t})=>e.length<=1?null:d.createElement("div",{className:"ve-breadcrumb"},e.map((n,l)=>{const a=l===e.length-1;return d.createElement(d.Fragment,{key:l},l>0&&d.createElement("span",{className:"ve-breadcrumb-sep"},"›"),a?d.createElement("span",{className:"ve-breadcrumb-current"},n.label):d.createElement("span",{className:"ve-breadcrumb-link",onClick:()=>t(l),title:`Go back to ${n.label}`},n.label))}));function _(e,t){var n;e.querySelectorAll('link[rel="stylesheet"]').forEach(e=>{const n=t.createElement("link");n.rel="stylesheet",n.href=e.href,t.head.appendChild(n)}),e.querySelectorAll("style").forEach(e=>{const n=t.createElement("style");n.textContent=e.textContent,t.head.appendChild(n)});for(let l=0;l<e.styleSheets.length;l++){const a=e.styleSheets[l];if(a.href||"STYLE"!==(null===(n=a.ownerNode)||void 0===n?void 0:n.nodeName))try{if(a.cssRules){let e="";for(let t=0;t<a.cssRules.length;t++)e+=a.cssRules[t].cssText+"\n";if(e&&!a.href){const n=t.createElement("style");n.textContent=e,t.head.appendChild(n)}}}catch(e){}}const l=e.body.attributes;for(let e=0;e<l.length;e++){const n=l[e];n.name.startsWith("data-jp-")&&t.body.setAttribute(n.name,n.value)}}const k=({commManager:e})=>{const[t,n]=d.useState(e.isConnected),[l,a]=d.useState([]),[o,r]=d.useState(null),[s,i]=d.useState([]),[c,m]=d.useState(0),[h,p]=d.useState([]),[g,b]=d.useState([]),[k,N]=d.useState([]),[M,R]=d.useState(null),[L,D]=d.useState(!0),[I,q]=d.useState(!1),[F,$]=d.useState(null),[z,T]=d.useState(new Set),[j,A]=d.useState([]),[V,W]=d.useState("data"),[O,B]=d.useState(!1),[P,K]=d.useState(300),[H,Q]=(d.useCallback(()=>P,[P]),d.useCallback(e=>{K(Math.max(100,Math.min(800,e)))},[]),d.useState(220)),[Y,U]=d.useState(280),G=d.useCallback(()=>H,[H]),X=d.useCallback(e=>{Q(Math.max(120,Math.min(500,e)))},[]),J=d.useCallback(()=>Y,[Y]),Z=d.useCallback(e=>{U(Math.max(150,Math.min(500,e)))},[]);d.useEffect(()=>{const t=(e,t)=>{n(t),t||(a([]),r(null),i([]))};return e.connectionChanged.connect(t),()=>{e.connectionChanged.disconnect(t)}},[e]),d.useEffect(()=>{const t=(e,t)=>{switch(t.type){case"variable_list":a(t.variables);break;case"data_page":{const e=t;0===e.startRow?i(e.rows):i(t=>[...t,...e.rows]),m(e.totalRows),p(e.columns),q(!1);break}case"column_stats":b(t.stats);break;case"error":console.error("Variable Explorer kernel error:",t.message),$(t.message||"Unknown error"),q(!1)}};return e.messageReceived.connect(t),()=>{e.messageReceived.disconnect(t)}},[e]);const ee=d.useCallback((t,n)=>{$(null),i([]),N([]),R(null),T(new Set),q(!0),e.send({type:"get_data",variable:t,startRow:0,endRow:1e3,childKey:n}),e.send({type:"get_stats",variable:t,childKey:n})},[e]),te=d.useCallback(e=>{r(e),A([{label:e}]),ee(e)},[ee]),ne=d.useCallback((e,t)=>{if(!o)return;const n=[...j,{label:t,childKey:e}];A(n);const l=n.slice(1).map(e=>e.childKey).filter(Boolean).join(".");ee(o,l||void 0)},[o,j,ee]),le=d.useCallback(e=>{if(!o)return;const t=j.slice(0,e+1);if(A(t),t.length<=1)ee(o);else{const e=t.slice(1).map(e=>e.childKey).filter(Boolean).join(".");ee(o,e||void 0)}},[o,j,ee]),ae=d.useMemo(()=>{if(!o)return!1;const e=l.find(e=>e.name===o);return!!e&&(!(j.length>1)&&["list_of_dataframes","dict_of_dataframes","dict_mixed","dict_of_dicts"].includes(e.tabularKind))},[o,l,j]),oe=d.useCallback(t=>{o&&e.send({type:"get_data",variable:o,startRow:t,endRow:t+1e3,sortModel:k.length>0?k:void 0})},[e,o,k]),re=d.useCallback(t=>{N(t),i([]),q(!0),o&&e.send({type:"get_data",variable:o,startRow:0,endRow:1e3,sortModel:t.length>0?t:void 0})},[e,o]),se=d.useCallback((e,t,n)=>{R({rowIndex:e,colName:t,value:n})},[]),ie=d.useCallback((t,n,l)=>{o&&e.send({type:"edit_cell",variable:o,rowIndex:t,column:n,newValue:l})},[e,o]),ce=d.useCallback(e=>{T(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),de=d.useCallback(()=>{e.refresh(),o&&te(o)},[e,o,te]),ue=l.find(e=>e.name===o),me=d.useCallback(()=>{W("data");const t=Math.min(1200,.7*screen.availWidth),n=Math.min(700,.6*screen.availHeight),l=Math.round((screen.availWidth-t)/2),a=Math.round((screen.availHeight-n)/2),o=window.open("","variable-explorer-sql",`width=${t},height=${n},left=${l},top=${a},menubar=no,toolbar=no,location=no,status=no,resizable=yes`);if(!o)return void alert("Pop-up was blocked by your browser.\n\nAllow pop-ups for this site in your browser settings.");const r=o.document;r.write('<!DOCTYPE html><html><head><meta charset="utf-8"><title>SQL - Variable Explorer</title>\n<style>html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden}#ve-sql-root{width:100%;height:100%}</style>\n</head><body><div id="ve-sql-root"></div></body></html>'),r.close(),_(document,r);const s=document.body;for(let e=0;e<s.attributes.length;e++){const t=s.attributes[e];t.name.startsWith("data-jp-")&&r.body.setAttribute(t.name,t.value)}r.body.className=s.className;const i=r.getElementById("ve-sql-root");u.render(d.createElement(x,{commManager:e,onPopOut:void 0}),i);const c=window.setInterval(()=>{if(o.closed){window.clearInterval(c);try{u.unmountComponentAtNode(i)}catch(e){}}},500)},[e]);return d.createElement("div",{className:"ve-main-container"},d.createElement("div",{className:"ve-tab-bar"},!O&&d.createElement(d.Fragment,null,d.createElement("button",{className:"ve-tab "+("data"===V?"ve-tab-active":""),onClick:()=>W("data")},"Data"),d.createElement("button",{className:"ve-tab "+("sql"===V?"ve-tab-active":""),onClick:()=>W("sql")},"SQL")),O&&d.createElement("span",{style:{fontWeight:600,fontSize:"var(--jp-ui-font-size1)",padding:"0 8px"}},"Data"),d.createElement("div",{className:"ve-tab-spacer"}),("data"===V||O)&&o&&d.createElement(d.Fragment,null,d.createElement("button",{className:"ve-tab-action",onClick:de,title:"Refresh data"},"↻ Refresh"),d.createElement("button",{className:"ve-tab-action",onClick:()=>D(!L),title:"Toggle metadata sidebar"},L?"Hide":"Show"," Metadata"))),d.createElement("div",{className:"ve-tab-content",style:{display:"data"===V?"flex":"none",flexDirection:"column",flex:1,overflow:"hidden"}},M&&d.createElement(y,{rowIndex:M.rowIndex,colName:M.colName,value:M.value}),d.createElement("div",{className:"ve-content-area"},d.createElement("div",{style:{width:H,minWidth:120,flexShrink:0}},d.createElement(v,{variables:l,selectedVar:o,onSelect:te})),d.createElement(C,{direction:"horizontal",onResizeStart:G,onResize:X}),d.createElement("div",{className:"ve-grid-container"},d.createElement("div",{className:"ve-grid-toolbar"},d.createElement("span",{className:"ve-toolbar-title"},o||"Select a variable",ue&&d.createElement("span",{style:{fontWeight:"normal",opacity:.6,marginLeft:8,fontSize:"12px"}},ue.typeName," (",ue.shape.map(e=>e.toLocaleString()).join(" × "),")"))),j.length>1&&d.createElement(S,{path:j,onNavigate:le}),o&&h.length>0?d.createElement(f,{rows:s,columns:h,columnStats:g,totalRows:c,sortModel:k,hiddenColumns:z,loading:I,isContainerView:ae,onSortChanged:re,onLoadMore:oe,onCellSelected:se,onCellEdit:ie,onDrillDown:ne}):d.createElement("div",{className:"ve-empty-state"},F?d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-empty-icon",style:{color:"var(--jp-error-color1)"}},"⚠"),d.createElement("div",{style:{color:"var(--jp-error-color1)"}},F)):I?d.createElement("div",{className:"ve-loading"},d.createElement("div",{className:"ve-spinner"})):t?d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-empty-icon"},"📊"),d.createElement("div",null,0===l.length?"No variables in kernel namespace":"Select a DataFrame to view its contents")):d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-empty-icon"},"🔌"),d.createElement("div",null,"Not connected to a kernel"),d.createElement("div",{style:{fontSize:"12px",marginTop:8,opacity:.7}},"Open a notebook and run a cell to connect")))),L&&o&&g.length>0&&d.createElement(d.Fragment,null,d.createElement(C,{direction:"horizontal",onResizeStart:J,onResize:Z,invert:!0}),d.createElement("div",{style:{width:Y,minWidth:150,flexShrink:0}},d.createElement(E,{columns:h,columnStats:g,hiddenColumns:z,onToggleColumn:ce,selectedVarInfo:ue||null})))),d.createElement(w,{selectedVar:o,totalRows:c,totalCols:h.length,sortModel:k,connected:t})),d.createElement("div",{style:{display:O||"sql"!==V?"none":"flex",flex:1,overflow:"hidden"}},d.createElement(x,{commManager:e,onPopOut:me,isDocked:!1,onToggleDock:()=>{B(!0),W("data")}})),O&&d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-resize-handle-horizontal",onMouseDown:e=>{e.preventDefault();const t=e.clientY,n=P,l=e.target.ownerDocument||document,a=e=>{e.preventDefault(),K(Math.max(100,Math.min(800,n-(e.clientY-t))))},o=()=>{l.removeEventListener("mousemove",a),l.removeEventListener("mouseup",o),l.body.style.cursor="",l.body.style.userSelect=""};l.addEventListener("mousemove",a),l.addEventListener("mouseup",o),l.body.style.cursor="row-resize",l.body.style.userSelect="none"}}),d.createElement("div",{style:{height:P,flexShrink:0,overflow:"hidden",display:"flex"}},d.createElement(x,{commManager:e,onPopOut:me,isDocked:!0,onToggleDock:()=>B(!1)}))))},N="variable-explorer:open";class M{constructor(){this._commManager=new c,this._externalWindow=null,this._root=null,this._pollTimer=null}get commManager(){return this._commManager}get isOpen(){return null!==this._externalWindow&&!this._externalWindow.closed}open(){if(this.isOpen)return void this._externalWindow.focus();const e=Math.min(1400,.8*screen.availWidth),t=Math.min(900,.8*screen.availHeight),n=Math.round((screen.availWidth-e)/2),l=Math.round((screen.availHeight-t)/2);if(this._externalWindow=window.open("","variable-explorer",`width=${e},height=${t},left=${n},top=${l},menubar=no,toolbar=no,location=no,status=no,resizable=yes,scrollbars=no`),!this._externalWindow)return void alert('Variable Explorer: Pop-up was blocked by your browser.\n\nTo fix this, allow pop-ups for this site:\n1. Click the blocked pop-up icon in your address bar, or\n2. Go to Settings → Privacy → Pop-ups → Add this site to "Allowed"');const a=this._externalWindow.document;a.write('<!DOCTYPE html>\n<html>\n<head>\n <meta charset="utf-8">\n <title>Variable Explorer</title>\n <style>\n html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; }\n #ve-root { width: 100%; height: 100%; }\n </style>\n</head>\n<body>\n <div id="ve-root"></div>\n</body>\n</html>'),a.close(),_(document,a);const o=document.body,r=a.body;for(let e=0;e<o.attributes.length;e++){const t=o.attributes[e];t.name.startsWith("data-jp-")&&r.setAttribute(t.name,t.value)}r.className=o.className;const s=a.getElementById("ve-root");u.render(d.createElement(k,{commManager:this._commManager,autoDetach:!1}),s),this._root=s,this._pollTimer=window.setInterval(()=>{this._externalWindow&&this._externalWindow.closed&&this._cleanup()},500),this._externalWindow.addEventListener("beforeunload",()=>{this._cleanup()})}_cleanup(){if(null!==this._pollTimer&&(window.clearInterval(this._pollTimer),this._pollTimer=null),this._root){try{u.unmountComponentAtNode(this._root)}catch(e){}this._root=null}this._externalWindow=null}}const R={id:"variable-explorer:plugin",description:"A Spyder/Stata-grade variable explorer for JupyterLab",autoStart:!0,requires:[l.INotebookTracker],optional:[o.ICommandPalette,a.IConsoleTracker],activate:(e,t,n,l)=>{console.log("Variable Explorer extension activated");const a=new M,o=async e=>{if(e)try{await a.commManager.connect(e)}catch(e){console.error("Variable Explorer: Failed to connect to kernel",e)}};t.currentChanged.connect(async(e,t)=>{if(!t)return;const n=t.sessionContext;n.ready.then(()=>{var e;o(null===(e=n.session)||void 0===e?void 0:e.kernel)}),n.kernelChanged.connect((e,t)=>{t.newValue&&o(t.newValue)})}),l&&l.currentChanged.connect(async(e,t)=>{if(!t)return;const n=t.sessionContext;n.ready.then(()=>{var e;o(null===(e=n.session)||void 0===e?void 0:e.kernel)}),n.kernelChanged.connect((e,t)=>{t.newValue&&o(t.newValue)})}),e.commands.addCommand(N,{label:"Variable Explorer",caption:"Open Variable Explorer in a separate window",icon:r.spreadsheetIcon,execute:()=>{var e;a.open();const n=t.currentWidget;if(n){const t=null===(e=n.sessionContext.session)||void 0===e?void 0:e.kernel;o(t)}}}),n&&n.addItem({command:N,category:"Variable Explorer"})}}}}]);
|
variable_explorer-0.8.1/variable_explorer/labextension/static/remoteEntry.b815c3430cd7e8ae0b55.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var _JUPYTERLAB;(()=>{"use strict";var e,r,t,n,a,o,i,l,u,f,s,d,c,p,h,v,b,g,m,y={657(e,r,t){var n={"./index":()=>Promise.all([t.e(638),t.e(746)]).then(()=>()=>t(746)),"./extension":()=>Promise.all([t.e(638),t.e(746)]).then(()=>()=>t(746)),"./style":()=>Promise.all([t.e(140),t.e(927)]).then(()=>()=>t(5))},a=(e,r)=>(t.R=r,r=t.o(n,e)?n[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),o=(e,r)=>{if(t.S){var n="default",a=t.S[n];if(a&&a!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[n]=e,t.I(n,r)}};t.d(r,{get:()=>a,init:()=>o})}},w={};function P(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={id:e,exports:{}};return y[e](t,t.exports,P),t.exports}P.m=y,P.c=w,P.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return P.d(r,{a:r}),r},P.d=(e,r)=>{for(var t in r)P.o(r,t)&&!P.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},P.f={},P.e=e=>Promise.all(Object.keys(P.f).reduce((r,t)=>(P.f[t](e,r),r),[])),P.u=e=>e+"."+{140:"0326e0e0e77185d73e92",719:"b1e5abbcc7b2adac64e7",746:"4c2692f837d17eca522f",924:"5e98cac11804e1a59d7e",927:"d2072f9536bbda11eb79"}[e]+".js?v="+{140:"0326e0e0e77185d73e92",719:"b1e5abbcc7b2adac64e7",746:"4c2692f837d17eca522f",924:"5e98cac11804e1a59d7e",927:"d2072f9536bbda11eb79"}[e],P.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),P.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="variable-explorer:",P.l=(t,n,a,o)=>{if(e[t])e[t].push(n);else{var i,l;if(void 0!==a)for(var u=document.getElementsByTagName("script"),f=0;f<u.length;f++){var s=u[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+a){i=s;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",P.nc&&i.setAttribute("nonce",P.nc),i.setAttribute("data-webpack",r+a),i.src=t),e[t]=[n];var d=(r,n)=>{i.onerror=i.onload=null,clearTimeout(c);var a=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),a&&a.forEach(e=>e(n)),r)return r(n)},c=setTimeout(d.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=d.bind(null,i.onerror),i.onload=d.bind(null,i.onload),l&&document.head.appendChild(i)}},P.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{P.S={};var e={},r={};P.I=(t,n)=>{n||(n=[]);var a=r[t];if(a||(a=r[t]={}),!(n.indexOf(a)>=0)){if(n.push(a),e[t])return e[t];P.o(P.S,t)||(P.S[t]={});var o=P.S[t],i="variable-explorer",l=(e,r,t,n)=>{var a=o[e]=o[e]||{},l=a[r];(!l||!l.loaded&&(!n!=!l.eager?n:i>l.from))&&(a[r]={get:t,from:i,eager:!!n})},u=[];return"default"===t&&(l("ag-grid-community","32.3.9",()=>P.e(719).then(()=>()=>P(719))),l("ag-grid-react","32.3.9",()=>Promise.all([P.e(924),P.e(638),P.e(226)]).then(()=>()=>P(924))),l("variable-explorer","0.8.1",()=>Promise.all([P.e(638),P.e(746)]).then(()=>()=>P(746)))),e[t]=u.length?Promise.all(u).then(()=>e[t]=1):1}}})(),(()=>{var e;P.g.importScripts&&(e=P.g.location+"");var r=P.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var n=t.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=t[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),P.p=e})(),t=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),n=t[1]?r(t[1]):[];return t[2]&&(n.length++,n.push.apply(n,r(t[2]))),t[3]&&(n.push([]),n.push.apply(n,r(t[3]))),n},n=(e,r)=>{e=t(e),r=t(r);for(var n=0;;){if(n>=e.length)return n<r.length&&"u"!=(typeof r[n])[0];var a=e[n],o=(typeof a)[0];if(n>=r.length)return"u"==o;var i=r[n],l=(typeof i)[0];if(o!=l)return"o"==o&&"n"==l||"s"==l||"u"==o;if("o"!=o&&"u"!=o&&a!=i)return a<i;n++}},a=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var n=1,o=1;o<e.length;o++)n--,t+="u"==(typeof(l=e[o]))[0]?"-":(n>0?".":"")+(n=2,l);return t}var i=[];for(o=1;o<e.length;o++){var l=e[o];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" "+i.pop():a(l))}return u();function u(){return i.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,r)=>{if(0 in e){r=t(r);var n=e[0],a=n<0;a&&(n=-n-1);for(var i=0,l=1,u=!0;;l++,i++){var f,s,d=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(s=(typeof(f=r[i]))[0]))return!u||("u"==d?l>n&&!a:""==d!=a);if("u"==s){if(!u||"u"!=d)return!1}else if(u)if(d==s)if(l<=n){if(f!=e[l])return!1}else{if(a?f>e[l]:f<e[l])return!1;f!=e[l]&&(u=!1)}else if("s"!=d&&"n"!=d){if(a||l<=n)return!1;u=!1,l--}else{if(l<=n||s<d!=a)return!1;u=!1}else"s"!=d&&"n"!=d&&(u=!1,l--)}}var c=[],p=c.pop.bind(c);for(i=1;i<e.length;i++){var h=e[i];c.push(1==h?p()|p():2==h?p()&p():h?o(h,r):!p())}return!!p()},i=(e,r)=>e&&P.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),f=(e,r,t)=>{var a=t?u(e[r]):e[r];return Object.keys(a).reduce((e,r)=>!e||!a[e].loaded&&n(e,r)?r:e,0)},s=(e,r,t,n)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+a(n)+")",d=e=>{throw new Error(e)},c=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},p=(e,r,t)=>t?t():((e,r)=>d("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,n,a,o){var i=P.I(r);return i&&i.then&&!n?i.then(e.bind(e,r,P.S[r],t,!1,a,o)):e(r,P.S[r],t,n,a,o)})((e,r,t,n,a,u)=>{if(!i(r,t))return p(e,t,u);var d=f(r,t,n);return o(a,d)||c(s(r,t,d,a)),l(r[t][d])}),v={},b={345:()=>h("default","react",!1,[1,18,2,0]),628:()=>h("default","react-dom",!1,[1,18,2,0]),428:()=>h("default","@jupyterlab/console",!1,[1,4,4,7]),436:()=>h("default","@jupyterlab/apputils",!1,[1,4,5,7]),602:()=>h("default","@lumino/signaling",!1,[1,2,0,0]),734:()=>h("default","ag-grid-react",!1,[1,32,0,0],()=>Promise.all([P.e(924),P.e(226)]).then(()=>()=>P(924))),760:()=>h("default","@jupyterlab/ui-components",!1,[1,4,4,7]),980:()=>h("default","@jupyterlab/notebook",!1,[1,4,4,7]),226:()=>h("default","ag-grid-community",!1,[4,32,3,9],()=>P.e(719).then(()=>()=>P(719)))},g={226:[226],638:[345,628],746:[428,436,602,734,760,980]},m={},P.f.consumes=(e,r)=>{P.o(g,e)&&g[e].forEach(e=>{if(P.o(v,e))return r.push(v[e]);if(!m[e]){var t=r=>{v[e]=0,P.m[e]=t=>{delete P.c[e],t.exports=r()}};m[e]=!0;var n=r=>{delete v[e],P.m[e]=t=>{throw delete P.c[e],r}};try{var a=b[e]();a.then?r.push(v[e]=a.then(t).catch(n)):t(a)}catch(e){n(e)}}})},(()=>{P.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={269:0};P.f.j=(r,t)=>{var n=P.o(e,r)?e[r]:void 0;if(0!==n)if(n)t.push(n[2]);else if(/^(226|638)$/.test(r))e[r]=0;else{var a=new Promise((t,a)=>n=e[r]=[t,a]);t.push(n[2]=a);var o=P.p+P.u(r),i=new Error;P.l(o,t=>{if(P.o(e,r)&&(0!==(n=e[r])&&(e[r]=void 0),n)){var a=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+a+": "+o+")",i.name="ChunkLoadError",i.type=a,i.request=o,n[1](i)}},"chunk-"+r,r)}};var r=(r,t)=>{var n,a,[o,i,l]=t,u=0;if(o.some(r=>0!==e[r])){for(n in i)P.o(i,n)&&(P.m[n]=i[n]);l&&l(P)}for(r&&r(t);u<o.length;u++)a=o[u],P.o(e,a)&&e[a]&&e[a][0](),e[a]=0},t=self.webpackChunkvariable_explorer=self.webpackChunkvariable_explorer||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),P.nc=void 0;var S=P(657);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["variable-explorer"]=S})();
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
"use strict";(self.webpackChunkvariable_explorer=self.webpackChunkvariable_explorer||[]).push([[746],{746(e,t,n){n.r(t),n.d(t,{default:()=>R});var l=n(980),a=n(428),o=n(436),r=n(760),s=n(602);const i='\ntry:\n from variable_explorer.kernel import init_comm as _ve_init\n _ve_init()\n del _ve_init\nexcept ImportError as e:\n print(f"Variable Explorer: kernel package not found: {e}")\nexcept Exception as e:\n print(f"Variable Explorer: init error: {e}")\n'.trim();class c{constructor(){this._comm=null,this._kernel=null,this._messageReceived=new s.Signal(this),this._connectionChanged=new s.Signal(this),this._isConnected=!1}get messageReceived(){return this._messageReceived}get connectionChanged(){return this._connectionChanged}get isConnected(){return this._isConnected}async connect(e){this.disconnect(),this._kernel=e;const t=e.requestExecute({code:i,silent:!0,store_history:!1});await t.done,this._comm=e.createComm("variable_explorer"),this._comm.onMsg=e=>{const t=e.content.data;t&&t.type&&this._messageReceived.emit(t)},this._comm.onClose=()=>{this._setConnected(!1)},await this._comm.open({}).done,this._setConnected(!0),e.statusChanged.connect(this._onKernelStatus,this)}send(e){this._comm&&this._isConnected&&this._comm.send(e)}refresh(){this.send({type:"refresh"})}disconnect(){if(this._kernel&&this._kernel.statusChanged.disconnect(this._onKernelStatus,this),this._comm){try{this._comm.close({})}catch(e){}this._comm=null}this._kernel=null,this._setConnected(!1)}_setConnected(e){this._isConnected!==e&&(this._isConnected=e,this._connectionChanged.emit(e))}_onKernelStatus(e,t){"restarting"!==t&&"dead"!==t||(this._setConnected(!1),this._comm=null),"idle"===t&&!this._isConnected&&this._kernel&&this.connect(this._kernel).catch(e=>{console.error("Variable Explorer: reconnect failed",e)})}}var d=n(345),u=n(628);function m(e){const t=e.toLowerCase();return"dataframe"===t?"ve-type-dataframe":"series"===t?"ve-type-series":"ndarray"===t?"ve-type-ndarray":"tensor"===t?"ve-type-tensor":"list"===t||"tuple"===t?"ve-type-list":"dict"===t?"ve-type-dict":"ve-type-other"}const v=({variables:e,selectedVar:t,onSelect:n})=>{const[l,a]=d.useState(""),o=d.useMemo(()=>{if(!l)return e;const t=l.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t)||e.typeName.toLowerCase().includes(t))},[e,l]),r=d.useMemo(()=>[...o].sort((e,t)=>e.isTabular!==t.isTabular?e.isTabular?-1:1:e.name.localeCompare(t.name)),[o]);return d.createElement("div",{className:"ve-variable-list"},d.createElement("div",{className:"ve-variable-list-header"},d.createElement("input",{className:"ve-variable-search",type:"text",placeholder:"Filter objects...",value:l,onChange:e=>a(e.target.value)})),d.createElement("div",{className:"ve-variable-items"},0===r.length?d.createElement("div",{style:{padding:"12px 8px",textAlign:"center",opacity:.5,fontSize:"12px"}},0===e.length?"No variables":"No matches"):r.map(e=>{const l=function(e){switch(e){case"list_of_dicts":return"records";case"list_of_lists":return"matrix";case"list_of_dataframes":case"dict_of_dataframes":return"container";case"dict_of_lists":return"table";case"dict_of_dicts":return"nested";case"list_scalar":return"values";case"dict_scalar":return"record";case"scalar":return"value";default:return""}}(e.tabularKind);return d.createElement("div",{key:e.name,className:"ve-variable-item "+(e.name===t?"ve-selected":""),onClick:()=>e.isTabular&&n(e.name),style:{opacity:e.isTabular?1:.6,cursor:e.isTabular?"pointer":"default"},title:e.isTabular?`Click to view ${e.name}`:`${e.name} (${e.typeName})`},d.createElement("div",{style:{display:"flex",alignItems:"center",gap:6,flexWrap:"wrap"}},d.createElement("span",{className:"ve-var-name"},e.name),d.createElement("span",{className:`ve-type-badge ${m(e.typeName)}`},e.typeName),l&&d.createElement("span",{className:"ve-kind-label"},l)),d.createElement("div",{className:"ve-var-meta"},d.createElement("span",null,0===(o=e.shape).length?"scalar":1===o.length?`${o[0].toLocaleString()} items`:o.map(e=>e.toLocaleString()).join(" × ")),d.createElement("span",null,(a=e.memoryBytes)<1024?`${a} B`:a<1048576?`${(a/1024).toFixed(1)} KB`:a<1073741824?`${(a/1048576).toFixed(1)} MB`:`${(a/1073741824).toFixed(1)} GB`)));var a,o})))};var h=n(734);const p=({displayName:e,stats:t,column:n,setSort:l,api:a})=>{const o=d.useRef(null),r=d.useRef(null),[s,i]=d.useState(null),[c,u]=d.useState(null),m=null==t?void 0:t.histogram,v="unavailable"===(null==m?void 0:m.type),h=!!m&&!v;d.useEffect(()=>{const e=o.current;e&&m&&"unavailable"!==m.type&&function(e,t){const n=e.getContext("2d");if(!n)return;const l=window.devicePixelRatio||1,a=e.clientWidth,o=e.clientHeight;switch(e.width=a*l,e.height=o*l,n.scale(l,l),n.clearRect(0,0,a,o),t.type){case"numeric":!function(e,t,n,l){const{counts:a}=l;if(0===a.length)return;const o=Math.max(...a);if(0===o)return;const r=t/a.length,s=getComputedStyle(document.documentElement).getPropertyValue("--jp-brand-color1").trim()||"#1976d2";for(let t=0;t<a.length;t++){const l=a[t]/o*(n-2),i=t*r+.5,c=n-l-1;e.fillStyle=s,e.globalAlpha=.6,e.fillRect(i,c,r-1,l)}e.globalAlpha=1}(n,a,o,t);break;case"categorical":!function(e,t,n,l){const{counts:a}=l;if(0===a.length)return;const o=Math.max(...a);if(0===o)return;const r=n/Math.min(a.length,8),s=["#1976d2","#388e3c","#f57c00","#7b1fa2","#c62828","#00838f","#4e342e","#546e7a"];for(let n=0;n<Math.min(a.length,8);n++){const l=a[n]/o*(t-2),i=n*r+.5;e.fillStyle=s[n%s.length],e.globalAlpha=.6,e.fillRect(1,i,l,r-1)}e.globalAlpha=1}(n,a,o,t);break;case"boolean":!function(e,t,n,l){const a=l.trueCount+l.falseCount+l.nullCount;if(0===a)return;const o=l.trueCount/a*t,r=l.falseCount/a*t,s=.2*n,i=.6*n;e.fillStyle="rgba(52, 168, 83, 0.7)",e.fillRect(0,s,o,i),e.fillStyle="rgba(66, 133, 244, 0.7)",e.fillRect(o,s,r,i),l.nullCount>0&&(e.fillStyle="rgba(128, 128, 128, 0.4)",e.fillRect(o+r,s,t-o-r,i))}(n,a,o,t)}}(e,m)},[m]),d.useEffect(()=>{var e;if(!n||!a)return;const t=()=>{var e;const t=null===(e=a.getColumnState)||void 0===e?void 0:e.call(a);if(t){const e=t.find(e=>e.colId===n.getColId());i((null==e?void 0:e.sort)||null)}};return null===(e=a.addEventListener)||void 0===e||e.call(a,"sortChanged",t),()=>{var e;null===(e=a.removeEventListener)||void 0===e||e.call(a,"sortChanged",t)}},[n,a]);const p=d.useCallback(e=>{const n=null==t?void 0:t.histogram;if(!n||"unavailable"===n.type||!o.current)return;const l=o.current.getBoundingClientRect(),a=function(e,t,n,l,a){const o=e=>Number.isInteger(e)&&Math.abs(e)<1e6?e.toLocaleString():e.toLocaleString(void 0,{maximumFractionDigits:2});if("numeric"===e.type){const{counts:n,edges:a}=e,r=Math.floor(t/l*n.length);return r<0||r>=n.length?null:`${o(a[r])} – ${o(a[r+1])}: ${n[r].toLocaleString()}`}if("categorical"===e.type){const{labels:t,counts:l}=e,o=Math.min(t.length,8),r=a/o,s=Math.floor(n/r);return s<0||s>=o?null:`${t[s]}: ${l[s].toLocaleString()}`}if("boolean"===e.type){const n=e.trueCount+e.falseCount+e.nullCount;if(0===n)return null;const a=e.trueCount/n*l,o=e.falseCount/n*l;return t<a?`True: ${e.trueCount.toLocaleString()} (${Math.round(100*e.trueCount/n)}%)`:t<a+o?`False: ${e.falseCount.toLocaleString()} (${Math.round(100*e.falseCount/n)}%)`:`Null: ${e.nullCount.toLocaleString()} (${Math.round(100*e.nullCount/n)}%)`}return null}(n,e.clientX-l.left,e.clientY-l.top,l.width,l.height);u(a?{text:a,x:e.clientX,y:l.top-4}:null)},[t]),g=d.useCallback(()=>{u(null)},[]),f="asc"===s?" ▲":"desc"===s?" ▼":"";return d.createElement("div",{className:"ve-histogram-header",style:{width:"100%"}},d.createElement("div",{className:"ve-header-label",onClick:e=>{if(!l)return;let t;t=null===s?"asc":"asc"===s?"desc":"",l(t,e.shiftKey)},title:`Click to sort by ${e}`},d.createElement("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"}},e),f&&d.createElement("span",{className:"ve-sort-icon"},f)),v&&d.createElement("div",{className:"ve-histogram-unavailable",title:m.reason,style:{width:"100%",height:"30px",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"10px",fontStyle:"italic",opacity:.6,textAlign:"center",overflow:"hidden",padding:"0 2px",lineHeight:1.1}},m.reason),h&&d.createElement("div",{style:{position:"relative",width:"100%"}},d.createElement("canvas",{ref:o,width:120,height:30,style:{width:"100%",height:"30px",cursor:"crosshair"},onMouseMove:p,onMouseLeave:g}),c&&d.createElement("div",{ref:r,className:"ve-histogram-tooltip",style:{left:c.x,top:c.y,transform:"translate(-50%, -100%)"}},c.text.split("\n").map((e,t)=>d.createElement("div",{key:t},e)))))};function g(e,t,n){if(null==e||isNaN(e))return"transparent";const l=n-t;if(0===l)return"rgba(100, 149, 237, 0.15)";const a=Math.max(0,Math.min(1,(e-t)/l));return a<.5?`rgba(66, 133, 244, ${(.25*(1-2*a)).toFixed(3)})`:`rgba(234, 67, 53, ${(2*(a-.5)*.25).toFixed(3)})`}const f=({onIndexSort:e,sortModel:t})=>{const n=t.find(e=>"__index__"===e.colId),l=(null==n?void 0:n.sort)||null,a=t.some(e=>"__index__"!==e.colId),o="asc"===l?" ▲":"desc"===l?" ▼":"",r="desc"===l?"Click to sort index ascending (original order)":"asc"===l?"Click to reverse index order":"Click to reset to original index order";return d.createElement("div",{onClick:()=>{e(null===l||a?"asc":"asc"===l?"desc":"asc")},title:r,style:{cursor:"pointer",width:"100%",height:"100%",display:"flex",alignItems:"center",justifyContent:"center",fontWeight:600,fontSize:"12px"}},"Index",o)},b=({rows:e,columns:t,columnStats:n,totalRows:l,sortModel:a,hiddenColumns:o,loading:r,isContainerView:s,onSortChanged:i,onLoadMore:c,onCellSelected:u,onCellEdit:m,onDrillDown:v})=>{const b=d.useRef(null),E=d.useRef(null),y=d.useRef(null),w=d.useMemo(()=>{const e={};for(const t of n)e[t.name]=t;return e},[n]),C=d.useMemo(()=>{const e={headerName:"Index",colId:"__index__",field:"__pandas_index__",headerComponent:f,headerComponentParams:{sortModel:a,onIndexSort:e=>{var t,n;null===(n=null===(t=b.current)||void 0===t?void 0:t.api)||void 0===n||n.applyColumnState({defaultState:{sort:null}}),i(e?[{colId:"__index__",sort:e}]:[])}},width:80,pinned:"left",sortable:!1,resizable:!0,cellStyle:{color:"var(--jp-ui-font-color2)",fontWeight:"500",fontSize:"11px"}},n=t.filter(e=>!o.has(e.name)).map(e=>{const t=w[e.name],n={headerName:e.name,field:e.name,sortable:!0,resizable:!0,editable:!0,minWidth:80,headerComponent:p,headerComponentParams:{displayName:e.name,stats:t}};if(e.isNumeric&&(null==t?void 0:t.histogram)&&"numeric"===t.histogram.type){const e=t.histogram;n.cellStyle=t=>null==t.value?{backgroundColor:"var(--jp-layout-color2)",opacity:.5}:{backgroundColor:g(t.value,e.min,e.max),color:"var(--jp-ui-font-color0)"}}else e.isBool&&(n.cellStyle=e=>{return null==e.value?{backgroundColor:"var(--jp-layout-color2)",opacity:.5}:{backgroundColor:(t=e.value,!0===t||1===t?"rgba(52, 168, 83, 0.7)":!1===t||0===t?"rgba(66, 133, 244, 0.7)":"rgba(128, 128, 128, 0.3)"),color:"#fff",fontWeight:"600",textAlign:"center"};var t});return e.isNumeric&&(n.valueFormatter=e=>{if(null==e.value)return"";const t=Number(e.value);return Number.isInteger(t)?t.toLocaleString():t.toLocaleString(void 0,{maximumFractionDigits:4})}),e.isDatetime&&(n.valueFormatter=e=>null==e.value?"":new Date(e.value).toLocaleString()),n});if(s&&v)for(const e of n)"type"===e.field&&(e.cellRenderer=e=>e.value?`▶ ${e.value}`:"",e.cellStyle={cursor:"pointer",color:"var(--jp-brand-color1)",fontWeight:"600"});return[e,...n]},[t,w,o,s,v,i]),x=d.useCallback(e=>{const t=e.api.getColumnState().filter(e=>e.sort&&"__index__"!==e.colId).sort((e,t)=>(e.sortIndex||0)-(t.sortIndex||0)).map(e=>({colId:e.colId,sort:e.sort}));i(t)},[i]),S=d.useCallback(e=>{var t,n;if(s&&v){const l=e.data,a=String(null!==(n=null!==(t=null==l?void 0:l.index)&&void 0!==t?t:null==l?void 0:l.key)&&void 0!==n?n:e.rowIndex);return void v(a,`[${a}]`)}e.colDef.field&&null!=e.rowIndex&&u(e.rowIndex,e.colDef.field,e.value)},[u,s,v]),_=d.useCallback(e=>{if(e.colDef.field&&null!=e.rowIndex){m(e.rowIndex,e.colDef.field,String(e.newValue));const t=e.api.getRowNode(String(e.rowIndex));t&&t.setDataValue(e.colDef.field,e.newValue)}},[m]),k=d.useCallback(t=>{r||t.api.getLastDisplayedRow()>=e.length-200&&e.length<l&&c(e.length)},[r,e.length,l,c]),N=d.useCallback(()=>{var e,t;const n=null===(e=b.current)||void 0===e?void 0:e.api;return n?((null===(t=n.getAllDisplayedColumns)||void 0===t?void 0:t.call(n))||[]).map(e=>e.getColId()).filter(e=>"__index__"!==e):[]},[]),M=d.useCallback(()=>{const e=E.current;e&&e.querySelectorAll(".ve-cell-selected").forEach(e=>e.classList.remove("ve-cell-selected"))},[]),R=d.useCallback(()=>{const e=y.current,t=E.current;if(!e||!t)return;M();const n=Math.min(e.startRow,e.endRow),l=Math.max(e.startRow,e.endRow),a=Math.min(e.startColIdx,e.endColIdx),o=Math.max(e.startColIdx,e.endColIdx);t.querySelectorAll(".ag-row").forEach(t=>{const r=parseInt(t.getAttribute("row-index")||"-1");r<n||r>l||t.querySelectorAll(".ag-cell").forEach(t=>{const n=t.getAttribute("col-id");if(!n||"__index__"===n)return;const l=e.colFields.indexOf(n);l>=a&&l<=o&&t.classList.add("ve-cell-selected")})})},[M]),L=d.useCallback(e=>{if(s)return;if(0!==e.button)return;const t=e.target.closest(".ag-cell"),n=e.target.closest(".ag-row");if(!t||!n)return;const l=t.getAttribute("col-id"),a=parseInt(n.getAttribute("row-index")||"-1");if(!l||"__index__"===l||a<0)return;const o=N(),r=o.indexOf(l);r<0||(y.current={startRow:a,startColIdx:r,endRow:a,endColIdx:r,dragging:!0,colFields:o},R())},[s,N,R]),D=d.useCallback(e=>{const t=y.current;if(!t||!t.dragging)return;const n=e.target.closest(".ag-cell"),l=e.target.closest(".ag-row");if(!n||!l)return;const a=n.getAttribute("col-id"),o=parseInt(l.getAttribute("row-index")||"-1");if(!a||"__index__"===a||o<0)return;const r=t.colFields.indexOf(a);r<0||(t.endRow=o,t.endColIdx=r,R())},[R]),I=d.useCallback(()=>{y.current&&(y.current.dragging=!1)},[]),q=d.useCallback(()=>{var t,n,l;const a=y.current;if(!a)return;const o=(null===(t=E.current)||void 0===t?void 0:t.ownerDocument)||document,r=Math.min(a.startRow,a.endRow),s=Math.max(a.startRow,a.endRow),i=Math.min(a.startColIdx,a.endColIdx),c=Math.max(a.startColIdx,a.endColIdx),d=a.colFields.slice(i,c+1),u=[];for(let t=r;t<=s;t++)t<e.length&&u.push(d.map(n=>{const l=e[t][n];return null==l?"":String(l)}).join("\t"));const m=u.join("\n");m&&(null===(l=null===(n=o.defaultView)||void 0===n?void 0:n.navigator)||void 0===l?void 0:l.clipboard)&&o.defaultView.navigator.clipboard.writeText(m)},[e]);d.useEffect(()=>{const e=E.current;if(!e)return;const t=e.ownerDocument||document,n=e=>{(e.ctrlKey||e.metaKey)&&"c"===e.key&&y.current&&(e.preventDefault(),q())};return t.addEventListener("keydown",n),()=>t.removeEventListener("keydown",n)},[q]);const[F,$]=d.useState(null),z=d.useCallback(e=>{y.current&&(e.preventDefault(),$({x:e.clientX,y:e.clientY}))},[]);d.useEffect(()=>{var e;if(!F)return;const t=(null===(e=E.current)||void 0===e?void 0:e.ownerDocument)||document,n=()=>$(null);return t.addEventListener("mousedown",n),()=>t.removeEventListener("mousedown",n)},[F]);const T="false"===document.body.getAttribute("data-jp-theme-light")?"ag-theme-quartz-dark":"ag-theme-quartz";return d.createElement("div",{className:"ve-grid-wrapper",ref:E,onMouseDown:L,onMouseMove:D,onMouseUp:I,onContextMenu:z},d.createElement("div",{className:T,style:{width:"100%",height:"100%"}},d.createElement(h.AgGridReact,{ref:b,rowData:e,columnDefs:C,defaultColDef:{sortable:!0,resizable:!0,minWidth:60},headerHeight:64,rowHeight:s?36:28,animateRows:!1,suppressMovableColumns:!1,suppressCellFocus:!1,readOnlyEdit:!s,rowClass:s?"ve-drillable-row":void 0,onSortChanged:x,onCellClicked:S,onCellEditRequest:s?void 0:_,onBodyScrollEnd:k,onRowDoubleClicked:s&&v?e=>{var t,n;const l=e.data,a=String(null!==(n=null!==(t=null==l?void 0:l.index)&&void 0!==t?t:null==l?void 0:l.key)&&void 0!==n?n:e.rowIndex);v(a,`[${a}]`)}:void 0,getRowId:e=>{var t,n,l;return String(null!==(l=null!==(t=e.data.__row_index__)&&void 0!==t?t:null===(n=e.node)||void 0===n?void 0:n.rowIndex)&&void 0!==l?l:0)},loading:r})),F&&d.createElement("div",{className:"ve-context-menu",style:{left:F.x,top:F.y}},d.createElement("div",{className:"ve-context-menu-item",onMouseDown:e=>{e.stopPropagation(),q(),$(null)}},"Copy")))},E=({columns:e,columnStats:t,hiddenColumns:n,onToggleColumn:l,selectedVarInfo:a})=>{var o,r,s,i,c;const[u,m]=d.useState(""),[v,h]=d.useState(null),[p,g]=d.useState(220),f=d.useRef(null),b=d.useMemo(()=>{const e={};for(const n of t)e[n.name]=n;return e},[t]),E=d.useMemo(()=>{if(!u)return e;const t=u.toLowerCase();return e.filter(e=>e.name.toLowerCase().includes(t))},[e,u]),y=v?b[v]:null,w=v?e.find(e=>e.name===v):null,C=d.useCallback(e=>{var t;e.preventDefault(),e.stopPropagation();const n=e.clientY,l=p,a=(null===(t=f.current)||void 0===t?void 0:t.ownerDocument)||document,o=e=>{e.preventDefault();const t=n-e.clientY;g(Math.max(80,Math.min(500,l+t)))},r=()=>{a.removeEventListener("mousemove",o),a.removeEventListener("mouseup",r),a.body.style.cursor="",a.body.style.userSelect=""};a.addEventListener("mousemove",o),a.addEventListener("mouseup",r),a.body.style.cursor="row-resize",a.body.style.userSelect="none"},[p]);return d.createElement("div",{className:"ve-metadata-sidebar"},d.createElement("div",{className:"ve-metadata-header"},d.createElement("span",null,"Columns"),d.createElement("span",{style:{fontSize:"11px",fontWeight:"normal",opacity:.6}},e.length)),d.createElement("input",{className:"ve-metadata-search",type:"text",placeholder:"Filter columns...",value:u,onChange:e=>m(e.target.value)}),d.createElement("div",{className:"ve-metadata-columns"},E.map(e=>d.createElement("div",{key:e.name,className:"ve-metadata-column-item",onClick:()=>h(e.name),style:{cursor:"pointer",background:e.name===v?"var(--jp-layout-color2)":void 0}},d.createElement("input",{type:"checkbox",checked:!n.has(e.name),onChange:()=>l(e.name),onClick:e=>e.stopPropagation()}),d.createElement("span",{className:"ve-col-name",title:e.name},e.name),d.createElement("span",{className:"ve-col-type"},e.dtype)))),d.createElement("div",{ref:f,className:"ve-resize-handle-horizontal",onMouseDown:C}),d.createElement("div",{className:"ve-properties-panel",style:{height:p,minHeight:80}},y&&w?d.createElement(d.Fragment,null,d.createElement("h4",null,"Column: ",v),d.createElement("table",{className:"ve-properties-table"},d.createElement("tbody",null,d.createElement("tr",null,d.createElement("td",null,"Name"),d.createElement("td",null,w.name)),d.createElement("tr",null,d.createElement("td",null,"Type"),d.createElement("td",null,w.dtype)),d.createElement("tr",null,d.createElement("td",null,"Nulls"),d.createElement("td",null,y.nullCount.toLocaleString())),d.createElement("tr",null,d.createElement("td",null,"Unique"),d.createElement("td",null,y.uniqueCount.toLocaleString())),"numeric"===(null===(o=y.histogram)||void 0===o?void 0:o.type)&&d.createElement(d.Fragment,null,d.createElement("tr",null,d.createElement("td",null,"Min"),d.createElement("td",null,y.histogram.min.toLocaleString(void 0,{maximumFractionDigits:4}))),d.createElement("tr",null,d.createElement("td",null,"Max"),d.createElement("td",null,y.histogram.max.toLocaleString(void 0,{maximumFractionDigits:4}))),d.createElement("tr",null,d.createElement("td",null,"Mean"),d.createElement("td",null,y.histogram.mean.toLocaleString(void 0,{maximumFractionDigits:4}))),d.createElement("tr",null,d.createElement("td",null,"Std"),d.createElement("td",null,y.histogram.std.toLocaleString(void 0,{maximumFractionDigits:4})))),"boolean"===(null===(r=y.histogram)||void 0===r?void 0:r.type)&&d.createElement(d.Fragment,null,d.createElement("tr",null,d.createElement("td",null,"True"),d.createElement("td",null,y.histogram.trueCount.toLocaleString())),d.createElement("tr",null,d.createElement("td",null,"False"),d.createElement("td",null,y.histogram.falseCount.toLocaleString()))),"unavailable"===(null===(s=y.histogram)||void 0===s?void 0:s.type)&&d.createElement("tr",null,d.createElement("td",null,"Distribution"),d.createElement("td",{style:{fontStyle:"italic",opacity:.7}},y.histogram.reason)),"categorical"===(null===(i=y.histogram)||void 0===i?void 0:i.type)&&d.createElement(d.Fragment,null,d.createElement("tr",null,d.createElement("td",null,"Top values"),d.createElement("td",null,y.histogram.labels.slice(0,5).map((e,t)=>{var n;return d.createElement("div",{key:t,style:{fontSize:"11px"}},e,": ","categorical"===y.histogram.type?null===(n=y.histogram.counts[t])||void 0===n?void 0:n.toLocaleString():"")}))))))):a?d.createElement(d.Fragment,null,d.createElement("h4",null,"Dataset"),d.createElement("table",{className:"ve-properties-table"},d.createElement("tbody",null,d.createElement("tr",null,d.createElement("td",null,"Name"),d.createElement("td",null,a.name)),d.createElement("tr",null,d.createElement("td",null,"Type"),d.createElement("td",null,a.typeName)),d.createElement("tr",null,d.createElement("td",null,"Shape"),d.createElement("td",null,a.shape.map(e=>e.toLocaleString()).join(" × "))),d.createElement("tr",null,d.createElement("td",null,"Memory"),d.createElement("td",null,(x=a.memoryBytes)<1024?`${x} B`:x<1048576?`${(x/1024).toFixed(1)} KB`:x<1073741824?`${(x/1048576).toFixed(1)} MB`:`${(x/1073741824).toFixed(1)} GB`)),d.createElement("tr",null,d.createElement("td",null,"Variables"),d.createElement("td",null,e.length)),d.createElement("tr",null,d.createElement("td",null,"Observations"),d.createElement("td",null,null===(c=a.shape[0])||void 0===c?void 0:c.toLocaleString()))))):d.createElement("div",{style:{fontSize:"12px",opacity:.5,textAlign:"center",paddingTop:12}},"Click a column for details")));var x},y=({rowIndex:e,colName:t,value:n})=>{const l=null==n?"null":String(n);return d.createElement("div",{className:"ve-cell-reference-bar"},d.createElement("span",{className:"ve-cell-location"},"Row ",e.toLocaleString()," / Col: ",t),d.createElement("span",{className:"ve-cell-value",title:l},l))},w=({selectedVar:e,totalRows:t,totalCols:n,sortModel:l,connected:a})=>{const o=l.length>0?l.map(e=>`${e.colId} ${e.sort}`).join(", "):"none";return d.createElement("div",{className:"ve-status-bar"},d.createElement("span",{className:"ve-status-item",style:{color:a?"var(--jp-success-color1)":"var(--jp-error-color1)"}},a?"● Connected":"○ Disconnected"),e&&d.createElement(d.Fragment,null,d.createElement("span",{className:"ve-status-separator"},"|"),d.createElement("span",{className:"ve-status-item"},"Vars: ",n),d.createElement("span",{className:"ve-status-separator"},"|"),d.createElement("span",{className:"ve-status-item"},"Obs: ",t.toLocaleString()),d.createElement("span",{className:"ve-status-separator"},"|"),d.createElement("span",{className:"ve-status-item"},"Sorted: ",o)))},C=({onResizeStart:e,onResize:t,direction:n,invert:l})=>{const a=d.useRef(null),o=d.useCallback(n=>{var o;n.preventDefault(),n.stopPropagation();const r=n.clientX,s=e(),i=(null===(o=a.current)||void 0===o?void 0:o.ownerDocument)||document,c=e=>{e.preventDefault();const n=e.clientX-r;t(l?s-n:s+n)},d=()=>{i.removeEventListener("mousemove",c),i.removeEventListener("mouseup",d),i.body.style.cursor="",i.body.style.userSelect=""};i.addEventListener("mousemove",c),i.addEventListener("mouseup",d),i.body.style.cursor="col-resize",i.body.style.userSelect="none"},[e,t,l]);return d.createElement("div",{ref:a,className:"ve-resize-handle",onMouseDown:o})},x=({commManager:e,onPopOut:t,isDocked:n,onToggleDock:l})=>{const[a,o]=d.useState("SELECT * FROM "),[r,s]=d.useState(""),[i,c]=d.useState(!1),[u,m]=d.useState(null),[v,p]=d.useState([]),[g,f]=d.useState([]),[b,E]=d.useState(0),[y,w]=d.useState(null),[C,x]=d.useState([]),[S,_]=d.useState(!0),k=d.useRef(null);d.useEffect(()=>{e.send({type:"sql_tables"})},[e]),d.useEffect(()=>{const t=(e,t)=>{if("sql_result"===t.type){const e=t;p(e.columns),f(e.rows),E(e.totalRows),w(e.savedAs),x(e.tables.map(e=>({name:e,rows:0,columns:0,columnNames:[]}))),m(null),c(!1)}else if("sql_error"===t.type)m(t.error),p([]),f([]),c(!1);else if("sql_tables"===t.type){const e=t;x(e.tables),_(e.duckdbAvailable)}};return e.messageReceived.connect(t),()=>{e.messageReceived.disconnect(t)}},[e]);const N=d.useCallback(()=>{a.trim()&&(c(!0),m(null),w(null),e.send({type:"sql_execute",query:a.trim(),saveAs:r.trim()||void 0}))},[e,a,r]),M=d.useCallback(e=>{(e.ctrlKey||e.metaKey)&&"Enter"===e.key&&(e.preventDefault(),N())},[N]),R=d.useCallback(e=>{const t=k.current;if(!t)return;const n=t.selectionStart,l=t.selectionEnd,r=a.substring(0,n)+e+a.substring(l);o(r),setTimeout(()=>{t.focus(),t.selectionStart=t.selectionEnd=n+e.length},0)},[a]),L=d.useCallback(()=>{var e;const t=new Blob([a],{type:"text/sql"}),n=URL.createObjectURL(t),l=((null===(e=k.current)||void 0===e?void 0:e.ownerDocument)||document).createElement("a");l.href=n,l.download="query.sql",l.click(),URL.revokeObjectURL(n)},[a]),D=d.useCallback(()=>{var e;const t=((null===(e=k.current)||void 0===e?void 0:e.ownerDocument)||document).createElement("input");t.type="file",t.accept=".sql,.txt",t.onchange=e=>{var t,n;const l=null===(n=null===(t=e.target)||void 0===t?void 0:t.files)||void 0===n?void 0:n[0];if(!l)return;const a=new FileReader;a.onload=e=>{var t;const n=null===(t=e.target)||void 0===t?void 0:t.result;"string"==typeof n&&o(n)},a.readAsText(l)},t.click()},[]),I=(d.useCallback(()=>{var e,t,n;if(0===v.length||0===g.length)return;const l=[v.map(e=>e.name).join("\t"),...g.map(e=>v.map(t=>{const n=e[t.name];return null==n?"":String(n)}).join("\t"))].join("\n"),a=(null===(e=k.current)||void 0===e?void 0:e.ownerDocument)||document;(null===(n=null===(t=a.defaultView)||void 0===t?void 0:t.navigator)||void 0===n?void 0:n.clipboard)&&a.defaultView.navigator.clipboard.writeText(l)},[v,g]),d.useMemo(()=>[{headerName:"#",valueGetter:e=>{var t,n;return null!==(n=null===(t=e.node)||void 0===t?void 0:t.rowIndex)&&void 0!==n?n:""},width:60,pinned:"left",sortable:!1,cellStyle:{color:"var(--jp-ui-font-color2)",fontSize:"11px"}},...v.map(e=>({headerName:e.name,field:e.name,sortable:!0,resizable:!0}))],[v])),q="false"===document.body.getAttribute("data-jp-theme-light")?"ag-theme-quartz-dark":"ag-theme-quartz";return S?d.createElement("div",{className:"ve-sql-panel"},d.createElement("div",{className:"ve-sql-top"},d.createElement("div",{className:"ve-sql-tables"},d.createElement("div",{className:"ve-sql-tables-header"},"Tables"),d.createElement("div",{className:"ve-sql-tables-list"},C.map(e=>d.createElement("div",{key:e.name,className:"ve-sql-table-item",onClick:()=>R(e.name),title:`${e.name} (${e.rows} rows, ${e.columns} cols)\nColumns: ${e.columnNames.join(", ")}\nClick to insert`},d.createElement("span",{className:"ve-sql-table-name"},e.name),e.rows>0&&d.createElement("span",{className:"ve-sql-table-meta"},e.rows," × ",e.columns))),0===C.length&&d.createElement("div",{style:{padding:8,fontSize:"11px",opacity:.5}},"No DataFrames in namespace"))),d.createElement("div",{className:"ve-sql-editor"},d.createElement("textarea",{ref:k,className:"ve-sql-textarea",value:a,onChange:e=>o(e.target.value),onKeyDown:M,placeholder:"SELECT * FROM my_dataframe WHERE ...",spellCheck:!1}),d.createElement("div",{className:"ve-sql-controls"},d.createElement("button",{className:"ve-sql-run-btn",onClick:N,disabled:i||!a.trim()},i?"Running...":"▶ Run (Ctrl+Enter)"),d.createElement("button",{className:"ve-tab-action",onClick:D,title:"Open a .sql file"},"Open"),d.createElement("button",{className:"ve-tab-action",onClick:L,title:"Save query to .sql file"},"Save"),d.createElement("div",{className:"ve-sql-save-as"},d.createElement("label",null,"Save result as:"),d.createElement("input",{type:"text",className:"ve-sql-save-input",value:r,onChange:e=>s(e.target.value),placeholder:"object_name"})),d.createElement("div",{style:{marginLeft:"auto",display:"flex",gap:4}},l&&d.createElement("button",{className:"ve-tab-action",onClick:l,title:n?"Show SQL as a separate tab":"Dock SQL below data"},n?"⭱ Undock":"⭳ Dock Below"),t&&d.createElement("button",{className:"ve-tab-action",onClick:t,title:"Open SQL editor in a separate window"},"↗ Pop Out"))))),d.createElement("div",{className:"ve-sql-results"},u&&d.createElement("div",{className:"ve-sql-error"},d.createElement("strong",null,"Error:")," ",u),y&&d.createElement("div",{className:"ve-sql-saved"},"Result saved as ",d.createElement("strong",null,y)," (",b.toLocaleString()," rows)"),g.length>0?d.createElement("div",{className:q,style:{width:"100%",height:"100%"}},d.createElement(h.AgGridReact,{rowData:g,columnDefs:I,headerHeight:32,rowHeight:28,animateRows:!1,enableCellTextSelection:!0,ensureDomOrder:!0,defaultColDef:{sortable:!0,resizable:!0,minWidth:60}})):!u&&d.createElement("div",{className:"ve-sql-placeholder"},i?d.createElement("div",{className:"ve-loading"},d.createElement("div",{className:"ve-spinner"})):d.createElement("div",{style:{opacity:.5}},"Write a SQL query and press Ctrl+Enter to run it.",d.createElement("br",null),"All DataFrames in your namespace are available as tables.")),g.length>0&&d.createElement("div",{className:"ve-sql-result-status"},b.toLocaleString()," rows returned",b>1e4&&" (showing first 10,000)"))):d.createElement("div",{className:"ve-sql-panel"},d.createElement("div",{className:"ve-sql-no-duckdb"},d.createElement("div",{style:{fontSize:"16px",fontWeight:600,marginBottom:8}},"SQL Query Engine"),d.createElement("div",{style:{marginBottom:12,opacity:.8}},"DuckDB is required to query your DataFrames with SQL."),d.createElement("code",{style:{display:"block",padding:"8px 12px",background:"var(--jp-layout-color2)",borderRadius:4,fontSize:"13px"}},"pip install duckdb"),d.createElement("div",{style:{marginTop:12,fontSize:"12px",opacity:.6}},"Then restart your kernel and reopen the Variable Explorer.")))},S=({path:e,onNavigate:t})=>e.length<=1?null:d.createElement("div",{className:"ve-breadcrumb"},e.map((n,l)=>{const a=l===e.length-1;return d.createElement(d.Fragment,{key:l},l>0&&d.createElement("span",{className:"ve-breadcrumb-sep"},"›"),a?d.createElement("span",{className:"ve-breadcrumb-current"},n.label):d.createElement("span",{className:"ve-breadcrumb-link",onClick:()=>t(l),title:`Go back to ${n.label}`},n.label))}));function _(e,t){var n;e.querySelectorAll('link[rel="stylesheet"]').forEach(e=>{const n=t.createElement("link");n.rel="stylesheet",n.href=e.href,t.head.appendChild(n)}),e.querySelectorAll("style").forEach(e=>{const n=t.createElement("style");n.textContent=e.textContent,t.head.appendChild(n)});for(let l=0;l<e.styleSheets.length;l++){const a=e.styleSheets[l];if(a.href||"STYLE"!==(null===(n=a.ownerNode)||void 0===n?void 0:n.nodeName))try{if(a.cssRules){let e="";for(let t=0;t<a.cssRules.length;t++)e+=a.cssRules[t].cssText+"\n";if(e&&!a.href){const n=t.createElement("style");n.textContent=e,t.head.appendChild(n)}}}catch(e){}}const l=e.body.attributes;for(let e=0;e<l.length;e++){const n=l[e];n.name.startsWith("data-jp-")&&t.body.setAttribute(n.name,n.value)}}const k=({commManager:e})=>{const[t,n]=d.useState(e.isConnected),[l,a]=d.useState([]),[o,r]=d.useState(null),[s,i]=d.useState([]),[c,m]=d.useState(0),[h,p]=d.useState([]),[g,f]=d.useState([]),[k,N]=d.useState([]),[M,R]=d.useState(null),[L,D]=d.useState(!0),[I,q]=d.useState(!1),[F,$]=d.useState(null),[z,T]=d.useState(new Set),[A,j]=d.useState([]),[V,W]=d.useState("data"),[O,B]=d.useState(!0),[P,K]=d.useState(300),[H,Q]=(d.useCallback(()=>P,[P]),d.useCallback(e=>{K(Math.max(100,Math.min(800,e)))},[]),d.useState(220)),[Y,U]=d.useState(280),G=d.useCallback(()=>H,[H]),X=d.useCallback(e=>{Q(Math.max(120,Math.min(500,e)))},[]),J=d.useCallback(()=>Y,[Y]),Z=d.useCallback(e=>{U(Math.max(150,Math.min(500,e)))},[]);d.useEffect(()=>{const t=(e,t)=>{n(t),t||(a([]),r(null),i([]))};return e.connectionChanged.connect(t),()=>{e.connectionChanged.disconnect(t)}},[e]),d.useEffect(()=>{const t=(e,t)=>{switch(t.type){case"variable_list":a(t.variables);break;case"data_page":{const e=t;0===e.startRow?i(e.rows):i(t=>[...t,...e.rows]),m(e.totalRows),p(e.columns),q(!1);break}case"column_stats":f(t.stats);break;case"error":console.error("Variable Explorer kernel error:",t.message),$(t.message||"Unknown error"),q(!1)}};return e.messageReceived.connect(t),()=>{e.messageReceived.disconnect(t)}},[e]);const ee=d.useCallback((t,n)=>{$(null),i([]),N([]),R(null),T(new Set),q(!0),e.send({type:"get_data",variable:t,startRow:0,endRow:1e3,childKey:n}),e.send({type:"get_stats",variable:t,childKey:n})},[e]),te=d.useCallback(e=>{r(e),j([{label:e}]),ee(e)},[ee]),ne=d.useCallback((e,t)=>{if(!o)return;const n=[...A,{label:t,childKey:e}];j(n);const l=n.slice(1).map(e=>e.childKey).filter(Boolean).join(".");ee(o,l||void 0)},[o,A,ee]),le=d.useCallback(e=>{if(!o)return;const t=A.slice(0,e+1);if(j(t),t.length<=1)ee(o);else{const e=t.slice(1).map(e=>e.childKey).filter(Boolean).join(".");ee(o,e||void 0)}},[o,A,ee]),ae=d.useMemo(()=>{if(!o)return!1;const e=l.find(e=>e.name===o);return!!e&&(!(A.length>1)&&["list_of_dataframes","dict_of_dataframes","dict_mixed","dict_of_dicts"].includes(e.tabularKind))},[o,l,A]),oe=d.useCallback(t=>{o&&e.send({type:"get_data",variable:o,startRow:t,endRow:t+1e3,sortModel:k.length>0?k:void 0})},[e,o,k]),re=d.useCallback(t=>{N(t),i([]),q(!0),o&&e.send({type:"get_data",variable:o,startRow:0,endRow:1e3,sortModel:t.length>0?t:void 0})},[e,o]),se=d.useCallback((e,t,n)=>{R({rowIndex:e,colName:t,value:n})},[]),ie=d.useCallback((t,n,l)=>{o&&e.send({type:"edit_cell",variable:o,rowIndex:t,column:n,newValue:l})},[e,o]),ce=d.useCallback(e=>{T(t=>{const n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),de=d.useCallback(()=>{e.refresh(),o&&te(o)},[e,o,te]),ue=l.find(e=>e.name===o),me=d.useCallback(()=>{W("data");const t=Math.min(1200,.7*screen.availWidth),n=Math.min(700,.6*screen.availHeight),l=Math.round((screen.availWidth-t)/2),a=Math.round((screen.availHeight-n)/2),o=window.open("","variable-explorer-sql",`width=${t},height=${n},left=${l},top=${a},menubar=no,toolbar=no,location=no,status=no,resizable=yes`);if(!o)return void alert("Pop-up was blocked by your browser.\n\nAllow pop-ups for this site in your browser settings.");const r=o.document;r.write('<!DOCTYPE html><html><head><meta charset="utf-8"><title>SQL - Variable Explorer</title>\n<style>html,body{margin:0;padding:0;width:100%;height:100%;overflow:hidden}#ve-sql-root{width:100%;height:100%}</style>\n</head><body><div id="ve-sql-root"></div></body></html>'),r.close(),_(document,r);const s=document.body;for(let e=0;e<s.attributes.length;e++){const t=s.attributes[e];t.name.startsWith("data-jp-")&&r.body.setAttribute(t.name,t.value)}r.body.className=s.className;const i=r.getElementById("ve-sql-root");u.render(d.createElement(x,{commManager:e,onPopOut:void 0}),i);const c=window.setInterval(()=>{if(o.closed){window.clearInterval(c);try{u.unmountComponentAtNode(i)}catch(e){}}},500)},[e]);return d.createElement("div",{className:"ve-main-container"},d.createElement("div",{className:"ve-tab-bar"},!O&&d.createElement(d.Fragment,null,d.createElement("button",{className:"ve-tab "+("data"===V?"ve-tab-active":""),onClick:()=>W("data")},"Data"),d.createElement("button",{className:"ve-tab "+("sql"===V?"ve-tab-active":""),onClick:()=>W("sql")},"SQL")),O&&d.createElement("span",{style:{fontWeight:600,fontSize:"var(--jp-ui-font-size1)",padding:"0 8px"}},"Data"),d.createElement("div",{className:"ve-tab-spacer"}),("data"===V||O)&&o&&d.createElement(d.Fragment,null,d.createElement("button",{className:"ve-tab-action",onClick:de,title:"Refresh data"},"↻ Refresh"),d.createElement("button",{className:"ve-tab-action",onClick:()=>D(!L),title:"Toggle metadata sidebar"},L?"Hide":"Show"," Metadata"))),d.createElement("div",{className:"ve-tab-content",style:{display:"data"===V?"flex":"none",flexDirection:"column",flex:1,overflow:"hidden"}},M&&d.createElement(y,{rowIndex:M.rowIndex,colName:M.colName,value:M.value}),d.createElement("div",{className:"ve-content-area"},d.createElement("div",{style:{width:H,minWidth:120,flexShrink:0}},d.createElement(v,{variables:l,selectedVar:o,onSelect:te})),d.createElement(C,{direction:"horizontal",onResizeStart:G,onResize:X}),d.createElement("div",{className:"ve-grid-container"},d.createElement("div",{className:"ve-grid-toolbar"},d.createElement("span",{className:"ve-toolbar-title"},o||"Select a variable",ue&&d.createElement("span",{style:{fontWeight:"normal",opacity:.6,marginLeft:8,fontSize:"12px"}},ue.typeName," (",ue.shape.map(e=>e.toLocaleString()).join(" × "),")"))),A.length>1&&d.createElement(S,{path:A,onNavigate:le}),o&&h.length>0?d.createElement(b,{rows:s,columns:h,columnStats:g,totalRows:c,sortModel:k,hiddenColumns:z,loading:I,isContainerView:ae,onSortChanged:re,onLoadMore:oe,onCellSelected:se,onCellEdit:ie,onDrillDown:ne}):d.createElement("div",{className:"ve-empty-state"},F?d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-empty-icon",style:{color:"var(--jp-error-color1)"}},"⚠"),d.createElement("div",{style:{color:"var(--jp-error-color1)"}},F)):I?d.createElement("div",{className:"ve-loading"},d.createElement("div",{className:"ve-spinner"})):t?d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-empty-icon"},"📊"),d.createElement("div",null,0===l.length?"No variables in kernel namespace":"Select a DataFrame to view its contents")):d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-empty-icon"},"🔌"),d.createElement("div",null,"Not connected to a kernel"),d.createElement("div",{style:{fontSize:"12px",marginTop:8,opacity:.7}},"Open a notebook and run a cell to connect")))),L&&o&&g.length>0&&d.createElement(d.Fragment,null,d.createElement(C,{direction:"horizontal",onResizeStart:J,onResize:Z,invert:!0}),d.createElement("div",{style:{width:Y,minWidth:150,flexShrink:0}},d.createElement(E,{columns:h,columnStats:g,hiddenColumns:z,onToggleColumn:ce,selectedVarInfo:ue||null})))),d.createElement(w,{selectedVar:o,totalRows:c,totalCols:h.length,sortModel:k,connected:t})),d.createElement("div",{style:{display:O||"sql"!==V?"none":"flex",flex:1,overflow:"hidden"}},d.createElement(x,{commManager:e,onPopOut:me,isDocked:!1,onToggleDock:()=>{B(!0),W("data")}})),O&&d.createElement(d.Fragment,null,d.createElement("div",{className:"ve-resize-handle-horizontal",onMouseDown:e=>{e.preventDefault();const t=e.clientY,n=P,l=e.target.ownerDocument||document,a=e=>{e.preventDefault(),K(Math.max(100,Math.min(800,n-(e.clientY-t))))},o=()=>{l.removeEventListener("mousemove",a),l.removeEventListener("mouseup",o),l.body.style.cursor="",l.body.style.userSelect=""};l.addEventListener("mousemove",a),l.addEventListener("mouseup",o),l.body.style.cursor="row-resize",l.body.style.userSelect="none"}}),d.createElement("div",{style:{height:P,flexShrink:0,overflow:"hidden",display:"flex"}},d.createElement(x,{commManager:e,onPopOut:me,isDocked:!0,onToggleDock:()=>B(!1)}))))},N="variable-explorer:open";class M{constructor(){this._commManager=new c,this._externalWindow=null,this._root=null,this._pollTimer=null}get commManager(){return this._commManager}get isOpen(){return null!==this._externalWindow&&!this._externalWindow.closed}open(){if(this.isOpen)return void this._externalWindow.focus();const e=Math.min(1400,.8*screen.availWidth),t=Math.min(900,.8*screen.availHeight),n=Math.round((screen.availWidth-e)/2),l=Math.round((screen.availHeight-t)/2);if(this._externalWindow=window.open("","variable-explorer",`width=${e},height=${t},left=${n},top=${l},menubar=no,toolbar=no,location=no,status=no,resizable=yes,scrollbars=no`),!this._externalWindow)return void alert('Variable Explorer: Pop-up was blocked by your browser.\n\nTo fix this, allow pop-ups for this site:\n1. Click the blocked pop-up icon in your address bar, or\n2. Go to Settings → Privacy → Pop-ups → Add this site to "Allowed"');const a=this._externalWindow.document;a.write('<!DOCTYPE html>\n<html>\n<head>\n <meta charset="utf-8">\n <title>Variable Explorer</title>\n <style>\n html, body { margin: 0; padding: 0; width: 100%; height: 100%; overflow: hidden; }\n #ve-root { width: 100%; height: 100%; }\n </style>\n</head>\n<body>\n <div id="ve-root"></div>\n</body>\n</html>'),a.close(),_(document,a);const o=document.body,r=a.body;for(let e=0;e<o.attributes.length;e++){const t=o.attributes[e];t.name.startsWith("data-jp-")&&r.setAttribute(t.name,t.value)}r.className=o.className;const s=a.getElementById("ve-root");u.render(d.createElement(k,{commManager:this._commManager,autoDetach:!1}),s),this._root=s,this._pollTimer=window.setInterval(()=>{this._externalWindow&&this._externalWindow.closed&&this._cleanup()},500),this._externalWindow.addEventListener("beforeunload",()=>{this._cleanup()})}_cleanup(){if(null!==this._pollTimer&&(window.clearInterval(this._pollTimer),this._pollTimer=null),this._root){try{u.unmountComponentAtNode(this._root)}catch(e){}this._root=null}this._externalWindow=null}}const R={id:"variable-explorer:plugin",description:"A Spyder/Stata-grade variable explorer for JupyterLab",autoStart:!0,requires:[l.INotebookTracker],optional:[o.ICommandPalette,a.IConsoleTracker],activate:(e,t,n,l)=>{console.log("Variable Explorer extension activated");const a=new M,o=async e=>{if(e)try{await a.commManager.connect(e)}catch(e){console.error("Variable Explorer: Failed to connect to kernel",e)}};t.currentChanged.connect(async(e,t)=>{if(!t)return;const n=t.sessionContext;n.ready.then(()=>{var e;o(null===(e=n.session)||void 0===e?void 0:e.kernel)}),n.kernelChanged.connect((e,t)=>{t.newValue&&o(t.newValue)})}),l&&l.currentChanged.connect(async(e,t)=>{if(!t)return;const n=t.sessionContext;n.ready.then(()=>{var e;o(null===(e=n.session)||void 0===e?void 0:e.kernel)}),n.kernelChanged.connect((e,t)=>{t.newValue&&o(t.newValue)})}),e.commands.addCommand(N,{label:"Variable Explorer",caption:"Open Variable Explorer in a separate window",icon:r.spreadsheetIcon,execute:()=>{var e;a.open();const n=t.currentWidget;if(n){const t=null===(e=n.sessionContext.session)||void 0===e?void 0:e.kernel;o(t)}}}),n&&n.addItem({command:N,category:"Variable Explorer"})}}}}]);
|
variable_explorer-0.7.0/variable_explorer/labextension/static/remoteEntry.d175bc820329257b7c49.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
var _JUPYTERLAB;(()=>{"use strict";var e,r,t,a,n,o,i,l,u,f,s,c,d,p,h,v,b,g,m,y={657(e,r,t){var a={"./index":()=>Promise.all([t.e(638),t.e(746)]).then(()=>()=>t(746)),"./extension":()=>Promise.all([t.e(638),t.e(746)]).then(()=>()=>t(746)),"./style":()=>Promise.all([t.e(140),t.e(927)]).then(()=>()=>t(5))},n=(e,r)=>(t.R=r,r=t.o(a,e)?a[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),t.R=void 0,r),o=(e,r)=>{if(t.S){var a="default",n=t.S[a];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return t.S[a]=e,t.I(a,r)}};t.d(r,{get:()=>n,init:()=>o})}},w={};function P(e){var r=w[e];if(void 0!==r)return r.exports;var t=w[e]={id:e,exports:{}};return y[e](t,t.exports,P),t.exports}P.m=y,P.c=w,P.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return P.d(r,{a:r}),r},P.d=(e,r)=>{for(var t in r)P.o(r,t)&&!P.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},P.f={},P.e=e=>Promise.all(Object.keys(P.f).reduce((r,t)=>(P.f[t](e,r),r),[])),P.u=e=>e+"."+{140:"0326e0e0e77185d73e92",719:"b1e5abbcc7b2adac64e7",746:"58a99d2f32f8834ed814",924:"5e98cac11804e1a59d7e",927:"d2072f9536bbda11eb79"}[e]+".js?v="+{140:"0326e0e0e77185d73e92",719:"b1e5abbcc7b2adac64e7",746:"58a99d2f32f8834ed814",924:"5e98cac11804e1a59d7e",927:"d2072f9536bbda11eb79"}[e],P.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),P.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),e={},r="variable-explorer:",P.l=(t,a,n,o)=>{if(e[t])e[t].push(a);else{var i,l;if(void 0!==n)for(var u=document.getElementsByTagName("script"),f=0;f<u.length;f++){var s=u[f];if(s.getAttribute("src")==t||s.getAttribute("data-webpack")==r+n){i=s;break}}i||(l=!0,(i=document.createElement("script")).charset="utf-8",P.nc&&i.setAttribute("nonce",P.nc),i.setAttribute("data-webpack",r+n),i.src=t),e[t]=[a];var c=(r,a)=>{i.onerror=i.onload=null,clearTimeout(d);var n=e[t];if(delete e[t],i.parentNode&&i.parentNode.removeChild(i),n&&n.forEach(e=>e(a)),r)return r(a)},d=setTimeout(c.bind(null,void 0,{type:"timeout",target:i}),12e4);i.onerror=c.bind(null,i.onerror),i.onload=c.bind(null,i.onload),l&&document.head.appendChild(i)}},P.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{P.S={};var e={},r={};P.I=(t,a)=>{a||(a=[]);var n=r[t];if(n||(n=r[t]={}),!(a.indexOf(n)>=0)){if(a.push(n),e[t])return e[t];P.o(P.S,t)||(P.S[t]={});var o=P.S[t],i="variable-explorer",l=(e,r,t,a)=>{var n=o[e]=o[e]||{},l=n[r];(!l||!l.loaded&&(!a!=!l.eager?a:i>l.from))&&(n[r]={get:t,from:i,eager:!!a})},u=[];return"default"===t&&(l("ag-grid-community","32.3.9",()=>P.e(719).then(()=>()=>P(719))),l("ag-grid-react","32.3.9",()=>Promise.all([P.e(924),P.e(638),P.e(226)]).then(()=>()=>P(924))),l("variable-explorer","0.7.0",()=>Promise.all([P.e(638),P.e(746)]).then(()=>()=>P(746)))),e[t]=u.length?Promise.all(u).then(()=>e[t]=1):1}}})(),(()=>{var e;P.g.importScripts&&(e=P.g.location+"");var r=P.g.document;if(!e&&r&&(r.currentScript&&"SCRIPT"===r.currentScript.tagName.toUpperCase()&&(e=r.currentScript.src),!e)){var t=r.getElementsByTagName("script");if(t.length)for(var a=t.length-1;a>-1&&(!e||!/^http(s?):/.test(e));)e=t[a--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),P.p=e})(),t=e=>{var r=e=>e.split(".").map(e=>+e==e?+e:e),t=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),a=t[1]?r(t[1]):[];return t[2]&&(a.length++,a.push.apply(a,r(t[2]))),t[3]&&(a.push([]),a.push.apply(a,r(t[3]))),a},a=(e,r)=>{e=t(e),r=t(r);for(var a=0;;){if(a>=e.length)return a<r.length&&"u"!=(typeof r[a])[0];var n=e[a],o=(typeof n)[0];if(a>=r.length)return"u"==o;var i=r[a],l=(typeof i)[0];if(o!=l)return"o"==o&&"n"==l||"s"==l||"u"==o;if("o"!=o&&"u"!=o&&n!=i)return n<i;a++}},n=e=>{var r=e[0],t="";if(1===e.length)return"*";if(r+.5){t+=0==r?">=":-1==r?"<":1==r?"^":2==r?"~":r>0?"=":"!=";for(var a=1,o=1;o<e.length;o++)a--,t+="u"==(typeof(l=e[o]))[0]?"-":(a>0?".":"")+(a=2,l);return t}var i=[];for(o=1;o<e.length;o++){var l=e[o];i.push(0===l?"not("+u()+")":1===l?"("+u()+" || "+u()+")":2===l?i.pop()+" "+i.pop():n(l))}return u();function u(){return i.pop().replace(/^\((.+)\)$/,"$1")}},o=(e,r)=>{if(0 in e){r=t(r);var a=e[0],n=a<0;n&&(a=-a-1);for(var i=0,l=1,u=!0;;l++,i++){var f,s,c=l<e.length?(typeof e[l])[0]:"";if(i>=r.length||"o"==(s=(typeof(f=r[i]))[0]))return!u||("u"==c?l>a&&!n:""==c!=n);if("u"==s){if(!u||"u"!=c)return!1}else if(u)if(c==s)if(l<=a){if(f!=e[l])return!1}else{if(n?f>e[l]:f<e[l])return!1;f!=e[l]&&(u=!1)}else if("s"!=c&&"n"!=c){if(n||l<=a)return!1;u=!1,l--}else{if(l<=a||s<c!=n)return!1;u=!1}else"s"!=c&&"n"!=c&&(u=!1,l--)}}var d=[],p=d.pop.bind(d);for(i=1;i<e.length;i++){var h=e[i];d.push(1==h?p()|p():2==h?p()&p():h?o(h,r):!p())}return!!p()},i=(e,r)=>e&&P.o(e,r),l=e=>(e.loaded=1,e.get()),u=e=>Object.keys(e).reduce((r,t)=>(e[t].eager&&(r[t]=e[t]),r),{}),f=(e,r,t)=>{var n=t?u(e[r]):e[r];return Object.keys(n).reduce((e,r)=>!e||!n[e].loaded&&a(e,r)?r:e,0)},s=(e,r,t,a)=>"Unsatisfied version "+t+" from "+(t&&e[r][t].from)+" of shared singleton module "+r+" (required "+n(a)+")",c=e=>{throw new Error(e)},d=e=>{"undefined"!=typeof console&&console.warn&&console.warn(e)},p=(e,r,t)=>t?t():((e,r)=>c("Shared module "+r+" doesn't exist in shared scope "+e))(e,r),h=(e=>function(r,t,a,n,o){var i=P.I(r);return i&&i.then&&!a?i.then(e.bind(e,r,P.S[r],t,!1,n,o)):e(r,P.S[r],t,a,n,o)})((e,r,t,a,n,u)=>{if(!i(r,t))return p(e,t,u);var c=f(r,t,a);return o(n,c)||d(s(r,t,c,n)),l(r[t][c])}),v={},b={345:()=>h("default","react",!1,[1,18,2,0]),628:()=>h("default","react-dom",!1,[1,18,2,0]),428:()=>h("default","@jupyterlab/console",!1,[1,4,4,7]),436:()=>h("default","@jupyterlab/apputils",!1,[1,4,5,7]),602:()=>h("default","@lumino/signaling",!1,[1,2,0,0]),734:()=>h("default","ag-grid-react",!1,[1,32,0,0],()=>Promise.all([P.e(924),P.e(226)]).then(()=>()=>P(924))),760:()=>h("default","@jupyterlab/ui-components",!1,[1,4,4,7]),980:()=>h("default","@jupyterlab/notebook",!1,[1,4,4,7]),226:()=>h("default","ag-grid-community",!1,[4,32,3,9],()=>P.e(719).then(()=>()=>P(719)))},g={226:[226],638:[345,628],746:[428,436,602,734,760,980]},m={},P.f.consumes=(e,r)=>{P.o(g,e)&&g[e].forEach(e=>{if(P.o(v,e))return r.push(v[e]);if(!m[e]){var t=r=>{v[e]=0,P.m[e]=t=>{delete P.c[e],t.exports=r()}};m[e]=!0;var a=r=>{delete v[e],P.m[e]=t=>{throw delete P.c[e],r}};try{var n=b[e]();n.then?r.push(v[e]=n.then(t).catch(a)):t(n)}catch(e){a(e)}}})},(()=>{P.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={269:0};P.f.j=(r,t)=>{var a=P.o(e,r)?e[r]:void 0;if(0!==a)if(a)t.push(a[2]);else if(/^(226|638)$/.test(r))e[r]=0;else{var n=new Promise((t,n)=>a=e[r]=[t,n]);t.push(a[2]=n);var o=P.p+P.u(r),i=new Error;P.l(o,t=>{if(P.o(e,r)&&(0!==(a=e[r])&&(e[r]=void 0),a)){var n=t&&("load"===t.type?"missing":t.type),o=t&&t.target&&t.target.src;i.message="Loading chunk "+r+" failed.\n("+n+": "+o+")",i.name="ChunkLoadError",i.type=n,i.request=o,a[1](i)}},"chunk-"+r,r)}};var r=(r,t)=>{var a,n,[o,i,l]=t,u=0;if(o.some(r=>0!==e[r])){for(a in i)P.o(i,a)&&(P.m[a]=i[a]);l&&l(P)}for(r&&r(t);u<o.length;u++)n=o[u],P.o(e,n)&&e[n]&&e[n][0](),e[n]=0},t=self.webpackChunkvariable_explorer=self.webpackChunkvariable_explorer||[];t.forEach(r.bind(null,0)),t.push=r.bind(null,t.push.bind(t))})(),P.nc=void 0;var S=P(657);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB)["variable-explorer"]=S})();
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/comm_handler.py
RENAMED
|
File without changes
|
|
File without changes
|
{variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/kernel/serialization.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{variable_explorer-0.7.0 → variable_explorer-0.8.1}/variable_explorer/labextension/static/style.js
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|