your-ai-workflow-firebase-os 2.0.1 → 2.0.3

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 (183) hide show
  1. package/dist/AccessNotice-BZ5Gt1nP.js +40 -0
  2. package/dist/AccessNotice-CN7kc70o.cjs +1 -0
  3. package/dist/{AddressField-R-HvndkG.js → AddressField-9Sqn8TvC.js} +3 -3
  4. package/dist/{AddressField-BkzFOo2t.cjs → AddressField-B7wtV8yA.cjs} +1 -1
  5. package/dist/Assets-DBMwZ3bN.cjs +1 -0
  6. package/dist/Assets-DT-NU_WO.js +296 -0
  7. package/dist/Attachments-Bl9_dfsu.js +46 -0
  8. package/dist/Attachments-UVK9SRXf.cjs +1 -0
  9. package/dist/Billing-0RIHayHy.cjs +1 -0
  10. package/dist/Billing-FNE2r3_d.js +379 -0
  11. package/dist/BookingCalendar-BP5kiv3d.cjs +1 -0
  12. package/dist/BookingCalendar-DZ2fEFja.js +309 -0
  13. package/dist/Button-4lzOE31p.js +48 -0
  14. package/dist/Button-5DlB2MCi.cjs +1 -0
  15. package/dist/CalendarView-BimoXy_k.cjs +1 -0
  16. package/dist/CalendarView-D-ykjpvI.js +664 -0
  17. package/dist/ConfirmModal-Di9GR-vV.cjs +1 -0
  18. package/dist/ConfirmModal-gKQEpd4d.js +113 -0
  19. package/dist/ContactPopup-BXnHrRwl.js +1114 -0
  20. package/dist/ContactPopup-lxmRMoIa.cjs +1 -0
  21. package/dist/CopyLink-BpEQWmfI.cjs +1 -0
  22. package/dist/CopyLink-CBAVfcm1.js +43 -0
  23. package/dist/DashboardNav-CXa_ci-_.cjs +1 -0
  24. package/dist/DashboardNav-Dmn7PVSp.js +886 -0
  25. package/dist/EmailAdmin-CjN_rvxT.js +318 -0
  26. package/dist/EmailAdmin-lAEBdY1s.cjs +1 -0
  27. package/dist/EventCard-46EquygT.cjs +1 -0
  28. package/dist/EventCard-B6xD-mk3.js +97 -0
  29. package/dist/FileViewerPopup-CX-J75TM.js +1283 -0
  30. package/dist/FileViewerPopup-D8-MmIoS.cjs +3 -0
  31. package/dist/FormNote-BivRNA3J.js +50 -0
  32. package/dist/FormNote-BtdTGpml.cjs +1 -0
  33. package/dist/FormsAdmin-B5PBCG2W.js +812 -0
  34. package/dist/FormsAdmin-BQCULvi5.cjs +1 -0
  35. package/dist/Inbox-BPk2ZkE5.js +779 -0
  36. package/dist/Inbox-DNrcBx0o.cjs +3 -0
  37. package/dist/Loader-Bu89fsbB.cjs +1 -0
  38. package/dist/Loader-D4gwgBOq.js +32 -0
  39. package/dist/ManagePlanButton-B0dwqZBd.cjs +1 -0
  40. package/dist/ManagePlanButton-BSrOHYze.js +29 -0
  41. package/dist/MyBookings-6qr0GgzO.cjs +1 -0
  42. package/dist/MyBookings-BQjGM2LQ.js +113 -0
  43. package/dist/PageTitle-CZhgmmDT.cjs +3 -0
  44. package/dist/PageTitle-D93YCiN8.js +1606 -0
  45. package/dist/PagesAdmin-BcHIcqM5.cjs +34 -0
  46. package/dist/PagesAdmin-D69P9nRb.js +5802 -0
  47. package/dist/PagesAdmin-DNwZOKjA.cjs +1 -0
  48. package/dist/PagesAdmin-HUITEcHx.js +3 -0
  49. package/dist/PaymentsAdmin-C2iCI9qC.js +1291 -0
  50. package/dist/PaymentsAdmin-CoXi2vCm.cjs +2 -0
  51. package/dist/{PhoneInputField-B3P_vUDW.cjs → PhoneInputField-BEwYZMB7.cjs} +1 -1
  52. package/dist/{PhoneInputField-BlYHb5e0.js → PhoneInputField-BG0L2djE.js} +2 -2
  53. package/dist/PhoneInputField-DfOtCIH_.js +2 -0
  54. package/dist/{PhoneInputField-CdNTvWXQ.cjs → PhoneInputField-jhWvto8C.cjs} +1 -1
  55. package/dist/Popup-DHYGFl2-.cjs +1 -0
  56. package/dist/Popup-xROLytgr.js +142 -0
  57. package/dist/ProviderMark-BBfaM5Yl.js +52 -0
  58. package/dist/ProviderMark-xLkUN3Fx.cjs +1 -0
  59. package/dist/PublishApp-Bm-6r3Td.js +595 -0
  60. package/dist/PublishApp-D4XJUkJa.cjs +2 -0
  61. package/dist/Said-CoC15awL.js +94 -0
  62. package/dist/Said-IqCNofdh.cjs +1 -0
  63. package/dist/ScheduleAdmin-BKfQkrR8.js +1853 -0
  64. package/dist/ScheduleAdmin-DwK36GAZ.cjs +1 -0
  65. package/dist/SchedulePicker--urIH2Eb.js +112 -0
  66. package/dist/SchedulePicker-nmqzUnUH.cjs +1 -0
  67. package/dist/Setup-CHLgd-ag.js +849 -0
  68. package/dist/Setup-CaDranTm.cjs +1374 -0
  69. package/dist/SetupPayments-CVIwh1eQ.js +411 -0
  70. package/dist/SetupPayments-HNXWA25X.cjs +1 -0
  71. package/dist/SignInAdmin-C94-A-0w.cjs +4 -0
  72. package/dist/SignInAdmin-Yxgv_8U4.js +766 -0
  73. package/dist/SupportBar-CDT0HwdP.cjs +1 -0
  74. package/dist/SupportBar-CN_JGC-9.js +117 -0
  75. package/dist/SystemTabContent-L3vGGF3P.cjs +1 -0
  76. package/dist/SystemTabContent-QdxxLILE.js +35 -0
  77. package/dist/TemplateDrive-DV8zNjYe.cjs +1 -0
  78. package/dist/TemplateDrive-NJY_AAvV.js +1197 -0
  79. package/dist/ThemeAdmin-BzFjJkLg.js +269 -0
  80. package/dist/ThemeAdmin-DVnPNxe7.cjs +1 -0
  81. package/dist/ThemeAdmin-DY7Vc4Sj.cjs +3 -0
  82. package/dist/ThemeAdmin-DnC-D2N3.js +2 -0
  83. package/dist/{ContactPopup-9J_YeJrb.js → TimeZoneField-DkI1Bkcz.js} +3382 -5513
  84. package/dist/TimeZoneField-qs7NPR30.cjs +12 -0
  85. package/dist/TransactionsAdmin-BsZ-oQWi.js +582 -0
  86. package/dist/TransactionsAdmin-CTSTiPld.cjs +1 -0
  87. package/dist/Trouble-9es_AI4F.cjs +1 -0
  88. package/dist/Trouble-oWt9fMsm.js +164 -0
  89. package/dist/Users-CTitWXyd.cjs +1 -0
  90. package/dist/Users-DJjQTWJF.js +1207 -0
  91. package/dist/aiModels-DIP9fn8T.cjs +1 -0
  92. package/dist/{aiModels-BHlEfuRJ.js → aiModels-DnDhNGup.js} +29 -61
  93. package/dist/arrivalRoads-BJ-35vkk.js +228 -0
  94. package/dist/arrivalRoads-qoU-B4jt.cjs +4 -0
  95. package/dist/{bake-D0gLVNTL.cjs → bake-n2wyFw0B.cjs} +1 -1
  96. package/dist/{bake-OErV2MLy.js → bake-naZeMu98.js} +14 -14
  97. package/dist/bookingPages-C7a3srPG.js +102 -0
  98. package/dist/bookingPages-DvbFbD9X.cjs +1 -0
  99. package/dist/components/CustomSelect.d.ts +7 -1
  100. package/dist/components/RegistrationFields.d.ts +6 -1
  101. package/dist/components/Reveal.d.ts +12 -0
  102. package/dist/components/ScrollToTop.d.ts +4 -0
  103. package/dist/contentFallback-C9MZjdq7.cjs +1 -0
  104. package/dist/contentFallback-CEDY0Pwp.js +96 -0
  105. package/dist/contentKey-Bwry4lDa.js +13 -0
  106. package/dist/contentKey-DJGYYnAE.cjs +1 -0
  107. package/dist/{dist-_zWHDDrc.js → dist-DUPvBnOA.js} +1 -1
  108. package/dist/email-BfnZnMwD.cjs +1 -0
  109. package/dist/email-Ddj8Dlu6.js +58 -0
  110. package/dist/{fileBytes-B0qxHYQL.cjs → fileBytes-BJPaiX9Y.cjs} +1 -1
  111. package/dist/{fileBytes-uhq3pGCS.js → fileBytes-bjgvCfWu.js} +2 -2
  112. package/dist/forms-Bvx9HTM6.js +75 -0
  113. package/dist/forms-CmNeTETW.cjs +1 -0
  114. package/dist/lib/ThemeContext.d.ts +0 -14
  115. package/dist/lib/bareImgWatch.d.ts +6 -1
  116. package/dist/lib/localEdits.d.ts +2 -0
  117. package/dist/lib/pageDesignLines.d.ts +1 -1
  118. package/dist/lib/paymentProducts.d.ts +8 -0
  119. package/dist/lib/payments.d.ts +11 -1
  120. package/dist/lib/people.d.ts +9 -0
  121. package/dist/lib/recordsKey.d.ts +24 -0
  122. package/dist/{lucide-react-DiyP8FA_.js → lucide-react-CA7GD7Nv.js} +8 -8
  123. package/dist/notices-B7iIrIEg.js +29 -0
  124. package/dist/notices-upMg8UVh.cjs +1 -0
  125. package/dist/openOnArrival-Buwqb86D.cjs +1 -0
  126. package/dist/openOnArrival-S2K6v-lB.js +35 -0
  127. package/dist/pageFiles--Ih60ITP.js +45 -0
  128. package/dist/pageFiles-UtBmlOcD.cjs +1 -0
  129. package/dist/pages/PagesAdmin.d.ts +69 -7
  130. package/dist/{pdf-DLuvpvHg.js → pdf-DRXcPGkr.js} +1 -1
  131. package/dist/{pdf.worker.min-C0gkd2Ec.js → pdf.worker.min-CfKZezeM.js} +1 -1
  132. package/dist/people-2jZE_pdI.js +102 -0
  133. package/dist/people-BpVvIr9-.cjs +1 -0
  134. package/dist/personName-CFw3pxuu.js +18 -0
  135. package/dist/personName-CbzN_i57.cjs +1 -0
  136. package/dist/publishSteps-C1cDFzzB.js +88 -0
  137. package/dist/publishSteps-SSm8afDw.cjs +1 -0
  138. package/dist/recordLock-DHVvI9bP.js +61 -0
  139. package/dist/recordLock-DWeIxiwh.cjs +1 -0
  140. package/dist/recordsKey-B7QrxdeU.cjs +1 -0
  141. package/dist/recordsKey-D5-wC0Aw.js +141 -0
  142. package/dist/registrationFields-CLeR2lQJ.js +181 -0
  143. package/dist/registrationFields-v4pOoRdn.cjs +1 -0
  144. package/dist/renderer.cjs.js +1 -1
  145. package/dist/renderer.es.js +1 -1
  146. package/dist/roles-D6VaHWfV.js +147 -0
  147. package/dist/roles-DQUFFBQe.cjs +1 -0
  148. package/dist/scheduleData-ATN8w5hI.js +727 -0
  149. package/dist/scheduleData-Cltj0ABZ.cjs +1 -0
  150. package/dist/server.cjs.js +6 -6
  151. package/dist/server.es.js +716 -715
  152. package/dist/serviceStatus-TQyZO_Y_.cjs +1 -0
  153. package/dist/serviceStatus-vS8AI7SZ.js +125 -0
  154. package/dist/tabAudience-BqpN6dsR.cjs +1 -0
  155. package/dist/tabAudience-CRyMvv0v.js +34 -0
  156. package/dist/transactions-BqMQDRx3.js +343 -0
  157. package/dist/transactions-CufFrdAM.cjs +1 -0
  158. package/dist/useIsPhone-BVGx_X3e.js +13 -0
  159. package/dist/useIsPhone-o63tNneA.cjs +1 -0
  160. package/dist/{validate-DzSJWuyL.js → validate-CmC_tLK-.js} +433 -351
  161. package/dist/validate-DZMwqSrb.cjs +103 -0
  162. package/dist/vite/validate.d.ts +14 -0
  163. package/dist/vite.cjs.js +1 -1
  164. package/dist/vite.es.js +1 -1
  165. package/dist/your-ai-workflow-firebase-os.cjs.js +15 -1431
  166. package/dist/your-ai-workflow-firebase-os.css +1 -1
  167. package/dist/your-ai-workflow-firebase-os.es.js +11695 -35911
  168. package/package.json +1 -1
  169. package/src/index.css +122 -2
  170. package/dist/ContactPopup-DF8qQCoY.cjs +0 -12
  171. package/dist/PhoneInputField-Btx07xvM.js +0 -2
  172. package/dist/aiModels-BIhoTNH0.cjs +0 -1
  173. package/dist/validate-e48WXJdP.cjs +0 -103
  174. /package/dist/{address-DI1YaCI4.cjs → address-Bsb8COq2.cjs} +0 -0
  175. /package/dist/{address-Ca1h_UZX.js → address-C2bHNxJU.js} +0 -0
  176. /package/dist/{dist-BLGlDv1e.cjs → dist-E4jTFPs7.cjs} +0 -0
  177. /package/dist/{lucide-react-BYniZ3lQ.cjs → lucide-react-BwV6L6Is.cjs} +0 -0
  178. /package/dist/{mediaKind-dk396a03.cjs → mediaKind-D0MWyv6b.cjs} +0 -0
  179. /package/dist/{mediaKind-De2Cx_kB.js → mediaKind-DmKMsjeY.js} +0 -0
  180. /package/dist/{pdf-CC5g01eC.cjs → pdf-jLjjhvjp.cjs} +0 -0
  181. /package/dist/{pdf.worker.min-pI_P-OCl.cjs → pdf.worker.min-bLgNWd7w.cjs} +0 -0
  182. /package/dist/{verifiedAccount-C1iCxopN.js → verifiedAccount-DRbRFJ6H.js} +0 -0
  183. /package/dist/{verifiedAccount-D3OeaOBo.cjs → verifiedAccount-DScyKk96.cjs} +0 -0
@@ -0,0 +1,102 @@
1
+ import { dr as e, ha as t, ka as n, ma as r, ya as i } from "./TimeZoneField-DkI1Bkcz.js";
2
+ import { O as a, T as o, _ as s, l as c } from "./verifiedAccount-DRbRFJ6H.js";
3
+ import { n as l } from "./personName-CFw3pxuu.js";
4
+ import { useEffect as u, useMemo as d, useState as f } from "react";
5
+ import { collection as p, query as m, where as h } from "firebase/firestore";
6
+ //#region src/lib/people.ts
7
+ var g = "user_profiles", _ = (e, n) => {
8
+ let r = t(n);
9
+ return e?.code === "permission-denied" ? `The people marked ${r} are not yours to list yet. Whoever runs this app opens that by ticking both roles on one page whose entries are sent to people, and pasting the security rules again from the Setup screen.` : `The people marked ${r} could not be listed just now.`;
10
+ }, v = (e, t) => e.name.localeCompare(t.name), y = (e) => {
11
+ let t = [];
12
+ return e.forEach((e) => {
13
+ let n = e.data() || {};
14
+ n.inactive === !0 || n.removed === !0 || t.push({
15
+ uid: e.id,
16
+ name: l(n),
17
+ photo: String(n.photoURL || n.avatar || n.avatarUrl || ""),
18
+ email: String(n.email || "").trim(),
19
+ phone: String(n.phone || "").trim(),
20
+ role: String(n.role || "")
21
+ });
22
+ }), t.sort(v);
23
+ };
24
+ function b(t) {
25
+ let { user: r, roleConfirmed: o } = e(), s = r?.uid || "", c = a(String(t || "")), l = `${s}|${c}`, [v, b] = f({
26
+ loading: !0,
27
+ people: [],
28
+ error: "",
29
+ asked: ""
30
+ });
31
+ return u(() => {
32
+ if (!s || !c || !o) return;
33
+ let e = !0, t = i(`${g}|role:${c}`, () => m(p(n, g), h("role", "==", c)), (t) => {
34
+ e && b({
35
+ loading: !1,
36
+ people: y(t),
37
+ error: "",
38
+ asked: l
39
+ });
40
+ }, (t) => {
41
+ e && b({
42
+ loading: !1,
43
+ people: [],
44
+ error: _(t, c),
45
+ asked: l
46
+ });
47
+ });
48
+ return () => {
49
+ e = !1, t();
50
+ };
51
+ }, [
52
+ s,
53
+ c,
54
+ o,
55
+ l
56
+ ]), d(() => !s || !c ? {
57
+ loading: !1,
58
+ people: [],
59
+ error: ""
60
+ } : !o || v.asked !== l ? {
61
+ loading: !0,
62
+ people: [],
63
+ error: ""
64
+ } : {
65
+ loading: v.loading,
66
+ people: v.people,
67
+ error: v.error
68
+ }, [
69
+ s,
70
+ c,
71
+ o,
72
+ l,
73
+ v
74
+ ]);
75
+ }
76
+ function x(e, t = r()) {
77
+ let n = a(String(e || ""));
78
+ if (!n) return [];
79
+ let i = t.find((e) => e.id === n)?.sees;
80
+ return Array.isArray(i) ? i.filter((e) => typeof e == "string" && !!e && e !== n) : [];
81
+ }
82
+ function S(e, t) {
83
+ let n = a(String(e || ""));
84
+ if (!n) return [];
85
+ let r = [];
86
+ for (let e of Array.isArray(t) ? t : []) {
87
+ let t = e?.config || {};
88
+ if (!s(o(t)) || !c(t).includes(n)) continue;
89
+ let i = String(e?.title || "").trim();
90
+ i && !r.includes(i) && r.push(i);
91
+ }
92
+ return r;
93
+ }
94
+ var C = (e) => e.length < 2 ? e[0] || "" : `${e.slice(0, -1).join(", ")} and ${e[e.length - 1]}`;
95
+ function w(e, n = [], i = r()) {
96
+ let a = x(e, i).map((e) => t(e, i));
97
+ if (!a.length) return "";
98
+ let o = n.filter(Boolean), s = o.length ? `from the ${C(o)} ${o.length > 1 ? "pages" : "page"}` : "from a page where entries are sent to people";
99
+ return `Can see who is ${C(a)} — ${s}`;
100
+ }
101
+ //#endregion
102
+ export { w as n, b as r, S as t };
@@ -0,0 +1 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./TimeZoneField-qs7NPR30.cjs`),t=require(`./verifiedAccount-DScyKk96.cjs`),n=require(`./personName-CbzN_i57.cjs`);let r=require(`react`),i=require(`firebase/firestore`);var a=`user_profiles`,o=(t,n)=>{let r=e.ha(n);return t?.code===`permission-denied`?`The people marked ${r} are not yours to list yet. Whoever runs this app opens that by ticking both roles on one page whose entries are sent to people, and pasting the security rules again from the Setup screen.`:`The people marked ${r} could not be listed just now.`},s=(e,t)=>e.name.localeCompare(t.name),c=e=>{let t=[];return e.forEach(e=>{let r=e.data()||{};r.inactive===!0||r.removed===!0||t.push({uid:e.id,name:n.n(r),photo:String(r.photoURL||r.avatar||r.avatarUrl||``),email:String(r.email||``).trim(),phone:String(r.phone||``).trim(),role:String(r.role||``)})}),t.sort(s)};function l(n){let{user:s,roleConfirmed:l}=e.dr(),u=s?.uid||``,d=t.O(String(n||``)),f=`${u}|${d}`,[p,m]=(0,r.useState)({loading:!0,people:[],error:``,asked:``});return(0,r.useEffect)(()=>{if(!u||!d||!l)return;let t=!0,n=e.ya(`${a}|role:${d}`,()=>(0,i.query)((0,i.collection)(e.ka,a),(0,i.where)(`role`,`==`,d)),e=>{t&&m({loading:!1,people:c(e),error:``,asked:f})},e=>{t&&m({loading:!1,people:[],error:o(e,d),asked:f})});return()=>{t=!1,n()}},[u,d,l,f]),(0,r.useMemo)(()=>!u||!d?{loading:!1,people:[],error:``}:!l||p.asked!==f?{loading:!0,people:[],error:``}:{loading:p.loading,people:p.people,error:p.error},[u,d,l,f,p])}function u(n,r=e.ma()){let i=t.O(String(n||``));if(!i)return[];let a=r.find(e=>e.id===i)?.sees;return Array.isArray(a)?a.filter(e=>typeof e==`string`&&!!e&&e!==i):[]}function d(e,n){let r=t.O(String(e||``));if(!r)return[];let i=[];for(let e of Array.isArray(n)?n:[]){let n=e?.config||{};if(!t._(t.T(n))||!t.l(n).includes(r))continue;let a=String(e?.title||``).trim();a&&!i.includes(a)&&i.push(a)}return i}var f=e=>e.length<2?e[0]||``:`${e.slice(0,-1).join(`, `)} and ${e[e.length-1]}`;function p(t,n=[],r=e.ma()){let i=u(t,r).map(t=>e.ha(t,r));if(!i.length)return``;let a=n.filter(Boolean),o=a.length?`from the ${f(a)} ${a.length>1?`pages`:`page`}`:`from a page where entries are sent to people`;return`Can see who is ${f(i)} — ${o}`}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return p}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return d}});
@@ -0,0 +1,18 @@
1
+ //#region src/lib/personName.ts
2
+ var e = "Somebody", t = "Has not finished registering", n = (e) => String(e ?? "").trim();
3
+ function r(t, r = e) {
4
+ let i = t || {};
5
+ return n(i.displayName) || n(i.email) || n(i.phone) || r;
6
+ }
7
+ function i(e) {
8
+ let t = e || {}, i = r(t, "");
9
+ return [n(t.email), n(t.phone)].filter((e) => !!e && e !== i).join(" · ");
10
+ }
11
+ function a(e) {
12
+ let r = i(e);
13
+ if (r) return r;
14
+ let a = e || {};
15
+ return n(a.displayName) && n(a.email) ? "" : t;
16
+ }
17
+ //#endregion
18
+ export { r as n, a as t };
@@ -0,0 +1 @@
1
+ var e=`Somebody`,t=`Has not finished registering`,n=e=>String(e??``).trim();function r(t,r=e){let i=t||{};return n(i.displayName)||n(i.email)||n(i.phone)||r}function i(e){let t=e||{},i=r(t,``);return[n(t.email),n(t.phone)].filter(e=>!!e&&e!==i).join(` · `)}function a(e){let r=i(e);if(r)return r;let a=e||{};return n(a.displayName)&&n(a.email)?``:t}Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return a}});
@@ -0,0 +1,88 @@
1
+ import { ka as e } from "./TimeZoneField-DkI1Bkcz.js";
2
+ import { useEffect as t, useState as n } from "react";
3
+ import { doc as r, onSnapshot as i, setDoc as a } from "firebase/firestore";
4
+ //#region src/lib/publishSteps.ts
5
+ var o = {
6
+ collection: "sys_configs",
7
+ doc: "publish"
8
+ }, s = [
9
+ "published",
10
+ "connected",
11
+ "authorised"
12
+ ], c = {
13
+ appName: "",
14
+ domain: "",
15
+ done: []
16
+ };
17
+ function l(e) {
18
+ let t = Array.isArray(e?.done) ? e.done : [];
19
+ return {
20
+ appName: typeof e?.appName == "string" ? e.appName : "",
21
+ domain: typeof e?.domain == "string" ? e.domain : "",
22
+ done: s.filter((e) => t.includes(e))
23
+ };
24
+ }
25
+ function u(e) {
26
+ let t = String(e ?? "").trim().toLowerCase();
27
+ return t = t.replace(/^[a-z][a-z0-9+.-]*:\/\//, ""), t = t.split(/[/?#]/)[0], t = t.replace(/\.ai\.studio$/, ""), t.replace(/[\s_]+/g, "-").replace(/[^a-z0-9-]/g, "").replace(/-{2,}/g, "-").replace(/^-+|-+$/g, "");
28
+ }
29
+ var d = (e) => {
30
+ let t = u(e);
31
+ return t ? `https://${t}.ai.studio/` : "";
32
+ };
33
+ function f(e) {
34
+ let t = String(e ?? "").trim().toLowerCase();
35
+ return t = t.replace(/^[a-z][a-z0-9+.-]*:\/\//, ""), t = t.replace(/^[^/@]*@/, ""), t = t.split(/[/?#]/)[0], t = t.split(":")[0], t = t.replace(/^www\./, ""), t = t.replace(/^\.+|\.+$/g, ""), /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.[a-z]{2,}$/.test(t) ? t : "";
36
+ }
37
+ var p = (e) => {
38
+ let t = f(e);
39
+ return t ? `https://${t}/` : "";
40
+ }, m = (e) => p(e?.domain) || d(e?.appName);
41
+ function h(e, t = null) {
42
+ let n = (t) => e.includes(t), r = s.find((e) => !n(e)) ?? null, i = r ? s.indexOf(r) : s.length - 1;
43
+ return s.map((e, a) => {
44
+ let o = a <= i, s = t !== null && t === e && o;
45
+ return {
46
+ id: e,
47
+ visible: o,
48
+ done: n(e),
49
+ open: s || t === null && e === r
50
+ };
51
+ });
52
+ }
53
+ var g = (e, t) => s.filter((n) => n === t || e.includes(n));
54
+ function _(e) {
55
+ return !e || !e.configured ? !1 : e.mode === "live" ? !e.webhookConfigured : !0;
56
+ }
57
+ function v() {
58
+ let [s, u] = n({
59
+ loading: !0,
60
+ record: c
61
+ });
62
+ return t(() => i(r(e, o.collection, o.doc), (e) => u({
63
+ loading: !1,
64
+ record: l(e.exists() ? e.data() : null)
65
+ }), () => u({
66
+ loading: !1,
67
+ record: c
68
+ })), []), {
69
+ loading: s.loading,
70
+ record: s.record,
71
+ save: async (t) => {
72
+ u((e) => ({
73
+ loading: !1,
74
+ record: {
75
+ ...e.record,
76
+ ...t
77
+ }
78
+ }));
79
+ try {
80
+ return await a(r(e, o.collection, o.doc), t, { merge: !0 }), null;
81
+ } catch (e) {
82
+ return console.error("Could not save where you got to", e), "That could not be saved. Only an admin can, and only while you are signed in.";
83
+ }
84
+ }
85
+ };
86
+ }
87
+ //#endregion
88
+ export { p as a, _ as c, f as i, v as l, d as n, h as o, u as r, m as s, s as t, g as u };
@@ -0,0 +1 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./TimeZoneField-qs7NPR30.cjs`);let t=require(`react`),n=require(`firebase/firestore`);var r={collection:`sys_configs`,doc:`publish`},i=[`published`,`connected`,`authorised`],a={appName:``,domain:``,done:[]};function o(e){let t=Array.isArray(e?.done)?e.done:[];return{appName:typeof e?.appName==`string`?e.appName:``,domain:typeof e?.domain==`string`?e.domain:``,done:i.filter(e=>t.includes(e))}}function s(e){let t=String(e??``).trim().toLowerCase();return t=t.replace(/^[a-z][a-z0-9+.-]*:\/\//,``),t=t.split(/[/?#]/)[0],t=t.replace(/\.ai\.studio$/,``),t.replace(/[\s_]+/g,`-`).replace(/[^a-z0-9-]/g,``).replace(/-{2,}/g,`-`).replace(/^-+|-+$/g,``)}var c=e=>{let t=s(e);return t?`https://${t}.ai.studio/`:``};function l(e){let t=String(e??``).trim().toLowerCase();return t=t.replace(/^[a-z][a-z0-9+.-]*:\/\//,``),t=t.replace(/^[^/@]*@/,``),t=t.split(/[/?#]/)[0],t=t.split(`:`)[0],t=t.replace(/^www\./,``),t=t.replace(/^\.+|\.+$/g,``),/^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]*[a-z0-9])?)*\.[a-z]{2,}$/.test(t)?t:``}var u=e=>{let t=l(e);return t?`https://${t}/`:``},d=e=>u(e?.domain)||c(e?.appName);function f(e,t=null){let n=t=>e.includes(t),r=i.find(e=>!n(e))??null,a=r?i.indexOf(r):i.length-1;return i.map((e,i)=>{let o=i<=a,s=t!==null&&t===e&&o;return{id:e,visible:o,done:n(e),open:s||t===null&&e===r}})}var p=(e,t)=>i.filter(n=>n===t||e.includes(n));function m(e){return!e||!e.configured?!1:e.mode===`live`?!e.webhookConfigured:!0}function h(){let[i,s]=(0,t.useState)({loading:!0,record:a});return(0,t.useEffect)(()=>(0,n.onSnapshot)((0,n.doc)(e.ka,r.collection,r.doc),e=>s({loading:!1,record:o(e.exists()?e.data():null)}),()=>s({loading:!1,record:a})),[]),{loading:i.loading,record:i.record,save:async t=>{s(e=>({loading:!1,record:{...e.record,...t}}));try{return await(0,n.setDoc)((0,n.doc)(e.ka,r.collection,r.doc),t,{merge:!0}),null}catch(e){return console.error(`Could not save where you got to`,e),`That could not be saved. Only an admin can, and only while you are signed in.`}}}}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return p}});
@@ -0,0 +1,61 @@
1
+ import { ka as e } from "./TimeZoneField-DkI1Bkcz.js";
2
+ import { deleteField as t, doc as n, writeBatch as r } from "firebase/firestore";
3
+ //#region src/lib/recordLock.ts
4
+ var i = [
5
+ {
6
+ value: "none",
7
+ label: "No one"
8
+ },
9
+ {
10
+ value: "admin",
11
+ label: "Only me and my admins"
12
+ },
13
+ {
14
+ value: "all",
15
+ label: "Everyone who can change it"
16
+ }
17
+ ], a = {
18
+ none: "Nothing on this page can be thrown away — there is no Delete button for anybody, you included. Pick one of the others where something has to go.",
19
+ admin: "Nobody but an admin can delete anything on this page — the database refuses it, whatever the page shows. Needs the rules pasted from /setup at 1.14.66 or later.",
20
+ all: "Whoever may change a record may delete it too."
21
+ }, o = ["admin"], s = [], c = [
22
+ "board",
23
+ "table",
24
+ "calendar",
25
+ "drive"
26
+ ], l = (e) => {
27
+ let t = String(e?.pageType || "");
28
+ return !t || t === "public" || t === "admin" ? !1 : !c.includes(String(e?.template || ""));
29
+ }, u = (e) => {
30
+ let t = e?.deleteBy;
31
+ return t === "admin" ? "admin" : t === "all" || t === "" ? "all" : t === "none" || l(e) ? "none" : "all";
32
+ }, d = (e) => {
33
+ let t = u(e);
34
+ return t === "admin" ? o : t === "none" ? s : null;
35
+ }, f = (e) => {
36
+ let t = d(e);
37
+ return t ? { lock: { delete: [...t] } } : {};
38
+ }, p = (e) => {
39
+ let t = e?.lock?.delete;
40
+ return Array.isArray(t) ? t.map(String) : null;
41
+ }, m = (e, t) => {
42
+ let n = p(e);
43
+ return n ? n.length ? t === "admin" || !!t && n.includes(t) : !1 : !0;
44
+ }, h = (e, t) => {
45
+ let n = d(t), r = p(e);
46
+ return n ? r !== null && r.length === n.length && n.every((e) => r.includes(e)) : r === null;
47
+ };
48
+ async function g(i, a, o, s) {
49
+ if (!s || !i) return 0;
50
+ let c = d(o), l = a.filter((e) => e && e.id && !h(e, o));
51
+ if (!l.length) return 0;
52
+ let u = c ? { lock: { delete: [...c] } } : { lock: t() };
53
+ for (let t = 0; t < l.length; t += 500) {
54
+ let a = r(e);
55
+ for (let r of l.slice(t, t + 500)) a.update(n(e, i, r.id), u);
56
+ await a.commit();
57
+ }
58
+ return l.length;
59
+ }
60
+ //#endregion
61
+ export { l as a, u as i, a as n, f as o, g as r, m as s, i as t };
@@ -0,0 +1 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./TimeZoneField-qs7NPR30.cjs`);let t=require(`firebase/firestore`);var n=[{value:`none`,label:`No one`},{value:`admin`,label:`Only me and my admins`},{value:`all`,label:`Everyone who can change it`}],r={none:`Nothing on this page can be thrown away — there is no Delete button for anybody, you included. Pick one of the others where something has to go.`,admin:`Nobody but an admin can delete anything on this page — the database refuses it, whatever the page shows. Needs the rules pasted from /setup at 1.14.66 or later.`,all:`Whoever may change a record may delete it too.`},i=[`admin`],a=[],o=[`board`,`table`,`calendar`,`drive`],s=e=>{let t=String(e?.pageType||``);return!t||t===`public`||t===`admin`?!1:!o.includes(String(e?.template||``))},c=e=>{let t=e?.deleteBy;return t===`admin`?`admin`:t===`all`||t===``?`all`:t===`none`||s(e)?`none`:`all`},l=e=>{let t=c(e);return t===`admin`?i:t===`none`?a:null},u=e=>{let t=l(e);return t?{lock:{delete:[...t]}}:{}},d=e=>{let t=e?.lock?.delete;return Array.isArray(t)?t.map(String):null},f=(e,t)=>{let n=d(e);return n?n.length?t===`admin`||!!t&&n.includes(t):!1:!0},p=(e,t)=>{let n=l(t),r=d(e);return n?r!==null&&r.length===n.length&&n.every(e=>r.includes(e)):r===null};async function m(n,r,i,a){if(!a||!n)return 0;let o=l(i),s=r.filter(e=>e&&e.id&&!p(e,i));if(!s.length)return 0;let c=o?{lock:{delete:[...o]}}:{lock:(0,t.deleteField)()};for(let r=0;r<s.length;r+=500){let i=(0,t.writeBatch)(e.ka);for(let a of s.slice(r,r+500))i.update((0,t.doc)(e.ka,n,a.id),c);await i.commit()}return s.length}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return m}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return f}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return n}});
@@ -0,0 +1 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./TimeZoneField-qs7NPR30.cjs`),t=require(`./DashboardNav-CXa_ci-_.cjs`),n=require(`./verifiedAccount-DScyKk96.cjs`);let r=require(`react`),i=require(`firebase/firestore`);var a=[{id:`home`,title:`Home`,path:`/`,audience:`public`},{id:`contact`,title:`Contact`,path:`/contact`,audience:`public`},{id:`dashboard`,title:`Dashboard`,path:`/dashboard`,audience:`user`},{id:`support`,title:`Support`,path:`/support`,audience:`user`}],o=new Set([`home`,`drive`,`assets`,`contact`,`guide`,`templates`,`setup`,`support`,`theme`,`page_order`,`tab_order`]),s={public:0,user:1,internal:2,admin:3},c=(e,t)=>{let n=String(e||``).trim();return n?n.startsWith(`/`)?n:`/${n}`:`/${t}`},l=e=>new Set((Array.isArray(e?.order)?e.order:[]).filter(e=>e&&typeof e==`object`&&e.removed).map(e=>String(e.id)));function u(e,r,i,l,u=t.S()){let d=[...a];for(let{id:t,data:n}of e)o.has(t)||d.push({id:t,title:String(n?.pageName||n?.title||t),path:c(n?.route,t),brief:String(n?.brief||``),config:n,audience:`public`});for(let{id:e,data:t}of r)o.has(e)||d.push({id:e,title:String(t?.tabName||t?.title||e),path:c(t?.route,e),brief:String(t?.brief||``),config:t,audience:n.S(t?.pageType)});for(let[e,t]of u){if(o.has(e)||d.some(t=>t.id===e)||d.some(t=>String(t.config?.fileId||``)===e))continue;let r=!!t.isPublic;if((r?i:l).has(e))continue;let a=t.config||{},s=c(a.route,e);d.some(e=>e.path===s)||d.push({id:e,title:String(r?a.pageName||a.pageTitle||a.title||e:a.tabName||a.tabTitle||a.title||e),path:s,brief:String(a.brief||``),config:a,audience:r?`public`:n.S(a.pageType)})}return d.sort((e,t)=>(s[e.audience||`public`]??9)-(s[t.audience||`public`]??9)||e.title.localeCompare(t.title))}function d(){let[t,n]=(0,r.useState)(null),[a,o]=(0,r.useState)(null),[s,c]=(0,r.useState)(new Set),[d,f]=(0,r.useState)(new Set);return(0,r.useEffect)(()=>{let t=e=>{let t=[];return e.forEach(e=>t.push({id:e.id,data:e.data()})),t},r=[(0,i.onSnapshot)((0,i.collection)(e.ka,`sys_pages`),e=>n(t(e)),()=>n([])),(0,i.onSnapshot)((0,i.collection)(e.ka,`sys_tabs`),e=>o(t(e)),()=>o([])),(0,i.onSnapshot)((0,i.doc)(e.ka,`sys_configs`,`page_order`),e=>c(l(e.exists()?e.data():null)),()=>{}),(0,i.onSnapshot)((0,i.doc)(e.ka,`sys_configs`,`tab_order`),e=>f(l(e.exists()?e.data():null)),()=>{})];return()=>r.forEach(e=>e())},[]),t===null||a===null?null:u(t,a,s,d)}var f=[`board`,`table`,`calendar`,`drive`],p=[`inline_form`,`popup_form`],m=e=>typeof e!=`string`||e===``||e===`none`||e===`custom`||![...f,...p].includes(e),h=(e,t)=>m(e)||t&&!g(e),g=e=>typeof e==`string`&&f.includes(e),_=e=>String(e??``).toLowerCase().replace(/[^a-z0-9]+/g,`_`),v=(e,t)=>String(e?.recordsKey??``).trim()||_(e?.tabName||e?.pageId||t),y=(e,t)=>{let n=String(e?.recordsKey??``).trim();if(n)return n;let r=String(e?.pageName??``).toLowerCase().replace(/\s+/g,`_`)||e?.pageId||`custom_page`;return t&&e?.pageId||r},b={board:`tasks`,table:`table`,calendar:`events`,drive:`files`};function x(e,t,n=``){let r=b[String(e?.template??``)];return r?`${t}${y({...e,pageId:e?.pageId||n},!0)}_${r}`:t===`case_`?w(e,t):`${t}${v(e,t===`admin_`?`admin_page`:t===`mem_`?`internal_page`:`user_page`)}_records`}function S(e,t,n){let r=String(e?.recordsKey??``).trim();if(r)return r;let i=g(String(e?.template??``));return n?i?y({...e,pageId:t},!1):``:i?t:v(e,t)}var C=e=>(String(e?.recordsKey??``).trim()||String(e?.tabName||e?.contentKey||`page`)).toLowerCase().replace(/[^a-z0-9]+/g,`_`).replace(/^_+|_+$/g,``)||`page`,w=(e,t=n.i)=>`${t}${C(e)}_entries`;Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return d}});
@@ -0,0 +1,141 @@
1
+ import { ka as e } from "./TimeZoneField-DkI1Bkcz.js";
2
+ import { S as t } from "./DashboardNav-Dmn7PVSp.js";
3
+ import { S as n, i as r } from "./verifiedAccount-DRbRFJ6H.js";
4
+ import { useEffect as i, useState as a } from "react";
5
+ import { collection as o, doc as s, onSnapshot as c } from "firebase/firestore";
6
+ //#region src/lib/pageRows.ts
7
+ var l = [
8
+ {
9
+ id: "home",
10
+ title: "Home",
11
+ path: "/",
12
+ audience: "public"
13
+ },
14
+ {
15
+ id: "contact",
16
+ title: "Contact",
17
+ path: "/contact",
18
+ audience: "public"
19
+ },
20
+ {
21
+ id: "dashboard",
22
+ title: "Dashboard",
23
+ path: "/dashboard",
24
+ audience: "user"
25
+ },
26
+ {
27
+ id: "support",
28
+ title: "Support",
29
+ path: "/support",
30
+ audience: "user"
31
+ }
32
+ ], u = new Set([
33
+ "home",
34
+ "drive",
35
+ "assets",
36
+ "contact",
37
+ "guide",
38
+ "templates",
39
+ "setup",
40
+ "support",
41
+ "theme",
42
+ "page_order",
43
+ "tab_order"
44
+ ]), d = {
45
+ public: 0,
46
+ user: 1,
47
+ internal: 2,
48
+ admin: 3
49
+ }, f = (e, t) => {
50
+ let n = String(e || "").trim();
51
+ return n ? n.startsWith("/") ? n : `/${n}` : `/${t}`;
52
+ }, p = (e) => new Set((Array.isArray(e?.order) ? e.order : []).filter((e) => e && typeof e == "object" && e.removed).map((e) => String(e.id)));
53
+ function m(e, r, i, a, o = t()) {
54
+ let s = [...l];
55
+ for (let { id: t, data: n } of e) u.has(t) || s.push({
56
+ id: t,
57
+ title: String(n?.pageName || n?.title || t),
58
+ path: f(n?.route, t),
59
+ brief: String(n?.brief || ""),
60
+ config: n,
61
+ audience: "public"
62
+ });
63
+ for (let { id: e, data: t } of r) u.has(e) || s.push({
64
+ id: e,
65
+ title: String(t?.tabName || t?.title || e),
66
+ path: f(t?.route, e),
67
+ brief: String(t?.brief || ""),
68
+ config: t,
69
+ audience: n(t?.pageType)
70
+ });
71
+ for (let [e, t] of o) {
72
+ if (u.has(e) || s.some((t) => t.id === e) || s.some((t) => String(t.config?.fileId || "") === e)) continue;
73
+ let r = !!t.isPublic;
74
+ if ((r ? i : a).has(e)) continue;
75
+ let o = t.config || {}, c = f(o.route, e);
76
+ s.some((e) => e.path === c) || s.push({
77
+ id: e,
78
+ title: String(r ? o.pageName || o.pageTitle || o.title || e : o.tabName || o.tabTitle || o.title || e),
79
+ path: c,
80
+ brief: String(o.brief || ""),
81
+ config: o,
82
+ audience: r ? "public" : n(o.pageType)
83
+ });
84
+ }
85
+ return s.sort((e, t) => (d[e.audience || "public"] ?? 9) - (d[t.audience || "public"] ?? 9) || e.title.localeCompare(t.title));
86
+ }
87
+ function h() {
88
+ let [t, n] = a(null), [r, l] = a(null), [u, d] = a(/* @__PURE__ */ new Set()), [f, h] = a(/* @__PURE__ */ new Set());
89
+ return i(() => {
90
+ let t = (e) => {
91
+ let t = [];
92
+ return e.forEach((e) => t.push({
93
+ id: e.id,
94
+ data: e.data()
95
+ })), t;
96
+ }, r = [
97
+ c(o(e, "sys_pages"), (e) => n(t(e)), () => n([])),
98
+ c(o(e, "sys_tabs"), (e) => l(t(e)), () => l([])),
99
+ c(s(e, "sys_configs", "page_order"), (e) => d(p(e.exists() ? e.data() : null)), () => {}),
100
+ c(s(e, "sys_configs", "tab_order"), (e) => h(p(e.exists() ? e.data() : null)), () => {})
101
+ ];
102
+ return () => r.forEach((e) => e());
103
+ }, []), t === null || r === null ? null : m(t, r, u, f);
104
+ }
105
+ //#endregion
106
+ //#region src/configs/pages/templates.ts
107
+ var g = [
108
+ "board",
109
+ "table",
110
+ "calendar",
111
+ "drive"
112
+ ], _ = ["inline_form", "popup_form"], v = (e) => typeof e != "string" || e === "" || e === "none" || e === "custom" || ![...g, ..._].includes(e), y = (e, t) => v(e) || t && !b(e), b = (e) => typeof e == "string" && g.includes(e), x = (e) => String(e ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "_"), S = (e, t) => String(e?.recordsKey ?? "").trim() || x(e?.tabName || e?.pageId || t), C = (e, t) => {
113
+ let n = String(e?.recordsKey ?? "").trim();
114
+ if (n) return n;
115
+ let r = String(e?.pageName ?? "").toLowerCase().replace(/\s+/g, "_") || e?.pageId || "custom_page";
116
+ return t && e?.pageId || r;
117
+ }, w = {
118
+ board: "tasks",
119
+ table: "table",
120
+ calendar: "events",
121
+ drive: "files"
122
+ };
123
+ function T(e, t, n = "") {
124
+ let r = w[String(e?.template ?? "")];
125
+ return r ? `${t}${C({
126
+ ...e,
127
+ pageId: e?.pageId || n
128
+ }, !0)}_${r}` : t === "case_" ? O(e, t) : `${t}${S(e, t === "admin_" ? "admin_page" : t === "mem_" ? "internal_page" : "user_page")}_records`;
129
+ }
130
+ function E(e, t, n) {
131
+ let r = String(e?.recordsKey ?? "").trim();
132
+ if (r) return r;
133
+ let i = b(String(e?.template ?? ""));
134
+ return n ? i ? C({
135
+ ...e,
136
+ pageId: t
137
+ }, !1) : "" : i ? t : S(e, t);
138
+ }
139
+ var D = (e) => (String(e?.recordsKey ?? "").trim() || String(e?.tabName || e?.contentKey || "page")).toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "") || "page", O = (e, t = r) => `${t}${D(e)}_entries`;
140
+ //#endregion
141
+ export { E as a, y as c, C as i, l, D as n, S as o, T as r, b as s, O as t, h as u };
@@ -0,0 +1,181 @@
1
+ import { Pr as e, Zr as t } from "./TimeZoneField-DkI1Bkcz.js";
2
+ import { v as n } from "./verifiedAccount-DRbRFJ6H.js";
3
+ import { i as r, r as i, u as a } from "./address-C2bHNxJU.js";
4
+ var o = "member", s = "finishedAt", c = [
5
+ "text",
6
+ "email",
7
+ "tel",
8
+ "number",
9
+ "date",
10
+ "textarea",
11
+ "select",
12
+ "checkbox",
13
+ "address"
14
+ ], l = new Set([
15
+ "uid",
16
+ "id",
17
+ "email",
18
+ "displayName",
19
+ "avatar",
20
+ "photoURL",
21
+ "createdAt",
22
+ "lastLoginAt",
23
+ "role",
24
+ "inactive",
25
+ "removed",
26
+ "planUntil",
27
+ "planPass",
28
+ "requestedRole",
29
+ "requestedRoleAt",
30
+ s,
31
+ "phoneClaim"
32
+ ]), u = (e) => typeof e == "string" && /^[a-zA-Z][a-zA-Z0-9_]{0,39}$/.test(e) && !l.has(e), d = (e) => c.includes(e);
33
+ function f(e) {
34
+ if (!e || typeof e != "object") return null;
35
+ let t = String(e.key ?? e.name ?? "").trim();
36
+ if (!u(t)) return null;
37
+ let n = d(e.type) ? e.type : "text", r = String(e.label ?? "").trim() || t, i = Array.isArray(e.options) ? e.options.map((e) => String(e ?? "").trim()).filter(Boolean) : [], a = n === "select" && i.length === 0 ? "text" : n;
38
+ return {
39
+ key: t,
40
+ label: r,
41
+ type: a,
42
+ required: e.required === !0,
43
+ editable: e.editable !== !1,
44
+ ...a === "select" ? { options: i } : {},
45
+ ...typeof e.placeholder == "string" && e.placeholder.trim() ? { placeholder: e.placeholder.trim() } : {}
46
+ };
47
+ }
48
+ function p(e) {
49
+ let t = Array.isArray(e) ? e : Array.isArray(e?.fields) ? e.fields : [], n = [];
50
+ for (let e of t) {
51
+ let t = f(e);
52
+ t && !n.some((e) => e.key === t.key) && n.push(t);
53
+ }
54
+ return n;
55
+ }
56
+ function m() {
57
+ let e = (typeof window < "u" ? window.__FBOS_REGISTRATION__ : null) || {}, t = {};
58
+ for (let n of Object.keys(e)) {
59
+ let r = p(e[n]);
60
+ r.length && (t[String(n).toLowerCase()] = r);
61
+ }
62
+ return t;
63
+ }
64
+ var h = (e) => e === "member" || e === "internal" || n(e);
65
+ function g(e, t = m()) {
66
+ let n = String(e ?? "").trim().toLowerCase();
67
+ return h(n) && t[n]?.length ? n : o;
68
+ }
69
+ var _ = (e, t, n = m()) => n[g(t?.perRole ? e : "member", n)] || [];
70
+ function v(t, n) {
71
+ if (!n?.perRole) return o;
72
+ let r = e(t)?.role, i = String(t?.role ?? "").trim().toLowerCase(), a = m();
73
+ for (let e of [r, i]) if (e && h(e) && a[e]?.length) return e;
74
+ return o;
75
+ }
76
+ var y = (e, t) => _(v(e, t), t);
77
+ function b(e, t) {
78
+ let n = e?.[t.key];
79
+ return t.type === "checkbox" ? n === !0 : typeof n == "number" ? Number.isFinite(n) : typeof n == "string" ? n.trim() !== "" : !1;
80
+ }
81
+ function x(e, t) {
82
+ let n = e?.[t.key];
83
+ return t.type === "checkbox" ? n === !0 ? "Yes" : "No" : typeof n == "number" ? String(n) : typeof n == "string" ? n.trim() : "";
84
+ }
85
+ var S = (e, t) => !t.editable && b(e, t), C = (e, t) => e.filter((e) => e.required && !b(t, e));
86
+ function w(e) {
87
+ if (!e || e.removed === !0) return [];
88
+ let t = [];
89
+ return String(e.displayName ?? "").trim() || t.push("name"), String(e.email ?? "").trim() || t.push("email"), t;
90
+ }
91
+ var T = (e) => typeof e?.finishedAt == "string" && e.finishedAt.trim() !== "", E = (e = Date.now()) => ({ [s]: new Date(e).toISOString() });
92
+ function D(e, t, n) {
93
+ if (!e || e.removed === !0) return !1;
94
+ if (w(e).length > 0) return !0;
95
+ if (String(t ?? "").trim().toLowerCase() === "admin") return !1;
96
+ let r = y(e, n);
97
+ return C(r, e).length > 0 ? !0 : r.length > 0 && !T(e);
98
+ }
99
+ var O = "firebase-os:finish-not-now";
100
+ function k(e) {
101
+ if (e) try {
102
+ sessionStorage.setItem(`${O}:${e}`, "1");
103
+ } catch {}
104
+ }
105
+ function A(e) {
106
+ if (!e) return !1;
107
+ try {
108
+ return sessionStorage.getItem(`${O}:${e}`) === "1";
109
+ } catch {
110
+ return !1;
111
+ }
112
+ }
113
+ var j = (e, t, n, r) => D(e, t, n) ? w(e).length > 0 ? !0 : !(n?.skippable && A(r)) : !1, M = (e, t, n, r) => D(e, t, n) && A(r) && w(e).length === 0;
114
+ function N(e, t) {
115
+ let n = e.type === "checkbox" ? t === !0 : typeof t == "string" ? t.trim() !== "" : t != null && t !== "";
116
+ return e.required && !n ? e.type === "checkbox" ? `Please tick "${e.label}".` : `Please fill in ${e.label}.` : n ? e.type === "email" && !/^[^@\s]+@[^@\s.]+\.[^@\s]+$/.test(String(t).trim()) ? `${e.label} does not look like an email address.` : e.type === "number" && !Number.isFinite(Number(String(t).trim())) ? `${e.label} has to be a number.` : "" : "";
117
+ }
118
+ function P(e, t) {
119
+ let n = {};
120
+ for (let r of e) {
121
+ let e = N(r, t[r.key]);
122
+ e && (n[r.key] = e);
123
+ }
124
+ return n;
125
+ }
126
+ function F(e, t, n = null) {
127
+ let o = {};
128
+ for (let s of e) {
129
+ if (S(n, s)) continue;
130
+ if (s.type === "address") {
131
+ let e = i(s.key, a(r(s.key, t)));
132
+ if (e[s.key]) {
133
+ Object.assign(o, e);
134
+ continue;
135
+ }
136
+ for (let [t, r] of Object.entries(e)) t in (n || {}) && (o[t] = r);
137
+ continue;
138
+ }
139
+ let e = t[s.key];
140
+ if (e === void 0) continue;
141
+ if (s.type === "checkbox") {
142
+ let t = e === !0;
143
+ (t || s.key in (n || {})) && (o[s.key] = t);
144
+ continue;
145
+ }
146
+ let c = typeof e == "string" ? e.trim() : String(e ?? "").trim();
147
+ if (!c) {
148
+ s.key in (n || {}) && (o[s.key] = "");
149
+ continue;
150
+ }
151
+ if (s.type === "number") {
152
+ let e = Number(c);
153
+ o[s.key] = Number.isFinite(e) ? e : c;
154
+ continue;
155
+ }
156
+ o[s.key] = c;
157
+ }
158
+ return o;
159
+ }
160
+ function I(e, t) {
161
+ let n = {};
162
+ for (let a of e) {
163
+ let e = t?.[a.key];
164
+ if (a.type === "address") {
165
+ Object.assign(n, i(a.key, r(a.key, t || {})));
166
+ continue;
167
+ }
168
+ a.type === "checkbox" ? n[a.key] = e === !0 : typeof e == "number" ? n[a.key] = String(e) : n[a.key] = typeof e == "string" ? e : "";
169
+ }
170
+ return n;
171
+ }
172
+ var L = "registered";
173
+ function R(e, t = Date.now()) {
174
+ let n = Date.parse(String(e?.createdAt ?? ""));
175
+ if (!Number.isFinite(n)) return !1;
176
+ let r = t - n;
177
+ return r < 36e5 && r > -36e5;
178
+ }
179
+ var z = (e, n) => e ? `Finish registering as ${t(e.role, n)}` : "Finish registration", B = (e) => `${String(e || "member").toLowerCase()}Registration.config.ts`, V = (e) => `${String(e || "member").toLowerCase()}RegistrationConfig`, H = (e, t) => e === "member" ? "anybody who registers as an ordinary member" : e === "internal" ? `somebody registering as one of ${t}` : `somebody registering as ${/^[aeiou]/i.test(t) ? "an" : "a"} ${t}`;
180
+ //#endregion
181
+ export { H as C, k as S, D as _, x as a, B as b, y as c, j as d, b as f, w as g, C as h, P as i, z as l, R as m, L as n, I as o, S as p, N as r, F as s, o as t, E as u, M as v, v as x, V as y };
@@ -0,0 +1 @@
1
+ const e=require(`./TimeZoneField-qs7NPR30.cjs`),t=require(`./verifiedAccount-DScyKk96.cjs`),n=require(`./address-Bsb8COq2.cjs`);var r=`member`,i=`finishedAt`,a=[`text`,`email`,`tel`,`number`,`date`,`textarea`,`select`,`checkbox`,`address`],o=new Set([`uid`,`id`,`email`,`displayName`,`avatar`,`photoURL`,`createdAt`,`lastLoginAt`,`role`,`inactive`,`removed`,`planUntil`,`planPass`,`requestedRole`,`requestedRoleAt`,i,`phoneClaim`]),s=e=>typeof e==`string`&&/^[a-zA-Z][a-zA-Z0-9_]{0,39}$/.test(e)&&!o.has(e),c=e=>a.includes(e);function l(e){if(!e||typeof e!=`object`)return null;let t=String(e.key??e.name??``).trim();if(!s(t))return null;let n=c(e.type)?e.type:`text`,r=String(e.label??``).trim()||t,i=Array.isArray(e.options)?e.options.map(e=>String(e??``).trim()).filter(Boolean):[],a=n===`select`&&i.length===0?`text`:n;return{key:t,label:r,type:a,required:e.required===!0,editable:e.editable!==!1,...a===`select`?{options:i}:{},...typeof e.placeholder==`string`&&e.placeholder.trim()?{placeholder:e.placeholder.trim()}:{}}}function u(e){let t=Array.isArray(e)?e:Array.isArray(e?.fields)?e.fields:[],n=[];for(let e of t){let t=l(e);t&&!n.some(e=>e.key===t.key)&&n.push(t)}return n}function d(){let e=(typeof window<`u`?window.__FBOS_REGISTRATION__:null)||{},t={};for(let n of Object.keys(e)){let r=u(e[n]);r.length&&(t[String(n).toLowerCase()]=r)}return t}var f=e=>e===`member`||e===`internal`||t.v(e);function p(e,t=d()){let n=String(e??``).trim().toLowerCase();return f(n)&&t[n]?.length?n:r}var m=(e,t,n=d())=>n[p(t?.perRole?e:`member`,n)]||[];function h(t,n){if(!n?.perRole)return r;let i=e.Pr(t)?.role,a=String(t?.role??``).trim().toLowerCase(),o=d();for(let e of[i,a])if(e&&f(e)&&o[e]?.length)return e;return r}var g=(e,t)=>m(h(e,t),t);function _(e,t){let n=e?.[t.key];return t.type===`checkbox`?n===!0:typeof n==`number`?Number.isFinite(n):typeof n==`string`?n.trim()!==``:!1}function v(e,t){let n=e?.[t.key];return t.type===`checkbox`?n===!0?`Yes`:`No`:typeof n==`number`?String(n):typeof n==`string`?n.trim():``}var y=(e,t)=>!t.editable&&_(e,t),b=(e,t)=>e.filter(e=>e.required&&!_(t,e));function x(e){if(!e||e.removed===!0)return[];let t=[];return String(e.displayName??``).trim()||t.push(`name`),String(e.email??``).trim()||t.push(`email`),t}var S=e=>typeof e?.finishedAt==`string`&&e.finishedAt.trim()!==``,C=(e=Date.now())=>({[i]:new Date(e).toISOString()});function w(e,t,n){if(!e||e.removed===!0)return!1;if(x(e).length>0)return!0;if(String(t??``).trim().toLowerCase()===`admin`)return!1;let r=g(e,n);return b(r,e).length>0?!0:r.length>0&&!S(e)}var T=`firebase-os:finish-not-now`;function E(e){if(e)try{sessionStorage.setItem(`${T}:${e}`,`1`)}catch{}}function D(e){if(!e)return!1;try{return sessionStorage.getItem(`${T}:${e}`)===`1`}catch{return!1}}var O=(e,t,n,r)=>w(e,t,n)?x(e).length>0?!0:!(n?.skippable&&D(r)):!1,k=(e,t,n,r)=>w(e,t,n)&&D(r)&&x(e).length===0;function A(e,t){let n=e.type===`checkbox`?t===!0:typeof t==`string`?t.trim()!==``:t!=null&&t!==``;return e.required&&!n?e.type===`checkbox`?`Please tick "${e.label}".`:`Please fill in ${e.label}.`:n?e.type===`email`&&!/^[^@\s]+@[^@\s.]+\.[^@\s]+$/.test(String(t).trim())?`${e.label} does not look like an email address.`:e.type===`number`&&!Number.isFinite(Number(String(t).trim()))?`${e.label} has to be a number.`:``:``}function j(e,t){let n={};for(let r of e){let e=A(r,t[r.key]);e&&(n[r.key]=e)}return n}function M(e,t,r=null){let i={};for(let a of e){if(y(r,a))continue;if(a.type===`address`){let e=n.r(a.key,n.u(n.i(a.key,t)));if(e[a.key]){Object.assign(i,e);continue}for(let[t,n]of Object.entries(e))t in(r||{})&&(i[t]=n);continue}let e=t[a.key];if(e===void 0)continue;if(a.type===`checkbox`){let t=e===!0;(t||a.key in(r||{}))&&(i[a.key]=t);continue}let o=typeof e==`string`?e.trim():String(e??``).trim();if(!o){a.key in(r||{})&&(i[a.key]=``);continue}if(a.type===`number`){let e=Number(o);i[a.key]=Number.isFinite(e)?e:o;continue}i[a.key]=o}return i}function N(e,t){let r={};for(let i of e){let e=t?.[i.key];if(i.type===`address`){Object.assign(r,n.r(i.key,n.i(i.key,t||{})));continue}i.type===`checkbox`?r[i.key]=e===!0:typeof e==`number`?r[i.key]=String(e):r[i.key]=typeof e==`string`?e:``}return r}var P=`registered`;function F(e,t=Date.now()){let n=Date.parse(String(e?.createdAt??``));if(!Number.isFinite(n))return!1;let r=t-n;return r<36e5&&r>-36e5}var I=(t,n)=>t?`Finish registering as ${e.Zr(t.role,n)}`:`Finish registration`,L=e=>`${String(e||`member`).toLowerCase()}Registration.config.ts`,R=e=>`${String(e||`member`).toLowerCase()}RegistrationConfig`,z=(e,t)=>e===`member`?`anybody who registers as an ordinary member`:e===`internal`?`somebody registering as one of ${t}`:`somebody registering as ${/^[aeiou]/i.test(t)?`an`:`a`} ${t}`;Object.defineProperty(exports,`C`,{enumerable:!0,get:function(){return z}}),Object.defineProperty(exports,`S`,{enumerable:!0,get:function(){return E}}),Object.defineProperty(exports,`_`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return v}}),Object.defineProperty(exports,`b`,{enumerable:!0,get:function(){return L}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`g`,{enumerable:!0,get:function(){return x}}),Object.defineProperty(exports,`h`,{enumerable:!0,get:function(){return b}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return j}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return I}}),Object.defineProperty(exports,`m`,{enumerable:!0,get:function(){return F}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return P}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return N}}),Object.defineProperty(exports,`p`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return M}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`v`,{enumerable:!0,get:function(){return k}}),Object.defineProperty(exports,`x`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`y`,{enumerable:!0,get:function(){return R}});
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CiTBaPhY.cjs`);const e=require(`./ContactPopup-DF8qQCoY.cjs`);exports.ContactPopup=e.t;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-CiTBaPhY.cjs`);const e=require(`./ContactPopup-lxmRMoIa.cjs`);exports.ContactPopup=e.t;
@@ -1,2 +1,2 @@
1
- import { t as e } from "./ContactPopup-9J_YeJrb.js";
1
+ import { t as e } from "./ContactPopup-BXnHrRwl.js";
2
2
  export { e as ContactPopup };