nwl-components 0.0.3 → 0.0.7

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.
@@ -21,21 +21,7 @@ var __publicField = (obj, key, value) => {
21
21
  __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
22
22
  return value;
23
23
  };
24
- var __accessCheck = (obj, member, msg) => {
25
- if (!member.has(obj))
26
- throw TypeError("Cannot " + msg);
27
- };
28
- var __privateAdd = (obj, member, value) => {
29
- if (member.has(obj))
30
- throw TypeError("Cannot add the same private member more than once");
31
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
32
- };
33
- var __privateMethod = (obj, member, method) => {
34
- __accessCheck(obj, member, "access private method");
35
- return method;
36
- };
37
- var _transformProjectFiles, transformProjectFiles_fn;
38
- import { openBlock, createElementBlock, mergeProps, reactive, ref, watch, onMounted, onUnmounted, unref, createVNode, withKeys, withDirectives, createElementVNode, Fragment, renderList, normalizeClass, toDisplayString, vShow, renderSlot, isRef, vModelText, withCtx, pushScopeId, popScopeId, createTextVNode, inject, toRefs, createBlock, createCommentVNode, vModelCheckbox } from "vue";
24
+ import { openBlock, createElementBlock, mergeProps, reactive, ref, watch, onMounted, onUnmounted, unref, createVNode, withKeys, withDirectives, createElementVNode, Fragment, renderList, normalizeClass, toDisplayString, vShow, renderSlot, isRef, vModelText, getCurrentInstance, createCommentVNode, createBlock, withCtx, pushScopeId, popScopeId, createTextVNode, inject, toRefs } from "vue";
39
25
  let nanoid = (size = 21) => {
40
26
  let id = "";
41
27
  let bytes = crypto.getRandomValues(new Uint8Array(size));
@@ -61,8 +47,8 @@ var _export_sfc = (sfc, props) => {
61
47
  }
62
48
  return target;
63
49
  };
64
- const _hoisted_1$f = ["value"];
65
- const _sfc_main$m = {
50
+ const _hoisted_1$k = ["value"];
51
+ const _sfc_main$q = {
66
52
  props: {
67
53
  placeholder: String,
68
54
  disabled: Boolean,
@@ -78,20 +64,20 @@ const _sfc_main$m = {
78
64
  return openBlock(), createElementBlock("input", mergeProps({ type: "text" }, props, {
79
65
  value: __props.modelValue,
80
66
  onInput: handleInput
81
- }), null, 16, _hoisted_1$f);
67
+ }), null, 16, _hoisted_1$k);
82
68
  };
83
69
  }
84
70
  };
85
- var TextInput = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-2cc3f9d3"]]);
71
+ var TextInput = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["__scopeId", "data-v-2cc3f9d3"]]);
86
72
  var Autocomplete_vue_vue_type_style_index_0_scoped_true_lang = "";
87
- const _hoisted_1$e = ["aria-owns", "aria-expanded"];
88
- const _hoisted_2$b = ["id"];
89
- const _hoisted_3$9 = {
73
+ const _hoisted_1$j = ["aria-owns", "aria-expanded"];
74
+ const _hoisted_2$d = ["id"];
75
+ const _hoisted_3$a = {
90
76
  key: 0,
91
77
  class: "loading"
92
78
  };
93
- const _hoisted_4$8 = ["onClick", "id", "aria-selected"];
94
- const _sfc_main$l = {
79
+ const _hoisted_4$9 = ["onClick", "id", "aria-selected"];
80
+ const _sfc_main$p = {
95
81
  props: {
96
82
  items: {
97
83
  type: Array,
@@ -229,7 +215,7 @@ const _sfc_main$l = {
229
215
  class: "autocomplete-results",
230
216
  role: "listbox"
231
217
  }, [
232
- unref(state2).isLoading ? (openBlock(), createElementBlock("li", _hoisted_3$9, "Loading results...")) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(state2).results, (result, i) => {
218
+ unref(state2).isLoading ? (openBlock(), createElementBlock("li", _hoisted_3$a, "Loading results...")) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(unref(state2).results, (result, i) => {
233
219
  return openBlock(), createElementBlock("li", {
234
220
  key: i,
235
221
  onClick: ($event) => setResult(result),
@@ -237,19 +223,19 @@ const _sfc_main$l = {
237
223
  role: "option",
238
224
  id: getId(i),
239
225
  "aria-selected": isSelected(i)
240
- }, toDisplayString(props.extractResultText(result)), 11, _hoisted_4$8);
226
+ }, toDisplayString(props.extractResultText(result)), 11, _hoisted_4$9);
241
227
  }), 128))
242
- ], 8, _hoisted_2$b), [
228
+ ], 8, _hoisted_2$d), [
243
229
  [vShow, unref(state2).isOpen]
244
230
  ])
245
- ], 8, _hoisted_1$e);
231
+ ], 8, _hoisted_1$j);
246
232
  };
247
233
  }
248
234
  };
249
- var Autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-ee76199e"]]);
235
+ var Autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["__scopeId", "data-v-ee76199e"]]);
250
236
  var Button_vue_vue_type_style_index_0_scoped_true_lang = "";
251
- const _hoisted_1$d = ["title", "disabled"];
252
- const _sfc_main$k = {
237
+ const _hoisted_1$i = ["title", "disabled"];
238
+ const _sfc_main$o = {
253
239
  props: {
254
240
  className: String,
255
241
  title: String,
@@ -269,13 +255,13 @@ const _sfc_main$k = {
269
255
  class: normalizeClass(classes)
270
256
  }, [
271
257
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
272
- ], 8, _hoisted_1$d);
258
+ ], 8, _hoisted_1$i);
273
259
  };
274
260
  }
275
261
  };
276
- var Button = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-5e5f2114"]]);
262
+ var Button = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["__scopeId", "data-v-5e5f2114"]]);
277
263
  var Select_vue_vue_type_style_index_0_scoped_true_lang = "";
278
- const _sfc_main$j = {
264
+ const _sfc_main$n = {
279
265
  props: {
280
266
  disabled: Boolean,
281
267
  modelValue: String
@@ -304,9 +290,9 @@ const _sfc_main$j = {
304
290
  };
305
291
  }
306
292
  };
307
- var Select = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-976df3ea"]]);
293
+ var Select = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["__scopeId", "data-v-976df3ea"]]);
308
294
  var TextArea_vue_vue_type_style_index_0_scoped_true_lang = "";
309
- const _sfc_main$i = {
295
+ const _sfc_main$m = {
310
296
  props: {
311
297
  placeholder: String,
312
298
  disabled: Boolean,
@@ -328,10 +314,10 @@ const _sfc_main$i = {
328
314
  };
329
315
  }
330
316
  };
331
- var TextArea = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-0c2bd53c"]]);
317
+ var TextArea = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["__scopeId", "data-v-0c2bd53c"]]);
332
318
  var Table_vue_vue_type_style_index_0_scoped_true_lang = "";
333
- const _hoisted_1$c = ["id"];
334
- const _sfc_main$h = {
319
+ const _hoisted_1$h = ["id"];
320
+ const _sfc_main$l = {
335
321
  props: {
336
322
  id: String
337
323
  },
@@ -342,27 +328,111 @@ const _sfc_main$h = {
342
328
  id: props.id
343
329
  }, [
344
330
  renderSlot(_ctx.$slots, "default", {}, void 0, true)
345
- ], 8, _hoisted_1$c);
331
+ ], 8, _hoisted_1$h);
346
332
  };
347
333
  }
348
334
  };
349
- var Table = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-6416d86a"]]);
335
+ var Table = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["__scopeId", "data-v-2b42a47b"]]);
336
+ var Checkbox_vue_vue_type_style_index_0_scoped_true_lang = "";
337
+ const _hoisted_1$g = ["aria-checked"];
338
+ const _sfc_main$k = {
339
+ props: {
340
+ modelValue: Boolean
341
+ },
342
+ emits: ["update:modelValue", "change"],
343
+ setup(__props, { emit }) {
344
+ const props = __props;
345
+ const isChecked = ref(props.modelValue);
346
+ if (typeof props.modelValue === "string") {
347
+ isChecked.value === props.modelValue === "true";
348
+ }
349
+ const toggleCheckbox = (key) => {
350
+ if (key != null && key !== " ") {
351
+ return;
352
+ }
353
+ isChecked.value = !isChecked.value;
354
+ emit("change", isChecked.value);
355
+ emit("update:modelValue", isChecked.value);
356
+ };
357
+ return (_ctx, _cache) => {
358
+ return openBlock(), createElementBlock("span", {
359
+ role: "checkbox",
360
+ "aria-checked": isChecked.value,
361
+ onClick: _cache[0] || (_cache[0] = ($event) => toggleCheckbox()),
362
+ onKeydown: _cache[1] || (_cache[1] = ($event) => toggleCheckbox($event.key)),
363
+ tabindex: "0",
364
+ "aria-label": "label"
365
+ }, null, 40, _hoisted_1$g);
366
+ };
367
+ }
368
+ };
369
+ var Checkbox = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["__scopeId", "data-v-f63b8f34"]]);
370
+ var Tabs_vue_vue_type_style_index_0_scoped_true_lang = "";
371
+ const _hoisted_1$f = { class: "tabs" };
372
+ const _hoisted_2$c = ["onClick"];
373
+ const _sfc_main$j = {
374
+ setup(__props) {
375
+ const selectedIndex = ref(0);
376
+ const instance = getCurrentInstance();
377
+ const children = instance.vnode.children.default();
378
+ const CurrentTab = {
379
+ render: () => children[selectedIndex.value]
380
+ };
381
+ const selectTab = (i) => {
382
+ selectedIndex.value = i;
383
+ };
384
+ return (_ctx, _cache) => {
385
+ return openBlock(), createElementBlock("div", _hoisted_1$f, [
386
+ createElementVNode("ul", null, [
387
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(children), (tab, index) => {
388
+ return openBlock(), createElementBlock("li", {
389
+ key: tab.props.title,
390
+ onClick: ($event) => selectTab(index),
391
+ class: normalizeClass({ "selected": index == selectedIndex.value })
392
+ }, toDisplayString(tab.props.title), 11, _hoisted_2$c);
393
+ }), 128))
394
+ ]),
395
+ createCommentVNode("", true),
396
+ (openBlock(), createBlock(CurrentTab, { key: selectedIndex.value }))
397
+ ]);
398
+ };
399
+ }
400
+ };
401
+ var Tabs = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["__scopeId", "data-v-7928afe0"]]);
402
+ var Tab_vue_vue_type_style_index_0_scoped_true_lang = "";
403
+ const _hoisted_1$e = { class: "content" };
404
+ const _sfc_main$i = {
405
+ props: {
406
+ title: {
407
+ type: String,
408
+ required: true
409
+ }
410
+ },
411
+ setup(__props) {
412
+ return (_ctx, _cache) => {
413
+ return openBlock(), createElementBlock("div", _hoisted_1$e, [
414
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
415
+ ]);
416
+ };
417
+ }
418
+ };
419
+ var Tab = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["__scopeId", "data-v-33e54edc"]]);
350
420
  var ImportFilesDialog_vue_vue_type_style_index_0_scoped_true_lang = "";
351
- const _withScopeId$6 = (n) => (pushScopeId("data-v-21580a08"), n = n(), popScopeId(), n);
352
- const _hoisted_1$b = { class: "dialog" };
353
- const _hoisted_2$a = { class: "contents" };
354
- const _hoisted_3$8 = { class: "scrollable" };
355
- const _hoisted_4$7 = /* @__PURE__ */ _withScopeId$6(() => /* @__PURE__ */ createElementVNode("thead", null, [
421
+ const _withScopeId$7 = (n) => (pushScopeId("data-v-21580a08"), n = n(), popScopeId(), n);
422
+ const _hoisted_1$d = { class: "dialog" };
423
+ const _hoisted_2$b = { class: "contents" };
424
+ const _hoisted_3$9 = { class: "scrollable" };
425
+ const _hoisted_4$8 = /* @__PURE__ */ _withScopeId$7(() => /* @__PURE__ */ createElementVNode("thead", null, [
356
426
  /* @__PURE__ */ createElementVNode("tr", null, [
357
427
  /* @__PURE__ */ createElementVNode("th", null, "URL"),
358
428
  /* @__PURE__ */ createElementVNode("th", null, "Name")
359
429
  ])
360
430
  ], -1));
361
- const _hoisted_5$6 = ["onBlur"];
362
- const _hoisted_6$5 = { class: "actions" };
363
- const _hoisted_7$5 = /* @__PURE__ */ createTextVNode(" Import ");
364
- const _hoisted_8$5 = /* @__PURE__ */ createTextVNode(" Cancel ");
365
- const _sfc_main$g = {
431
+ const _hoisted_5$7 = ["onBlur"];
432
+ const _hoisted_6$6 = { class: "actions" };
433
+ const _hoisted_7$6 = /* @__PURE__ */ createTextVNode(" Import ");
434
+ const _hoisted_8$6 = /* @__PURE__ */ createTextVNode(" Cancel ");
435
+ const _sfc_main$h = {
366
436
  props: {
367
437
  files: {
368
438
  type: Array,
@@ -373,11 +443,11 @@ const _sfc_main$g = {
373
443
  const props = __props;
374
444
  const filesToImport = ref(props.files);
375
445
  return (_ctx, _cache) => {
376
- return openBlock(), createElementBlock("div", _hoisted_1$b, [
377
- createElementVNode("div", _hoisted_2$a, [
378
- createElementVNode("div", _hoisted_3$8, [
446
+ return openBlock(), createElementBlock("div", _hoisted_1$d, [
447
+ createElementVNode("div", _hoisted_2$b, [
448
+ createElementVNode("div", _hoisted_3$9, [
379
449
  createElementVNode("table", null, [
380
- _hoisted_4$7,
450
+ _hoisted_4$8,
381
451
  createElementVNode("tbody", null, [
382
452
  (openBlock(true), createElementBlock(Fragment, null, renderList(filesToImport.value, (file) => {
383
453
  return openBlock(), createElementBlock("tr", {
@@ -386,20 +456,20 @@ const _sfc_main$g = {
386
456
  createElementVNode("td", {
387
457
  contentEditable: "true",
388
458
  onBlur: ($event) => file.source = $event.currentTarget.textContent
389
- }, toDisplayString(file.source), 41, _hoisted_5$6),
459
+ }, toDisplayString(file.source), 41, _hoisted_5$7),
390
460
  createElementVNode("td", null, toDisplayString(file.name), 1)
391
461
  ]);
392
462
  }), 128))
393
463
  ])
394
464
  ])
395
465
  ]),
396
- createElementVNode("div", _hoisted_6$5, [
466
+ createElementVNode("div", _hoisted_6$6, [
397
467
  createVNode(Button, {
398
468
  className: "push-button",
399
469
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("import", filesToImport.value))
400
470
  }, {
401
471
  default: withCtx(() => [
402
- _hoisted_7$5
472
+ _hoisted_7$6
403
473
  ]),
404
474
  _: 1
405
475
  }),
@@ -408,7 +478,7 @@ const _sfc_main$g = {
408
478
  onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("cancel"))
409
479
  }, {
410
480
  default: withCtx(() => [
411
- _hoisted_8$5
481
+ _hoisted_8$6
412
482
  ]),
413
483
  _: 1
414
484
  })
@@ -418,23 +488,23 @@ const _sfc_main$g = {
418
488
  };
419
489
  }
420
490
  };
421
- var ImportFilesDialog = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["__scopeId", "data-v-21580a08"]]);
491
+ var ImportFilesDialog = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["__scopeId", "data-v-21580a08"]]);
422
492
  var TwoCols_vue_vue_type_style_index_0_lang = "";
423
- const _sfc_main$f = {};
424
- const _hoisted_1$a = { class: "container" };
425
- const _hoisted_2$9 = { class: "side" };
426
- const _hoisted_3$7 = { class: "content" };
493
+ const _sfc_main$g = {};
494
+ const _hoisted_1$c = { class: "container" };
495
+ const _hoisted_2$a = { class: "side" };
496
+ const _hoisted_3$8 = { class: "content" };
427
497
  function _sfc_render$2(_ctx, _cache) {
428
- return openBlock(), createElementBlock("div", _hoisted_1$a, [
429
- createElementVNode("div", _hoisted_2$9, [
498
+ return openBlock(), createElementBlock("div", _hoisted_1$c, [
499
+ createElementVNode("div", _hoisted_2$a, [
430
500
  renderSlot(_ctx.$slots, "side")
431
501
  ]),
432
- createElementVNode("div", _hoisted_3$7, [
502
+ createElementVNode("div", _hoisted_3$8, [
433
503
  renderSlot(_ctx.$slots, "content")
434
504
  ])
435
505
  ]);
436
506
  }
437
- var TwoCols = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$2]]);
507
+ var TwoCols = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$2]]);
438
508
  function parseHex(hash, startPosition, octets) {
439
509
  return parseInt(hash.substr(startPosition, octets), 16);
440
510
  }
@@ -2305,7 +2375,7 @@ var lodash = { exports: {} };
2305
2375
  if (typeof func != "function") {
2306
2376
  throw new TypeError2(FUNC_ERROR_TEXT);
2307
2377
  }
2308
- return setTimeout(function() {
2378
+ return setTimeout2(function() {
2309
2379
  func.apply(undefined$1, args);
2310
2380
  }, wait);
2311
2381
  }
@@ -4114,7 +4184,7 @@ var lodash = { exports: {} };
4114
4184
  return object[key];
4115
4185
  }
4116
4186
  var setData = shortOut(baseSetData);
4117
- var setTimeout = ctxSetTimeout || function(func, wait) {
4187
+ var setTimeout2 = ctxSetTimeout || function(func, wait) {
4118
4188
  return root.setTimeout(func, wait);
4119
4189
  };
4120
4190
  var setToString = shortOut(baseSetToString);
@@ -4906,7 +4976,7 @@ var lodash = { exports: {} };
4906
4976
  }
4907
4977
  function leadingEdge(time) {
4908
4978
  lastInvokeTime = time;
4909
- timerId = setTimeout(timerExpired, wait);
4979
+ timerId = setTimeout2(timerExpired, wait);
4910
4980
  return leading ? invokeFunc(time) : result2;
4911
4981
  }
4912
4982
  function remainingWait(time) {
@@ -4922,7 +4992,7 @@ var lodash = { exports: {} };
4922
4992
  if (shouldInvoke(time)) {
4923
4993
  return trailingEdge(time);
4924
4994
  }
4925
- timerId = setTimeout(timerExpired, remainingWait(time));
4995
+ timerId = setTimeout2(timerExpired, remainingWait(time));
4926
4996
  }
4927
4997
  function trailingEdge(time) {
4928
4998
  timerId = undefined$1;
@@ -4953,12 +5023,12 @@ var lodash = { exports: {} };
4953
5023
  }
4954
5024
  if (maxing) {
4955
5025
  clearTimeout(timerId);
4956
- timerId = setTimeout(timerExpired, wait);
5026
+ timerId = setTimeout2(timerExpired, wait);
4957
5027
  return invokeFunc(lastCallTime);
4958
5028
  }
4959
5029
  }
4960
5030
  if (timerId === undefined$1) {
4961
- timerId = setTimeout(timerExpired, wait);
5031
+ timerId = setTimeout2(timerExpired, wait);
4962
5032
  }
4963
5033
  return result2;
4964
5034
  }
@@ -6539,38 +6609,52 @@ var lodash = { exports: {} };
6539
6609
  })(lodash, lodash.exports);
6540
6610
  class ProjectService {
6541
6611
  constructor(baseURL) {
6542
- __privateAdd(this, _transformProjectFiles);
6543
6612
  __publicField(this, "baseURL", "");
6544
6613
  this.baseURL = baseURL;
6545
6614
  }
6615
+ transformProjectFiles(project) {
6616
+ if (lodash.exports.get(project, "files.list") != null) {
6617
+ return __spreadProps(__spreadValues({}, project), {
6618
+ files: __spreadProps(__spreadValues({}, project.files), {
6619
+ list: project.files.list.map((file) => {
6620
+ if (typeof file === "string") {
6621
+ const splitAt = file.lastIndexOf("/");
6622
+ return {
6623
+ source: file,
6624
+ name: splitAt > 0 ? file.substring(splitAt + 1) : ""
6625
+ };
6626
+ }
6627
+ return file;
6628
+ })
6629
+ })
6630
+ });
6631
+ }
6632
+ return project;
6633
+ }
6546
6634
  async fetch(id) {
6547
- return __privateMethod(this, _transformProjectFiles, transformProjectFiles_fn).call(this, await (await fetch(`${this.baseURL}/project/json/${id}`)).json());
6635
+ return this.transformProjectFiles(await (await fetch(`${this.baseURL}/project/json/${id}`)).json());
6548
6636
  }
6549
6637
  async save(data) {
6638
+ const res = await fetch(`${this.baseURL}/project/json/${data.shortname}`, {
6639
+ method: "POST",
6640
+ headers: {
6641
+ Accept: "application/json",
6642
+ "Content-Type": "application/json"
6643
+ },
6644
+ body: JSON.stringify({
6645
+ data
6646
+ })
6647
+ });
6648
+ return await res.json();
6550
6649
  }
6551
6650
  async delete(id) {
6552
- }
6553
- }
6554
- _transformProjectFiles = new WeakSet();
6555
- transformProjectFiles_fn = function(project2) {
6556
- if (lodash.exports.get(project2, "files.list") != null) {
6557
- return __spreadProps(__spreadValues({}, project2), {
6558
- files: __spreadProps(__spreadValues({}, project2.files), {
6559
- list: project2.files.list.map((file) => {
6560
- if (typeof file === "string") {
6561
- const splitAt = file.lastIndexOf("/");
6562
- return {
6563
- source: file,
6564
- name: splitAt > 0 ? file.substring(splitAt + 1) : ""
6565
- };
6566
- }
6567
- return file;
6568
- })
6569
- })
6651
+ const res = await fetch(`${this.baseURL}/project/json/${id}`, {
6652
+ method: "DELETE",
6653
+ headers: { "Content-Type": "application/json" }
6570
6654
  });
6655
+ return await res.json();
6571
6656
  }
6572
- return project2;
6573
- };
6657
+ }
6574
6658
  const state = reactive({
6575
6659
  project: null,
6576
6660
  loading: true
@@ -6578,13 +6662,19 @@ const state = reactive({
6578
6662
  function useProject() {
6579
6663
  const { baseURL } = inject("config");
6580
6664
  const service = new ProjectService(baseURL);
6665
+ const setProject = (project) => {
6666
+ state.project = service.transformProjectFiles(project);
6667
+ };
6581
6668
  const fetchProject = async (id) => {
6582
6669
  state.loading = true;
6583
6670
  state.project = await service.fetch(id);
6584
6671
  state.loading = false;
6585
6672
  };
6586
- const saveProject = async () => {
6587
- await service.save(project);
6673
+ const saveProject = async (project) => {
6674
+ return await service.save(project);
6675
+ };
6676
+ const deleteProject = async (id) => {
6677
+ return await service.delete(id);
6588
6678
  };
6589
6679
  const updateProject = (data) => {
6590
6680
  if (!state.project)
@@ -6652,8 +6742,10 @@ function useProject() {
6652
6742
  state.project.files.list = state.project.files.list.filter((file) => !filesIdx.includes(state.project.files.list.indexOf(file)));
6653
6743
  };
6654
6744
  return __spreadProps(__spreadValues({}, toRefs(state)), {
6745
+ setProject,
6655
6746
  fetchProject,
6656
6747
  saveProject,
6748
+ deleteProject,
6657
6749
  updateProject,
6658
6750
  addCollaborator,
6659
6751
  updateCollaborator,
@@ -6667,89 +6759,104 @@ function useProject() {
6667
6759
  });
6668
6760
  }
6669
6761
  var ProjectInfo_vue_vue_type_style_index_0_scoped_true_lang = "";
6670
- const _withScopeId$5 = (n) => (pushScopeId("data-v-7003e800"), n = n(), popScopeId(), n);
6671
- const _hoisted_1$9 = { class: "image" };
6672
- const _hoisted_2$8 = ["href"];
6673
- const _hoisted_3$6 = /* @__PURE__ */ _withScopeId$5(() => /* @__PURE__ */ createElementVNode("svg", {
6762
+ const _withScopeId$6 = (n) => (pushScopeId("data-v-51e11f34"), n = n(), popScopeId(), n);
6763
+ const _hoisted_1$b = { class: "image" };
6764
+ const _hoisted_2$9 = ["href"];
6765
+ const _hoisted_3$7 = /* @__PURE__ */ _withScopeId$6(() => /* @__PURE__ */ createElementVNode("svg", {
6674
6766
  id: "jdenticon",
6675
6767
  width: "100%",
6676
6768
  height: "100%"
6677
6769
  }, null, -1));
6678
- const _hoisted_4$6 = [
6679
- _hoisted_3$6
6770
+ const _hoisted_4$7 = [
6771
+ _hoisted_3$7
6680
6772
  ];
6681
- const _hoisted_5$5 = { class: "description" };
6682
- const _hoisted_6$4 = ["href"];
6683
- const _hoisted_7$4 = /* @__PURE__ */ createTextVNode(" by ");
6684
- const _hoisted_8$4 = ["href"];
6685
- const _hoisted_9$3 = { id: "numCollaborators" };
6773
+ const _hoisted_5$6 = { class: "description" };
6774
+ const _hoisted_6$5 = ["href"];
6775
+ const _hoisted_7$5 = /* @__PURE__ */ createTextVNode(" by ");
6776
+ const _hoisted_8$5 = ["href"];
6777
+ const _hoisted_9$4 = { id: "numCollaborators" };
6686
6778
  const _hoisted_10$3 = /* @__PURE__ */ createTextVNode(" Collaborators ");
6687
- const _hoisted_11$1 = { id: "numAnnotations" };
6688
- const _hoisted_12$1 = /* @__PURE__ */ createTextVNode(" Annotations ");
6779
+ const _hoisted_11$2 = { id: "numAnnotations" };
6780
+ const _hoisted_12$2 = /* @__PURE__ */ createTextVNode(" Annotations ");
6689
6781
  const _hoisted_13$1 = { id: "numFiles" };
6690
6782
  const _hoisted_14$1 = /* @__PURE__ */ createTextVNode(" Data Files ");
6691
6783
  const _hoisted_15$1 = { class: "actions" };
6692
6784
  const _hoisted_16$1 = /* @__PURE__ */ createTextVNode("Save Changes");
6693
6785
  const _hoisted_17$1 = /* @__PURE__ */ createTextVNode("Delete Project");
6694
6786
  const _hoisted_18$1 = /* @__PURE__ */ createTextVNode("Go to Project");
6695
- const _hoisted_19$1 = /* @__PURE__ */ _withScopeId$5(() => /* @__PURE__ */ createElementVNode("p", { id: "saveFeedback" }, null, -1));
6696
- const _sfc_main$e = {
6787
+ const _hoisted_19$1 = { id: "saveFeedback" };
6788
+ const _sfc_main$f = {
6697
6789
  setup(__props) {
6698
- const { project: project2 } = useProject();
6699
- const handleProjectSave = () => {
6700
- alert(JSON.stringify(project2.value));
6790
+ const { project, saveProject, deleteProject } = useProject();
6791
+ const feedback = ref("");
6792
+ const handleProjectSave = async () => {
6793
+ const res = await saveProject(project.value);
6794
+ if (res.success) {
6795
+ feedback.value = res.message;
6796
+ } else if (res.error) {
6797
+ feedback.value = res.error;
6798
+ }
6701
6799
  };
6702
- const handleProjectDeletion = () => {
6703
- const res = confirm("Are you sure you want to delete project " + project2.shortname + "? This operation cannot be undone.");
6704
- if (res !== true) {
6800
+ const handleProjectDeletion = async () => {
6801
+ const confirmation = confirm("Are you sure you want to delete project " + project.value.shortname + "? This operation cannot be undone.");
6802
+ if (!confirmation) {
6705
6803
  return;
6706
6804
  }
6805
+ const res = await deleteProject(project.value.shortname);
6806
+ if (res.success) {
6807
+ feedback.value = "Successfully deleted";
6808
+ setTimeout(function() {
6809
+ window.location.assign("/");
6810
+ }, 2e3);
6811
+ } else {
6812
+ feedback.value = "Unable to delete project";
6813
+ }
6707
6814
  };
6708
6815
  const goToProject = () => {
6709
- window.location.assign(`/project/${project2.value.shortname}`);
6816
+ window.location.assign(`/project/${project.value.shortname}`);
6710
6817
  };
6711
6818
  onMounted(() => {
6712
- update(document.getElementById("jdenticon"), md5(project2.value.shortname));
6819
+ update(document.getElementById("jdenticon"), md5(project.value.shortname));
6713
6820
  });
6714
6821
  return (_ctx, _cache) => {
6715
6822
  return openBlock(), createElementBlock(Fragment, null, [
6716
- createElementVNode("div", _hoisted_1$9, [
6823
+ createElementVNode("div", _hoisted_1$b, [
6717
6824
  createElementVNode("a", {
6718
- href: `/project/${unref(project2).shortname}`
6719
- }, _hoisted_4$6, 8, _hoisted_2$8)
6825
+ href: `/project/${unref(project).shortname}`
6826
+ }, _hoisted_4$7, 8, _hoisted_2$9)
6720
6827
  ]),
6721
- createElementVNode("div", _hoisted_5$5, [
6828
+ createElementVNode("div", _hoisted_5$6, [
6722
6829
  createElementVNode("a", {
6723
- href: `/project/${unref(project2).shortname}`
6830
+ href: `/project/${unref(project).shortname}`
6724
6831
  }, [
6725
- createElementVNode("h1", null, toDisplayString(unref(project2).shortname), 1)
6726
- ], 8, _hoisted_6$4),
6832
+ createElementVNode("h1", null, toDisplayString(unref(project).shortname), 1)
6833
+ ], 8, _hoisted_6$5),
6727
6834
  createVNode(TextInput, {
6728
- modelValue: unref(project2).url,
6729
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unref(project2).url = $event),
6835
+ modelValue: unref(project).url,
6836
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => unref(project).url = $event),
6730
6837
  placeholder: "Enter a project website"
6731
6838
  }, null, 8, ["modelValue"]),
6732
6839
  createElementVNode("p", null, [
6733
- _hoisted_7$4,
6840
+ _hoisted_7$5,
6734
6841
  createElementVNode("a", {
6735
- href: `/user/${unref(project2).owner}`
6736
- }, toDisplayString(unref(project2).owner), 9, _hoisted_8$4)
6842
+ href: `/user/${unref(project).owner}`
6843
+ }, toDisplayString(unref(project).owner), 9, _hoisted_8$5)
6737
6844
  ]),
6738
6845
  createVNode(TextArea, {
6739
- modelValue: unref(project2).description,
6740
- "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => unref(project2).description = $event),
6846
+ modelValue: unref(project).description,
6847
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => unref(project).description = $event),
6741
6848
  placeholder: "Enter a project description"
6742
6849
  }, null, 8, ["modelValue"]),
6743
6850
  createElementVNode("p", null, [
6744
- createElementVNode("span", _hoisted_9$3, toDisplayString(unref(project2).collaborators.list.length), 1),
6851
+ createElementVNode("span", _hoisted_9$4, toDisplayString(unref(project).collaborators.list.length), 1),
6745
6852
  _hoisted_10$3
6746
6853
  ]),
6747
6854
  createElementVNode("p", null, [
6748
- createElementVNode("span", _hoisted_11$1, toDisplayString(unref(project2).annotations.list.length), 1),
6749
- _hoisted_12$1
6855
+ createElementVNode("span", _hoisted_11$2, toDisplayString(unref(project).annotations.list.length), 1),
6856
+ _hoisted_12$2
6750
6857
  ]),
6751
6858
  createElementVNode("p", null, [
6752
- createElementVNode("span", _hoisted_13$1, toDisplayString(unref(project2).files.list.length), 1),
6859
+ createElementVNode("span", _hoisted_13$1, toDisplayString(unref(project).files.list.length), 1),
6753
6860
  _hoisted_14$1
6754
6861
  ]),
6755
6862
  createElementVNode("div", _hoisted_15$1, [
@@ -6780,21 +6887,21 @@ const _sfc_main$e = {
6780
6887
  ]),
6781
6888
  _: 1
6782
6889
  }),
6783
- _hoisted_19$1
6890
+ createElementVNode("p", _hoisted_19$1, toDisplayString(feedback.value), 1)
6784
6891
  ])
6785
6892
  ])
6786
6893
  ], 64);
6787
6894
  };
6788
6895
  }
6789
6896
  };
6790
- var ProjectInfo = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-7003e800"]]);
6897
+ var ProjectInfo = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["__scopeId", "data-v-51e11f34"]]);
6791
6898
  var Access_vue_vue_type_style_index_0_scoped_true_lang = "";
6792
- const _hoisted_1$8 = ["data-level"];
6793
- const _hoisted_2$7 = ["title"];
6794
- const _hoisted_3$5 = ["title"];
6795
- const _hoisted_4$5 = ["title"];
6796
- const _hoisted_5$4 = ["title"];
6797
- const _sfc_main$d = {
6899
+ const _hoisted_1$a = ["data-level"];
6900
+ const _hoisted_2$8 = ["title"];
6901
+ const _hoisted_3$6 = ["title"];
6902
+ const _hoisted_4$6 = ["title"];
6903
+ const _hoisted_5$5 = ["title"];
6904
+ const _sfc_main$e = {
6798
6905
  props: {
6799
6906
  collaborator: Object,
6800
6907
  type: String
@@ -6811,30 +6918,30 @@ const _sfc_main$d = {
6811
6918
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("updateAccess", __props.collaborator, __props.type, 1)),
6812
6919
  class: "view",
6813
6920
  title: `view ${__props.type}`
6814
- }, null, 8, _hoisted_2$7),
6921
+ }, null, 8, _hoisted_2$8),
6815
6922
  createElementVNode("button", {
6816
6923
  small: true,
6817
6924
  onClick: _cache[1] || (_cache[1] = ($event) => _ctx.$emit("updateAccess", __props.collaborator, __props.type, 2)),
6818
6925
  class: "edit",
6819
6926
  title: `edit ${__props.type}`
6820
- }, null, 8, _hoisted_3$5),
6927
+ }, null, 8, _hoisted_3$6),
6821
6928
  createElementVNode("button", {
6822
6929
  small: true,
6823
6930
  onClick: _cache[2] || (_cache[2] = ($event) => _ctx.$emit("updateAccess", __props.collaborator, __props.type, 3)),
6824
6931
  class: "add",
6825
6932
  title: `add ${__props.type}`
6826
- }, null, 8, _hoisted_4$5),
6933
+ }, null, 8, _hoisted_4$6),
6827
6934
  createElementVNode("button", {
6828
6935
  small: true,
6829
6936
  onClick: _cache[3] || (_cache[3] = ($event) => _ctx.$emit("updateAccess", __props.collaborator, __props.type, 4)),
6830
6937
  class: "remove",
6831
6938
  title: `remove ${__props.type}`
6832
- }, null, 8, _hoisted_5$4)
6833
- ], 8, _hoisted_1$8);
6939
+ }, null, 8, _hoisted_5$5)
6940
+ ], 8, _hoisted_1$a);
6834
6941
  };
6835
6942
  }
6836
6943
  };
6837
- var Access = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-1db05093"]]);
6944
+ var Access = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["__scopeId", "data-v-1db05093"]]);
6838
6945
  const _AccessLevel = class {
6839
6946
  constructor(level) {
6840
6947
  __publicField(this, "numericalLevel", 0);
@@ -6874,10 +6981,10 @@ __publicField(AccessLevel, "EDIT", new _AccessLevel("edit"));
6874
6981
  __publicField(AccessLevel, "ADD", new _AccessLevel("add"));
6875
6982
  __publicField(AccessLevel, "REMOVE", new _AccessLevel("remove"));
6876
6983
  var PureCollaborators_vue_vue_type_style_index_0_scoped_true_lang = "";
6877
- const _withScopeId$4 = (n) => (pushScopeId("data-v-2d19ee37"), n = n(), popScopeId(), n);
6878
- const _hoisted_1$7 = { class: "wrapper" };
6879
- const _hoisted_2$6 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("h2", null, "Access", -1));
6880
- const _hoisted_3$4 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("thead", null, [
6984
+ const _withScopeId$5 = (n) => (pushScopeId("data-v-2d19ee37"), n = n(), popScopeId(), n);
6985
+ const _hoisted_1$9 = { class: "wrapper" };
6986
+ const _hoisted_2$7 = /* @__PURE__ */ _withScopeId$5(() => /* @__PURE__ */ createElementVNode("h2", null, "Access", -1));
6987
+ const _hoisted_3$5 = /* @__PURE__ */ _withScopeId$5(() => /* @__PURE__ */ createElementVNode("thead", null, [
6881
6988
  /* @__PURE__ */ createElementVNode("tr", null, [
6882
6989
  /* @__PURE__ */ createElementVNode("th", null, "User Name"),
6883
6990
  /* @__PURE__ */ createElementVNode("th", null, "Name"),
@@ -6886,12 +6993,12 @@ const _hoisted_3$4 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ create
6886
6993
  /* @__PURE__ */ createElementVNode("th", null, "Files")
6887
6994
  ])
6888
6995
  ], -1));
6889
- const _hoisted_4$4 = ["onClick"];
6890
- const _hoisted_5$3 = { style: { "position": "relative" } };
6891
- const _hoisted_6$3 = { class: "actions" };
6892
- const _hoisted_7$3 = /* @__PURE__ */ createTextVNode(" + ");
6893
- const _hoisted_8$3 = /* @__PURE__ */ createTextVNode(" - ");
6894
- const _sfc_main$c = {
6996
+ const _hoisted_4$5 = ["onClick"];
6997
+ const _hoisted_5$4 = { style: { "position": "relative" } };
6998
+ const _hoisted_6$4 = { class: "actions" };
6999
+ const _hoisted_7$4 = /* @__PURE__ */ createTextVNode(" + ");
7000
+ const _hoisted_8$4 = /* @__PURE__ */ createTextVNode(" - ");
7001
+ const _sfc_main$d = {
6895
7002
  props: {
6896
7003
  collaborators: {
6897
7004
  type: Array,
@@ -6945,11 +7052,11 @@ const _sfc_main$c = {
6945
7052
  });
6946
7053
  };
6947
7054
  return (_ctx, _cache) => {
6948
- return openBlock(), createElementBlock("div", _hoisted_1$7, [
6949
- _hoisted_2$6,
7055
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
7056
+ _hoisted_2$7,
6950
7057
  createVNode(Table, { id: "access" }, {
6951
7058
  default: withCtx(() => [
6952
- _hoisted_3$4,
7059
+ _hoisted_3$5,
6953
7060
  createElementVNode("tbody", null, [
6954
7061
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.collaborators, (collaborator, idx) => {
6955
7062
  return openBlock(), createElementBlock("tr", {
@@ -6957,7 +7064,7 @@ const _sfc_main$c = {
6957
7064
  class: normalizeClass({ selected: selected.value === idx }),
6958
7065
  onClick: ($event) => handleRowClick($event, idx)
6959
7066
  }, [
6960
- createElementVNode("td", _hoisted_5$3, [
7067
+ createElementVNode("td", _hoisted_5$4, [
6961
7068
  createVNode(Autocomplete, {
6962
7069
  onInput: unref(handleUserSearch),
6963
7070
  onSelect: handleUserSelect,
@@ -7001,20 +7108,20 @@ const _sfc_main$c = {
7001
7108
  onUpdateAccess: handleAccessChange
7002
7109
  }, null, 8, ["collaborator"])
7003
7110
  ])
7004
- ], 10, _hoisted_4$4);
7111
+ ], 10, _hoisted_4$5);
7005
7112
  }), 128))
7006
7113
  ])
7007
7114
  ]),
7008
7115
  _: 1
7009
7116
  }),
7010
- createElementVNode("div", _hoisted_6$3, [
7117
+ createElementVNode("div", _hoisted_6$4, [
7011
7118
  createVNode(Button, {
7012
7119
  small: true,
7013
7120
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("addCollaborator")),
7014
7121
  title: "Add collaborator"
7015
7122
  }, {
7016
7123
  default: withCtx(() => [
7017
- _hoisted_7$3
7124
+ _hoisted_7$4
7018
7125
  ]),
7019
7126
  _: 1
7020
7127
  }),
@@ -7028,7 +7135,7 @@ const _sfc_main$c = {
7028
7135
  disabled: selected.value == null || __props.collaborators[selected.value].userID === "anyone"
7029
7136
  }, {
7030
7137
  default: withCtx(() => [
7031
- _hoisted_8$3
7138
+ _hoisted_8$4
7032
7139
  ]),
7033
7140
  _: 1
7034
7141
  }, 8, ["disabled"])
@@ -7037,12 +7144,13 @@ const _sfc_main$c = {
7037
7144
  };
7038
7145
  }
7039
7146
  };
7040
- var PureCollaborators = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["__scopeId", "data-v-2d19ee37"]]);
7147
+ var PureCollaborators = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["__scopeId", "data-v-2d19ee37"]]);
7041
7148
  const usersFound = reactive([]);
7042
7149
  function useUserSearch() {
7150
+ const { userSearchURL } = inject("config");
7043
7151
  const fetchUsers = async (q) => {
7044
7152
  usersFound.splice(0, usersFound.length);
7045
- const users = await (await fetch(`https://brainbox.pasteur.fr/api/userNameQuery?q=${q}`)).json();
7153
+ const users = await (await fetch(`${userSearchURL}${q}`)).json();
7046
7154
  usersFound.push(...users);
7047
7155
  };
7048
7156
  return {
@@ -7050,10 +7158,10 @@ function useUserSearch() {
7050
7158
  fetchUsers
7051
7159
  };
7052
7160
  }
7053
- const _sfc_main$b = {
7161
+ const _sfc_main$c = {
7054
7162
  setup(__props) {
7055
7163
  const {
7056
- project: project2,
7164
+ project,
7057
7165
  addCollaborator,
7058
7166
  updateCollaborator,
7059
7167
  removeCollaborators
@@ -7063,9 +7171,9 @@ const _sfc_main$b = {
7063
7171
  fetchUsers
7064
7172
  } = useUserSearch();
7065
7173
  return (_ctx, _cache) => {
7066
- return unref(project2) && unref(project2).collaborators ? (openBlock(), createBlock(PureCollaborators, {
7174
+ return unref(project) && unref(project).collaborators ? (openBlock(), createBlock(PureCollaborators, {
7067
7175
  key: 0,
7068
- collaborators: unref(project2).collaborators.list,
7176
+ collaborators: unref(project).collaborators.list,
7069
7177
  "users-found": unref(usersFound2),
7070
7178
  onAddCollaborator: unref(addCollaborator),
7071
7179
  onRemoveCollaborators: unref(removeCollaborators),
@@ -7076,10 +7184,10 @@ const _sfc_main$b = {
7076
7184
  }
7077
7185
  };
7078
7186
  var PureAnnotations_vue_vue_type_style_index_0_scoped_true_lang = "";
7079
- const _withScopeId$3 = (n) => (pushScopeId("data-v-629d4746"), n = n(), popScopeId(), n);
7080
- const _hoisted_1$6 = { class: "wrapper" };
7081
- const _hoisted_2$5 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("h2", null, "Annotations", -1));
7082
- const _hoisted_3$3 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("thead", null, [
7187
+ const _withScopeId$4 = (n) => (pushScopeId("data-v-1ebbe320"), n = n(), popScopeId(), n);
7188
+ const _hoisted_1$8 = { class: "wrapper" };
7189
+ const _hoisted_2$6 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("h2", null, "Annotations", -1));
7190
+ const _hoisted_3$4 = /* @__PURE__ */ _withScopeId$4(() => /* @__PURE__ */ createElementVNode("thead", null, [
7083
7191
  /* @__PURE__ */ createElementVNode("tr", null, [
7084
7192
  /* @__PURE__ */ createElementVNode("th", null, "Name"),
7085
7193
  /* @__PURE__ */ createElementVNode("th", null, "Type"),
@@ -7087,14 +7195,13 @@ const _hoisted_3$3 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ create
7087
7195
  /* @__PURE__ */ createElementVNode("th", null, "Display")
7088
7196
  ])
7089
7197
  ], -1));
7090
- const _hoisted_4$3 = ["onClick"];
7091
- const _hoisted_5$2 = ["value", "selected"];
7092
- const _hoisted_6$2 = ["value", "selected"];
7093
- const _hoisted_7$2 = ["onUpdate:modelValue", "onChange"];
7094
- const _hoisted_8$2 = { class: "actions" };
7095
- const _hoisted_9$2 = /* @__PURE__ */ createTextVNode(" + ");
7096
- const _hoisted_10$2 = /* @__PURE__ */ createTextVNode(" - ");
7097
- const _sfc_main$a = {
7198
+ const _hoisted_4$4 = ["onClick"];
7199
+ const _hoisted_5$3 = ["value", "selected"];
7200
+ const _hoisted_6$3 = ["value", "selected"];
7201
+ const _hoisted_7$3 = { class: "actions" };
7202
+ const _hoisted_8$3 = /* @__PURE__ */ createTextVNode(" + ");
7203
+ const _hoisted_9$3 = /* @__PURE__ */ createTextVNode(" - ");
7204
+ const _sfc_main$b = {
7098
7205
  props: {
7099
7206
  annotations: {
7100
7207
  type: Array,
@@ -7108,13 +7215,12 @@ const _sfc_main$a = {
7108
7215
  ],
7109
7216
  setup(__props, { emit }) {
7110
7217
  const props = __props;
7111
- const { baseURL } = inject("config");
7112
- const annotationType = ["volume", "text"];
7218
+ const { baseURL, fetchLabelSets, annotationTypes } = inject("config");
7113
7219
  const labelSets = reactive([]);
7114
- const fetchLabelSets = async () => {
7115
- labelSets.push(...await (await fetch(`${baseURL}/api/getLabelsets`)).json());
7220
+ const updateLabelSets = async () => {
7221
+ labelSets.push(...await fetchLabelSets());
7116
7222
  };
7117
- fetchLabelSets();
7223
+ updateLabelSets();
7118
7224
  const selected = ref(null);
7119
7225
  const handleRowClick = (event, idx) => {
7120
7226
  selected.value = idx;
@@ -7145,17 +7251,18 @@ const _sfc_main$a = {
7145
7251
  emitAnnotationUpdate(idx, { values });
7146
7252
  };
7147
7253
  const handleDisplayChange = (annotation, display) => {
7254
+ console.log("dsfsdfsdf", display);
7148
7255
  const idx = props.annotations.indexOf(annotation);
7149
7256
  if (idx < 0)
7150
7257
  return;
7151
7258
  emitAnnotationUpdate(idx, { display });
7152
7259
  };
7153
7260
  return (_ctx, _cache) => {
7154
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
7155
- _hoisted_2$5,
7261
+ return openBlock(), createElementBlock("div", _hoisted_1$8, [
7262
+ _hoisted_2$6,
7156
7263
  createVNode(Table, { id: "annotations" }, {
7157
7264
  default: withCtx(() => [
7158
- _hoisted_3$3,
7265
+ _hoisted_3$4,
7159
7266
  createElementVNode("tbody", null, [
7160
7267
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.annotations, (annotation, idx) => {
7161
7268
  return openBlock(), createElementBlock("tr", {
@@ -7179,19 +7286,19 @@ const _sfc_main$a = {
7179
7286
  onChange: ($event) => handleTypeChange(annotation, $event.target.value)
7180
7287
  }, {
7181
7288
  default: withCtx(() => [
7182
- (openBlock(), createElementBlock(Fragment, null, renderList(annotationType, (opt) => {
7183
- return createElementVNode("option", {
7289
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(annotationTypes), (opt) => {
7290
+ return openBlock(), createElementBlock("option", {
7184
7291
  key: `${annotation.name}${opt}`,
7185
7292
  value: opt,
7186
7293
  selected: opt === annotation.type
7187
- }, toDisplayString(opt), 9, _hoisted_5$2);
7188
- }), 64))
7294
+ }, toDisplayString(opt), 9, _hoisted_5$3);
7295
+ }), 128))
7189
7296
  ]),
7190
7297
  _: 2
7191
7298
  }, 1032, ["modelValue", "onUpdate:modelValue", "onChange"])
7192
7299
  ]),
7193
7300
  createElementVNode("td", null, [
7194
- annotation.type === "volume" ? (openBlock(), createBlock(Select, {
7301
+ annotation.type !== "text" ? (openBlock(), createBlock(Select, {
7195
7302
  key: 0,
7196
7303
  modelValue: annotation.values,
7197
7304
  "onUpdate:modelValue": ($event) => annotation.values = $event,
@@ -7203,35 +7310,33 @@ const _sfc_main$a = {
7203
7310
  value: opt.source,
7204
7311
  key: `${annotation.name}${opt.source}`,
7205
7312
  selected: opt.source === annotation.values
7206
- }, toDisplayString(opt.name), 9, _hoisted_6$2);
7313
+ }, toDisplayString(opt.name), 9, _hoisted_6$3);
7207
7314
  }), 128))
7208
7315
  ]),
7209
7316
  _: 2
7210
7317
  }, 1032, ["modelValue", "onUpdate:modelValue", "onChange"])) : createCommentVNode("", true)
7211
7318
  ]),
7212
7319
  createElementVNode("td", null, [
7213
- withDirectives(createElementVNode("input", {
7214
- type: "checkbox",
7320
+ createVNode(Checkbox, {
7321
+ modelValue: annotation.display,
7215
7322
  "onUpdate:modelValue": ($event) => annotation.display = $event,
7216
- onChange: ($event) => handleDisplayChange(annotation, $event.target.checked)
7217
- }, null, 40, _hoisted_7$2), [
7218
- [vModelCheckbox, annotation.display]
7219
- ])
7323
+ onChange: ($event) => handleDisplayChange(annotation, $event)
7324
+ }, null, 8, ["modelValue", "onUpdate:modelValue", "onChange"])
7220
7325
  ])
7221
- ], 10, _hoisted_4$3);
7326
+ ], 10, _hoisted_4$4);
7222
7327
  }), 128))
7223
7328
  ])
7224
7329
  ]),
7225
7330
  _: 1
7226
7331
  }),
7227
- createElementVNode("div", _hoisted_8$2, [
7332
+ createElementVNode("div", _hoisted_7$3, [
7228
7333
  createVNode(Button, {
7229
7334
  small: true,
7230
7335
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("addAnnotation")),
7231
7336
  title: "Add annotation"
7232
7337
  }, {
7233
7338
  default: withCtx(() => [
7234
- _hoisted_9$2
7339
+ _hoisted_8$3
7235
7340
  ]),
7236
7341
  _: 1
7237
7342
  }),
@@ -7242,7 +7347,7 @@ const _sfc_main$a = {
7242
7347
  disabled: selected.value == null
7243
7348
  }, {
7244
7349
  default: withCtx(() => [
7245
- _hoisted_10$2
7350
+ _hoisted_9$3
7246
7351
  ]),
7247
7352
  _: 1
7248
7353
  }, 8, ["disabled"])
@@ -7251,19 +7356,25 @@ const _sfc_main$a = {
7251
7356
  };
7252
7357
  }
7253
7358
  };
7254
- var PureAnnotations = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-629d4746"]]);
7255
- const _sfc_main$9 = {
7359
+ var PureAnnotations = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["__scopeId", "data-v-1ebbe320"]]);
7360
+ const _sfc_main$a = {
7256
7361
  setup(__props) {
7257
7362
  const {
7258
- project: project2,
7363
+ project,
7259
7364
  addAnnotation,
7260
7365
  updateAnnotation,
7261
7366
  removeAnnotations
7262
7367
  } = useProject();
7368
+ if (project.value && project.value.annotations && project.value.annotations.list) {
7369
+ if (project.value.annotations.list.length === 0) {
7370
+ console.log("foo");
7371
+ addAnnotation();
7372
+ }
7373
+ }
7263
7374
  return (_ctx, _cache) => {
7264
- return unref(project2) && unref(project2).annotations ? (openBlock(), createBlock(PureAnnotations, {
7375
+ return unref(project) && unref(project).annotations ? (openBlock(), createBlock(PureAnnotations, {
7265
7376
  key: 0,
7266
- annotations: unref(project2).annotations.list,
7377
+ annotations: unref(project).annotations.list,
7267
7378
  onAddAnnotation: unref(addAnnotation),
7268
7379
  onRemoveAnnotations: unref(removeAnnotations),
7269
7380
  onUpdateAnnotation: unref(updateAnnotation)
@@ -7274,29 +7385,29 @@ const _sfc_main$9 = {
7274
7385
  var _imports_0$2 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MzguNTMzIDQzOC41MzMiIGhlaWdodD0iNDM4LjUzMyIgdmlld0JveD0iMCAwIDQzOC41MzMgNDM4LjUzMyIgd2lkdGg9IjQzOC41MzMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiIgdHJhbnNmb3JtPSJtYXRyaXgoLjcxMTE2MTExIDAgMCAuNzExMTYxMTEgODEuMDg2NzE2IDI1LjY3MTMwNykiPjxwYXRoIGQ9Im0xMTQuMDA2MzYgMTgzLjM5MzI5aDQ4LjExNTQ2djkxLjIwODljMCAyLjQxOTQzLjc1NjY2IDQuNDA0MTcgMi4yNTg2IDUuOTU5NjUgMS40OTU3OCAxLjU1MDk1IDMuNDE5MDggMi4zMzA1IDUuNzU1OCAyLjMzMDVoNDguMTI0MjFjMi4zMzg0OSAwIDQuMjYwODktLjc3OTU1IDUuNzY0NTktMi4zMzA1IDEuNTA0NTYtMS41NTYzOCAyLjI1NTk2LTMuNTQwMjIgMi4yNTU5Ni01Ljk1OTY1di05MS4yMDUyN2g0OC4xMjA3MWMzLjY3NDUyIDAgNi4xODE1My0xLjcyODgxIDcuNTE5MzItNS4xODEgMS4zMzc3OS0zLjI4NjExLjc0OTY2LTYuMzA0NTEtMS43NTQ3My05LjA3MTUybC04MC4xOTk0My04Mi45MTE0OTNjLTEuODM5ODctMS41NTI3NTktMy43NTk2NS0yLjMyOTU5Ni01Ljc2NDU3LTIuMzI5NTk2LTIuMDAyMyAwLTMuOTI0Ny43NzY4MzctNS43NjYzMyAyLjMyOTU5NmwtNzkuOTQ4MzggODIuNjUwMTMzYy0xLjY2OTU5IDIuMDcxODUtMi41MDI2MyA0LjE1Mjc4LTIuNTAyNjMgNi4yMTgyOSAwIDIuNDE1ODEuNzUwNTMgNC40MDQxNyAyLjI1ODYxIDUuOTYyMzcgMS41MDAxOCAxLjU1MzY3IDMuNDIyNTcgMi4zMjk1OSA1Ljc2MjgxIDIuMzI5NTl6Ii8+PHBhdGggZD0ibTM2LjIzNTI0NCAzMTkuMjQ3Mzl2ODUuMDUxNDRoMzE2LjEzMjgxNnYtODUuMDUxNDRoLTM2LjkwODkydjQ4LjE0MjUyaC0yNDIuMzE0OTcydi00OC4xNDI1MnoiLz48L2c+PC9zdmc+";
7275
7386
  var _imports_1$1 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MzguNTMzIDQzOC41MzMiIGhlaWdodD0iNDM4LjUzMyIgdmlld0JveD0iMCAwIDQzOC41MzMgNDM4LjUzMyIgd2lkdGg9IjQzOC41MzMiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTE2Mi4xNjM2MSAxNTYuMDk5OTRoMzQuMjE3ODR2LTY0Ljg2NDIzMWMwLTEuNzIwNi41MzgxMS0zLjEzMjA3IDEuNjA2MjMtNC4yMzgyNyAxLjA2Mzc0LTEuMTAyOTcgMi40MzE1MS0xLjY1NzM2IDQuMDkzMy0xLjY1NzM2aDM0LjIyNDA3YzEuNjYzMDQgMCAzLjAzMDE3LjU1NDM5IDQuMDk5NTUgMS42NTczNiAxLjA2OTk4IDEuMTA2ODQgMS42MDQzNSAyLjUxNzY3IDEuNjA0MzUgNC4yMzgyN3Y2NC44NjE2NTFoMzQuMjIxNThjMi42MTMxNyAwIDQuMzk2MDYgMS4yMjk0NiA1LjM0NzQ0IDMuNjg0NTIuOTUxMzkgMi4zMzY5Ni41MzMxMyA0LjQ4MzUyLTEuMjQ3ODkgNi40NTEzMWwtNTcuMDM0NzIgNTguOTYzNDNjLTEuMzA4NDQgMS4xMDQyNi0yLjY3MzcxIDEuNjU2NzItNC4wOTk1MyAxLjY1NjcyLTEuNDIzOTYgMC0yLjc5MTEtLjU1MjQ2LTQuMTAwNzktMS42NTY3MmwtNTYuODU2MTgtNTguNzc3NTZjLTEuMTg3MzUtMS40NzM0Mi0xLjc3OTc4LTIuOTUzMjktMS43Nzk3OC00LjQyMjIgMC0xLjcxODAzLjUzMzc1LTMuMTMyMDggMS42MDYyNC00LjI0MDIxIDEuMDY2ODctMS4xMDQ5MSAyLjQzNC0xLjY1NjcxIDQuMDk4MjktMS42NTY3MXoiIGZpbGw9IiNmZmYiLz48cGF0aCBkPSJtMTA2Ljg1NTgxIDI1Mi43MDc2NHY2MC40ODUyN2gyMjQuODIxMzd2LTYwLjQ4NTI3aC0yNi4yNDgxOXYzNC4yMzcwOGgtMTcyLjMyNDk5di0zNC4yMzcwOHoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=";
7276
7387
  var PureFiles_vue_vue_type_style_index_0_scoped_true_lang = "";
7277
- const _withScopeId$2 = (n) => (pushScopeId("data-v-3c8f55ac"), n = n(), popScopeId(), n);
7278
- const _hoisted_1$5 = { class: "wrapper" };
7279
- const _hoisted_2$4 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("h2", null, "Files", -1));
7280
- const _hoisted_3$2 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("thead", null, [
7388
+ const _withScopeId$3 = (n) => (pushScopeId("data-v-3c8f55ac"), n = n(), popScopeId(), n);
7389
+ const _hoisted_1$7 = { class: "wrapper" };
7390
+ const _hoisted_2$5 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("h2", null, "Files", -1));
7391
+ const _hoisted_3$3 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("thead", null, [
7281
7392
  /* @__PURE__ */ createElementVNode("tr", null, [
7282
7393
  /* @__PURE__ */ createElementVNode("th", null, "URL"),
7283
7394
  /* @__PURE__ */ createElementVNode("th", null, "Name")
7284
7395
  ])
7285
7396
  ], -1));
7286
- const _hoisted_4$2 = ["onClick"];
7287
- const _hoisted_5$1 = ["onBlur", "onKeyup"];
7288
- const _hoisted_6$1 = { class: "actions" };
7289
- const _hoisted_7$1 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7397
+ const _hoisted_4$3 = ["onClick"];
7398
+ const _hoisted_5$2 = ["onBlur", "onKeyup"];
7399
+ const _hoisted_6$2 = { class: "actions" };
7400
+ const _hoisted_7$2 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("img", {
7290
7401
  src: _imports_0$2,
7291
7402
  alt: "Import CSV"
7292
7403
  }, null, -1));
7293
- const _hoisted_8$1 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7404
+ const _hoisted_8$2 = /* @__PURE__ */ _withScopeId$3(() => /* @__PURE__ */ createElementVNode("img", {
7294
7405
  src: _imports_1$1,
7295
7406
  alt: "Download CSV"
7296
7407
  }, null, -1));
7297
- const _hoisted_9$1 = /* @__PURE__ */ createTextVNode(" + ");
7298
- const _hoisted_10$1 = /* @__PURE__ */ createTextVNode(" - ");
7299
- const _sfc_main$8 = {
7408
+ const _hoisted_9$2 = /* @__PURE__ */ createTextVNode(" + ");
7409
+ const _hoisted_10$2 = /* @__PURE__ */ createTextVNode(" - ");
7410
+ const _sfc_main$9 = {
7300
7411
  props: {
7301
7412
  files: {
7302
7413
  type: Array,
@@ -7332,11 +7443,11 @@ const _sfc_main$8 = {
7332
7443
  emitFileUpdate(idx, { source });
7333
7444
  };
7334
7445
  return (_ctx, _cache) => {
7335
- return openBlock(), createElementBlock("div", _hoisted_1$5, [
7336
- _hoisted_2$4,
7446
+ return openBlock(), createElementBlock("div", _hoisted_1$7, [
7447
+ _hoisted_2$5,
7337
7448
  createVNode(Table, { id: "access" }, {
7338
7449
  default: withCtx(() => [
7339
- _hoisted_3$2,
7450
+ _hoisted_3$3,
7340
7451
  createElementVNode("tbody", null, [
7341
7452
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.files, (file, idx) => {
7342
7453
  return openBlock(), createElementBlock("tr", {
@@ -7350,7 +7461,7 @@ const _sfc_main$8 = {
7350
7461
  placeholder: "File URL",
7351
7462
  onBlur: ($event) => handleSourceChange(file, $event.currentTarget.textContent),
7352
7463
  onKeyup: withKeys(($event) => handleSourceChange(file, $event.currentTarget.textContent), ["enter"])
7353
- }, toDisplayString(file.source), 41, _hoisted_5$1)
7464
+ }, toDisplayString(file.source), 41, _hoisted_5$2)
7354
7465
  ]),
7355
7466
  createElementVNode("td", null, [
7356
7467
  createVNode(TextInput, {
@@ -7361,20 +7472,20 @@ const _sfc_main$8 = {
7361
7472
  onKeyup: withKeys(($event) => handleNameChange(file, $event.target.value), ["enter"])
7362
7473
  }, null, 8, ["modelValue", "onUpdate:modelValue", "onBlur", "onKeyup"])
7363
7474
  ])
7364
- ], 10, _hoisted_4$2);
7475
+ ], 10, _hoisted_4$3);
7365
7476
  }), 128))
7366
7477
  ])
7367
7478
  ]),
7368
7479
  _: 1
7369
7480
  }),
7370
- createElementVNode("div", _hoisted_6$1, [
7481
+ createElementVNode("div", _hoisted_6$2, [
7371
7482
  createVNode(Button, {
7372
7483
  small: true,
7373
7484
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("importCsv")),
7374
7485
  title: "Upload CSV"
7375
7486
  }, {
7376
7487
  default: withCtx(() => [
7377
- _hoisted_7$1
7488
+ _hoisted_7$2
7378
7489
  ]),
7379
7490
  _: 1
7380
7491
  }),
@@ -7384,7 +7495,7 @@ const _sfc_main$8 = {
7384
7495
  title: "Download CSV"
7385
7496
  }, {
7386
7497
  default: withCtx(() => [
7387
- _hoisted_8$1
7498
+ _hoisted_8$2
7388
7499
  ]),
7389
7500
  _: 1
7390
7501
  }),
@@ -7394,7 +7505,7 @@ const _sfc_main$8 = {
7394
7505
  title: "Add file"
7395
7506
  }, {
7396
7507
  default: withCtx(() => [
7397
- _hoisted_9$1
7508
+ _hoisted_9$2
7398
7509
  ]),
7399
7510
  _: 1
7400
7511
  }),
@@ -7405,7 +7516,7 @@ const _sfc_main$8 = {
7405
7516
  disabled: selected.value == null
7406
7517
  }, {
7407
7518
  default: withCtx(() => [
7408
- _hoisted_10$1
7519
+ _hoisted_10$2
7409
7520
  ]),
7410
7521
  _: 1
7411
7522
  }, 8, ["disabled"])
@@ -7414,10 +7525,10 @@ const _sfc_main$8 = {
7414
7525
  };
7415
7526
  }
7416
7527
  };
7417
- var PureFiles = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["__scopeId", "data-v-3c8f55ac"]]);
7418
- const _sfc_main$7 = {
7528
+ var PureFiles = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-3c8f55ac"]]);
7529
+ const _sfc_main$8 = {
7419
7530
  setup(__props) {
7420
- const { project: project2, addFile, updateFile, removeFiles } = useProject();
7531
+ const { project, addFile, updateFile, removeFiles } = useProject();
7421
7532
  const displayImportDialog = ref(false);
7422
7533
  const importedFiles = ref([]);
7423
7534
  const handleCSVImport = () => {
@@ -7444,11 +7555,11 @@ const _sfc_main$7 = {
7444
7555
  input.click();
7445
7556
  };
7446
7557
  const handleCSVDownload = () => {
7447
- const filename = prompt("File name", `${project2.value.shortname}`);
7558
+ const filename = prompt("File name", `${project.value.shortname}`);
7448
7559
  if (filename == null) {
7449
7560
  return;
7450
7561
  }
7451
- const csv = project2.value.files.list.map((o) => `${o.source},${o.name}`).join("\n");
7562
+ const csv = project.value.files.list.map((o) => `${o.source},${o.name}`).join("\n");
7452
7563
  const csvData = "data:text/ascii;charset=utf-8," + encodeURIComponent(csv);
7453
7564
  const a = document.createElement("a");
7454
7565
  a.href = csvData;
@@ -7463,13 +7574,13 @@ const _sfc_main$7 = {
7463
7574
  console.log("Too short to be an url:", file.source);
7464
7575
  return;
7465
7576
  }
7466
- const found = project2.value.files.list.find((f) => f.source === file.source);
7577
+ const found = project.value.files.list.find((f) => f.source === file.source);
7467
7578
  if (found != null) {
7468
7579
  if (found.name === "") {
7469
7580
  found.name = file.name;
7470
7581
  }
7471
7582
  } else {
7472
- project2.value.files.list.push(file);
7583
+ project.value.files.list.push(file);
7473
7584
  }
7474
7585
  });
7475
7586
  displayImportDialog.value = false;
@@ -7482,9 +7593,9 @@ const _sfc_main$7 = {
7482
7593
  onImport: appendFiles,
7483
7594
  onCancel: _cache[0] || (_cache[0] = ($event) => displayImportDialog.value = false)
7484
7595
  }, null, 8, ["files"])) : createCommentVNode("", true),
7485
- unref(project2) && unref(project2).files ? (openBlock(), createBlock(PureFiles, {
7596
+ unref(project) && unref(project).files ? (openBlock(), createBlock(PureFiles, {
7486
7597
  key: 1,
7487
- files: unref(project2).files.list,
7598
+ files: unref(project).files.list,
7488
7599
  onAddFile: unref(addFile),
7489
7600
  onRemoveFiles: unref(removeFiles),
7490
7601
  onUpdateFile: unref(updateFile),
@@ -7495,7 +7606,9 @@ const _sfc_main$7 = {
7495
7606
  };
7496
7607
  }
7497
7608
  };
7498
- const _sfc_main$6 = {
7609
+ var Settings_vue_vue_type_style_index_0_scoped_true_lang = "";
7610
+ const _hoisted_1$6 = { class: "content" };
7611
+ const _sfc_main$7 = {
7499
7612
  setup(__props) {
7500
7613
  return (_ctx, _cache) => {
7501
7614
  return openBlock(), createBlock(TwoCols, null, {
@@ -7503,24 +7616,27 @@ const _sfc_main$6 = {
7503
7616
  createVNode(ProjectInfo)
7504
7617
  ]),
7505
7618
  content: withCtx(() => [
7506
- createVNode(_sfc_main$b),
7507
- createVNode(_sfc_main$9),
7508
- createVNode(_sfc_main$7)
7619
+ createElementVNode("div", _hoisted_1$6, [
7620
+ createVNode(_sfc_main$c),
7621
+ createVNode(_sfc_main$a),
7622
+ createVNode(_sfc_main$8)
7623
+ ])
7509
7624
  ]),
7510
7625
  _: 1
7511
7626
  });
7512
7627
  };
7513
7628
  }
7514
7629
  };
7630
+ var Settings = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["__scopeId", "data-v-3f5ec6e5"]]);
7515
7631
  var Wrapper_vue_vue_type_style_index_0_lang = "";
7516
- const _sfc_main$5 = {};
7517
- const _hoisted_1$4 = { class: "app" };
7632
+ const _sfc_main$6 = {};
7633
+ const _hoisted_1$5 = { class: "app" };
7518
7634
  function _sfc_render$1(_ctx, _cache) {
7519
- return openBlock(), createElementBlock("div", _hoisted_1$4, [
7635
+ return openBlock(), createElementBlock("div", _hoisted_1$5, [
7520
7636
  renderSlot(_ctx.$slots, "default")
7521
7637
  ]);
7522
7638
  }
7523
- var Wrapper = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$1]]);
7639
+ var Wrapper = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$1]]);
7524
7640
  var _imports_0$1 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MDEuOTk0IDQwMS45OTQiIGhlaWdodD0iNDAxLjk5NCIgdmlld0JveD0iMCAwIDQwMS45OTQgNDAxLjk5NCIgd2lkdGg9IjQwMS45OTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbC1ydWxlPSJldmVub2RkIiBzdHJva2U9IiNmZmYiIHN0cm9rZS13aWR0aD0iNTAiPjxwYXRoIGQ9Im00MDIuMDMyMjEgMjAxLjg0ODY4aC00MDAuMjkwNjIyOCIvPjxwYXRoIGQ9Im0yMDIuNzAwMzYgMi44NTE2ODA4djQwMC4yOTA2MTkyIi8+PC9nPjwvc3ZnPg==";
7525
7641
  var _imports_1 = "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjE1MzYiIHdpZHRoPSIxNTM2IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPjxwYXRoIGQ9Im0xMDI0IDc2OGMwLTcwLjY2NjY3LTI1LTEzMS03NS0xODFzLTExMC4zMzMzMy03NS0xODEtNzUtMTMxIDI1LTE4MSA3NS03NSAxMTAuMzMzMzMtNzUgMTgxIDI1IDEzMSA3NSAxODEgMTEwLjMzMzMzIDc1IDE4MSA3NSAxMzEtMjUgMTgxLTc1IDc1LTExMC4zMzMzMyA3NS0xODF6bTUxMi0xMDl2MjIyYzAgOC0yLjY2NjcgMTUuNjY2NjctOCAyM3MtMTIgMTEuNjY2NjctMjAgMTNsLTI5NS4xMzE3LTEwLjc1MDAzYy0xMi42NjY3IDM2LTI3LjcwNjEgNjQuMjkzODYtNDEuMDM5NCA4OC45NjA1MyAyMy4zMzMzIDMzLjMzMzMgMTcxLjE3MTEgMTIwLjEyMjggMjE5LjE3MTEgMTc4Ljc4OTUgNi42NjY3IDggMTAgMTYuMzMzMyAxMCAyNXMtMyAxNi4zMzMzLTkgMjNjLTE4IDI0LjY2NjctNTEgNjAuNjY2Ny05OSAxMDhzLTc5LjMzMzMgNzEtOTQgNzFjLTggMC0xNi42NjY3LTMtMjYtOWwtMTkxLjAyNjM1LTIxOC4xMzE2Yy0yOS4zMzMzIDE1LjMzMzMtNjUuNzg1MSAzMi4wNzg5LTk3LjExODQzIDQyLjA3ODktMTAuNjY2NjcgOTAuNjY2NyAzOC44MTE0NSAyNTguNzE5NCAzMC4xNDQ3OCAyOTIuMDUyNy00LjY2NjY3IDE4LjY2NjctMTYuNjY2NjcgMjgtMzYgMjhoLTIyMmMtOS4zMzMzMyAwLTE3LjUtMi44MzMzLTI0LjUtOC41cy0xMC44MzMzMy0xMi44MzMzLTExLjUtMjEuNWwyMC45NDc0LTI5Mi4wOTIyYy0zMi42NjY2Ny0xMC42NjY2LTg5LjE3OTg0LTQ3LjQ3MzctMTE2LjUxMzE3LTYxLjQ3MzdsLTE2My40MzQyMyAyMzkuNTY1OXMtMTYuMTQ4MzggOS4zMDUzLTI1IDljLTkuMDk4OTItLjMxMzgtMTcuMzM4ODItNC4wMDk5LTI1LTExLTgzLjY4MDkxLTc2LjM1MTItMTM5LTEzMi0xNjUtMTY4LTQuNjY2NjctNi42NjY3LTctMTQuMzMzMy03LTIzIDAtOCAyLjY2NjY3LTE1LjY2NjcgOC0yMyA3MC4xMDAwOC02Ni43MDYyIDE1Mi41NDMyNy0xMjkuODc0MiAyMTkuMjEwNi0xOTYuMTQ0NzgtMTgtMzMuMzMzMzMtMjMuNTA4NzctNTguMTc1NDMtMzIuODQyMS05MC44NDIxbC0zMDUuMzY4NSAyMy45ODY4OGMtOC42NjY2NjctMS4zMzMzMy0xNS42NjY2NjctNS41LTIxLTEyLjUtNS4zMzMzMzMzLTctOC0xNC44MzMzMy04LTIzLjV2LTIyMmMwLTggMi42NjY2NjY3LTE1LjY2NjY3IDgtMjMgNS4zMzMzMzMtNy4zMzMzMyAxMS42NjY2NjctMTEuNjY2NjcgMTktMTNsMzE2LjUyNjQgNDEuMzQyMTVjOS4zMzMzMy0zMC42NjY2NyAyNi40MTIyOC03NS42MDk2MiA0My4wNzg5NS0xMDYuMjc2MzItMjYuNjY2NjctMzguMDAwMDMtMTk2LjkzODY4LTEzOS4wNjU4My0yNDEuNjA1MzUtMTkzLjA2NTgzLTYuNjY2NjctOC0xMC0xNi0xMC0yNCAwLTYuNjY2NyAzLTE0LjMzMzMgOS0yMyAxNy4zMzMzMy0yNCA1MC4xNjY2Ny01OS44MzMzIDk4LjUtMTA3LjVzNzkuODMzMzMtNzEuNSA5NC41LTcxLjVjOC42NjY2NyAwIDE3LjMzMzMzIDMuMzMzMyAyNiAxMGwxODAuODI4OTggMjM5LjU2NTljMjkuMzMzMzMtMTUuMzMzMyA5NC4zMzc3NC00NC4zMTU4IDEyNS42NzEwNy01NC4zMTU4LTcuNjg4Ni04Ni41ODc4LTU3LjE2NjcyLTI2OC45MTY4LTQ4LjUwMDA1LTMwMi4yNTAxIDQuNjY2NjctMTguNjY2NyAxNi42NjY2Ny0yOCAzNi0yOGgyMjJjOS4zMzMzMyAwIDE3LjUgMi44MzMzIDI0LjUgOC41czEwLjgzMzMzIDEyLjgzMzMgMTEuNSAyMS41bC0zNS4yMjM3MyAyOTYuMTcxMWMzMi42NjY2NyAxMC42NjY3IDk5LjM3NzI1IDM5LjMxNTggMTI2LjcxMDUzIDUzLjMxNThsMTY4LjUxMzItMjM1LjQ4NjljNi02IDE0LTkgMjQtOSA4LjY2NjcgMCAxNyAzLjMzMzMgMjUgMTAgODYgNzkuMzMzMyAxNDEgMTM2IDE2NSAxNzAgNC42NjY3IDUuMzMzMyA3IDEyLjY2NjcgNyAyMiAwIDgtMi42NjY3IDE1LjY2NjctOCAyMy01Ni44MTEzIDQ5LjEyNjUtMTQzLjEzNDQgMTI0LjE0OC0yMTcuMTcxMSAxOTAuMDI2MzUgMTcuMzMzMyAzMy4zMzMzIDMxIDc0LjE1NzkgNDEgMTA2LjE1NzlsMjk1LjE3MTEtMzMuMTg0MjVjOC42NjY3IDEuMzMzMzMgMTUuNjY2NyA1LjUgMjEgMTIuNXM4IDE0LjgzMzMzIDggMjMuNXoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=";
7526
7642
  var _imports_2 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0NzUuMDg0IDQ3NS4wODQiIGhlaWdodD0iNDc1LjA4NCIgdmlld0JveD0iMCAwIDQ3NS4wODQgNDc1LjA4NCIgd2lkdGg9IjQ3NS4wODQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTQ2NC41MjQgNDEyLjg0Ni05Ny45MjktOTcuOTI1YzIzLjYtMzQuMDY4IDM1LjQwNi03Mi4wNDcgMzUuNDA2LTExMy45MTcgMC0yNy4yMTgtNS4yODQtNTMuMjQ5LTE1Ljg1Mi03OC4wODctMTAuNTYxLTI0Ljg0Mi0yNC44MzgtNDYuMjU0LTQyLjgyNS02NC4yNDFzLTM5LjM5Ni0zMi4yNjQtNjQuMjMzLTQyLjgyNmMtMjQuODQ1LTEwLjU2NS01MC44NzQtMTUuODQ3LTc4LjA5Mi0xNS44NDctMjcuMjE2IDAtNTMuMjQ3IDUuMjgyLTc4LjA4NSAxNS44NDctMjQuODQyIDEwLjU2Mi00Ni4yNTQgMjQuODM5LTY0LjI0MSA0Mi44MjYtMTcuOTg5IDE3Ljk4Ny0zMi4yNjQgMzkuNDAzLTQyLjgyNyA2NC4yNDEtMTAuNTY0IDI0Ljg0MS0xNS44NDYgNTAuODY5LTE1Ljg0NiA3OC4wODcgMCAyNy4yMTYgNS4yODIgNTMuMjM4IDE1Ljg0NiA3OC4wODMgMTAuNTYyIDI0LjgzOCAyNC44MzggNDYuMjQ3IDQyLjgyNyA2NC4yMzQgMTcuOTg3IDE3Ljk5MyAzOS40MDMgMzIuMjY0IDY0LjI0MSA0Mi44MzIgMjQuODQxIDEwLjU2MyA1MC44NjkgMTUuODQ0IDc4LjA4NSAxNS44NDQgNDEuODc5IDAgNzkuODUyLTExLjgwNyAxMTMuOTIyLTM1LjQwNWw5Ny45MjkgOTcuNjQxYzYuODUyIDcuMjMxIDE1LjQwNiAxMC44NDkgMjUuNjkzIDEwLjg0OSA5Ljg5NyAwIDE4LjQ2Ny0zLjYxNyAyNS42OTQtMTAuODQ5IDcuMjMtNy4yMyAxMC44NDgtMTUuNzk2IDEwLjg0OC0yNS42OTMuMDAzLTEwLjA4Mi0zLjUxOC0xOC42NTEtMTAuNTYxLTI1LjY5NHptLTE0OS45OTc2Ni0xMDguMzc2OTNjLTI1LjAyOSAyNS4wMzEtNzIuMjY4MzUgNDcuMjcyMjgtMTA3LjQ3NTA4IDQ2LjYwNzgxLTUzLjMzMDYxLTEuMDA2NTMtNzIuMjgzMzUtMTAuNDIyNzItMTA5LjQ4NDE0LTM4LjU1NTU0LTI2LjA4NjY2Mi0xOS43Mjc4NS00NC41OTE3MzEtNjcuMjI1NDEtNDcuNjExMzMyLTEwNi40NjQ1NC0yLjcwMTc4OC0zNS4xMDkyIDExLjE3OTQ4NC03NS43MzM3NyAzOS41NTkwNjUtMTA1LjQ1OCAzNi43MzI3NDctMzguNDczMTc0IDY4LjI3NzU1Ny00Ni42OTgzMzEgMTEwLjQ5MDY3Ny00OC42MTc4NzYgNDQuMjY5OC0yLjAxMzA2OCA4NC40NTUxNCAxOC41NTg2OTggMTA5LjQ4ODE0IDQzLjU4NTE5NiAyNS4wMzMgMjUuMDI2NSA0My4wMTA2NiA2OC4yNjEyNSA0MS41NzQxNCAxMDMuNDQ0OTQtMi4wMTMwNyA0OS4zMDQ0OC0xMS41MTI0NyA4MC40MjcwMS0zNi41NDE0NyAxMDUuNDU4MDF6IiBmaWxsPSIjZmZmIi8+PC9zdmc+";
@@ -7528,9 +7644,9 @@ var _imports_3 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3
7528
7644
  var _imports_4 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MDEuOTk0IDQwMS45OTQiIGhlaWdodD0iNDAxLjk5NCIgdmlld0JveD0iMCAwIDQwMS45OTQgNDAxLjk5NCIgd2lkdGg9IjQwMS45OTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI2ZmZiI+PGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoLS42ODQxMDcgLTIuNjg1NTQ5KSI+PHBhdGggZD0ibTM5Ny43MTUxOSAyMTYuOTk4MzNjLTMuMTYyMTctMy4xNzE4LTcuMjU5NTYtNy4wNDEwOC0xMS41OTkwOS03LjA5MjY2bC01Ni4wODEyNi0uNjY2Nzd2LTUzLjU1NzExbDQwLjM0OTExLTQxLjU0MjgyYzUuMDU1MDQtNy40MTMyNiA4LjE5ODI4LTEwLjg0NTUxIDkuMTQxMjEtMTkuNDMxMjE3LjQ3MzYtNC4zMTIxNjMtLjE3NTQ0LTEyLjgwNzcyNi0zLjM0NTQ4LTE1Ljk4MDQwMS0zLjE2OTE2LTMuMTcwOTIxLTkuNzU0NjktNS42OTkzMjMtMTQuMDk0NTQtNS42OTkzMjMtNC4zMzk4NCAwLTE1LjczMDc3IDIuODg2MzQyLTIyLjkwMDQ5IDEwLjM5MDMyN2wtNDAuNjgyNDkgMzYuMzQ2ODE0LTE4OS42MzY3MyAxLjAwMDE0LTQ2LjMxNDY5Mi00Mi45ODA5MDVjLTMuMTcxODAzLTMuMTcwOTIxLTEzLjU5MzQ0Ni02LjA4OTg4NS0xNy45MzMzMDUtNi4wODk4ODUtNC4zNDI0NzIgMC0xMS4wOTY5NTggMi45MTk4NDctMTQuMjY4NzUgNi4wODk4ODUtMy4xNzE4MDMgMy4xNzE4MDQtNi4xOTU1ODIgNy45MzM3MzctNi40MjMyOCAxMi4yNjU4NS0uMzMzMzcyIDYuMzQyNzU5LS40MTU2OTIgMTEuMDk4NzI1IDMuNzU2MjQ5IDE3LjkzNTkyNWw0NS45ODEzMDcgNDYuOTgxNDZ2NDcuOTM3MDZsLTU1Ljc0Nzg4MyAxLjAwMDE0Yy04LjA1Mjk3OC4xNDQ0Ni0xMi43NjIxMDkzIDYuNTg3OS0xNC45MzI4ODExIDExLjQyNjU5LTIuODM4NDIwMyA1LjE2OTQ1LTEuNDI0MzQzNyAxNS4yNjM4Ni0xLjQyNDM0MzcgMTkuNjAwMTkgMCA0LjMzOTg2IDEuNTg2MzM3MiA2LjQzMzE2IDQuNzU4MTI5MiA5LjU5OTcgMy4xNzA5MjA2IDMuMTcxNzkgNi45MjU4NjQ2IDQuNzYyNTEgMTEuMjY1NzEyNiA0Ljc2MjUxaDU2LjA4MTI2NmMwIDI2LjY5OTQuNTA4Mzk0IDQxLjIzNzQ0IDEwLjE4Nzc2OSA2MC4yNjEybC00NS41NzA5MzIgNDkuODMwOTdjLTkuODM5NTM1IDkuNjc1MjMtNy43OTkxODggMTcuNTU1MjYtNy41NDc1MTcgMjEuOTc1NzcuMjQ5MDQ2IDQuNDE3MDMgNC45NjAzMiAxMy4xMzIzMiA4LjEzMjExMiAxNi4xNDAxMyAzLjE3MTc5MiAyLjY3MDIgNi43NTgzNyA0LjAwODM3IDEwLjc2NDExMyA0LjAwODM3IDQuNjczOTUzIDAgMTUuMzQ2NDA3LTEuNzQ1OTUgMjQuMDIwNjM2LTEyLjI1ODA2bDQwLjE0Nzc5LTQwLjQ5MjQ1LTIuNTc2NjMtLjgyMjc4YzIuMzM2MSAyLjE3Mzg2IDUuOTYzODkgNC44NzkxNiAxMC44OTAzOSA4LjEzMjUxIDQuOTI1NjMgMy4yNTMzNCAyLjg4OTE0IDQuNjIzNDYgOC45NzkzMSA3Ljg4NTU3IDYuMDk0NTQgMy4yNTMzNSAxMC40NjcyNiA2LjM3MjkgMTAuNDY3MjYgNi4zNzI5cy00My4wMjI4Ny0xNjkuNTIxMTMtOS4wNzcwNy0yMDUuMTIyOWwxMzguMTI2OC42NjY3NmMzNy4xOTcxOSAzNi4xNDkyNy01LjgxODkyIDIwMy42Mzg1OC01LjgxODkyIDIwMy42Mzg1OCA3Ljc0MTM0LTQuMDA0MTkgMTQuMTQzOTgtMTAuNDk0OTUgMjAuMzU3MzEtMTUuNDg0MzYgMS42NzQwNS0xLjMzODE2IDEuOTIyNjUtMS4wODg1NCAyLjc1NjU3LTEuOTE5ODRsNDguOTA4NjkgNDYuOTg2NjFjMy4xNTM1IDMuMDI5NiAxMi43NTkyMSAyLjQyMjcyIDE3LjI2NjU0IDIuNDIyNzIgNC41MDgyMSAwIDguMjIyNjEtMS42MjI2NyAxMS4yNzE4NS00Ljc1NjM4IDMuMTIzODctMy4yMTAzOCA1LjcyNzM5LTcuNjExMSA2LjA4NzI4LTExLjkzNTk4LjMzMzM4LTQuMDA2NDcuNzQyMDktMTIuNzk2MDEtMi40MjAxLTE1LjkzMzAxbC01Mi43NDQ5NS01Mi4zMjQ1N2MxMS4xODUwNC0xOS44NjI5NyAxMy40NDE1OC0zNS43MzEzMiAxMy40NDE1OC02NC4yNzA0N2w1Ni40MTQ2Ni0uMzMzMzdjNC4zMzk3Ny0uMDI1NyA4LjA5OTE4LTQuMjU0MjUgMTEuMjY1NzItNy40MjYwNSAzLjE2OTE2LTMuMTY5MTcgNC43NjMzNy02LjkyNTg3IDQuNzYzMzctMTEuMjY1NzEgMC00LjMzODk3LTEuMjU5OTYtMTMuMDk4OTktNC40NDE0LTE2LjI3MTY2eiIvPjxwYXRoIGQ9Im0yNTguNTY0NjIgMjkuMjFjLTE1LjYwNDY5LTE1LjYwNDY4OC0zNC41MDgzMi0yMy40MTAwOTc0LTU2LjcwNzM5LTIzLjQxMDA5NzQtMjIuMjAyNTggMC00MS4xMDA5NSA3LjgwNTQwOTQtNTYuNzA4MjYgMjMuNDEwMDk3NC0xNS42MDQ2OCAxNS42MDY0MzEtMjMuNDA1NyAzNC41MDkxODctMjMuNDA1NyA1Ni43MDczNzdoMTYwLjIyNjE3YzAtMjIuMTk0NjgzLTcuODAwMTUtNDEuMTAwOTQ2LTIzLjQwNDgyLTU2LjcwNzM3N3oiLz48L2c+PHJlY3QgaGVpZ2h0PSIyMjMuNDc2NTMiIHJ5PSIuNTQ5ODMzIiB3aWR0aD0iNDEuNDg5MzE1IiB4PSIxODAuMTI3MjMiIHk9IjE2My41NzM1NSIvPjwvZz48L3N2Zz4=";
7529
7645
  var _imports_5 = "data:image/svg+xml;base64,PHN2ZyBlbmFibGUtYmFja2dyb3VuZD0ibmV3IDAgMCA0MDEuOTk0IDQwMS45OTQiIGhlaWdodD0iNDAxLjk5NCIgdmlld0JveD0iMCAwIDQwMS45OTQgNDAxLjk5NCIgd2lkdGg9IjQwMS45OTQiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZD0ibTEyNi4xMDQzOSAzODguNDI2NzNjLTI3LjE4NTM0NS0xMS4xMDQ5Ny00OC45NzEwMDktMjUuOTg2OTMtNzAuMDQ2MDg2LTQ3Ljg0ODk3LTY2LjI1NDI3Ni02OC43MjgzMi03NS4wNTg0NTMtMTcyLjMzOTIyLTIxLjQ1Mzk1MS0yNTIuNDc4MjIyIDEwLjE1MDYzMS0xNS4xNzUyNDQgMzcuOTA3NjY3LTQyLjkzMjI3IDUzLjA4Mjg5My01My4wODI5MDMgMjIuOTEyNDU0LTE1LjMyNTk5NiA0OS4wMjQzOTQtMjYuMjQ3NzYxIDc1LjE2MDA1NC0zMS40MzY5NzY4IDE4Ljg5NDg5LTMuNzUxNTcwMDYgNTcuNTYzODItMy43NTE1NzAwNiA3Ni40NTg3MSAwIDYwLjk5NDgxIDEyLjExMDQ3NDggMTE0LjUwNDk5IDUzLjExMjIyODggMTQyLjczMTggMTA5LjM2NzEwMTggMTYuOTQ5NjYgMzMuNzgwMDMgMjQuMDA5MTEgNzguNTY1NzcgMTguMzg0NTEgMTE2LjYzMjktNi42NDQ4NCA0NC45NzIwOS0yNC45NDQxOSA4MS4yMjk5Ny01Ny40NTk0IDExMy44NDg2Mi0yMS43Nzg1NiAyMS44NDc4NS00NS42NTcxMyAzNy40NDEwMi03MS44NjMzOCA0Ni45MjgyLTEwLjkyNDAxIDMuOTU0NjctMTcuMzk3MjggMi43OTA5MS0xOC43NjExNS0zLjM3MjkzLS40MzgtMS45Nzk1LTEuMDAwMzEtMTkuNTQ0NS0xLjI0OTYtMzkuMDMzMy0uNDI1MzItMzMuMjUzMjgtLjY4MDQyLTM1Ljk0MDAxLTQuMTQ0NzgtNDMuNjUyNTctMi4wMzAzNC00LjUyMDEzLTQuNjc2ODgtOS4wMzYxNy01Ljg4MTIxLTEwLjAzNTY3LTMuNDQxNjMtMi44NTYzLTIuNTgyMDEtNC41ODEzMiAyLjI4Mjk3LTQuNTgxMzIgNy43MDA1MyAwIDI4Ljg5NTQ5LTYuMTE2NzUgNDAuODk2NDYtMTEuODAyNTMgMTMuMzk2MS02LjM0Njc3IDI3LjA5MDYxLTE5LjIyMDYyIDMzLjgwODItMzEuNzgyMjYgNy4xOTcwMi0xMy40NTgxNSAxMC43NjkxNy0zMC4yOTAyNSAxMC45NzA1OC01MS42OTM3OC4yMDg0NS0yMi4xNTIzOS0yLjgzMjEyLTMzLjMwOTExLTEzLjI0MDY4LTQ4LjU4MzgyLTYuMjY0NTEtOS4xOTMyOC02LjI3MzY1LTkuMjI5MDgtNC4zNzM0My0xNy4xNTAwMSAyLjI1MzY2LTkuMzk0MzUgMS4xNjE2OS0yOS4wODE3MTQtMi4xMTkxNC0zOC4yMDY0NzFsLTIuMjY0OTgtNi4yOTk0MTktOC40ODM0OC4xMzY5MTJjLTEwLjAwNzk2LjE2MTQ5Mi0yMS45OTgyNiA0LjUzMjk0OC0zNi42MTY5MyAxMy4zNDk4NzVsLTEwLjU4NDYyIDYuMzgzOTAzLTEyLjEzODAxLTIuODQ3MTNjLTE2LjY3Mjg1LTMuOTEwNzc3LTU4Ljg2NTIyLTMuOTU1MzIxLTc2LjQyMDUxLS4wODA4bC0xMi4zMTIzNSAyLjcxNzQ4LTEwLjQxMDI4LTYuMjc4NzQ3Yy0xNC41MzA3MS04Ljc2Mzc4NS0yNi40NjczMS0xMy4wODQwODQtMzYuNTk0MDUtMTMuMjQ0NjQxbC04LjYzNDk0Ny0uMTM2ODk4LTIuMTI5NTc1IDYuMjk5NDE5Yy0zLjEzMzQ4OSA5LjI2OTA4MS00LjE2MzA1MSAyOC45ODgxMjctMS45ODcxMTkgMzguMDU4NTA3IDEuODUyODQxIDcuNzIzNDMgMS44MTU3NTYgNy44Njg4OC00LjM3MjU0NCAxNy4xNDk5OC0xMC41MzEwMDkgMTUuNzk0MjUtMTMuNDk4ODk3IDI2LjY5NzY2LTEzLjI2NDY2NiA0OC43MzE4MS4yMjY5MzEgMjEuMzQ4NyAzLjgwNzgyOSAzOC4xNjQzMyAxMS4wMDgyMzUgNTEuNjkzNzggNi4yODkxNzEgMTEuODE3MjcgMjEuMzI5OTU2IDI2LjA2NzY3IDMzLjk4NDE5NiAzMi4xOTgzMiAxMC43MTQyNyA1LjE5MDc4IDMyLjg2ODUgMTEuMzU1MDMgNDAuODgzMjIgMTEuMzc1NDQgNS4yODU1My4wMTQyIDUuMzIyNzEuNDg1NjguNTM2MiA2LjgwOTI0LTIuMDg3MDYgMi43NTcyNS00LjgwNTQzIDguNTU2NjEtNi4wNDA4NCAxMi44ODc0NS0yLjEwNDc3IDcuMzc4NDgtMi43MzM0OSA4LjA0OTUtOS45ODUzMyAxMC42NTc0My0xNy4zNTQ1OCA2LjI0MTEtMzYuODI3ODIuMzE2MTMtNDYuODUxNzQ4LTE0LjI1NTI3LTEyLjI4MjQzNC0xNy44NTQ0My0yMy4wMjk4NjUtMjUuNTM2ODktMzUuNzI1MTM1LTI1LjUzNjg5LTguODk0OTkyIDAtMTAuMDY2OTk2IDMuODAzNDQtMi45ODY2NDIgOS42OTIzNiAxMi4zMTM1NTUgMTAuMjQxNSAxNy42MTM4MjUgMTYuNjI3MjEgMjIuODY4MDEgMjcuNTUxMDggNi42NTc2NDYgMTMuODQxODQgMTIuNjYzODI4IDIwLjE5MDY4IDI0LjIzNzE5NSAyNS42MTk5NiA3LjgyNTU3IDMuNjcxMTEgMTAuNDc2MDEgNC4wNjAzMSAyNy4xNzU4IDMuOTkwNTFsMTguNTA0NTEtLjA3NzJ2MTkuODU1N2MwIDEzLjQ2MDI0LS42MzQwOCAyMC42ODU4LTEuOTY4NTYgMjIuNDMyODEtMy42NTk5NSA0Ljc5MTI5LTkuMjc4OTMgNC41NzUxLTIyLjYwODQyLS44Njk5MXoiIGZpbGw9IiNmZmYiLz48L3N2Zz4=";
7530
7646
  var Nav_vue_vue_type_style_index_0_scoped_true_lang = "";
7531
- const _withScopeId$1 = (n) => (pushScopeId("data-v-0393dbf8"), n = n(), popScopeId(), n);
7532
- const _hoisted_1$3 = { id: "menu" };
7533
- const _hoisted_2$3 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("a", { href: "/project/new" }, [
7647
+ const _withScopeId$2 = (n) => (pushScopeId("data-v-4004adc6"), n = n(), popScopeId(), n);
7648
+ const _hoisted_1$4 = { id: "menu" };
7649
+ const _hoisted_2$4 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("a", { href: "/project/new" }, [
7534
7650
  /* @__PURE__ */ createElementVNode("img", {
7535
7651
  class: "button",
7536
7652
  title: "add project",
@@ -7538,38 +7654,38 @@ const _hoisted_2$3 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ create
7538
7654
  src: _imports_0$1
7539
7655
  })
7540
7656
  ], -1));
7541
- const _hoisted_3$1 = ["href"];
7542
- const _hoisted_4$1 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("img", {
7657
+ const _hoisted_3$2 = ["href"];
7658
+ const _hoisted_4$2 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7543
7659
  class: "button",
7544
7660
  title: "settings",
7545
7661
  alt: "settings",
7546
7662
  src: _imports_1
7547
7663
  }, null, -1));
7548
- const _hoisted_5 = [
7549
- _hoisted_4$1
7664
+ const _hoisted_5$1 = [
7665
+ _hoisted_4$2
7550
7666
  ];
7551
- const _hoisted_6 = ["href"];
7552
- const _hoisted_7 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("img", {
7667
+ const _hoisted_6$1 = ["href"];
7668
+ const _hoisted_7$1 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7553
7669
  class: "button",
7554
7670
  title: "search",
7555
7671
  alt: "search",
7556
7672
  src: _imports_2
7557
7673
  }, null, -1));
7558
- const _hoisted_8 = [
7559
- _hoisted_7
7674
+ const _hoisted_8$1 = [
7675
+ _hoisted_7$1
7560
7676
  ];
7561
- const _hoisted_9 = ["href"];
7562
- const _hoisted_10 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("img", {
7677
+ const _hoisted_9$1 = ["href"];
7678
+ const _hoisted_10$1 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7563
7679
  class: "button",
7564
7680
  title: "documentation",
7565
7681
  alt: "documentation",
7566
7682
  src: _imports_3
7567
7683
  }, null, -1));
7568
- const _hoisted_11 = [
7569
- _hoisted_10
7684
+ const _hoisted_11$1 = [
7685
+ _hoisted_10$1
7570
7686
  ];
7571
- const _hoisted_12 = ["href"];
7572
- const _hoisted_13 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("img", {
7687
+ const _hoisted_12$1 = ["href"];
7688
+ const _hoisted_13 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7573
7689
  class: "button",
7574
7690
  title: "report a bug",
7575
7691
  alt: "report a bug",
@@ -7579,7 +7695,7 @@ const _hoisted_14 = [
7579
7695
  _hoisted_13
7580
7696
  ];
7581
7697
  const _hoisted_15 = ["href"];
7582
- const _hoisted_16 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("img", {
7698
+ const _hoisted_16 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("img", {
7583
7699
  class: "button",
7584
7700
  title: "join our github project",
7585
7701
  alt: "join our github project",
@@ -7589,71 +7705,73 @@ const _hoisted_16 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createE
7589
7705
  const _hoisted_17 = [
7590
7706
  _hoisted_16
7591
7707
  ];
7592
- const _hoisted_18 = {
7708
+ const _hoisted_18 = { class: "login" };
7709
+ const _hoisted_19 = { key: 0 };
7710
+ const _hoisted_20 = ["href"];
7711
+ const _hoisted_21 = /* @__PURE__ */ createTextVNode(" (");
7712
+ const _hoisted_22 = /* @__PURE__ */ _withScopeId$2(() => /* @__PURE__ */ createElementVNode("a", { href: "/logout" }, "Log Out", -1));
7713
+ const _hoisted_23 = /* @__PURE__ */ createTextVNode(") ");
7714
+ const _hoisted_24 = {
7593
7715
  key: 1,
7594
- class: "login"
7716
+ href: "/auth/github"
7595
7717
  };
7596
- const _hoisted_19 = ["href"];
7597
- const _hoisted_20 = /* @__PURE__ */ createTextVNode(" (");
7598
- const _hoisted_21 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("a", { href: "/logout" }, "Log Out", -1));
7599
- const _hoisted_22 = /* @__PURE__ */ createTextVNode(") ");
7600
- const _sfc_main$4 = {
7718
+ const _sfc_main$5 = {
7601
7719
  setup(__props) {
7602
7720
  const { githubURL, issuesURL, searchURL, docURL } = inject("config");
7603
7721
  const user = inject("user");
7604
7722
  const displaySettings = inject("displaySettings");
7605
- const { project: project2 } = useProject();
7723
+ const { project } = useProject();
7606
7724
  return (_ctx, _cache) => {
7607
- return openBlock(), createElementBlock("nav", _hoisted_1$3, [
7608
- _hoisted_2$3,
7609
- unref(displaySettings) && unref(project2) != null ? (openBlock(), createElementBlock("a", {
7725
+ return openBlock(), createElementBlock("nav", _hoisted_1$4, [
7726
+ _hoisted_2$4,
7727
+ unref(displaySettings) && unref(project) != null ? (openBlock(), createElementBlock("a", {
7610
7728
  key: 0,
7611
- href: `/project/${unref(project2).shortname}/settings`
7612
- }, _hoisted_5, 8, _hoisted_3$1)) : createCommentVNode("", true),
7729
+ href: `/project/${unref(project).shortname}/settings`
7730
+ }, _hoisted_5$1, 8, _hoisted_3$2)) : createCommentVNode("", true),
7613
7731
  createElementVNode("a", {
7614
7732
  href: unref(searchURL),
7615
7733
  target: "_blank"
7616
- }, _hoisted_8, 8, _hoisted_6),
7617
- createElementVNode("a", { href: unref(docURL) }, _hoisted_11, 8, _hoisted_9),
7734
+ }, _hoisted_8$1, 8, _hoisted_6$1),
7735
+ createElementVNode("a", { href: unref(docURL) }, _hoisted_11$1, 8, _hoisted_9$1),
7618
7736
  createElementVNode("a", {
7619
7737
  href: unref(issuesURL),
7620
7738
  target: "_blank"
7621
- }, _hoisted_14, 8, _hoisted_12),
7739
+ }, _hoisted_14, 8, _hoisted_12$1),
7622
7740
  createElementVNode("a", {
7623
7741
  href: unref(githubURL),
7624
7742
  target: "_blank"
7625
7743
  }, _hoisted_17, 8, _hoisted_15),
7626
- unref(user) != null ? (openBlock(), createElementBlock("div", _hoisted_18, [
7627
- createElementVNode("span", null, [
7744
+ createElementVNode("div", _hoisted_18, [
7745
+ unref(user) != null ? (openBlock(), createElementBlock("span", _hoisted_19, [
7628
7746
  createElementVNode("a", {
7629
- href: unref(user).brainboxURL
7630
- }, toDisplayString(unref(user).nickname), 9, _hoisted_19),
7631
- _hoisted_20,
7747
+ href: `/user/${unref(user).username}`
7748
+ }, toDisplayString(unref(user).username), 9, _hoisted_20),
7632
7749
  _hoisted_21,
7633
- _hoisted_22
7634
- ])
7635
- ])) : createCommentVNode("", true)
7750
+ _hoisted_22,
7751
+ _hoisted_23
7752
+ ])) : (openBlock(), createElementBlock("a", _hoisted_24, "Log in with GitHub"))
7753
+ ])
7636
7754
  ]);
7637
7755
  };
7638
7756
  }
7639
7757
  };
7640
- var Nav = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-0393dbf8"]]);
7758
+ var Nav = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["__scopeId", "data-v-4004adc6"]]);
7641
7759
  var Header_vue_vue_type_style_index_0_scoped_true_lang = "";
7642
- const _hoisted_1$2 = {
7760
+ const _hoisted_1$3 = {
7643
7761
  class: "logo",
7644
7762
  href: "/"
7645
7763
  };
7646
- const _hoisted_2$2 = ["src", "alt"];
7647
- const _sfc_main$3 = {
7764
+ const _hoisted_2$3 = ["src", "alt"];
7765
+ const _sfc_main$4 = {
7648
7766
  setup(__props) {
7649
7767
  const { logoURL, siteName } = inject("config");
7650
7768
  return (_ctx, _cache) => {
7651
7769
  return openBlock(), createElementBlock("header", null, [
7652
- createElementVNode("a", _hoisted_1$2, [
7770
+ createElementVNode("a", _hoisted_1$3, [
7653
7771
  createElementVNode("img", {
7654
7772
  src: unref(logoURL),
7655
7773
  alt: unref(siteName)
7656
- }, null, 8, _hoisted_2$2)
7774
+ }, null, 8, _hoisted_2$3)
7657
7775
  ]),
7658
7776
  renderSlot(_ctx.$slots, "default", {}, void 0, true),
7659
7777
  createVNode(Nav)
@@ -7661,12 +7779,12 @@ const _sfc_main$3 = {
7661
7779
  };
7662
7780
  }
7663
7781
  };
7664
- var Header = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["__scopeId", "data-v-7353ade4"]]);
7782
+ var Header = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["__scopeId", "data-v-12a1788c"]]);
7665
7783
  var _imports_0 = "data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI3MiIgd2lkdGg9IjI3Ni4yNzM0NCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJtMTQwLjI4MTI1IDBjLTYzLjI3ODEyMyAwLTExNi4zMTM1MDkgNDMuMjg0OTg2LTEzMS41IDEwMS44MTI1aDcuMjE4NzUgNXYzLjMxMjVjLjYwNDAxLS40MDU3NyAxLjExNzU2LS45NTcxOSAxLjc1LTEuMzEyNWguMDMxMjVjMS4wOTMxOC0uNjA3MzEgMi4yMzY1NTctMS4xNDAwNCAzLjQwNjI1LTEuNTkzNzVzMi4zODkwMTgtLjgyMzcxIDMuNjI1LTEuMTI1YzIuNDcxOTY1LS42MDI1OSA1LjA0Mjk3LS45MDYyMiA3LjcxODc1LS45MDYyNSAyLjE2ODEwMy4wMDAwMiA0LjI3NDQ0My4xOTA2NSA2LjI4MTI1LjU2MjVzMy45MjExNzEuOTQzMTUgNS43MTg3NSAxLjY4NzUgMy40OTA4MyAxLjY2Mzc0IDUuMDMxMjUgMi43ODEyNSAyLjkyMDkyIDIuNDE0OSA0LjE1NjI1IDMuOTA2MjVoLjAzMTI1Yy4wMDU1NS4wMDY2OC0uMDA1NTUuMDI0NTcgMCAuMDMxMjUgMS4yMzM4MDIgMS40ODYyOSAyLjI5Njk4OSAzLjExMzg1IDMuMTg3NSA0Ljg3NXMxLjYxNzA0OSAzLjY2OTk3IDIuMTg3NSA1LjY4NzUuOTc2MzggNC4xNTA4MiAxLjI1IDYuNDA2MjUuNDA2MjMgNC42MTg5MS40MDYyNSA3LjA5Mzc1djQwLjE4NzUgNWgtNS0xMC45Mzc1LTV2LTUtMzkuODQzNzVjLS4wMDAwMi0yLjgyNzQtLjI3NTMzNy01LjExMDEtLjc1LTYuOTM3NXMtMS4xNDg2Ny0zLjE5OTQ4LTEuODc1LTQuMTI1Yy0uNzI5NTA1LS45Mjk0OS0xLjUzOTI1Ni0xLjU5OTU3LTIuNjU2MjUtMi4wNjI1cy0yLjU0MTIzLS43MTg3My00LjQ2ODc1LS43MTg3NWMtMS4yMTE0MDguMDAwMDEtMi4yODEzMjguMDg2MDgtMy4yODEyNS4yNXMtMS45MjA1NjMuNDE4ODctMi43NS43NS0xLjU4MTI5Ny43NDgzNi0yLjI4MTI1IDEuMjUtMS4zNTcyOCAxLjA3NDU0LTEuOTY4NzUgMS43NWMtLjYxMjM2LjY3NjQ1LTEuMTUyNzU4IDEuNDMyMDctMS42MjUgMi4yNXMtLjg2NDAyNiAxLjcwMDYxLTEuMTg3NSAyLjY4NzUtLjU4Mzk0MiAyLjA2NjY3LS43NSAzLjI1LS4yNTAwMDcgMi40Njc3Ny0uMjUgMy44NzV2MzcuNjI1IDVoLTUtNC45MDYyNWMxNy44MzAzNjIgNTQuMzI0NzggNjguODk4ODI1IDkzLjU5Mzc1IDEyOS4xODc1IDkzLjU5Mzc1IDYwLjI5NjcxIDAgMTExLjQxODMyLTM5LjI0NDA0IDEyOS4yNDIxOS05My41ODAwOGgtNC4wMTE3Mi0xMS4yNWMtOS4wNjQxMiAwLTE2LjE4ODY0LTEuNDMxNjUtMjAuOTY4NzUtNi4wOTM3NXYtLjAzMTI1aC0uMDMxMjVjLTQuNzY4MS00LjcwOTIyLTYuMjgxMjYtMTEuODQyNjUtNi4yODEyNS0yMC44MTI1di0zMS4xNTYyNWgtMy4wMzEyNS01di01LTguNS01aDUgMy4wMzEyNXYtMTMuOTM3NDk4LTVoNSAxMSA1djUgMTMuOTM3NDk4aDE3LjUzMTI1IDV2NSA4LjUgNWgtNS0xNy41MzEyNXYzMS4xNTYyNWMtLjAwMDAyIDQuMTkzNjcuOTMxMjQgNi42MzE3Mi45MDQzIDYuOTYyODkuMzkxMjUuMTE4MDQgMi4xMTI1My44MTgzNyA1LjM3Njk1LjgxODM2aDExLjI1IDV2NSA5LjE1NjI1IDEuODU5MzhjMy43NDYxNy0xMi40MzcxNiA1Ljc2OTUzLTI1LjYyMTAzIDUuNzY5NTMtMzkuMjc5MyAwLTc1LjExMDcyOS02MC44ODkyNy0xMzYtMTM2LTEzNnptMTMwLjIzMDQ3IDE3NS4yNzkzYy0uMzE3IDEuMDUyNDItLjY0NjY0IDIuMDk5MTItLjk4ODI4IDMuMTQwNjJoLjk4ODI4em0tMTY0LjQwNjI1LTc1LjA3ODEzYzEwLjQ5OTY1LjAwMDA3IDE5LjI5ODAzIDIuODQ1OSAyNS4yMTg3NSA5LjA2MjUgNS45MjQ0NiA2LjIyMDgyIDguNTMxMTcgMTUuMjI0MDggOC41MzEyNSAyNi4xNTYyNXYzOCA1aC01LTEwLjk2ODc1LTV2LTIuOTM3NWMtLjY2NjA0LjQyNzY0LTEuMzI4MS44ODM0Ni0yLjAzMTI1IDEuMjVsLS4wMzEyNS4wMzEyNWMtNC41OTcxNSAyLjM0NzQ1LTkuOTU2NTggMy40MDYyNS0xNS45Mzc1IDMuNDA2MjUtNy43NTA0NTEgMC0xNC42NTI4MjEtMi4zMjU4LTE5LjcxODc1MS03LjA5Mzc1aC0uMDMxMjVsLS4wMzEyNS0uMDMxMjVjLTUuMDA3ODctNC44MDk1Mi03LjUzMTI2LTExLjUzNzIxLTcuNTMxMjUtMTktLjAwMDAxLTguNjA1MzggMy4yMTQzOC0xNi4xNzIyMiA5LjQ2ODc1LTIwLjkzNzUgNi4yOTk4Ni00Ljc2MjA3IDE0LjkwOTgxLTYuNzE4NzEgMjUuNTAwMDAxLTYuNzE4NzVoOS43MTg3NWMtLjUwMzY1LTEuNTUwODktMS4yNjY1LTIuODM2MDYtMi41MzEyNS0zLjg3NWwtLjAzMTI1LS4wMzEyNWgtLjAzMTI1Yy0yLjE0ODg5LTEuODEyMjUtNS40NzI2Ni0yLjk5OTk1LTEwLjY4NzUtMy0zLjQwNzQuMDAwMDUtNi43MDI4NjEuNDA5MTQtOS45MDYyNTEgMS4yMTg3NS0zLjE5NTAyLjgwNzU4LTYuMjQ3MTkgMi4wMjkwMS05LjIxODc1IDMuNjU2MjVsLTcuNDA2MjUgNC4wMzEyNXYtOC40Mzc1LTEwLjA5Mzc1LTMuNDM3NWwzLjE4NzUtMS4yNWM0LjIxOTAzLTEuNjI5MDcgOC4zODA1NC0yLjg0MDUgMTIuNDM3NS0zLjY1NjI1LjAyMTgxLS4wMDQzOS4wNDA2OS0uMDI2ODkuMDYyNS0uMDMxMjV2LjAzMTI1YzQuMDU3MjQtLjg1MDAxIDguMDQ5NDkxLTEuMzEyNDMgMTEuOTY4NzUxLTEuMzEyNXptNzQuNzE4NzUgMGMxMC40OTk2NS4wMDAwNyAxOS4yOTgwMiAyLjg0NTg5IDI1LjIxODc1IDkuMDYyNSA1LjkyNDQ1IDYuMjIwODIgOC40OTk5NCAxNS4yMjQwNyA4LjUgMjYuMTU2MjV2MzggNWgtNS0xMC45Mzc1LTV2LTIuOTM3NWMtLjY3MDM3LjQzMS0xLjMyMzI1Ljg4MDkzLTIuMDMxMjUgMS4yNWgtLjAzMTI1di4wMzEyNWMtNC41OTcxNSAyLjM0NzQ1LTkuOTg3ODQgMy40MDYyNS0xNS45Njg3NSAzLjQwNjI1LTcuNzUwNDUgMC0xNC42NTI4Mi0yLjMyNTgtMTkuNzE4NzUtNy4wOTM3NWwtLjAzMTI1LS4wMzEyNWMtNS4wMDc4Ny00LjgwOTUyLTcuNTMxMjYtMTEuNTM3MjEtNy41MzEyNS0xOS0uMDAwMDEtOC42MDUzOCAzLjE4MzEzLTE2LjE3MjIyIDkuNDM3NS0yMC45Mzc1aC4wMzEyNWM2LjI5OTg2LTQuNzYyMDcgMTQuOTA5OC02LjcxODcxIDI1LjUtNi43MTg3NWg5LjY4NzVjLS41MDM2OC0xLjU1MDUzLTEuMjY2Ny0yLjgzNjIzLTIuNTMxMjUtMy44NzV2LS4wMzEyNWgtLjAzMTI1Yy0yLjE0ODkxLTEuODEyMjYtNS40NzI2NS0yLjk5OTk1LTEwLjY4NzUtMy0zLjQwNzQuMDAwMDUtNi43MDI4Ni40MDkxNC05LjkwNjI1IDEuMjE4NzUtMy4xOTUwMi44MDc1OC02LjI3ODQ0IDIuMDI5MDEtOS4yNSAzLjY1NjI1bC03LjM3NSA0LjAzMTI1di04LjQzNzUtMTAuMDkzNzUtMy40Mzc1bDMuMTg3NS0xLjI1YzQuMjQxNzItMS42Mzc4MiA4LjM5MDgzLTIuODcxODUgMTIuNDY4NzUtMy42ODc1di4wMzEyNWM0LjA2Nzc5LS44NTQyNiA4LjA3MDg0LTEuMzEyNDMgMTItMS4zMTI1em0tNjcuODEyNSA0NC43NWMtOC40NjEzNC4wMDAwMy0xNC4wMzMzMDEgMS4yNTc0LTE1LjgxMjUwMSAyLjMxMjUtMS44OTMyOCAxLjEyMjc2LTIuNjg3NTIgMi4zNTA2Mi0yLjY4NzUgNi4wNjI1LS4wMDAwMSAyLjc3NTUxLjY1MDM1IDQuMTgyMDkgMi4xMjUgNS41MzEyNS4wMTE2OC4wMTA2OS4wMTk0Ni4wMjA1Ny4wMzEyNS4wMzEyNSAxLjUxNDM2IDEuMzE0NDQgMy42MDI4MzEgMi4wOTM3NiA3LjEyNTAwMSAyLjA5Mzc1IDQuODkwMjcuMDAwMDEgOC4wMjA0NC0xLjQxNTM0IDEwLjc4MTI1LTQuNjU2MjUgMi4zOTE4OC0yLjgwMzQzIDMuNzc2MzctNi40ODYwNSA0LjE1NjI1LTExLjM3NXptNzQuNzE4NzUgMGMtOC40NjEzNC4wMDAwMy0xNC4wNjQ1NSAxLjI1NzQtMTUuODQzNzUgMi4zMTI1LTEuODkzMjggMS4xMjI3Ni0yLjY1NjI3IDIuMzUwNjItMi42NTYyNSA2LjA2MjUtLjAwMDAxIDIuNzk3NDkuNjU2ODEgNC4yMDM2NSAyLjE1NjI1IDUuNTYyNSAxLjUxMjk1IDEuMzA0NTIgMy42MTc4OSAyLjA5Mzc2IDcuMTI1IDIuMDkzNzUgNC44OTAyNy4wMDAwMSA3Ljk4OTE5LTEuNDE1MzQgMTAuNzUtNC42NTYyNSAyLjM5MTg4LTIuODAzNDMgMy44MDc2Mi02LjQ4NjA1IDQuMTg3NS0xMS4zNzV6IiBmaWxsPSIjZmZmIi8+PC9zdmc+";
7666
7784
  var Footer_vue_vue_type_style_index_0_scoped_true_lang = "";
7667
- const _sfc_main$2 = {};
7668
- const _withScopeId = (n) => (pushScopeId("data-v-79b1b506"), n = n(), popScopeId(), n);
7669
- const _hoisted_1$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("p", null, [
7785
+ const _sfc_main$3 = {};
7786
+ const _withScopeId$1 = (n) => (pushScopeId("data-v-79b1b506"), n = n(), popScopeId(), n);
7787
+ const _hoisted_1$2 = /* @__PURE__ */ _withScopeId$1(() => /* @__PURE__ */ createElementVNode("p", null, [
7670
7788
  /* @__PURE__ */ createElementVNode("a", {
7671
7789
  target: "_blank",
7672
7790
  href: "http://neuroanatomy.github.io"
@@ -7681,30 +7799,29 @@ const _hoisted_1$1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createEl
7681
7799
  href: "http://neuroanatomy.github.io"
7682
7800
  }, " groupe de neuroanatomie appliqu\xE9e et th\xE9orique ")
7683
7801
  ], -1));
7684
- const _hoisted_2$1 = [
7685
- _hoisted_1$1
7802
+ const _hoisted_2$2 = [
7803
+ _hoisted_1$2
7686
7804
  ];
7687
7805
  function _sfc_render(_ctx, _cache) {
7688
- return openBlock(), createElementBlock("footer", null, _hoisted_2$1);
7806
+ return openBlock(), createElementBlock("footer", null, _hoisted_2$2);
7689
7807
  }
7690
- var Footer = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render], ["__scopeId", "data-v-79b1b506"]]);
7691
- var SettingsPage_vue_vue_type_style_index_0_scoped_true_lang = "";
7692
- const _sfc_main$1 = {
7808
+ var Footer = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render], ["__scopeId", "data-v-79b1b506"]]);
7809
+ const _sfc_main$2 = {
7693
7810
  props: {
7694
- projectID: {
7695
- type: String,
7811
+ project: {
7812
+ type: Object,
7696
7813
  required: true
7697
7814
  }
7698
7815
  },
7699
7816
  setup(__props) {
7700
7817
  const props = __props;
7701
- const { project: project2, fetchProject, updateProject } = useProject();
7702
- const content = ref(project2.name);
7818
+ const { project, setProject, updateProject } = useProject();
7819
+ setProject(props.project);
7820
+ const content = ref(project.name);
7703
7821
  const onTitleInput = (event) => {
7704
7822
  content.value = event.currentTarget.textContent;
7705
7823
  updateProject({ name: content.value });
7706
7824
  };
7707
- fetchProject(props.projectID);
7708
7825
  return (_ctx, _cache) => {
7709
7826
  return openBlock(), createBlock(Wrapper, null, {
7710
7827
  default: withCtx(() => [
@@ -7720,7 +7837,7 @@ const _sfc_main$1 = {
7720
7837
  _: 1
7721
7838
  }),
7722
7839
  createElementVNode("main", null, [
7723
- unref(project2) != null ? (openBlock(), createBlock(_sfc_main$6, { key: 0 })) : createCommentVNode("", true)
7840
+ unref(project) != null ? (openBlock(), createBlock(Settings, { key: 0 })) : createCommentVNode("", true)
7724
7841
  ]),
7725
7842
  createVNode(Footer)
7726
7843
  ]),
@@ -7729,13 +7846,11 @@ const _sfc_main$1 = {
7729
7846
  };
7730
7847
  }
7731
7848
  };
7732
- var SettingsPage = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-2fdda2ac"]]);
7733
- var UserPage_vue_vue_type_style_index_0_scoped_true_lang = "";
7734
- const _hoisted_1 = { class: "title" };
7735
- const _hoisted_2 = { id: "userImage" };
7736
- const _hoisted_3 = ["src"];
7737
- const _hoisted_4 = { id: "userDescription" };
7738
- const _sfc_main = {
7849
+ const _hoisted_1$1 = { class: "title" };
7850
+ const _hoisted_2$1 = { id: "userImage" };
7851
+ const _hoisted_3$1 = ["src"];
7852
+ const _hoisted_4$1 = { id: "userDescription" };
7853
+ const _sfc_main$1 = {
7739
7854
  props: {
7740
7855
  user: {
7741
7856
  type: Object,
@@ -7748,29 +7863,29 @@ const _sfc_main = {
7748
7863
  default: withCtx(() => [
7749
7864
  createVNode(Header, null, {
7750
7865
  default: withCtx(() => [
7751
- createElementVNode("span", _hoisted_1, toDisplayString(__props.user.nickname), 1)
7866
+ createElementVNode("span", _hoisted_1$1, toDisplayString(__props.user.nickname), 1)
7752
7867
  ]),
7753
7868
  _: 1
7754
7869
  }),
7755
7870
  createElementVNode("main", null, [
7756
7871
  createVNode(TwoCols, null, {
7757
7872
  side: withCtx(() => [
7758
- createElementVNode("div", _hoisted_2, [
7873
+ createElementVNode("div", _hoisted_2$1, [
7759
7874
  createElementVNode("img", {
7760
7875
  alt: "user avatar",
7761
7876
  src: __props.user.avatarURL,
7762
7877
  style: { "width": "100%" }
7763
- }, null, 8, _hoisted_3)
7878
+ }, null, 8, _hoisted_3$1)
7764
7879
  ]),
7765
- createElementVNode("div", _hoisted_4, [
7880
+ createElementVNode("div", _hoisted_4$1, [
7766
7881
  createElementVNode("h1", null, toDisplayString(__props.user.name), 1),
7767
7882
  createElementVNode("h2", null, toDisplayString(__props.user.nickname), 1),
7768
7883
  createElementVNode("p", null, "Joined " + toDisplayString(new Date(__props.user.joined).toDateString()), 1),
7769
- renderSlot(_ctx.$slots, "side", {}, void 0, true)
7884
+ renderSlot(_ctx.$slots, "side")
7770
7885
  ])
7771
7886
  ]),
7772
7887
  content: withCtx(() => [
7773
- renderSlot(_ctx.$slots, "content", {}, void 0, true)
7888
+ renderSlot(_ctx.$slots, "content")
7774
7889
  ]),
7775
7890
  _: 3
7776
7891
  })
@@ -7782,5 +7897,101 @@ const _sfc_main = {
7782
7897
  };
7783
7898
  }
7784
7899
  };
7785
- var UserPage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-6b96434d"]]);
7786
- export { Access, _sfc_main$9 as Annotations, Autocomplete, Button, _sfc_main$b as Collaborators, _sfc_main$7 as Files, Footer, Header, ImportFilesDialog, Nav, ProjectInfo, PureAnnotations, PureCollaborators, PureFiles, Select, _sfc_main$6 as Settings, SettingsPage, Table, TextArea, TextInput, UserPage, Wrapper };
7900
+ var NewProjectPage_vue_vue_type_style_index_0_scoped_true_lang = "";
7901
+ const _withScopeId = (n) => (pushScopeId("data-v-34344f58"), n = n(), popScopeId(), n);
7902
+ const _hoisted_1 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("span", { class: "title" }, "BrainBox", -1));
7903
+ const _hoisted_2 = { class: "container" };
7904
+ const _hoisted_3 = { class: "inner" };
7905
+ const _hoisted_4 = /* @__PURE__ */ _withScopeId(() => /* @__PURE__ */ createElementVNode("h1", null, "Create a new project", -1));
7906
+ const _hoisted_5 = { class: "warning" };
7907
+ const _hoisted_6 = /* @__PURE__ */ createTextVNode(" The project ");
7908
+ const _hoisted_7 = ["href"];
7909
+ const _hoisted_8 = /* @__PURE__ */ createTextVNode(" already exists ");
7910
+ const _hoisted_9 = { class: "warning" };
7911
+ const _hoisted_10 = { class: "actions" };
7912
+ const _hoisted_11 = /* @__PURE__ */ createTextVNode(" Create Project ");
7913
+ const _hoisted_12 = /* @__PURE__ */ createTextVNode("Cancel");
7914
+ const _sfc_main = {
7915
+ props: {
7916
+ onKeyDown: Function,
7917
+ validInput: Boolean,
7918
+ existingProject: Boolean
7919
+ },
7920
+ setup(__props) {
7921
+ const createProject = (value) => {
7922
+ location.pathname = `/project/${value}/settings`;
7923
+ };
7924
+ const cancel = () => location.assign("/");
7925
+ return (_ctx, _cache) => {
7926
+ return openBlock(), createBlock(Wrapper, null, {
7927
+ default: withCtx(() => [
7928
+ createVNode(Header, null, {
7929
+ default: withCtx(() => [
7930
+ _hoisted_1
7931
+ ]),
7932
+ _: 1
7933
+ }),
7934
+ createElementVNode("main", null, [
7935
+ createElementVNode("div", _hoisted_2, [
7936
+ createElementVNode("div", _hoisted_3, [
7937
+ _hoisted_4,
7938
+ createElementVNode("p", null, [
7939
+ renderSlot(_ctx.$slots, "default", {}, void 0, true)
7940
+ ]),
7941
+ createElementVNode("input", {
7942
+ class: "input",
7943
+ type: "text",
7944
+ onClick: _cache[0] || (_cache[0] = (...args) => _ctx.handleNameChange && _ctx.handleNameChange(...args)),
7945
+ onKeyup: _cache[1] || (_cache[1] = ($event) => {
7946
+ __props.onKeyDown($event);
7947
+ _ctx.value = $event.target.value;
7948
+ }),
7949
+ placeholder: "Enter the project short name"
7950
+ }, null, 32),
7951
+ withDirectives(createElementVNode("div", _hoisted_5, [
7952
+ _hoisted_6,
7953
+ createElementVNode("a", {
7954
+ href: `/project/${_ctx.value}`
7955
+ }, [
7956
+ createElementVNode("strong", null, toDisplayString(_ctx.value), 1)
7957
+ ], 8, _hoisted_7),
7958
+ _hoisted_8
7959
+ ], 512), [
7960
+ [vShow, __props.existingProject]
7961
+ ]),
7962
+ withDirectives(createElementVNode("div", _hoisted_9, " This name is not allowed. Project short names can only contain letters and numbers ", 512), [
7963
+ [vShow, !__props.validInput]
7964
+ ])
7965
+ ]),
7966
+ createElementVNode("div", _hoisted_10, [
7967
+ createVNode(Button, {
7968
+ disabled: !__props.validInput || __props.existingProject,
7969
+ onClick: _cache[2] || (_cache[2] = ($event) => createProject(_ctx.value)),
7970
+ class: "push-button"
7971
+ }, {
7972
+ default: withCtx(() => [
7973
+ _hoisted_11
7974
+ ]),
7975
+ _: 1
7976
+ }, 8, ["disabled"]),
7977
+ createVNode(Button, {
7978
+ class: "push-button",
7979
+ onClick: cancel
7980
+ }, {
7981
+ default: withCtx(() => [
7982
+ _hoisted_12
7983
+ ]),
7984
+ _: 1
7985
+ })
7986
+ ])
7987
+ ])
7988
+ ]),
7989
+ createVNode(Footer)
7990
+ ]),
7991
+ _: 3
7992
+ });
7993
+ };
7994
+ }
7995
+ };
7996
+ var NewProjectPage = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-34344f58"]]);
7997
+ export { Access, _sfc_main$a as Annotations, Autocomplete, Button, Checkbox, _sfc_main$c as Collaborators, _sfc_main$8 as Files, Footer, Header, ImportFilesDialog, Nav, NewProjectPage, ProjectInfo, PureAnnotations, PureCollaborators, PureFiles, Select, Settings, _sfc_main$2 as SettingsPage, Tab, Table, Tabs, TextArea, TextInput, _sfc_main$1 as UserPage, Wrapper };