File size: 43,275 Bytes
f55be1f
 
91ab9e8
f55be1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a2eeb8
f55be1f
 
4a2eeb8
f55be1f
 
 
4a2eeb8
f55be1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4a2eeb8
 
 
f55be1f
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
    <title>GAIR/o1-journey</title>
    
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    
    
       
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap-theme.min.css" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.3/css/font-awesome.min.css" />
    <script src="https://unpkg.com/deck.gl@latest/dist.min.js"></script>
    
    <script src="https://unpkg.com/[email protected]"></script>
    
    <style>
        body {
          margin: 0;
          padding: 0;
          overflow: hidden;
          background: #ffffff;
        }

        #deck-container {
          width: 100vw;
          height: 100vh;
        }

        #deck-container canvas {
          z-index: 1;
          background: #ffffff;
        }

        .deck-tooltip {
            
            font-size: 0.8em;
            font-family: Roboto;
            font-weight: 300;
            color: #000000 !important;
            background-color: #ffffffaa !important;
            border-radius: 12px;
            box-shadow: 2px 3px 10px #aaaaaa44;
            max-width: 25%;
        }
        
        #loading {
            width: 100%;
            height: 100%;
            top: 0px;
            left: 0px;
            position: absolute;
            display: block; 
            z-index: 99
        }

        #loading-image {
            position: absolute;
            top: 45%;
            left: 47.5%;
            z-index: 100
        }
        
        #title-container {
            position: absolute;
            top: 0;
            left: 0;
            margin: 16px;
            padding: 12px;
            border-radius: 16px;
            line-height: 0.95;
            z-index: 2;
            font-family: Roboto;
            color: #000000;
            background: #ffffffaa;
            box-shadow: 2px 3px 10px #aaaaaa44;
        }
        
        
        #search-container{
            position: absolute;
            left: -16px;
            margin: 16px;
            padding: 12px;
            border-radius: 16px;
            z-index: 2;
            font-family: Roboto;
            color: #000000;
            background: #ffffffaa;
            width: fit-content;
            box-shadow: 2px 3px 10px #aaaaaa44;
        }
        input {
            margin: 2px;
            padding: 4px;
            border-radius: 8px;
            color: #000000;
            background: #ffffffdd;
            border: 1px solid #ddddddff;
            transition: 0.5s;
            outline: none;
        }
        input:focus {
          border: 2px solid #555;
        }
        
        
    </style>
  </head>
  <body>
    <div id="loading">
        <img id="loading-image" src="https://i.gifer.com/ZKZg.gif" alt="Loading..." width="5%"/>
    </div>
    
    <div id="title-container">
        <span style="font-family:Roboto;font-size:36pt;color:#000000">
            GAIR/o1-journey
        </span><br/>
        <span style="font-family:Roboto;font-size:18pt;color:#777777">
            Data map for the entire <a href='https://huggingface.co/datasets/GAIR/o1-journey/viewer/default/train' target='_blank'>dataset</a> (327 rows) using the column 'question'
        </span>
        
        <div id="search-container">
            <input autocomplete="off" type="search" id="search" placeholder="🔍">
        </div>
        
    </div>
    
    
    <div id="deck-container">
    </div>
    
  </body>
  <script type="module">
    import { ArrowLoader } from 'https://cdn.jsdelivr.net/npm/@loaders.gl/[email protected]/+esm'
    import { JSONLoader } from 'https://cdn.jsdelivr.net/npm/@loaders.gl/[email protected]/+esm'
    

    
    const pointDataBase64 = "QVJST1cxAAD/////0AUAABAAAAAAAAoADgAGAAUACAAKAAAAAAEEABAAAAAAAAoADAAAAAQACAAKAAAASAQAAAQAAAABAAAADAAAAAgADAAEAAgACAAAACAEAAAEAAAAEAQAAHsiaW5kZXhfY29sdW1ucyI6IFt7ImtpbmQiOiAicmFuZ2UiLCAibmFtZSI6IG51bGwsICJzdGFydCI6IDAsICJzdG9wIjogMzI3LCAic3RlcCI6IDF9XSwgImNvbHVtbl9pbmRleGVzIjogW3sibmFtZSI6IG51bGwsICJmaWVsZF9uYW1lIjogbnVsbCwgInBhbmRhc190eXBlIjogInVuaWNvZGUiLCAibnVtcHlfdHlwZSI6ICJvYmplY3QiLCAibWV0YWRhdGEiOiB7ImVuY29kaW5nIjogIlVURi04In19XSwgImNvbHVtbnMiOiBbeyJuYW1lIjogIngiLCAiZmllbGRfbmFtZSI6ICJ4IiwgInBhbmRhc190eXBlIjogImZsb2F0MzIiLCAibnVtcHlfdHlwZSI6ICJmbG9hdDMyIiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJ5IiwgImZpZWxkX25hbWUiOiAieSIsICJwYW5kYXNfdHlwZSI6ICJmbG9hdDMyIiwgIm51bXB5X3R5cGUiOiAiZmxvYXQzMiIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiciIsICJmaWVsZF9uYW1lIjogInIiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiZyIsICJmaWVsZF9uYW1lIjogImciLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiYiIsICJmaWVsZF9uYW1lIjogImIiLCAicGFuZGFzX3R5cGUiOiAidWludDgiLCAibnVtcHlfdHlwZSI6ICJ1aW50OCIsICJtZXRhZGF0YSI6IG51bGx9LCB7Im5hbWUiOiAiYSIsICJmaWVsZF9uYW1lIjogImEiLCAicGFuZGFzX3R5cGUiOiAidWludDgi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cClJP1SweUAU9Jq/IGJBQGCt67+Ah3a+GOeNPwDyiL9ANxi/MJWVv5jykb8Alvi/4AEvvwhUq78AAAAASUlJSUlJSUnFSUlJSUlJSUlJSUlJSUlJvLy8vLxJvElJvElJvLxJSbxJvLzFvLzF7rz6vMW8vMW8vLy8xcW8vMW8xby8mMW8xcWY7u7uxe7u7u7u7u7u7u7uxe7u7u7uxe7u7sXu7u7F7sXu7u687u7FmMW87vruvMXFxUnu7piYxZj67pi87u7uxbzFSZiYSe7uxZhJmJi8ScVJ7sW87sVJmEn6ScXFxUnFmO6Y7u6YmJiY+u7umO6YxZjuxe7umMWYxcWYxe7uxcXFmMWYvJi8vMWYvMWYxUm8vMWYvLy8vMXuvJi8vMXFvO6Y+pj6vMWYvLy8vMW8vLyYvO68vJi8vLy8xby8vMW8vLy8vJjF7ry8vLzuvLy8xbzFvO68SbzFvMW8vLxJxcW87rzuvMXFvMW8vMW8vPqYvEm8vO68vLy8vLy8AL+/v7+/v7+/pr+/v7+/v7+/v7+/v7+/v7Ozs7Ozv7O/v7O/v7Ozv7+zv7OzprOzppezxbOms7Oms7Ozs6ams7Oms6azs3mms6ameZeXl6aXl5eXl5eXl5eXl6aXl5eXl6aXl5eml5eXppeml5eXs5eXpnmms5fFl7Ompqa/l5d5eaZ5xZd5s5eXl6azpr95eb+Xl6Z5v3l5s7+mv5ems5emv3m/xb+mpqa/pnmXeZeXeXl5ecWXl3mXeaZ5l6aXl3mmeaameaaXl6ampnmmebN5s7OmebOmeaa/s7OmebOzs7Oml7N5s7OmprOXecV5xbOmebOzs7Oms7OzebOXs7N5s7Ozs6azs7Oms7Ozs7N5ppezs7Ozl7Ozs6azprOXs7+zprOms7Ozv6ams5ezl7OmprOms7Oms7PFebO/s7OXs7Ozs7OzswCvr6+vr6+vr+mvr6+vr6+vr6+vr6+vr69bW1tbW69br69br69bW6+vW69bW+lbW+myW8tb6Vtb6VtbW1vp6Vtb6VvpW1vn6Vvp6eeysrLpsrKysrKysrKysrLpsrKysrLpsrKy6bKysumy6bKysluysunn6Vuyy7Jb6enpr7Ky5+fp58uy51uysrLpW+mv5+evsrLp56/n51uv6a+y6Vuy6a/nr8uv6enpr+nnsueysufn5+fLsrLnsufp57LpsrLn6efp6efpsrLp6enn6edb51tb6edb6efpr1tb6edbW1tb6bJb51tb6elbsufL58tb6edbW1tb6VtbW+dbsltb51tbW1vpW1tb6VtbW1tb5+myW1tbW7JbW1vpW+lbsluvW+lb6VtbW6/p6VuyW7Jb6elb6Vtb6Vtby+dbr1tbsltbW1tbW1sAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0AAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQD/////AAAAABAAAAAMABQABgAIAAwAEAAMAAAAAAAEADwAAAAoAAAABAAAAAEAAADgBQAAAAAAALABAAAAAAAAqBAAAAAAAAAAAAAAAAAAAAAACgAMAAAABAAIAAoAAABIBAAABAAAAAEAAAAMAAAACAAMAAQACAAIAAAAIAQAAAQAAAAQBAAAeyJpbmRleF9jb2x1bW5zIjogW3sia2luZCI6ICJyYW5nZSIsICJuYW1lIjogbnVsbCwgInN0YXJ0IjogMCwgInN0b3AiOiAzMjcsICJzdGVwIjogMX1dLCAiY29sdW1uX2luZGV4ZXMiOiBbeyJuYW1lIjogbnVsbCwgImZpZWxkX25hbWUiOiBudWxsLCAicGFuZGFzX3R5cGUiOiAidW5pY29kZSIsICJudW1weV90eXBlIjogIm9iamVjdCIsICJtZXRhZGF0YSI6IHsiZW5jb2RpbmciOiAiVVRGLTgifX1dLCAiY29sdW1ucyI6IFt7Im5hbWUiOiAieCIsICJmaWVsZF9uYW1lIjogIngiLCAicGFuZGFzX3R5cGUiOiAiZmxvYXQzMiIsICJudW1weV90eXBlIjogImZsb2F0MzIiLCAibWV0YWRhdGEiOiBudWxsfSwgeyJuYW1lIjogInkiLCAiZmllbGRfbmFtZSI6ICJ5IiwgInBhbmRhc190eXBlIjogImZsb2F0MzIiLCAibnVtcHlfdHlwZSI6ICJmbG9hdDMyIiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJyIiwgImZpZWxkX25hbWUiOiAiciIsICJwYW5kYXNfdHlwZSI6ICJ1aW50OCIsICJudW1weV90eXBlIjogInVpbnQ4IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJnIiwgImZpZWxkX25hbWUiOiAiZyIsICJwYW5kYXNfdHlwZSI6ICJ1aW50OCIsICJudW1weV90eXBlIjogInVpbnQ4IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJiIiwgImZpZWxkX25hbWUiOiAiYiIsICJwYW5kYXNfdHlwZSI6ICJ1aW50OCIsICJudW1weV90eXBlIjogInVpbnQ4IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJhIiwgImZpZWxkX25hbWUiOiAiYSIsICJwYW5kYXNfdHlwZSI6ICJ1aW50OCIsICJudW1weV90eXBlIjogInVpbnQ4IiwgIm1ldGFkYXRhIjogbnVsbH0sIHsibmFtZSI6ICJzZWxlY3RlZCIsICJmaWVsZF9uYW1lIjogInNlbGVjdGVkIiwgInBhbmRhc190eXBlIjogInVpbnQ4IiwgIm51bXB5X3R5cGUiOiAidWludDgiLCAibWV0YWRhdGEiOiBudWxsfV0sICJjcmVhdG9yIjogeyJsaWJyYXJ5IjogInB5YXJyb3ciLCAidmVyc2lvbiI6ICIxNy4wLjAifSwgInBhbmRhc192ZXJzaW9uIjogIjIuMi4yIn0AAAAABgAAAHBhbmRhcwAABwAAACgBAADsAAAAvAAAAJAAAABkAAAAOAAAAAQAAAAE////AAABAhAAAAAcAAAABAAAAAAAAAAIAAAAc2VsZWN0ZWQAAAAAYv///wgAAAA0////AAABAhAAAAAUAAAABAAAAAAAAAABAAAAYQAAAIr///8IAAAAXP///wAAAQIQAAAAFAAAAAQAAAAAAAAAAQAAAGIAAACy////CAAAAIT///8AAAECEAAAABQAAAAEAAAAAAAAAAEAAABnAAAA2v///wgAAACs////AAABAhAAAAAYAAAABAAAAAAAAAABAAAAcgAGAAgABAAGAAAACAAAANj///8AAAEDEAAAABQAAAAEAAAAAAAAAAEAAAB5AAAAyv///wAAAQAQABQACAAGAAcADAAAABAAEAAAAAAAAQMQAAAAGAAAAAQAAAAAAAAAAQAAAHgABgAIAAYABgAAAAAAAQD4BQAAQVJST1cx";
    const pointDataBuffer = fflate.strToU8(atob(pointDataBase64), true);
    const pointData = await loaders.parse(pointDataBuffer, ArrowLoader);
    const hoverDataBase64 = "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";
    const hoverDataBuffer = fflate.strToU8(atob(hoverDataBase64), true);
    const unzippedHoverData = fflate.gunzipSync(hoverDataBuffer);
    const hoverData = await loaders.parse(unzippedHoverData, ArrowLoader);
    const labelDataBase64 = "H4sIAC35IGcC/2WSwY7TMBCGX6XyOVi2x56xc9sDQkhIrODAgXBwdt1ikTiVE2lbEO+O64a22715Lv6+/5/5/ocdWPtOc6lQKOfQQsOOrBWcEBQQkdYNG3wfBtayh2EX+uzbLn2N436I22NMuy598Uuckh+69P6wz2GeyzSzhs3xd2CttFw0LJcHlr93rHWuYX0ZhW2YZy3qv83ZQnInHGpUpKhaKA5OO6FIoLxafAjTGJZ8vBAUcEfkjDPgoKKAKqkiCsrdkxR3ILUABHSVVNigCJwCcHRFfYop+LxZc3fp8z7kGvYaT13iCVyhokI13EE1VwIEWdJoK7RoaxJCG4M3zMc89b6PQ1yOXQqHQoxjSMvmJS4/uzT63A9hvs0OZC0KKubVw+qqgefoZa93GoYXptKgCWTVkLz05IREedrMjUZBLzHMm2nbpY9pCbuQb8CGG03SoLXqDC6FVrIV637FmwKkJGdPl2VXsjIWSyfmZPmf/G3Kv8pdrYG32T/Vxjc+PXfpOTzF0Q+vPLCcjUIpzOoh1zuTZw+4bP/HPwn3FQrvAgAA";
    const labelDataBuffer = fflate.strToU8(atob(labelDataBase64), true);
    const unzippedLabelData = fflate.gunzipSync(labelDataBuffer);    
    const labelData = await loaders.parse(unzippedLabelData, JSONLoader);
    
    
    const DATA = {src: pointData.data, length: pointData.data.x.length}

    const container = document.getElementById('deck-container');
    const pointLayer = new deck.ScatterplotLayer({
        id: 'dataPointLayer',
        data: DATA,
        getPosition: (object, {index, data}) => {
            return [data.src.x[index], data.src.y[index]];
        },
        
        getRadius: 0.1,
        
        getFillColor: (object, {index, data}) => {
            return [
                data.src.r[index], 
                data.src.g[index], 
                data.src.b[index],
                180
            ]
        },
        getLineColor: (object, {index, data}) => {
            return [
                data.src.r[index], 
                data.src.g[index], 
                data.src.b[index],
                32
            ]
        },       
        getLineColor: [250, 250, 250, 128],
        getLineWidth: 0.001,
        highlightColor: [170, 0, 0, 187], 
        lineWidthMaxPixels: 8,
        lineWidthMinPixels: 0.1,
        radiusMaxPixels: 24, 
        radiusMinPixels: 0.01,
        radiusUnits: "common", 
        lineWidthUnits: "common", 
        autoHighlight: true,
        pickable: true, 
        stroked: true
    });
    const labelLayer = new deck.TextLayer({
        id: "textLabelLayer",
        data: labelData,
        pickable: false,
        getPosition: d => [d.x, d.y],
        getText: d => d.label,
        getColor: d => [d.r, d.g, d.b],
        getSize: d => d.size,
        sizeScale: 1,
        sizeMinPixels: 18,
        sizeMaxPixels: 36,
        outlineWidth: 8,
        outlineColor: [238, 238, 238, 221],
        getBackgroundColor: [255, 255, 255, 64],
        getBackgroundPadding: [15, 15, 15, 15],
        background: true,
        characterSet: "auto",
        fontFamily: "Roboto",
        fontWeight: 900,
        lineHeight: 0.95,
        fontSettings: {"sdf": true},
        getTextAnchor: "middle",
        getAlignmentBaseline: "center",
        lineHeight: 0.95,
        elevation: 100,
        // CollideExtension options
        collisionEnabled: true,
        getCollisionPriority: d => d.size,
        collisionTestProps: {
          sizeScale: 3,
          sizeMaxPixels: 36 * 2,
          sizeMinPixels: 18 * 2
        },
        extensions: [new deck.CollisionFilterExtension()],
    });
    

    const deckgl = new deck.DeckGL({
      container: container,
      initialViewState: {
        latitude: 0.86383134,
        longitude: -3.7530968,
        zoom: 6.026910164200768
      },
      controller: true,
      
      layers: [pointLayer, labelLayer],
      
      
      getTooltip: ({index}) => hoverData.data.hover_text[index]
    });
    
    document.getElementById("loading").style.display = "none";
        
    
        function selectPoints(item, conditional) {
        var layerId;
        if (item) {
            for (var i = 0; i < DATA.length; i++) {
                if (conditional(i)) {
                    DATA.src.selected[i] = 1;
                } else {
                    DATA.src.selected[i] = 0;
                }
            }
            layerId = 'selectedPointLayer' + item;
        } else {
            for (var i = 0; i < DATA.length; i++) {
                DATA.src.selected[i] = 1;
            }
            layerId = 'dataPointLayer';
        }
        const selectedPointLayer = pointLayer.clone(
            {
                id: layerId,
                data: DATA,
                getFilterValue: (object, {index, data}) => data.src.selected[index],
                filterRange: [1, 2],
                extensions: [new deck.DataFilterExtension({filterSize: 1})]
            }
        );
        deckgl.setProps(
            {layers: 
                [selectedPointLayer].concat(deckgl.props.layers.slice(1,))
            }
        );
    }
    
    const search = document.getElementById("search");
    search.addEventListener("input", (event) => {
            const search_term = event.target.value.toLowerCase();
            selectPoints(search_term, (i) => hoverData.data.hover_text[i].toLowerCase().includes(search_term));
        }
    );
    
    
    </script>
</html>