@vuetify/one 0.6.0 → 0.6.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +44 -17
  2. package/dist/index.js +287 -244
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -92,7 +92,7 @@ declare const useAuthStore: pinia.StoreDefinition<"auth", pinia._UnwrapAll<Pick<
92
92
  }[];
93
93
  } | null>;
94
94
  url: string;
95
- isLoading: vue.Ref<boolean> | vue.ShallowRef<boolean>;
95
+ isLoading: vue.ShallowRef<boolean>;
96
96
  verify: {
97
97
  (force?: boolean): Promise<void>;
98
98
  promise: Promise<void> | null;
@@ -190,7 +190,7 @@ declare const useAuthStore: pinia.StoreDefinition<"auth", pinia._UnwrapAll<Pick<
190
190
  }[];
191
191
  } | null>;
192
192
  url: string;
193
- isLoading: vue.Ref<boolean> | vue.ShallowRef<boolean>;
193
+ isLoading: vue.ShallowRef<boolean>;
194
194
  verify: {
195
195
  (force?: boolean): Promise<void>;
196
196
  promise: Promise<void> | null;
@@ -288,7 +288,7 @@ declare const useAuthStore: pinia.StoreDefinition<"auth", pinia._UnwrapAll<Pick<
288
288
  }[];
289
289
  } | null>;
290
290
  url: string;
291
- isLoading: vue.Ref<boolean> | vue.ShallowRef<boolean>;
291
+ isLoading: vue.ShallowRef<boolean>;
292
292
  verify: {
293
293
  (force?: boolean): Promise<void>;
294
294
  promise: Promise<void> | null;
@@ -308,6 +308,7 @@ type Bin = {
308
308
  visibility: 'private' | 'public';
309
309
  };
310
310
  declare const useBinsStore: pinia.StoreDefinition<"bins", pinia._UnwrapAll<Pick<{
311
+ isLoading: vue.ShallowRef<boolean>;
311
312
  isOwner: vue.ComputedRef<boolean>;
312
313
  pinned: vue.ComputedRef<{
313
314
  id: string;
@@ -336,19 +337,27 @@ declare const useBinsStore: pinia.StoreDefinition<"bins", pinia._UnwrapAll<Pick<
336
337
  create: (bin: Bin) => Promise<{
337
338
  bin: Bin;
338
339
  }>;
339
- delete: (id: string) => Promise<Response>;
340
+ delete: (id: string) => Promise<boolean>;
340
341
  current: vue.Ref<Bin | undefined>;
341
342
  find: (id: string) => Promise<{
342
- bin: Bin;
343
+ bin: Bin | undefined;
343
344
  }>;
344
- get: () => Promise<Bin[]>;
345
+ get: () => Promise<{
346
+ id: string;
347
+ content: string;
348
+ favorite: boolean;
349
+ pinned: boolean;
350
+ owner: Record<string, unknown>;
351
+ visibility: 'private' | 'public';
352
+ }[]>;
345
353
  update: (bin: Bin, id: string) => Promise<{
346
354
  bin: Bin;
347
355
  }>;
348
356
  updateOrCreate: (bin: Bin, id?: string) => Promise<{
349
357
  bin: Bin;
350
358
  }>;
351
- }, "all" | "current">>, Pick<{
359
+ }, "all" | "isLoading" | "current">>, Pick<{
360
+ isLoading: vue.ShallowRef<boolean>;
352
361
  isOwner: vue.ComputedRef<boolean>;
353
362
  pinned: vue.ComputedRef<{
354
363
  id: string;
@@ -377,12 +386,19 @@ declare const useBinsStore: pinia.StoreDefinition<"bins", pinia._UnwrapAll<Pick<
377
386
  create: (bin: Bin) => Promise<{
378
387
  bin: Bin;
379
388
  }>;
380
- delete: (id: string) => Promise<Response>;
389
+ delete: (id: string) => Promise<boolean>;
381
390
  current: vue.Ref<Bin | undefined>;
382
391
  find: (id: string) => Promise<{
383
- bin: Bin;
392
+ bin: Bin | undefined;
384
393
  }>;
385
- get: () => Promise<Bin[]>;
394
+ get: () => Promise<{
395
+ id: string;
396
+ content: string;
397
+ favorite: boolean;
398
+ pinned: boolean;
399
+ owner: Record<string, unknown>;
400
+ visibility: 'private' | 'public';
401
+ }[]>;
386
402
  update: (bin: Bin, id: string) => Promise<{
387
403
  bin: Bin;
388
404
  }>;
@@ -390,6 +406,7 @@ declare const useBinsStore: pinia.StoreDefinition<"bins", pinia._UnwrapAll<Pick<
390
406
  bin: Bin;
391
407
  }>;
392
408
  }, "pinned" | "isOwner" | "favorites">, Pick<{
409
+ isLoading: vue.ShallowRef<boolean>;
393
410
  isOwner: vue.ComputedRef<boolean>;
394
411
  pinned: vue.ComputedRef<{
395
412
  id: string;
@@ -418,12 +435,19 @@ declare const useBinsStore: pinia.StoreDefinition<"bins", pinia._UnwrapAll<Pick<
418
435
  create: (bin: Bin) => Promise<{
419
436
  bin: Bin;
420
437
  }>;
421
- delete: (id: string) => Promise<Response>;
438
+ delete: (id: string) => Promise<boolean>;
422
439
  current: vue.Ref<Bin | undefined>;
423
440
  find: (id: string) => Promise<{
424
- bin: Bin;
441
+ bin: Bin | undefined;
425
442
  }>;
426
- get: () => Promise<Bin[]>;
443
+ get: () => Promise<{
444
+ id: string;
445
+ content: string;
446
+ favorite: boolean;
447
+ pinned: boolean;
448
+ owner: Record<string, unknown>;
449
+ visibility: 'private' | 'public';
450
+ }[]>;
427
451
  update: (bin: Bin, id: string) => Promise<{
428
452
  bin: Bin;
429
453
  }>;
@@ -443,6 +467,7 @@ declare const useHttpStore: pinia.StoreDefinition<"http", {
443
467
 
444
468
  declare const useOneStore: pinia.StoreDefinition<"one", pinia._UnwrapAll<Pick<{
445
469
  activate: () => Promise<void>;
470
+ manage: () => Promise<void>;
446
471
  cancel: () => Promise<void>;
447
472
  subscribe: () => Promise<void>;
448
473
  verify: () => Promise<void>;
@@ -518,10 +543,11 @@ declare const useOneStore: pinia.StoreDefinition<"one", pinia._UnwrapAll<Pick<{
518
543
  };
519
544
  };
520
545
  } | undefined>;
521
- isLoading: vue.Ref<boolean> | vue.ShallowRef<boolean>;
546
+ isLoading: vue.ShallowRef<boolean>;
522
547
  isSubscriber: vue.ComputedRef<boolean | undefined>;
523
548
  }, "isLoading">>, Pick<{
524
549
  activate: () => Promise<void>;
550
+ manage: () => Promise<void>;
525
551
  cancel: () => Promise<void>;
526
552
  subscribe: () => Promise<void>;
527
553
  verify: () => Promise<void>;
@@ -597,10 +623,11 @@ declare const useOneStore: pinia.StoreDefinition<"one", pinia._UnwrapAll<Pick<{
597
623
  };
598
624
  };
599
625
  } | undefined>;
600
- isLoading: vue.Ref<boolean> | vue.ShallowRef<boolean>;
626
+ isLoading: vue.ShallowRef<boolean>;
601
627
  isSubscriber: vue.ComputedRef<boolean | undefined>;
602
628
  }, "isSubscriber" | "subscription">, Pick<{
603
629
  activate: () => Promise<void>;
630
+ manage: () => Promise<void>;
604
631
  cancel: () => Promise<void>;
605
632
  subscribe: () => Promise<void>;
606
633
  verify: () => Promise<void>;
@@ -676,9 +703,9 @@ declare const useOneStore: pinia.StoreDefinition<"one", pinia._UnwrapAll<Pick<{
676
703
  };
677
704
  };
678
705
  } | undefined>;
679
- isLoading: vue.Ref<boolean> | vue.ShallowRef<boolean>;
706
+ isLoading: vue.ShallowRef<boolean>;
680
707
  isSubscriber: vue.ComputedRef<boolean | undefined>;
681
- }, "verify" | "cancel" | "activate" | "subscribe">>;
708
+ }, "verify" | "cancel" | "activate" | "manage" | "subscribe">>;
682
709
 
683
710
  declare const useUserStore: pinia.StoreDefinition<"user", pinia._UnwrapAll<Pick<{
684
711
  load: () => void;
package/dist/index.js CHANGED
@@ -1,51 +1,51 @@
1
- import { reactive as Y, toRefs as Z, ref as T, shallowRef as H, computed as b, watch as B, defineComponent as S, openBlock as g, createBlock as _, unref as a, withCtx as p, createVNode as f, createTextVNode as A, toDisplayString as N, createCommentVNode as K, mergeProps as Q, createElementVNode as j, createElementBlock as ee, Fragment as te, renderList as oe, pushScopeId as ne, popScopeId as se, onBeforeMount as ie } from "vue";
2
- import { defineStore as k } from "pinia";
3
- import { merge as C } from "lodash-es";
4
- import { mdiDiscord as M, mdiGithub as G, mdiViewDashboard as re, mdiLogoutVariant as ae, mdiLogin as le, mdiShieldStarOutline as ce, mdiReddit as ue } from "@mdi/js";
5
- import { VListItem as z, VList as J, VListSubheader as de } from "vuetify/lib/components/VList/index.mjs";
6
- import { VAvatar as fe } from "vuetify/lib/components/VAvatar/index.mjs";
1
+ import { reactive as Y, toRefs as Z, ref as B, shallowRef as j, computed as g, watch as N, defineComponent as $, openBlock as y, createBlock as b, unref as r, withCtx as m, createVNode as v, createTextVNode as D, toDisplayString as U, createCommentVNode as K, mergeProps as Q, createElementVNode as C, createElementBlock as ee, Fragment as te, renderList as ne, pushScopeId as oe, popScopeId as se, onBeforeMount as ie } from "vue";
2
+ import { defineStore as S } from "pinia";
3
+ import { merge as T } from "lodash-es";
4
+ import { mdiDiscord as M, mdiGithub as G, mdiViewDashboard as ae, mdiLogoutVariant as re, mdiLogin as le, mdiShieldStarOutline as ue, mdiReddit as ce } from "@mdi/js";
5
+ import { VListItem as z, VList as J, VListSubheader as fe } from "vuetify/lib/components/VList/index.mjs";
6
+ import { VAvatar as de } from "vuetify/lib/components/VAvatar/index.mjs";
7
7
  import { VBtn as W } from "vuetify/lib/components/VBtn/index.mjs";
8
8
  import { VMenu as pe } from "vuetify/lib/components/VMenu/index.mjs";
9
- import { VSkeletonLoader as me } from "vuetify/lib/components/VSkeletonLoader/index.mjs";
10
- import { useDisplay as ve, useTheme as he } from "vuetify";
9
+ import { VSkeletonLoader as ve } from "vuetify/lib/components/VSkeletonLoader/index.mjs";
10
+ import { useDisplay as me, useTheme as he } from "vuetify";
11
11
  import { VCard as ye, VCardTitle as ge, VCardSubtitle as be } from "vuetify/lib/components/VCard/index.mjs";
12
12
  import { VDialog as _e } from "vuetify/lib/components/VDialog/index.mjs";
13
13
  import { VImg as we } from "vuetify/lib/components/VImg/index.mjs";
14
14
  import { VFooter as Le } from "vuetify/lib/components/VFooter/index.mjs";
15
15
  import { VIcon as xe } from "vuetify/lib/components/VIcon/index.mjs";
16
- const U = k("http", {
16
+ const R = S("http", {
17
17
  state: () => ({
18
18
  url: ""
19
19
  }),
20
20
  actions: {
21
- async fetch(o, t = {}) {
22
- const n = await fetch(`${this.url}${o}`, {
21
+ async fetch(n, t = {}) {
22
+ const o = await fetch(`${this.url}${n}`, {
23
23
  credentials: "include",
24
24
  ...t
25
25
  });
26
- return n.status === 204 ? n : n.json();
26
+ return o.status === 204 ? o : o.json();
27
27
  },
28
- async post(o, t, n = {}) {
29
- return this.fetch(o, {
28
+ async post(n, t, o = {}) {
29
+ return this.fetch(n, {
30
30
  method: "POST",
31
31
  headers: {
32
32
  "Content-Type": "application/json"
33
33
  },
34
34
  body: JSON.stringify(t),
35
- ...n
35
+ ...o
36
36
  });
37
37
  },
38
- async get(o, t = {}) {
39
- return this.fetch(o, t);
38
+ async get(n, t = {}) {
39
+ return this.fetch(n, t);
40
40
  },
41
- async delete(o, t = {}) {
42
- return this.fetch(o, {
41
+ async delete(n, t = {}) {
42
+ return this.fetch(n, {
43
43
  method: "DELETE",
44
44
  ...t
45
45
  });
46
46
  }
47
47
  }
48
- }), O = typeof window < "u", P = {
48
+ }), H = typeof window < "u", P = {
49
49
  v: 4,
50
50
  api: "link-only",
51
51
  avatar: "",
@@ -74,156 +74,156 @@ const U = k("http", {
74
74
  jobs: null
75
75
  }
76
76
  }
77
- }, q = k("user", () => {
78
- const o = Y(C({}, P));
77
+ }, q = S("user", () => {
78
+ const n = Y(T({}, P));
79
79
  function t() {
80
- if (!O)
80
+ if (!H)
81
81
  return;
82
- const r = localStorage.getItem("vuetify@user"), e = r ? JSON.parse(r) : {}, m = e.v === o.v;
83
- e.v || (e.pwaRefresh = !0, typeof e.api == "boolean" && (e.api = e.api ? "inline" : "link-only"), typeof e.rtl == "boolean" && (e.direction = e.rtl ? "rtl" : "ltr", delete e.rtl), typeof e.theme == "object" && (e.mixedTheme = e.theme.mixed, e.theme = e.theme.system ? "system" : e.theme.dark ? "dark" : "light"), Array.isArray(e.notifications) && (e.notifications = { read: e.notifications }), typeof e.last == "object" && (e.notifications.last = e.last, delete e.last)), e.v === 1 && (Array.isArray(e.composition) && (e.composition = "composition"), Array.isArray(e.notifications.last.banner) || (e.notifications = e.notifications || {}, e.notifications.last = e.notifications.last || {}, e.notifications.last.banner = [])), e.v === 2 && (e.syncSettings = !0, e.disableAds = !1, e.v = 3), e.v === 3 && (e.quickbar = !1), e.v = o.v, Object.assign(o, C(o, e)), m && n();
82
+ const s = localStorage.getItem("vuetify@user"), e = s ? JSON.parse(s) : {}, h = e.v === n.v;
83
+ e.v || (e.pwaRefresh = !0, typeof e.api == "boolean" && (e.api = e.api ? "inline" : "link-only"), typeof e.rtl == "boolean" && (e.direction = e.rtl ? "rtl" : "ltr", delete e.rtl), typeof e.theme == "object" && (e.mixedTheme = e.theme.mixed, e.theme = e.theme.system ? "system" : e.theme.dark ? "dark" : "light"), Array.isArray(e.notifications) && (e.notifications = { read: e.notifications }), typeof e.last == "object" && (e.notifications.last = e.last, delete e.last)), e.v === 1 && (Array.isArray(e.composition) && (e.composition = "composition"), Array.isArray(e.notifications.last.banner) || (e.notifications = e.notifications || {}, e.notifications.last = e.notifications.last || {}, e.notifications.last.banner = [])), e.v === 2 && (e.syncSettings = !0, e.disableAds = !1, e.v = 3), e.v === 3 && (e.quickbar = !1), e.v = n.v, Object.assign(n, T(n, e)), h && o();
84
84
  }
85
- function n() {
86
- O && localStorage.setItem("vuetify@user", JSON.stringify(o, null, 2));
85
+ function o() {
86
+ H && localStorage.setItem("vuetify@user", JSON.stringify(n, null, 2));
87
87
  }
88
- function s() {
89
- O && (Object.assign(o, C({}, P)), n());
88
+ function i() {
89
+ H && (Object.assign(n, T({}, P)), o());
90
90
  }
91
91
  return t(), {
92
- ...Z(o),
92
+ ...Z(n),
93
93
  load: t,
94
- save: n,
95
- reset: s
94
+ save: o,
95
+ reset: i
96
96
  };
97
- }), L = k("auth", () => {
98
- const o = T(null), t = U(), n = q(), s = H(!1), r = b(() => {
99
- var i, l;
100
- return !t.url || ((i = o.value) == null ? void 0 : i.isAdmin) || ((l = o.value) == null ? void 0 : l.sponsorships.some((w) => w.isActive));
97
+ }), w = S("auth", () => {
98
+ const n = B(null), t = R(), o = q(), i = j(!1), s = g(() => {
99
+ var l, a;
100
+ return !t.url || ((l = n.value) == null ? void 0 : l.isAdmin) || ((a = n.value) == null ? void 0 : a.sponsorships.some((d) => d.isActive));
101
101
  });
102
102
  let e = !1;
103
- B(o, (i) => {
104
- if (!(i != null && i.settings))
103
+ N(n, (l) => {
104
+ if (!(l != null && l.settings))
105
105
  return;
106
- const l = localStorage.getItem("vuetify@user") || "{}";
107
- JSON.stringify(i.settings, null, 2) !== l && (e = !0, Object.assign(n, i.settings));
108
- }), n.$subscribe(() => {
109
- e || m(), e = !1;
106
+ const a = localStorage.getItem("vuetify@user") || "{}";
107
+ JSON.stringify(l.settings, null, 2) !== a && (e = !0, Object.assign(o, l.settings));
108
+ }), o.$subscribe(() => {
109
+ e || h(), e = !1;
110
110
  });
111
- async function m() {
111
+ async function h() {
112
112
  try {
113
- await t.post("/user/settings", { settings: n.$state });
114
- } catch (i) {
115
- console.error(i);
113
+ await t.post("/user/settings", { settings: o.$state });
114
+ } catch (l) {
115
+ console.error(l);
116
116
  }
117
117
  }
118
- async function u(i = !1) {
119
- if (u.promise)
120
- return u.promise;
121
- s.value = !0, u.promise = fetch(`${t.url}/auth/verify`, {
118
+ async function f(l = !1) {
119
+ if (f.promise)
120
+ return f.promise;
121
+ i.value = !0, f.promise = fetch(`${t.url}/auth/verify`, {
122
122
  credentials: "include",
123
- headers: i ? {
123
+ headers: l ? {
124
124
  "Cache-Control": "no-cache"
125
125
  } : void 0
126
126
  }).then(
127
- async (l) => {
128
- l.ok ? o.value = (await l.json()).user : l.status === 401 ? o.value = null : console.error(l.statusText);
127
+ async (a) => {
128
+ a.ok ? n.value = (await a.json()).user : a.status === 401 ? n.value = null : console.error(a.statusText);
129
129
  },
130
130
  () => {
131
131
  }
132
132
  ).finally(() => {
133
- s.value = !1, u.promise = null;
133
+ i.value = !1, f.promise = null;
134
134
  });
135
135
  }
136
- u.promise = null;
137
- async function x(i = "github") {
138
- s.value = !0;
139
- const l = `${t.url}/auth/${i}/redirect`, w = 400, c = 600, d = window.screenX + (window.innerWidth - w) / 2, h = window.screenY + (window.innerHeight - c) / 2, v = window.open(
136
+ f.promise = null;
137
+ async function L(l = "github") {
138
+ i.value = !0;
139
+ const a = `${t.url}/auth/${l}/redirect`, d = 400, k = 600, u = window.screenX + (window.innerWidth - d) / 2, c = window.screenY + (window.innerHeight - k) / 2, p = window.open(
140
140
  "",
141
141
  "vuetify:authorize:popup",
142
- `popup,left=${d},top=${h},width=${w},height=${c},resizable`
142
+ `popup,left=${u},top=${c},width=${d},height=${k},resizable`
143
143
  );
144
- if (!v) {
144
+ if (!p) {
145
145
  console.error("Failed to open popup");
146
146
  return;
147
147
  }
148
- v.location.href = l;
149
- let I = -1, R = -1;
150
- function E($) {
148
+ p.location.href = a;
149
+ let I = -1, A = -1;
150
+ function E(V) {
151
151
  var F;
152
- $.origin === t.url && ((F = $.data) == null ? void 0 : F.type) === "auth-response" && ($.data.status === "success" ? (o.value || localStorage.setItem("vuetify@lastLoginProvider", i), o.value = $.data.body.user) : console.error($.data.message), D());
152
+ V.origin === t.url && ((F = V.data) == null ? void 0 : F.type) === "auth-response" && (V.data.status === "success" ? (n.value || localStorage.setItem("vuetify@lastLoginProvider", l), n.value = V.data.body.user) : console.error(V.data.message), O());
153
153
  }
154
- function D() {
155
- window.removeEventListener("message", E), window.clearInterval(I), window.clearTimeout(R), v == null || v.close(), s.value = !1;
154
+ function O() {
155
+ window.removeEventListener("message", E), window.clearInterval(I), window.clearTimeout(A), p == null || p.close(), i.value = !1;
156
156
  }
157
157
  window.addEventListener("message", E), I = window.setInterval(() => {
158
- !v || v.closed ? (console.error("Auth popup closed"), D()) : v.postMessage({ type: "auth-request" }, "*");
159
- }, 1e3), R = window.setTimeout(() => {
160
- D(), console.error("Auth timed out");
158
+ !p || p.closed ? (console.error("Auth popup closed"), O()) : p.postMessage({ type: "auth-request" }, "*");
159
+ }, 1e3), A = window.setTimeout(() => {
160
+ O(), console.error("Auth timed out");
161
161
  }, 120 * 1e3);
162
162
  }
163
- async function V() {
164
- s.value = !0;
163
+ async function x() {
164
+ i.value = !0;
165
165
  try {
166
- await t.post("/auth/logout"), await u(!0), o.value = null;
167
- } catch (i) {
168
- console.error(i);
166
+ await t.post("/auth/logout"), await f(!0), n.value = null;
167
+ } catch (l) {
168
+ console.error(l);
169
169
  } finally {
170
- s.value = !1;
170
+ i.value = !1;
171
171
  }
172
172
  }
173
- function y() {
173
+ function _() {
174
174
  return localStorage.getItem("vuetify@lastLoginProvider");
175
175
  }
176
- return y() && u(), {
177
- user: o,
176
+ return _() && f(), {
177
+ user: n,
178
178
  url: t.url,
179
- isLoading: s,
180
- verify: u,
181
- login: x,
182
- logout: V,
183
- isSubscriber: r,
184
- lastLoginProvider: y
179
+ isLoading: i,
180
+ verify: f,
181
+ login: L,
182
+ logout: x,
183
+ isSubscriber: s,
184
+ lastLoginProvider: _
185
185
  };
186
- }), Ve = /* @__PURE__ */ S({
186
+ }), Ve = /* @__PURE__ */ $({
187
187
  __name: "VoDiscordLogin",
188
- setup(o) {
189
- const t = L();
190
- return (n, s) => (g(), _(z, {
191
- "prepend-icon": `svg:${a(M)}`,
192
- title: a(t).user ? "Connect Discord" : "Log in with Discord",
193
- subtitle: !a(t).user && a(t).lastLoginProvider() === "discord" ? "Last Used" : "",
188
+ setup(n) {
189
+ const t = w();
190
+ return (o, i) => (y(), b(z, {
191
+ "prepend-icon": `svg:${r(M)}`,
192
+ title: r(t).user ? "Connect Discord" : "Log in with Discord",
193
+ subtitle: !r(t).user && r(t).lastLoginProvider() === "discord" ? "Last Used" : "",
194
194
  nav: "",
195
195
  "base-color": "#5865F2",
196
196
  slim: "",
197
197
  variant: "flat",
198
- onClick: s[0] || (s[0] = (r) => a(t).login("discord"))
198
+ onClick: i[0] || (i[0] = (s) => r(t).login("discord"))
199
199
  }, null, 8, ["prepend-icon", "title", "subtitle"]));
200
200
  }
201
- }), $e = /* @__PURE__ */ S({
201
+ }), $e = /* @__PURE__ */ $({
202
202
  __name: "VoGithubLogin",
203
- setup(o) {
204
- const t = L();
205
- return (n, s) => (g(), _(z, {
206
- "prepend-icon": `svg:${a(G)}`,
207
- title: a(t).user ? "Connect GitHub" : "Log in with GitHub",
208
- subtitle: !a(t).user && a(t).lastLoginProvider() === "github" ? "Last Used" : "",
203
+ setup(n) {
204
+ const t = w();
205
+ return (o, i) => (y(), b(z, {
206
+ "prepend-icon": `svg:${r(G)}`,
207
+ title: r(t).user ? "Connect GitHub" : "Log in with GitHub",
208
+ subtitle: !r(t).user && r(t).lastLoginProvider() === "github" ? "Last Used" : "",
209
209
  "base-color": "#2a2a2a",
210
210
  nav: "",
211
211
  slim: "",
212
212
  variant: "flat",
213
- onClick: s[0] || (s[0] = (r) => a(t).login("github"))
213
+ onClick: i[0] || (i[0] = (s) => r(t).login("github"))
214
214
  }, null, 8, ["prepend-icon", "title", "subtitle"]));
215
215
  }
216
- }), Se = /* @__PURE__ */ S({
216
+ }), Se = /* @__PURE__ */ $({
217
217
  __name: "VoUserBtn",
218
218
  props: {
219
219
  external: Boolean
220
220
  },
221
- setup(o) {
222
- const t = o, n = L(), s = q(), r = b(() => [
221
+ setup(n) {
222
+ const t = n, o = w(), i = q(), s = g(() => [
223
223
  { title: "Options", type: "subheader" },
224
224
  {
225
225
  title: "My Dashboard",
226
- appendIcon: `svg:${re}`,
226
+ appendIcon: `svg:${ae}`,
227
227
  to: t.external ? void 0 : "/user/dashboard",
228
228
  href: t.external ? "https://vuetifyjs.com/user/dashboard/" : void 0,
229
229
  target: t.external ? "_blank" : void 0
@@ -236,38 +236,38 @@ const U = k("http", {
236
236
  },
237
237
  {
238
238
  title: "Logout",
239
- appendIcon: `svg:${ae}`,
239
+ appendIcon: `svg:${re}`,
240
240
  onClick: () => {
241
- n.logout();
241
+ o.logout();
242
242
  }
243
243
  }
244
244
  ]);
245
- return (e, m) => (g(), _(W, {
245
+ return (e, h) => (y(), b(W, {
246
246
  class: "vo-user-btn",
247
- loading: a(n).isLoading,
247
+ loading: r(o).isLoading,
248
248
  icon: ""
249
249
  }, {
250
- loader: p(() => [
251
- f(me, { type: "avatar" })
250
+ loader: m(() => [
251
+ v(ve, { type: "avatar" })
252
252
  ]),
253
- default: p(() => [
254
- f(pe, {
255
- disabled: !a(n).user || a(n).isLoading,
253
+ default: m(() => [
254
+ v(pe, {
255
+ disabled: !r(o).user || r(o).isLoading,
256
256
  activator: "parent",
257
257
  location: "bottom end"
258
258
  }, {
259
- default: p(() => [
260
- f(J, {
261
- items: r.value,
259
+ default: m(() => [
260
+ v(J, {
261
+ items: s.value,
262
262
  lines: !1,
263
263
  density: "compact",
264
264
  "item-props": "",
265
265
  nav: ""
266
266
  }, {
267
- subheader: p(({ props: u }) => [
268
- f(de, { class: "text-high-emphasis text-uppercase font-weight-black" }, {
269
- default: p(() => [
270
- A(N(u.title), 1)
267
+ subheader: m(({ props: f }) => [
268
+ v(fe, { class: "text-high-emphasis text-uppercase font-weight-black" }, {
269
+ default: m(() => [
270
+ D(U(f.title), 1)
271
271
  ]),
272
272
  _: 2
273
273
  }, 1024)
@@ -277,70 +277,70 @@ const U = k("http", {
277
277
  ]),
278
278
  _: 1
279
279
  }, 8, ["disabled"]),
280
- a(n).user ? (g(), _(fe, {
280
+ r(o).user ? (y(), b(de, {
281
281
  key: 0,
282
- image: a(s).avatar || a(n).user.picture || ""
282
+ image: r(i).avatar || r(o).user.picture || ""
283
283
  }, null, 8, ["image"])) : K("", !0)
284
284
  ]),
285
285
  _: 1
286
286
  }, 8, ["loading"]));
287
287
  }
288
288
  });
289
- const X = (o, t) => {
290
- const n = o.__vccOpts || o;
291
- for (const [s, r] of t)
292
- n[s] = r;
293
- return n;
294
- }, ke = /* @__PURE__ */ X(Se, [["__scopeId", "data-v-aeb16535"]]), Ie = { class: "text-center mb-6" }, Ae = /* @__PURE__ */ S({
289
+ const X = (n, t) => {
290
+ const o = n.__vccOpts || n;
291
+ for (const [i, s] of t)
292
+ o[i] = s;
293
+ return o;
294
+ }, ke = /* @__PURE__ */ X(Se, [["__scopeId", "data-v-aeb16535"]]), Ie = { class: "text-center mb-6" }, Ae = /* @__PURE__ */ $({
295
295
  __name: "VoAuthDialog",
296
- setup(o) {
297
- const t = L(), { mdAndDown: n, lgAndUp: s } = ve(), r = he();
298
- return (e, m) => !a(t).user && !a(t).isLoading ? (g(), _(_e, {
296
+ setup(n) {
297
+ const t = w(), { mdAndDown: o, lgAndUp: i } = me(), s = he();
298
+ return (e, h) => !r(t).user && !r(t).isLoading ? (y(), b(_e, {
299
299
  key: 0,
300
300
  "max-width": "480"
301
301
  }, {
302
- activator: p(({ props: u }) => [
303
- f(W, Q({
304
- ...u,
305
- [`${a(s) ? "append-" : ""}icon`]: `svg:${a(le)}`,
306
- text: a(s) ? "Login" : void 0
302
+ activator: m(({ props: f }) => [
303
+ v(W, Q({
304
+ ...f,
305
+ [`${r(i) ? "append-" : ""}icon`]: `svg:${r(le)}`,
306
+ text: r(i) ? "Login" : void 0
307
307
  }, {
308
- rounded: a(n),
308
+ rounded: r(o),
309
309
  class: "text-none",
310
310
  color: "primary",
311
311
  variant: "outlined"
312
312
  }), null, 16, ["rounded"])
313
313
  ]),
314
- default: p(() => [
315
- f(ye, { class: "pt-6 pb-1 pb-sm-4 px-4 px-sm-8" }, {
316
- default: p(() => [
317
- f(we, {
318
- src: `https://cdn.vuetifyjs.com/docs/images/logos/vuetify-logo-v3-slim-text-${a(r).name.value}.svg`,
314
+ default: m(() => [
315
+ v(ye, { class: "pt-6 pb-1 pb-sm-4 px-4 px-sm-8" }, {
316
+ default: m(() => [
317
+ v(we, {
318
+ src: `https://cdn.vuetifyjs.com/docs/images/logos/vuetify-logo-v3-slim-text-${r(s).name.value}.svg`,
319
319
  class: "mb-4",
320
320
  height: "30"
321
321
  }, null, 8, ["src"]),
322
- j("div", Ie, [
323
- f(ge, { class: "text-h5 mb-1 text-md-h4 font-weight-bold" }, {
324
- default: p(() => [
325
- A(N(a(t).lastLoginProvider() ? "Welcome Back" : "Log in to Vuetify"), 1)
322
+ C("div", Ie, [
323
+ v(ge, { class: "text-h5 mb-1 text-md-h4 font-weight-bold" }, {
324
+ default: m(() => [
325
+ D(U(r(t).lastLoginProvider() ? "Welcome Back" : "Log in to Vuetify"), 1)
326
326
  ]),
327
327
  _: 1
328
328
  }),
329
- f(be, { class: "text-wrap" }, {
330
- default: p(() => [
331
- A(" Sign in with GitHub or Discord to save your settings and unlock exclusive subscriber perks. ")
329
+ v(be, { class: "text-wrap" }, {
330
+ default: m(() => [
331
+ D(" Sign in with GitHub or Discord to save your settings and unlock exclusive subscriber perks. ")
332
332
  ]),
333
333
  _: 1
334
334
  })
335
335
  ]),
336
- f(J, {
336
+ v(J, {
337
337
  class: "mx-auto",
338
338
  "max-width": "300",
339
339
  width: "100%"
340
340
  }, {
341
- default: p(() => [
342
- f($e, { class: "mb-3" }),
343
- f(Ve)
341
+ default: m(() => [
342
+ v($e, { class: "mb-3" }),
343
+ v(Ve)
344
344
  ]),
345
345
  _: 1
346
346
  })
@@ -349,14 +349,14 @@ const X = (o, t) => {
349
349
  })
350
350
  ]),
351
351
  _: 1
352
- })) : (g(), _(ke, { key: 1 }));
352
+ })) : (y(), b(ke, { key: 1 }));
353
353
  }
354
- }), je = (o) => (ne("data-v-b66944c0"), o = o(), se(), o), De = ["href", "title"], Ce = {
354
+ }), je = (n) => (oe("data-v-b66944c0"), n = n(), se(), n), De = ["href", "title"], Ce = {
355
355
  class: "text-caption text-disabled",
356
356
  style: { position: "absolute", right: "16px" }
357
- }, Oe = /* @__PURE__ */ je(() => /* @__PURE__ */ j("span", { class: "d-none d-sm-inline-block" }, "Vuetify, LLC", -1)), Te = /* @__PURE__ */ S({
357
+ }, Oe = /* @__PURE__ */ je(() => /* @__PURE__ */ C("span", { class: "d-none d-sm-inline-block" }, "Vuetify, LLC", -1)), Te = /* @__PURE__ */ $({
358
358
  __name: "VoFooter",
359
- setup(o) {
359
+ setup(n) {
360
360
  const t = [
361
361
  {
362
362
  title: "Vuetify Documentation",
@@ -365,7 +365,7 @@ const X = (o, t) => {
365
365
  },
366
366
  {
367
367
  title: "Vuetify Support",
368
- icon: `svg:${ce}`,
368
+ icon: `svg:${ue}`,
369
369
  href: "https://support.vuetifyjs.com/"
370
370
  },
371
371
  {
@@ -385,31 +385,31 @@ const X = (o, t) => {
385
385
  },
386
386
  {
387
387
  title: "Vuetify Reddit",
388
- icon: `svg:${ue}`,
388
+ icon: `svg:${ce}`,
389
389
  href: "https://reddit.com/r/vuetifyjs"
390
390
  }
391
391
  ];
392
- return (n, s) => (g(), _(Le, {
392
+ return (o, i) => (y(), b(Le, {
393
393
  class: "vo-footer",
394
394
  theme: "dark",
395
395
  height: "40"
396
396
  }, {
397
- default: p(() => [
398
- (g(), ee(te, null, oe(t, (r) => j("a", {
399
- key: r.title,
400
- href: r.href,
401
- title: r.title,
397
+ default: m(() => [
398
+ (y(), ee(te, null, ne(t, (s) => C("a", {
399
+ key: s.title,
400
+ href: s.href,
401
+ title: s.title,
402
402
  class: "d-inline-block mx-2 social-link",
403
403
  target: "_blank",
404
404
  rel: "noopener noreferrer"
405
405
  }, [
406
- f(xe, {
407
- icon: r.icon,
408
- size: r.icon === "$vuetify" ? 24 : 16
406
+ v(xe, {
407
+ icon: s.icon,
408
+ size: s.icon === "$vuetify" ? 24 : 16
409
409
  }, null, 8, ["icon", "size"])
410
410
  ], 8, De)), 64)),
411
- j("div", Ce, [
412
- A(" © 2016-" + N((/* @__PURE__ */ new Date()).getFullYear()) + " ", 1),
411
+ C("div", Ce, [
412
+ D(" © 2016-" + U((/* @__PURE__ */ new Date()).getFullYear()) + " ", 1),
413
413
  Oe
414
414
  ])
415
415
  ]),
@@ -417,129 +417,172 @@ const X = (o, t) => {
417
417
  }));
418
418
  }
419
419
  });
420
- const He = /* @__PURE__ */ X(Te, [["__scopeId", "data-v-b66944c0"]]), Ze = k("bins", () => {
421
- const o = L(), t = U(), n = T([]), s = T(), r = H(-1), e = b(() => !o.user || !s.value ? !1 : o.user.id === s.value.owner.id), m = b(() => n.value.filter((c) => c.favorite)), u = b(() => n.value.filter((c) => c.pinned));
422
- B(() => s, () => {
423
- window.clearTimeout(r.value), r.value = window.setTimeout(() => {
424
- !s.value || !e.value || i(s.value, s.value.id);
420
+ const He = /* @__PURE__ */ X(Te, [["__scopeId", "data-v-b66944c0"]]), Ze = S("bins", () => {
421
+ const n = w(), t = R(), o = B([]), i = B(), s = j(!1), e = j(-1), h = g(() => !n.user || !i.value ? !1 : n.user.id === i.value.owner.id), f = g(() => o.value.filter((u) => u.favorite)), L = g(() => o.value.filter((u) => u.pinned));
422
+ N(i, () => {
423
+ window.clearTimeout(e.value), e.value = window.setTimeout(() => {
424
+ !i.value || !h.value || a(i.value, i.value.id);
425
425
  }, 100);
426
426
  }, { deep: !0 });
427
427
  async function x() {
428
- const c = await t.get("/one/bins");
429
- return n.value = c.bins, c.bins;
428
+ try {
429
+ s.value = !0;
430
+ const u = await t.get("/one/bins");
431
+ o.value = u.bins;
432
+ } catch {
433
+ } finally {
434
+ s.value = !1;
435
+ }
436
+ return o.value;
430
437
  }
431
- async function V(c) {
432
- const d = await t.delete(`/one/bins/${c}`);
433
- return n.value = n.value.filter((h) => h.id !== c), d;
438
+ async function _(u) {
439
+ try {
440
+ s.value = !0, await t.delete(`/one/bins/${u}`), o.value = o.value.filter((c) => c.id !== u);
441
+ } catch {
442
+ } finally {
443
+ s.value = !1;
444
+ }
445
+ return !0;
434
446
  }
435
- async function y(c) {
436
- const d = await t.post("/one/bins", { bin: c });
437
- return n.value.push(d.bin), s.value = d.bin, d;
447
+ async function l(u) {
448
+ try {
449
+ s.value = !0;
450
+ const c = await t.post("/one/bins", { bin: u });
451
+ return o.value.push(c.bin), i.value = c.bin, c;
452
+ } catch {
453
+ } finally {
454
+ s.value = !1;
455
+ }
456
+ return { bin: u };
438
457
  }
439
- async function i(c, d) {
440
- const h = await t.post(`/one/bins/${d}`, { bin: c }), v = n.value.findIndex((I) => I.id === d);
441
- return n.value.splice(v, 1, h.bin), h;
458
+ async function a(u, c) {
459
+ try {
460
+ s.value = !0;
461
+ const p = await t.post(`/one/bins/${c}`, { bin: u }), I = o.value.findIndex((A) => A.id === c);
462
+ o.value.splice(I, 1, p.bin);
463
+ } catch {
464
+ } finally {
465
+ s.value = !1;
466
+ }
467
+ return { bin: u };
442
468
  }
443
- async function l(c, d) {
444
- const h = d ? await i(c, d) : await y(c);
445
- return s.value = h.bin, h;
469
+ async function d(u, c) {
470
+ try {
471
+ s.value = !0;
472
+ const p = c ? await a(u, c) : await l(u);
473
+ i.value = p.bin;
474
+ } catch {
475
+ } finally {
476
+ s.value = !1;
477
+ }
478
+ return { bin: u };
446
479
  }
447
- async function w(c) {
448
- const d = await t.get(`/one/bins/${c}`);
449
- return s.value = d.bin, d;
480
+ async function k(u) {
481
+ try {
482
+ s.value = !0;
483
+ const c = await t.get(`/one/bins/${u}`);
484
+ i.value = c.bin;
485
+ } catch {
486
+ } finally {
487
+ s.value = !1;
488
+ }
489
+ return { bin: i.value };
450
490
  }
451
491
  return {
452
- isOwner: e,
453
- pinned: u,
454
- favorites: m,
455
- all: n,
456
- create: y,
457
- delete: V,
458
- current: s,
459
- find: w,
492
+ isLoading: s,
493
+ isOwner: h,
494
+ pinned: L,
495
+ favorites: f,
496
+ all: o,
497
+ create: l,
498
+ delete: _,
499
+ current: i,
500
+ find: k,
460
501
  get: x,
461
- update: i,
462
- updateOrCreate: l
502
+ update: a,
503
+ updateOrCreate: d
463
504
  };
464
- }), Ke = k("one", () => {
465
- const t = new URLSearchParams(window.location.search).get("session_id"), n = L(), s = U(), r = H(!1), e = b(() => {
466
- var i;
467
- return (i = n.user) == null ? void 0 : i.sponsorships.find((l) => l.platform === "stripe" && l.tierName.startsWith("sub_"));
468
- }), m = b(() => {
469
- var i;
470
- return (i = e.value) == null ? void 0 : i.isActive;
505
+ }), Ke = S("one", () => {
506
+ const t = new URLSearchParams(window.location.search).get("session_id"), o = w(), i = R(), s = j(!1), e = g(() => {
507
+ var a;
508
+ return (a = o.user) == null ? void 0 : a.sponsorships.find((d) => d.platform === "stripe" && d.tierName.startsWith("sub_"));
509
+ }), h = g(() => {
510
+ var a;
511
+ return (a = e.value) == null ? void 0 : a.isActive;
471
512
  });
472
513
  ie(async () => {
473
- t && await u();
474
- }), B(m, (i) => {
475
- i && y();
476
- });
477
- async function u() {
514
+ t && await f();
515
+ }), N(h, l);
516
+ async function f() {
478
517
  try {
479
- r.value = !0;
480
- const i = await s.post("/one/activate", { sessionId: t });
481
- n.user = i.user;
518
+ s.value = !0;
519
+ const a = await i.post("/one/activate", { sessionId: t });
520
+ o.user = a.user;
482
521
  } catch {
483
522
  } finally {
484
- r.value = !1;
523
+ s.value = !1;
485
524
  }
486
525
  }
526
+ async function L() {
527
+ s.value = !0, window.location.href = `${i.url}/one/manage`;
528
+ }
487
529
  async function x() {
488
- r.value = !0, window.location.href = `${s.url}/one/subscribe`;
530
+ s.value = !0, window.location.href = `${i.url}/one/subscribe`;
489
531
  }
490
- async function V() {
491
- var i;
532
+ async function _() {
533
+ var a;
492
534
  if (e.value)
493
535
  try {
494
- r.value = !0;
495
- const l = await s.post(
496
- `/one/cancel?subscriptionId=${(i = e.value) == null ? void 0 : i.tierName}`
536
+ s.value = !0;
537
+ const d = await i.post(
538
+ `/one/cancel?subscriptionId=${(a = e.value) == null ? void 0 : a.tierName}`
497
539
  );
498
- n.user = l.user;
540
+ o.user = d.user;
499
541
  } catch {
500
542
  } finally {
501
- r.value = !1;
543
+ s.value = !1;
502
544
  }
503
545
  }
504
- async function y() {
505
- var i;
546
+ async function l() {
547
+ var a;
506
548
  if (e.value)
507
549
  try {
508
- r.value = !0;
509
- const l = await s.post(
510
- `/one/verify?subscriptionId=${(i = e.value) == null ? void 0 : i.tierName}`
550
+ s.value = !0;
551
+ const d = await i.post(
552
+ `/one/verify?subscriptionId=${(a = e.value) == null ? void 0 : a.tierName}`
511
553
  );
512
- n.user = l.user;
554
+ o.user = d.user;
513
555
  } catch {
514
556
  } finally {
515
- r.value = !1;
557
+ s.value = !1;
516
558
  }
517
559
  }
518
560
  return {
519
- activate: u,
520
- cancel: V,
561
+ activate: f,
562
+ manage: L,
563
+ cancel: _,
521
564
  subscribe: x,
522
- verify: y,
565
+ verify: l,
523
566
  subscription: e,
524
- isLoading: r,
525
- isSubscriber: m
567
+ isLoading: s,
568
+ isSubscriber: h
526
569
  };
527
570
  });
528
571
  function Qe() {
529
- function o(t) {
572
+ function n(t) {
530
573
  t.component("VoAuthDialog", Ae), t.component("VoFooter", He);
531
574
  }
532
- return { install: o };
575
+ return { install: n };
533
576
  }
534
- function et(o) {
535
- o.store.url = "https://api.vuetifyjs.com";
577
+ function et(n) {
578
+ n.store.url = "https://api.vuetifyjs.com";
536
579
  }
537
580
  export {
538
581
  Qe as createOne,
539
582
  et as one,
540
- L as useAuthStore,
583
+ w as useAuthStore,
541
584
  Ze as useBinsStore,
542
- U as useHttpStore,
585
+ R as useHttpStore,
543
586
  Ke as useOneStore,
544
587
  q as useUserStore
545
588
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vuetify/one",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "license": "MIT",