@wssto2/vue-core 0.18.0 → 0.20.0
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.
- package/CHANGELOG.md +25 -0
- package/README.md +4 -0
- package/dist/{AccessGate.vue_vue_type_script_setup_true_lang-Bg8JFAOT.js → AccessGate.vue_vue_type_script_setup_true_lang-Dw_pnsh9.js} +1 -1
- package/dist/{AccountMenuItem.vue_vue_type_script_setup_true_lang-BIYgaihv.js → AccountMenuItem.vue_vue_type_script_setup_true_lang-rmH1XbU9.js} +1 -1
- package/dist/{ActionRow.vue_vue_type_script_setup_true_lang-B5IMNnTf.js → ActionRow.vue_vue_type_script_setup_true_lang-_TDoIg53.js} +2 -2
- package/dist/{Activity-CiYn5E6A.js → Activity-BDVYmNgy.js} +9 -9
- package/dist/{AdaptivePageShell.vue_vue_type_script_setup_true_lang-oXWQTfBs.js → AdaptivePageShell.vue_vue_type_script_setup_true_lang-DryXyklZ.js} +6 -6
- package/dist/{AlertDialog.vue_vue_type_script_setup_true_lang-WuGvAOrj.js → AlertDialog.vue_vue_type_script_setup_true_lang-QYvbly_-.js} +1 -1
- package/dist/{AsyncSection.vue_vue_type_script_setup_true_lang-CX8mpXRE.js → AsyncSection.vue_vue_type_script_setup_true_lang-DRP4BnMb.js} +4 -4
- package/dist/{Banner.vue_vue_type_script_setup_true_lang-sv0phngk.js → Banner.vue_vue_type_script_setup_true_lang-ukLpznql.js} +1 -1
- package/dist/{Button.vue_vue_type_script_setup_true_lang-JrqhO99l.js → Button.vue_vue_type_script_setup_true_lang-DkRuLqQK.js} +1 -1
- package/dist/{Changes-Cy8STpLX.js → Changes-DRij0rEQ.js} +5 -5
- package/dist/{CollectionPage.vue_vue_type_script_setup_true_lang-Dr6nFNBB.js → CollectionPage.vue_vue_type_script_setup_true_lang-Aoof1prZ.js} +12 -12
- package/dist/{DataTable.vue_vue_type_script_setup_true_lang-D372wlxR.js → DataTable.vue_vue_type_script_setup_true_lang-DGcNcRkO.js} +1 -1
- package/dist/{DateField.vue_vue_type_script_setup_true_lang-D0KcfW8R.js → DateField.vue_vue_type_script_setup_true_lang-J04KjxmR.js} +4 -4
- package/dist/{DeadLetters-DhJkMpd_.js → DeadLetters-Dpm4UY__.js} +4 -4
- package/dist/{DiscardChangesModal.vue_vue_type_script_setup_true_lang-92szOrYd.js → DiscardChangesModal.vue_vue_type_script_setup_true_lang-CxNVKoYI.js} +1 -1
- package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-DbZiO2RF.js → EmptyState.vue_vue_type_script_setup_true_lang-ByKvrNSg.js} +1 -1
- package/dist/{FormGroup.vue_vue_type_script_setup_true_lang-lvAuBG-0.js → FormGroup.vue_vue_type_script_setup_true_lang-7bIssY9f.js} +4 -4
- package/dist/{FormRow.vue_vue_type_script_setup_true_lang-CpgNVQF4.js → FormRow.vue_vue_type_script_setup_true_lang-okuxbKyI.js} +1 -1
- package/dist/{FormView.vue_vue_type_script_setup_true_lang-D01Jr4UU.js → FormView.vue_vue_type_script_setup_true_lang-CiYprNRr.js} +2 -2
- package/dist/{General-CwTPC5UP.js → General-BmVEbYqv.js} +8 -8
- package/dist/{HeaderAction.vue_vue_type_script_setup_true_lang-Da59TLBh.js → HeaderAction.vue_vue_type_script_setup_true_lang-DVfkuOy-.js} +2 -2
- package/dist/{Icon.vue_vue_type_script_lang-BhhsFYwp.js → Icon.vue_vue_type_script_lang-0pW1XBaE.js} +35 -33
- package/dist/{IconTile.vue_vue_type_script_setup_true_lang-BmxCuUZ9.js → IconTile.vue_vue_type_script_setup_true_lang-BWHQiA7d.js} +1 -1
- package/dist/{IncidentRecord-hXEGuLGg.js → IncidentRecord-DWY6Bws1.js} +17 -17
- package/dist/{IncidentsList-C41VyDwK.js → IncidentsList-C21UNIhT.js} +6 -6
- package/dist/{LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CrGrjrlO.js → LeaveGuardRoot.vue_vue_type_script_setup_true_lang-CpEd_Psg.js} +1 -1
- package/dist/{Menu.vue_vue_type_script_setup_true_lang-Cqu4Ebsb.js → Menu.vue_vue_type_script_setup_true_lang-DobycRxf.js} +1 -1
- package/dist/{MenuButton.vue_vue_type_script_setup_true_lang-C-XRr5f2.js → MenuButton.vue_vue_type_script_setup_true_lang-qDKt6gX9.js} +1 -1
- package/dist/{Modal.vue_vue_type_script_setup_true_lang-CZ7WrDwu.js → Modal.vue_vue_type_script_setup_true_lang-C0tQAYQ4.js} +2 -2
- package/dist/{NewRolePage-BYYZJkK7.js → NewRolePage-K5zts3e_.js} +4 -4
- package/dist/{NoAccess.vue_vue_type_script_setup_true_lang-BHzZtZ50.js → NoAccess.vue_vue_type_script_setup_true_lang-BYnTQCtW.js} +1 -1
- package/dist/{NumberField.vue_vue_type_script_setup_true_lang-BhNZgEW6.js → NumberField.vue_vue_type_script_setup_true_lang-CxgVJrdv.js} +2 -2
- package/dist/{Panel.vue_vue_type_script_setup_true_lang-D_Wg42hu.js → Panel.vue_vue_type_script_setup_true_lang-DTCmFSwg.js} +1 -1
- package/dist/{PersonAccess.vue_vue_type_script_setup_true_lang-mYFuG-Y3.js → PersonAccess.vue_vue_type_script_setup_true_lang-Kp9g93wE.js} +12 -12
- package/dist/{PhotoViewer.vue_vue_type_script_setup_true_lang-DmMg1T_V.js → PhotoViewer.vue_vue_type_script_setup_true_lang-D2-uQbSV.js} +1 -1
- package/dist/{ProfilePage-DGEsIycR.js → ProfilePage-C3mLBer6.js} +17 -17
- package/dist/{RecordHeader.vue_vue_type_script_setup_true_lang-B3BnYg1x.js → RecordHeader.vue_vue_type_script_setup_true_lang-Dz5Qw8II.js} +2 -2
- package/dist/{ResourcePage.vue_vue_type_script_setup_true_lang-1iZtj3rh.js → ResourcePage.vue_vue_type_script_setup_true_lang-R3eJKPq5.js} +4 -4
- package/dist/{RoleEditor.vue_vue_type_script_setup_true_lang-BslSDDiM.js → RoleEditor.vue_vue_type_script_setup_true_lang-CGMpBpnK.js} +12 -12
- package/dist/{RolePage-C08ZUqw1.js → RolePage-C62_sGxx.js} +13 -13
- package/dist/{RolesPage-FOuY1VKg.js → RolesPage-CS8ryIQq.js} +9 -9
- package/dist/{SectionList.vue_vue_type_script_setup_true_lang-CodyVezo.js → SectionList.vue_vue_type_script_setup_true_lang-C6eOVjpa.js} +3 -3
- package/dist/{SectionNavigator.vue_vue_type_script_setup_true_lang-DCTFxfPB.js → SectionNavigator.vue_vue_type_script_setup_true_lang-DqDcFvS0.js} +6 -6
- package/dist/{SegmentedField.vue_vue_type_script_setup_true_lang-CLR6EvzO.js → SegmentedField.vue_vue_type_script_setup_true_lang-Du4YUcw9.js} +2 -2
- package/dist/{SelectField.vue_vue_type_script_setup_true_lang-D5xYofdb.js → SelectField.vue_vue_type_script_setup_true_lang-BA5YMCXA.js} +6 -6
- package/dist/{ServiceAccountDialog.vue_vue_type_script_setup_true_lang-CDr4WNIb.js → ServiceAccountDialog.vue_vue_type_script_setup_true_lang-BoeV2_MN.js} +8 -8
- package/dist/{ServiceAccountRecord-kWwIQGZb.js → ServiceAccountRecord-BDkaaOte.js} +18 -18
- package/dist/{ServiceAccountsList-CKy9_YHP.js → ServiceAccountsList-KaZwNlK5.js} +10 -10
- package/dist/{Sessions-BDc8gdYH.js → Sessions-DhOpUlRc.js} +7 -7
- package/dist/{SettingsPage-t-8kmFVT.js → SettingsPage-DPzg7zwX.js} +18 -18
- package/dist/Sheet.vue_vue_type_script_setup_true_lang-C1jpmLYN.js +163 -0
- package/dist/{SignIn-CqtkvtCZ.js → SignIn-4aUxE2LU.js} +8 -8
- package/dist/{SignInPage-DcdNKZIb.js → SignInPage-B80pQ8tG.js} +6 -6
- package/dist/{SignIns-D4-nGu0B.js → SignIns-CLX8Puf1.js} +5 -5
- package/dist/{StatusLine.vue_vue_type_script_setup_true_lang-DsdQmLq6.js → StatusLine.vue_vue_type_script_setup_true_lang-BN8nG1CW.js} +1 -1
- package/dist/{SwipeActions.vue_vue_type_script_setup_true_lang-D8SiC0G7.js → SwipeActions.vue_vue_type_script_setup_true_lang-BBqcW3MR.js} +1 -1
- package/dist/{SwitchField.vue_vue_type_script_setup_true_lang-CLtcuofe.js → SwitchField.vue_vue_type_script_setup_true_lang-Dw7BbBU4.js} +2 -2
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-Cma_ma6V.js +169 -0
- package/dist/{TextField.vue_vue_type_script_setup_true_lang-CVGh-p3J.js → TextField.vue_vue_type_script_setup_true_lang-DS6RPR-h.js} +4 -4
- package/dist/{TextareaField.vue_vue_type_script_setup_true_lang-YxUlNHSk.js → TextareaField.vue_vue_type_script_setup_true_lang-BqpZt1Hv.js} +2 -2
- package/dist/{TimeField.vue_vue_type_script_setup_true_lang-DHNC_MLt.js → TimeField.vue_vue_type_script_setup_true_lang-BeS1cfqL.js} +4 -4
- package/dist/{Timestamp.vue_vue_type_script_setup_true_lang-d_KuxWjH.js → Timestamp.vue_vue_type_script_setup_true_lang-XbbupD9A.js} +1 -1
- package/dist/{UserRecord-CwZCr9Im.js → UserRecord-BFqw2Pi8.js} +10 -10
- package/dist/{UsersList-Cn19sFgv.js → UsersList-C52C1lN1.js} +3 -3
- package/dist/{ViewTabs.vue_vue_type_script_setup_true_lang-BjdDXE3T.js → ViewTabs.vue_vue_type_script_setup_true_lang-CBYrLPL4.js} +1 -1
- package/dist/access/index.js +7 -7
- package/dist/app/index.js +2 -2
- package/dist/{application-CDSweJb9.js → application-cTqMhmFf.js} +8 -8
- package/dist/{back-LcLlFodC.js → back-CeozxCgQ.js} +2 -2
- package/dist/button/index.js +1 -1
- package/dist/collection/RecordIdentity.vue.d.ts +1 -1
- package/dist/collection/index.js +9 -9
- package/dist/content/DiffView.vue.d.ts +22 -0
- package/dist/content/PreviewFrame.vue.d.ts +46 -0
- package/dist/content/diff.d.ts +27 -0
- package/dist/content/index.d.ts +4 -0
- package/dist/content/index.js +552 -218
- package/dist/content/previewFrame.d.ts +50 -0
- package/dist/{contributions-B0x5x5xD.js → contributions-BSmIRPg1.js} +1 -1
- package/dist/controls/SortableList.vue.d.ts +31 -0
- package/dist/controls/Tabs.vue.d.ts +2 -0
- package/dist/controls/index.d.ts +1 -0
- package/dist/controls/index.js +132 -33
- package/dist/form/CodeEditor.vue.d.ts +61 -0
- package/dist/form/CodeField.vue.d.ts +62 -0
- package/dist/form/I18nField.vue.d.ts +1 -1
- package/dist/form/MarkerList.vue.d.ts +20 -0
- package/dist/form/TextareaField.vue.d.ts +1 -1
- package/dist/form/codeEditor.d.ts +27 -0
- package/dist/form/index.d.ts +4 -0
- package/dist/form/index.js +1954 -1651
- package/dist/{guards-CNJ0ATVC.js → guards-BP9x7CLF.js} +1 -1
- package/dist/i18n/index.js +15 -15
- package/dist/icon/core.d.ts +2 -0
- package/dist/icon/index.js +1 -1
- package/dist/identity/index.js +3 -3
- package/dist/identity/profile/EmailChangeDialog.vue.d.ts +2 -2
- package/dist/incidents/index.js +1 -1
- package/dist/{index-BA2w8uwD.js → index-CMx77x5P.js} +27 -27
- package/dist/{index-1HS7O2-e.js → index-CxUfs3Xz.js} +10 -10
- package/dist/{index-SLJWm40T.js → index-DLkQwWt9.js} +9 -9
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/modal/Sheet.vue.d.ts +13 -0
- package/dist/modal/TabbedSheet.vue.d.ts +46 -0
- package/dist/modal/index.d.ts +1 -0
- package/dist/modal/index.js +123 -41
- package/dist/navigation-C05vGEN8.js +55 -0
- package/dist/{neighbors-Dg_LU9ry.js → neighbors-BqfO6zf3.js} +2 -2
- package/dist/notifications/index.js +1 -1
- package/dist/onboarding/index.js +2 -2
- package/dist/{options-mOOX6JSS.js → options-DIp_lVAj.js} +2 -2
- package/dist/overlay/index.js +4 -4
- package/dist/page/SectionNavigator.vue.d.ts +1 -1
- package/dist/page/SplitPane.vue.d.ts +54 -0
- package/dist/page/WorkbenchPage.vue.d.ts +72 -0
- package/dist/page/index.d.ts +2 -0
- package/dist/page/index.js +343 -104
- package/dist/phone/index.js +3 -3
- package/dist/platform/index.js +3 -3
- package/dist/platform/navigation.d.ts +10 -0
- package/dist/{platform-DU9QFts8.js → platform-YWfOO7b2.js} +94 -88
- package/dist/pwa/index.js +3 -3
- package/dist/resource/index.js +1 -1
- package/dist/{resources-BZLlAtoS.js → resources-BAxfEEv1.js} +1 -1
- package/dist/router/index.js +4 -4
- package/dist/router/navigation.d.ts +2 -0
- package/dist/{rowLayout-PIuD7MGo.js → rowLayout-3W9TvFNt.js} +5 -5
- package/dist/{sectionIndex-BS0ic5W7.js → sectionIndex-CSr457Lb.js} +2 -2
- package/dist/{sections-BpiRLntE.js → sections-DXso1JSV.js} +2 -2
- package/dist/shell/NavigationList.vue.d.ts +1 -1
- package/dist/shell/index.js +522 -501
- package/dist/shell/navigationGroups.d.ts +4 -1
- package/dist/state/index.js +8 -8
- package/dist/{state-z1iPF1DT.js → state-DqCZdet7.js} +1 -1
- package/dist/styles.css +1 -1
- package/dist/{suggestions-DeMgs_ki.js → suggestions-D0-qmRFy.js} +1 -1
- package/dist/testing/index.js +2 -2
- package/dist/{useCommand-DQKvro1n.js → useCommand-D6K6o6dx.js} +4 -4
- package/dist/{useGroupSheet-CRw3MUmX.js → useGroupSheet-Daxi2mzi.js} +5 -5
- package/dist/{usePreferences-DB29UTFD.js → usePreferences-D38x73re.js} +1 -1
- package/dist/{useRecordDialog-0azHxxvm.js → useRecordDialog-CfBp0kuP.js} +1 -1
- package/dist/{useResourceForm-zVuWerSn.js → useResourceForm-Ddxk7mc0.js} +1 -1
- package/dist/{useTypedEntry-BsMV66Yc.js → useTypedEntry-r4AqWlV7.js} +2 -2
- package/package.json +51 -1
- package/dist/Sheet.vue_vue_type_script_setup_true_lang-BG8HUNfs.js +0 -145
- package/dist/Tabs.vue_vue_type_script_setup_true_lang-tpkGp98F.js +0 -155
- package/dist/navigation-d-JAPBGA.js +0 -53
|
@@ -1,98 +1,104 @@
|
|
|
1
1
|
import { c as U } from "./client-Do8v1I5l.js";
|
|
2
2
|
import { d as _ } from "./context-Ch1r4fdN.js";
|
|
3
|
-
import { a as
|
|
3
|
+
import { a as $, A as z } from "./error-CD7x0Jrz.js";
|
|
4
4
|
import { shallowRef as C } from "vue";
|
|
5
|
-
const I = (e,
|
|
6
|
-
function N(e,
|
|
7
|
-
const n =
|
|
5
|
+
const I = (e, t) => e.level === t.level && e.id === t.id, T = (e, t) => Object.prototype.hasOwnProperty.call(e, t);
|
|
6
|
+
function N(e, t = {}) {
|
|
7
|
+
const n = t.covers ?? I;
|
|
8
8
|
function o(s) {
|
|
9
|
-
const
|
|
10
|
-
return !
|
|
9
|
+
const r = e();
|
|
10
|
+
return !r || !T(r.permissions, s) || r.unavailable.includes(s) ? null : r.permissions[s] ?? null;
|
|
11
11
|
}
|
|
12
|
-
function u(s,
|
|
12
|
+
function u(s, r) {
|
|
13
13
|
const c = o(s);
|
|
14
|
-
return c ?
|
|
14
|
+
return c ? r ? (c.clauses.length > 0 ? c.clauses.map((i) => i.scope) : [c.scope]).some((i) => n(i, r)) : !0 : !1;
|
|
15
15
|
}
|
|
16
16
|
return {
|
|
17
17
|
get root() {
|
|
18
18
|
return e()?.root ?? !1;
|
|
19
19
|
},
|
|
20
20
|
can: u,
|
|
21
|
-
canAny: (s) => s.some((
|
|
22
|
-
canAll: (s) => s.every((
|
|
21
|
+
canAny: (s) => s.some((r) => u(r)),
|
|
22
|
+
canAll: (s) => s.every((r) => u(r)),
|
|
23
23
|
held: o
|
|
24
24
|
};
|
|
25
25
|
}
|
|
26
|
-
const
|
|
27
|
-
function S(e,
|
|
28
|
-
return !y(e) || typeof e.level != "string" ? (n.push(`${
|
|
26
|
+
const A = ["own", "own_location", "all"], y = (e) => typeof e == "object" && e !== null && !Array.isArray(e);
|
|
27
|
+
function S(e, t, n) {
|
|
28
|
+
return !y(e) || typeof e.level != "string" ? (n.push(`${t}: expected { level: string, id?: number }`), { level: "" }) : (e.id !== void 0 && typeof e.id != "number" && n.push(`${t}.id: expected number`), typeof e.id == "number" ? { level: e.level, id: e.id } : { level: e.level });
|
|
29
29
|
}
|
|
30
|
-
function O(e,
|
|
31
|
-
return typeof e == "string" &&
|
|
30
|
+
function O(e, t, n) {
|
|
31
|
+
return typeof e == "string" && A.includes(e) ? e : (n.push(`${t}: expected one of ${A.join(", ")}`), "own");
|
|
32
32
|
}
|
|
33
|
-
function
|
|
34
|
-
const
|
|
33
|
+
function H(e) {
|
|
34
|
+
const t = [], n = {}, o = { root: !1, permissions: {}, unavailable: [] };
|
|
35
35
|
if (!y(e)) return { snapshot: o, issues: ["access: expected an object"] };
|
|
36
|
-
if (!y(e.permissions))
|
|
36
|
+
if (!y(e.permissions)) t.push("access.permissions: expected an object");
|
|
37
37
|
else
|
|
38
|
-
for (const [s,
|
|
38
|
+
for (const [s, r] of Object.entries(e.permissions)) {
|
|
39
39
|
const c = `access.permissions.${s}`;
|
|
40
|
-
if (!y(
|
|
41
|
-
|
|
40
|
+
if (!y(r)) {
|
|
41
|
+
t.push(`${c}: expected an object`);
|
|
42
42
|
continue;
|
|
43
43
|
}
|
|
44
|
-
const f = (Array.isArray(
|
|
45
|
-
const
|
|
44
|
+
const f = (Array.isArray(r.clauses) ? r.clauses : []).map((i, x) => {
|
|
45
|
+
const h = `${c}.clauses[${x}]`;
|
|
46
46
|
if (!y(i))
|
|
47
|
-
return
|
|
48
|
-
const d = { scope: S(i.scope, `${
|
|
47
|
+
return t.push(`${h}: expected an object`), { scope: { level: "" }, qualifier: "own" };
|
|
48
|
+
const d = { scope: S(i.scope, `${h}.scope`, t), qualifier: O(i.qualifier, `${h}.qualifier`, t) };
|
|
49
49
|
return typeof i.role == "string" ? { ...d, role: i.role } : d;
|
|
50
50
|
});
|
|
51
51
|
n[s] = {
|
|
52
|
-
scope: S(
|
|
53
|
-
qualifier: O(
|
|
52
|
+
scope: S(r.scope, `${c}.scope`, t),
|
|
53
|
+
qualifier: O(r.qualifier, `${c}.qualifier`, t),
|
|
54
54
|
clauses: f
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
const u = e.unavailable ?? [];
|
|
58
|
-
return (!Array.isArray(u) || !u.every((s) => typeof s == "string")) &&
|
|
58
|
+
return (!Array.isArray(u) || !u.every((s) => typeof s == "string")) && t.push("access.unavailable: expected an array of strings"), {
|
|
59
59
|
snapshot: {
|
|
60
60
|
root: e.root === !0,
|
|
61
61
|
permissions: n,
|
|
62
62
|
unavailable: Array.isArray(u) ? u.filter((s) => typeof s == "string") : []
|
|
63
63
|
},
|
|
64
|
-
issues:
|
|
64
|
+
issues: t
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
|
-
|
|
68
|
-
|
|
67
|
+
function R(e) {
|
|
68
|
+
return e.startsWith("/") ? !e.startsWith("//") && !e.startsWith("/\\") : /^https?:\/\//i.test(e);
|
|
69
|
+
}
|
|
70
|
+
const W = (e) => typeof e == "object" && e !== null && !Array.isArray(e);
|
|
71
|
+
function P(e, t, n = "navigation") {
|
|
69
72
|
return Array.isArray(e) ? e.flatMap((o, u) => {
|
|
70
73
|
const s = `${n}[${u}]`;
|
|
71
|
-
if (!
|
|
72
|
-
return
|
|
73
|
-
for (const
|
|
74
|
-
o[
|
|
75
|
-
|
|
74
|
+
if (!W(o) || typeof o.i18n != "string")
|
|
75
|
+
return t.push(`${s}: expected an object with an i18n key`), [];
|
|
76
|
+
for (const f of ["icon", "route", "href"])
|
|
77
|
+
o[f] != null && typeof o[f] != "string" && t.push(`${s}.${f}: expected a string`);
|
|
78
|
+
let r = typeof o.href == "string" ? o.href : void 0;
|
|
79
|
+
r !== void 0 && typeof o.route == "string" ? (t.push(`${s}: has both a route and an href; the route is used`), r = void 0) : r !== void 0 && !R(r) && (t.push(`${s}.href: expected a path on this origin or an http(s) URL`), r = void 0);
|
|
80
|
+
const c = o.children == null ? void 0 : P(o.children, t, `${s}.children`);
|
|
76
81
|
return [
|
|
77
82
|
{
|
|
78
83
|
i18n: o.i18n,
|
|
79
84
|
...typeof o.icon == "string" && { icon: o.icon },
|
|
80
85
|
...typeof o.route == "string" && { route: o.route },
|
|
81
|
-
...
|
|
86
|
+
...r !== void 0 && { href: r },
|
|
87
|
+
...c && { children: c }
|
|
82
88
|
}
|
|
83
89
|
];
|
|
84
|
-
}) : (
|
|
90
|
+
}) : (t.push(`${n}: expected an array`), []);
|
|
85
91
|
}
|
|
86
|
-
const b = (e) => typeof e == "object" && e !== null && !Array.isArray(e),
|
|
92
|
+
const b = (e) => typeof e == "object" && e !== null && !Array.isArray(e), B = (e) => {
|
|
87
93
|
if (b(e) && (typeof e.id == "number" || typeof e.id == "string")) return { id: e.id };
|
|
88
94
|
throw new TypeError("expected an object with a numeric or string id");
|
|
89
95
|
};
|
|
90
|
-
function
|
|
96
|
+
function F(e, t = B) {
|
|
91
97
|
const n = [];
|
|
92
98
|
if (!b(e)) throw j(["expected an object"]);
|
|
93
99
|
let o = null;
|
|
94
100
|
try {
|
|
95
|
-
o =
|
|
101
|
+
o = t(e.user);
|
|
96
102
|
} catch (i) {
|
|
97
103
|
n.push(`user: ${i instanceof Error ? i.message : "invalid"}`);
|
|
98
104
|
}
|
|
@@ -106,30 +112,30 @@ function Q(e, r = H) {
|
|
|
106
112
|
const i = e.impersonator;
|
|
107
113
|
b(i) && (typeof i.id == "number" || typeof i.id == "string") && typeof i.name == "string" ? s = { id: i.id, name: i.name } : n.push("impersonator: expected { id, name }");
|
|
108
114
|
}
|
|
109
|
-
const
|
|
110
|
-
n.push(...
|
|
115
|
+
const r = H(e.access);
|
|
116
|
+
n.push(...r.issues);
|
|
111
117
|
const c = e.navigation === void 0 || e.navigation === null ? void 0 : P(e.navigation, n), f = b(e.preferences) ? e.preferences : {};
|
|
112
118
|
if (o === null || n.length > 0) throw j(n);
|
|
113
|
-
return { user: o, expiresAt: u, access:
|
|
119
|
+
return { user: o, expiresAt: u, access: r.snapshot, preferences: f, ...s && { impersonator: s }, ...c && { navigation: c } };
|
|
114
120
|
}
|
|
115
121
|
const j = (e) => new z({ kind: "malformed", message: `Unreadable session payload: ${e.join("; ")}` });
|
|
116
|
-
function
|
|
117
|
-
const { mePath: n = "/auth/me", signOutPath: o = "/auth/logout", parseUser: u } =
|
|
122
|
+
function L(e, t = {}) {
|
|
123
|
+
const { mePath: n = "/auth/me", signOutPath: o = "/auth/logout", parseUser: u } = t;
|
|
118
124
|
return {
|
|
119
125
|
async load(s) {
|
|
120
126
|
try {
|
|
121
|
-
const { data:
|
|
122
|
-
return
|
|
123
|
-
} catch (
|
|
124
|
-
if (
|
|
125
|
-
throw
|
|
127
|
+
const { data: r } = await e.get(n, { signal: s, handleUnauthorized: !1 });
|
|
128
|
+
return F(r, u);
|
|
129
|
+
} catch (r) {
|
|
130
|
+
if ($(r) && r.kind === "unauthorized") return null;
|
|
131
|
+
throw r;
|
|
126
132
|
}
|
|
127
133
|
},
|
|
128
134
|
async signOut() {
|
|
129
135
|
try {
|
|
130
136
|
await e.post(o, void 0, { handleUnauthorized: !1 });
|
|
131
137
|
} catch (s) {
|
|
132
|
-
if (!(
|
|
138
|
+
if (!($(s) && s.kind === "unauthorized")) throw s;
|
|
133
139
|
}
|
|
134
140
|
}
|
|
135
141
|
};
|
|
@@ -138,34 +144,34 @@ function k(e) {
|
|
|
138
144
|
return e.status === "authenticated" ? e : e.status === "anonymous" && e.reason === "expired" ? e.previous ?? null : null;
|
|
139
145
|
}
|
|
140
146
|
const E = 3e3;
|
|
141
|
-
function
|
|
147
|
+
function Q(e, t = {}) {
|
|
142
148
|
const n = C({ status: "unknown" });
|
|
143
149
|
let o = 0;
|
|
144
|
-
const u = new Set(
|
|
145
|
-
let s = !1,
|
|
150
|
+
const u = new Set(t.beforeSignOut ? [t.beforeSignOut] : []);
|
|
151
|
+
let s = !1, r = null, c = null, f = null;
|
|
146
152
|
function i() {
|
|
147
153
|
o++, f?.controller.abort(), f = null;
|
|
148
154
|
}
|
|
149
155
|
async function x(a) {
|
|
150
156
|
const l = new AbortController();
|
|
151
157
|
let g;
|
|
152
|
-
const v = new Promise((
|
|
158
|
+
const v = new Promise((m) => {
|
|
153
159
|
g = setTimeout(() => {
|
|
154
|
-
l.abort(),
|
|
160
|
+
l.abort(), t.onError?.(new Error(`A before-sign-out hook did not finish within ${E} ms; signing out without it.`)), m();
|
|
155
161
|
}, E);
|
|
156
162
|
}), w = Promise.all(
|
|
157
|
-
[...u].map(async (
|
|
163
|
+
[...u].map(async (m) => {
|
|
158
164
|
try {
|
|
159
|
-
await
|
|
165
|
+
await m(a, l.signal);
|
|
160
166
|
} catch (p) {
|
|
161
|
-
|
|
167
|
+
t.onError?.(p);
|
|
162
168
|
}
|
|
163
169
|
})
|
|
164
170
|
).then(() => {
|
|
165
171
|
});
|
|
166
172
|
await Promise.race([w, v]), clearTimeout(g);
|
|
167
173
|
}
|
|
168
|
-
function
|
|
174
|
+
function h() {
|
|
169
175
|
if (f) return f.promise;
|
|
170
176
|
const a = o, l = new AbortController(), g = n.value, v = k(g) !== null;
|
|
171
177
|
v || (n.value = { status: "loading" });
|
|
@@ -176,18 +182,18 @@ function D(e, r = {}) {
|
|
|
176
182
|
n.value = p ? { status: "authenticated", ...p } : { status: "anonymous", reason: "none" };
|
|
177
183
|
} catch (p) {
|
|
178
184
|
if (o !== a) return n.value;
|
|
179
|
-
|
|
185
|
+
t.onError?.(p), n.value = v ? g : { status: "failed", error: p };
|
|
180
186
|
} finally {
|
|
181
187
|
o === a && (f = null);
|
|
182
188
|
}
|
|
183
189
|
return n.value;
|
|
184
|
-
},
|
|
185
|
-
return f = { controller: l, promise:
|
|
190
|
+
}, m = Promise.resolve().then(w);
|
|
191
|
+
return f = { controller: l, promise: m }, m;
|
|
186
192
|
}
|
|
187
193
|
const d = {
|
|
188
194
|
state: n,
|
|
189
|
-
restore: () => n.value.status === "unknown" || n.value.status === "failed" ?
|
|
190
|
-
refresh:
|
|
195
|
+
restore: () => n.value.status === "unknown" || n.value.status === "failed" ? h() : f?.promise ?? Promise.resolve(n.value),
|
|
196
|
+
refresh: h,
|
|
191
197
|
establish(a) {
|
|
192
198
|
i(), n.value = { status: "authenticated", ...a };
|
|
193
199
|
},
|
|
@@ -208,25 +214,25 @@ function D(e, r = {}) {
|
|
|
208
214
|
expire() {
|
|
209
215
|
if (n.value.status !== "authenticated") return;
|
|
210
216
|
const { status: a, ...l } = n.value;
|
|
211
|
-
i(), n.value = s && !n.value.impersonator ? { status: "anonymous", reason: "expired", previous: l } : { status: "anonymous", reason: "expired" },
|
|
217
|
+
i(), n.value = s && !n.value.impersonator ? { status: "anonymous", reason: "expired", previous: l } : { status: "anonymous", reason: "expired" }, t.onExpired?.();
|
|
212
218
|
},
|
|
213
219
|
signOut() {
|
|
214
|
-
return
|
|
220
|
+
return r ?? (r = (async () => {
|
|
215
221
|
try {
|
|
216
222
|
const a = n.value;
|
|
217
223
|
a.status === "authenticated" && u.size > 0 && await x(a.user), i(), n.value = { status: "anonymous", reason: "signedOut" }, await e.signOut();
|
|
218
224
|
} finally {
|
|
219
|
-
|
|
225
|
+
r = null;
|
|
220
226
|
}
|
|
221
|
-
})()),
|
|
227
|
+
})()), r;
|
|
222
228
|
},
|
|
223
229
|
get renewable() {
|
|
224
|
-
return
|
|
230
|
+
return t.renew !== void 0 && (t.renewable?.() ?? !0);
|
|
225
231
|
},
|
|
226
232
|
renew() {
|
|
227
233
|
return n.value.status !== "authenticated" ? Promise.resolve(!1) : (c ?? (c = (async () => {
|
|
228
234
|
try {
|
|
229
|
-
if (d.renewable && await
|
|
235
|
+
if (d.renewable && await t.renew(d)) return !0;
|
|
230
236
|
} catch {
|
|
231
237
|
}
|
|
232
238
|
return d.expire(), !1;
|
|
@@ -243,8 +249,8 @@ function D(e, r = {}) {
|
|
|
243
249
|
};
|
|
244
250
|
return d;
|
|
245
251
|
}
|
|
246
|
-
function
|
|
247
|
-
const
|
|
252
|
+
function X(e) {
|
|
253
|
+
const t = U({
|
|
248
254
|
baseUrl: e.config.apiBase,
|
|
249
255
|
transport: e.transport,
|
|
250
256
|
headers: e.headers,
|
|
@@ -253,33 +259,33 @@ function W(e) {
|
|
|
253
259
|
async onUnauthorized() {
|
|
254
260
|
return await u.renew() ? "retry" : "fail";
|
|
255
261
|
}
|
|
256
|
-
}), n = e.session ?? ((
|
|
262
|
+
}), n = e.session ?? ((r) => L(r)), o = typeof n == "function" ? n(t) : n, u = Q(o, {
|
|
257
263
|
onError: e.onSessionError,
|
|
258
264
|
onExpired: e.onSessionExpired,
|
|
259
265
|
beforeSignOut: e.beforeSignOut,
|
|
260
|
-
renew: e.renewSession && ((
|
|
266
|
+
renew: e.renewSession && ((r) => e.renewSession(r, t)),
|
|
261
267
|
renewable: e.renewable
|
|
262
268
|
}), s = N(
|
|
263
269
|
() => k(u.state.value)?.access ?? null,
|
|
264
270
|
{ covers: e.covers }
|
|
265
271
|
);
|
|
266
|
-
return { config: e.config, http:
|
|
272
|
+
return { config: e.config, http: t, session: u, access: s };
|
|
267
273
|
}
|
|
268
|
-
const q = _("platform"),
|
|
269
|
-
function
|
|
270
|
-
e.provide(
|
|
274
|
+
const q = _("platform"), D = q[0], K = q[1], Y = () => K().access;
|
|
275
|
+
function Z(e, t) {
|
|
276
|
+
e.provide(D, t);
|
|
271
277
|
}
|
|
272
278
|
export {
|
|
273
|
-
|
|
279
|
+
X as a,
|
|
274
280
|
E as b,
|
|
275
281
|
N as c,
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
282
|
+
Q as d,
|
|
283
|
+
L as e,
|
|
284
|
+
F as f,
|
|
285
|
+
D as g,
|
|
280
286
|
k as h,
|
|
281
|
-
|
|
282
|
-
|
|
287
|
+
Z as i,
|
|
288
|
+
Y as j,
|
|
283
289
|
P as p,
|
|
284
|
-
|
|
290
|
+
K as u
|
|
285
291
|
};
|
package/dist/pwa/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { computed as m, shallowRef as D, ref as x, defineComponent as _, openBlock as f, createBlock as b, Teleport as S, createElementVNode as t, toDisplayString as c, unref as n, createVNode as g, withCtx as k, createTextVNode as q, createElementBlock as h, useModel as Q, watch as T, createCommentVNode as M, mergeModels as A, onMounted as V, onBeforeUnmount as R, Fragment as W, renderList as G, normalizeClass as j } from "vue";
|
|
2
2
|
import { useI18n as C } from "vue-i18n";
|
|
3
|
-
import { _ as P } from "../Button.vue_vue_type_script_setup_true_lang-
|
|
4
|
-
import { _ as z } from "../Icon.vue_vue_type_script_lang-
|
|
5
|
-
import { _ as F } from "../Modal.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { _ as P } from "../Button.vue_vue_type_script_setup_true_lang-DkRuLqQK.js";
|
|
4
|
+
import { _ as z } from "../Icon.vue_vue_type_script_lang-0pW1XBaE.js";
|
|
5
|
+
import { _ as F } from "../Modal.vue_vue_type_script_setup_true_lang-C0tQAYQ4.js";
|
|
6
6
|
import { encode as H } from "uqr";
|
|
7
7
|
const v = D(null), I = x(!1);
|
|
8
8
|
let B = !1;
|
package/dist/resource/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { p as g, u as m, a as l, b as R } from "../routeResource-DlTsGTg_.js";
|
|
2
2
|
import { c as a } from "../current-CslcEPXp.js";
|
|
3
3
|
import { A as n } from "../error-CD7x0Jrz.js";
|
|
4
|
-
import { _ as w, a as x } from "../ResourcePage.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { _ as w, a as x } from "../ResourcePage.vue_vue_type_script_setup_true_lang-R3eJKPq5.js";
|
|
5
5
|
async function i(t, e) {
|
|
6
6
|
return (await a().platform.http.get(t, { signal: e.signal })).data;
|
|
7
7
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { shallowRef as c, defineComponent as p, useTemplateRef as u, watch as f, openBlock as d, createBlock as m, unref as a, withCtx as v, renderSlot as k, createCommentVNode as _ } from "vue";
|
|
2
2
|
import { useI18n as h } from "vue-i18n";
|
|
3
|
-
import { _ as b } from "./Modal.vue_vue_type_script_setup_true_lang-
|
|
3
|
+
import { _ as b } from "./Modal.vue_vue_type_script_setup_true_lang-C0tQAYQ4.js";
|
|
4
4
|
function P() {
|
|
5
5
|
const o = c({ open: !1, options: null });
|
|
6
6
|
let e = null;
|
package/dist/router/index.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { _ as a, c as o, a as r, i as t } from "../NoAccess.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import { _ as a, c as o, a as r, i as t } from "../NoAccess.vue_vue_type_script_setup_true_lang-BYnTQCtW.js";
|
|
2
2
|
import { d as c } from "../defineRoutes-BGAdiIrt.js";
|
|
3
3
|
import { A as u, f as p, i as f, r as A, u as m } from "../access-DmAceEo5.js";
|
|
4
|
-
import { i as l, r as x } from "../guards-
|
|
5
|
-
import { u as y } from "../sections-
|
|
6
|
-
import { b as v, c as N, n as H, u as b } from "../navigation-
|
|
4
|
+
import { i as l, r as x } from "../guards-BP9x7CLF.js";
|
|
5
|
+
import { u as y } from "../sections-DXso1JSV.js";
|
|
6
|
+
import { b as v, c as N, n as H, u as b } from "../navigation-C05vGEN8.js";
|
|
7
7
|
export {
|
|
8
8
|
u as AppRouterView,
|
|
9
9
|
a as NoAccess,
|
|
@@ -43,6 +43,8 @@ export interface NavigationItem {
|
|
|
43
43
|
readonly icon: string | null;
|
|
44
44
|
/** Where it goes; null for a group. */
|
|
45
45
|
readonly to: RouteLocationRaw | null;
|
|
46
|
+
/** A destination outside the application (a full page load, no router); `to` is null then. */
|
|
47
|
+
readonly href?: string | null;
|
|
46
48
|
/** The current page belongs to this destination, or to one of its children. */
|
|
47
49
|
readonly active: boolean;
|
|
48
50
|
readonly children: readonly NavigationItem[];
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { defineComponent as oe, openBlock as l, createElementBlock as r, normalizeClass as x, createBlock as D, unref as i, withCtx as F, createVNode as g, toDisplayString as M, createCommentVNode as f, computed as y, Fragment as b, renderSlot as S, createTextVNode as de, ref as te, getCurrentScope as Ie, onScopeDispose as Ae, nextTick as ge, useSlots as fe, useId as Te, useTemplateRef as pe, watch as ye, mergeProps as q, renderList as L, normalizeStyle as R, createElementVNode as c, withModifiers as ve, createSlots as De } from "vue";
|
|
2
2
|
import { useI18n as Be } from "vue-i18n";
|
|
3
3
|
import { RouterLink as we, useRouter as He } from "vue-router";
|
|
4
|
-
import { _ as Ke } from "./SwipeActions.vue_vue_type_script_setup_true_lang-
|
|
5
|
-
import { _ as J } from "./Icon.vue_vue_type_script_lang-
|
|
6
|
-
import { _ as Ne } from "./Menu.vue_vue_type_script_setup_true_lang-
|
|
4
|
+
import { _ as Ke } from "./SwipeActions.vue_vue_type_script_setup_true_lang-BBqcW3MR.js";
|
|
5
|
+
import { _ as J } from "./Icon.vue_vue_type_script_lang-0pW1XBaE.js";
|
|
6
|
+
import { _ as Ne } from "./Menu.vue_vue_type_script_setup_true_lang-DobycRxf.js";
|
|
7
7
|
import { _ as ze } from "./Tooltip.vue_vue_type_script_setup_true_lang-C1C1qeBj.js";
|
|
8
|
-
import { _ as he } from "./EmptyState.vue_vue_type_script_setup_true_lang-
|
|
8
|
+
import { _ as he } from "./EmptyState.vue_vue_type_script_setup_true_lang-ByKvrNSg.js";
|
|
9
9
|
import { u as Fe } from "./format-C_HXlOYQ.js";
|
|
10
10
|
import { _ as Ve } from "./Badge.vue_vue_type_script_setup_true_lang-DJyZc0C7.js";
|
|
11
|
-
import { _ as Oe } from "./Timestamp.vue_vue_type_script_setup_true_lang-
|
|
11
|
+
import { _ as Oe } from "./Timestamp.vue_vue_type_script_setup_true_lang-XbbupD9A.js";
|
|
12
12
|
import { _ as me } from "./Highlight.vue_vue_type_script_setup_true_lang-DZGBmwcX.js";
|
|
13
13
|
import { a as je } from "./mediaQuery-CygcXmFW.js";
|
|
14
14
|
const Ue = ["data-row-click-ignore"], be = "col-start-1 row-start-1", Ye = "col-span-full row-start-2 max-w-full", ke = /* @__PURE__ */ oe({
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { computed as n, watch as h } from "vue";
|
|
2
2
|
import { useI18n as g } from "vue-i18n";
|
|
3
3
|
import { useRoute as y, useRouter as v } from "vue-router";
|
|
4
|
-
import { u as A } from "./platform-
|
|
5
|
-
import { B as K, a as P } from "./back-
|
|
4
|
+
import { u as A } from "./platform-YWfOO7b2.js";
|
|
5
|
+
import { B as K, a as P } from "./back-CeozxCgQ.js";
|
|
6
6
|
import { i as R } from "./access-DmAceEo5.js";
|
|
7
7
|
function C() {
|
|
8
8
|
const t = y(), u = v(), { access: c } = A(), { t: o } = g(), i = n(() => {
|
|
@@ -2,7 +2,7 @@ import { type NavigationItem } from "../router/navigation";
|
|
|
2
2
|
/**
|
|
3
3
|
* The server's menu for the signed-in user, as a list of links: headings over groups of two or more
|
|
4
4
|
* destinations, the current destination marked (`aria-current="page"`), a destination whose feature
|
|
5
|
-
* is not installed left out. Reads the application's menu (`useNavigation()`) unless `items` is given.
|
|
5
|
+
* is not installed left out. A destination outside the app (`href`, the old admin) is a plain link with an "opens outside the app" marker. Reads the application's menu (`useNavigation()`) unless `items` is given.
|
|
6
6
|
*
|
|
7
7
|
* - `rail`: the desktop sidebar, on the dark anchor surface.
|
|
8
8
|
* - `drawer`: the phone drawer, on the page surface; a tap is reported as `select` instead of
|