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 @@
1
+ const e=require(`./verifiedAccount-DScyKk96.cjs`);var t=[`chat`,`image`,`voice`,`video`],n=e=>t.includes(e),r=[{id:`gemini-flash-lite-latest`,label:`Gemini Flash Lite`,provider:`gemini`,tier:`Fast`,kind:`chat`},{id:`gpt-5.4-nano`,label:`GPT-5.4 Nano`,provider:`openai`,tier:`Fast`,kind:`chat`},{id:`gemini-flash-latest`,label:`Gemini Flash`,provider:`gemini`,tier:`Standard`,kind:`chat`},{id:`claude-haiku-4-5`,label:`Claude Haiku 4.5`,provider:`anthropic`,tier:`Standard`,kind:`chat`},{id:`gemini-pro-latest`,label:`Gemini Pro`,provider:`gemini`,tier:`Best`,kind:`chat`},{id:`claude-sonnet-5`,label:`Claude Sonnet 5`,provider:`anthropic`,tier:`Best`,kind:`chat`},{id:`claude-opus-5`,label:`Claude Opus 5`,provider:`anthropic`,tier:`Max`,kind:`chat`},{id:`gpt-5.5`,label:`GPT-5.5`,provider:`openai`,tier:`Max`,kind:`chat`},{id:`gemini-3.1-flash-lite-image`,label:`Gemini Image Lite`,provider:`gemini`,tier:`Fast`,kind:`image`},{id:`gemini-3.1-flash-image`,label:`Gemini Image`,provider:`gemini`,tier:`Standard`,kind:`image`},{id:`gpt-image-2.5-flare`,label:`GPT Image Flare`,provider:`openai`,tier:`Standard`,kind:`image`},{id:`gemini-3-pro-image`,label:`Gemini Image Pro`,provider:`gemini`,tier:`Best`,kind:`image`},{id:`gpt-image-2.5-sunburst`,label:`GPT Image Sunburst`,provider:`openai`,tier:`Best`,kind:`image`},{id:`gemini-3.1-flash-tts-preview`,label:`Gemini Voice`,provider:`gemini`,tier:`Standard`,kind:`voice`},{id:`gpt-4o-mini-tts`,label:`OpenAI Voice`,provider:`openai`,tier:`Standard`,kind:`voice`},{id:`veo-3.1-lite-generate-preview`,label:`Veo Lite`,provider:`gemini`,tier:`Standard`,kind:`video`},{id:`veo-3.1-generate-preview`,label:`Veo`,provider:`gemini`,tier:`Best`,kind:`video`}],i=[{id:`gemini`,name:`Google Gemini`,short:`Gemini`,secret:`GEMINI_KEY`,color:`#4285F4`,models:`Gemini Flash Lite, Flash & Pro`,keyStarts:`AIza`,console:{label:`Google AI Studio`,href:`https://aistudio.google.com/api-keys`},steps:[`Open Google AI Studio and sign in with your Google account.`,`Click Create API key, then pick or create a project.`,`Click Create key, then copy it (it starts with AIza…).`],note:`Google does not train on what your pages send as long as the key is on a paid tier — and a key made here is created as a pay-as-you-go key from the start, so it is never used for training.`},{id:`anthropic`,name:`Anthropic Claude`,short:`Claude`,secret:`CLAUDE_KEY`,color:`#D4A574`,models:`Claude Haiku, Sonnet & Opus`,keyStarts:`sk-ant-`,console:{label:`Claude Console`,href:`https://platform.claude.com/settings/workspaces/default/keys`},steps:[`Open the Claude Console and sign in or create an account.`,`Go to Settings → API keys, then click Create Key.`,`Name it, create it, and copy the key (sk-ant-…) — shown only once.`],note:`Add a little credit under Billing to start making requests.`},{id:`openai`,name:`OpenAI`,short:`ChatGPT`,secret:`OPENAI_KEY`,color:`#10A37F`,models:`GPT-5.5 & GPT-5.4 Nano`,keyStarts:`sk-`,console:{label:`OpenAI Platform`,href:`https://platform.openai.com/api-keys`},steps:[`Open the OpenAI Platform and sign in or create an account.`,`Go to API keys, then click Create new secret key.`,`Name it, create it, and copy the key now (sk-…) — it’s shown only once.`],note:`New accounts may need to add credits under Settings → Billing before the key works.`}],a=i.map(e=>e.id),o=e=>r.find(t=>t.id===e),s=e=>i.find(t=>t.id===e),c={gemini:`gemini-flash-latest`,anthropic:`claude-haiku-4-5`,openai:`gpt-5.4-nano`};function l(e){return c[a.find(t=>e.includes(t))||`gemini`]}function u(e,t){return t===`chat`?e.length?l(e):``:r.find(n=>n.kind===t&&e.includes(n.provider))?.id||``}function d(e,t){let n=o(e);return n&&t.includes(n.provider)?n:t.length&&o(l(t))||null}var f=e=>Array.isArray(e)?r.filter(t=>e.includes(t.id)).map(e=>e.id):[],p=t=>t===`user`||t===`internal`||t===`admin`||e.v(t);function m(e){let t={};if(!e||typeof e!=`object`)return t;for(let n of Object.keys(e).sort()){if(!p(n))continue;let r=f(e[n]);r.length&&(t[n]=r)}return t}function h(t,n,i,a=`chat`){let s=e=>{let t=new Set(e);return r.filter(e=>e.kind===a&&t.has(e.id)&&i.includes(e.provider))},c=m(t?.aiModels),l=f(t?.aiModelsAll),p=e.h(n),h=s([...(p?Object.keys(c):e.I(n)).flatMap(e=>c[e]||[]),...p?l:[]]);if(h.length)return h;let g=s(l);if(g.length)return g;if(a===`chat`){let e=d(t?.aiModel,i);return e?[e]:[]}let _=p?o(u(i,a)):void 0;return _?[_]:[]}var g=e=>!!String(e?.aiWhat??``).trim()||f(e?.aiModelsAll).length>0||Object.keys(m(e?.aiModels)).length>0,_=e=>Object.keys(m(e?.aiModels)).length>0;Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return l}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return g}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return i}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return r}});
@@ -1,43 +1,11 @@
1
- import { I as e, b as t, c as n, d as r, h as i, v as a } from "./verifiedAccount-C1iCxopN.js";
2
- //#region src/lib/tabAudience.ts
3
- var o = [
4
- "inbox",
5
- "users",
6
- "transactions"
7
- ], s = (e) => o.includes(e), c = {
8
- collection: "sys_configs",
9
- doc: "tab_access"
10
- }, l = (e) => ["admin", ...n(e).filter((e) => e !== "admin" && e !== "user")];
11
- function u(e, t) {
12
- return l(e && typeof e == "object" ? e[t] : void 0);
13
- }
14
- function d(e) {
15
- return !e || typeof e != "object" ? [] : o.filter((t) => n(e[t]).includes("user"));
16
- }
17
- var f = (e) => e.some((e) => e !== "admin");
18
- function p(e) {
19
- return l(e);
20
- }
21
- function m(e, n) {
22
- let i = t(e);
23
- if (i === "admin") return !0;
24
- if (i === "internal") return n.includes("internal");
25
- let a = r(e);
26
- return !!a && n.includes(a);
27
- }
28
- function h(e, t, n, r = Date.now()) {
29
- if (!e || e.inactive === !0) return !1;
30
- let i = Number(e.planUntil || 0);
31
- return m(i && r >= i ? "user" : e.role, u(t, n));
32
- }
33
- //#endregion
1
+ import { I as e, h as t, v as n } from "./verifiedAccount-DRbRFJ6H.js";
34
2
  //#region src/lib/aiModels.ts
35
- var g = [
3
+ var r = [
36
4
  "chat",
37
5
  "image",
38
6
  "voice",
39
7
  "video"
40
- ], _ = (e) => g.includes(e), v = [
8
+ ], i = (e) => r.includes(e), a = [
41
9
  {
42
10
  id: "gemini-flash-lite-latest",
43
11
  label: "Gemini Flash Lite",
@@ -157,7 +125,7 @@ var g = [
157
125
  tier: "Best",
158
126
  kind: "video"
159
127
  }
160
- ], y = [
128
+ ], o = [
161
129
  {
162
130
  id: "gemini",
163
131
  name: "Google Gemini",
@@ -215,47 +183,47 @@ var g = [
215
183
  ],
216
184
  note: "New accounts may need to add credits under Settings → Billing before the key works."
217
185
  }
218
- ], b = y.map((e) => e.id), x = (e) => v.find((t) => t.id === e), S = (e) => y.find((t) => t.id === e), C = {
186
+ ], s = o.map((e) => e.id), c = (e) => a.find((t) => t.id === e), l = (e) => o.find((t) => t.id === e), u = {
219
187
  gemini: "gemini-flash-latest",
220
188
  anthropic: "claude-haiku-4-5",
221
189
  openai: "gpt-5.4-nano"
222
190
  };
223
- function w(e) {
224
- return C[b.find((t) => e.includes(t)) || "gemini"];
191
+ function d(e) {
192
+ return u[s.find((t) => e.includes(t)) || "gemini"];
225
193
  }
226
- function T(e, t) {
227
- return t === "chat" ? e.length ? w(e) : "" : v.find((n) => n.kind === t && e.includes(n.provider))?.id || "";
194
+ function f(e, t) {
195
+ return t === "chat" ? e.length ? d(e) : "" : a.find((n) => n.kind === t && e.includes(n.provider))?.id || "";
228
196
  }
229
- function E(e, t) {
230
- let n = x(e);
231
- return n && t.includes(n.provider) ? n : t.length && x(w(t)) || null;
197
+ function p(e, t) {
198
+ let n = c(e);
199
+ return n && t.includes(n.provider) ? n : t.length && c(d(t)) || null;
232
200
  }
233
- var D = (e) => Array.isArray(e) ? v.filter((t) => e.includes(t.id)).map((e) => e.id) : [], O = (e) => e === "user" || e === "internal" || e === "admin" || a(e);
234
- function k(e) {
201
+ var m = (e) => Array.isArray(e) ? a.filter((t) => e.includes(t.id)).map((e) => e.id) : [], h = (e) => e === "user" || e === "internal" || e === "admin" || n(e);
202
+ function g(e) {
235
203
  let t = {};
236
204
  if (!e || typeof e != "object") return t;
237
205
  for (let n of Object.keys(e).sort()) {
238
- if (!O(n)) continue;
239
- let r = D(e[n]);
206
+ if (!h(n)) continue;
207
+ let r = m(e[n]);
240
208
  r.length && (t[n] = r);
241
209
  }
242
210
  return t;
243
211
  }
244
- function A(t, n, r, a = "chat") {
245
- let o = (e) => {
212
+ function _(n, r, i, o = "chat") {
213
+ let s = (e) => {
246
214
  let t = new Set(e);
247
- return v.filter((e) => e.kind === a && t.has(e.id) && r.includes(e.provider));
248
- }, s = k(t?.aiModels), c = D(t?.aiModelsAll), l = i(n), u = o([...(l ? Object.keys(s) : e(n)).flatMap((e) => s[e] || []), ...l ? c : []]);
249
- if (u.length) return u;
250
- let d = o(c);
251
- if (d.length) return d;
252
- if (a === "chat") {
253
- let e = E(t?.aiModel, r);
215
+ return a.filter((e) => e.kind === o && t.has(e.id) && i.includes(e.provider));
216
+ }, l = g(n?.aiModels), u = m(n?.aiModelsAll), d = t(r), h = s([...(d ? Object.keys(l) : e(r)).flatMap((e) => l[e] || []), ...d ? u : []]);
217
+ if (h.length) return h;
218
+ let _ = s(u);
219
+ if (_.length) return _;
220
+ if (o === "chat") {
221
+ let e = p(n?.aiModel, i);
254
222
  return e ? [e] : [];
255
223
  }
256
- let f = l ? x(T(r, a)) : void 0;
257
- return f ? [f] : [];
224
+ let v = d ? c(f(i, o)) : void 0;
225
+ return v ? [v] : [];
258
226
  }
259
- var j = (e) => !!String(e?.aiWhat ?? "").trim() || D(e?.aiModelsAll).length > 0 || Object.keys(k(e?.aiModels)).length > 0, M = (e) => Object.keys(k(e?.aiModels)).length > 0;
227
+ var v = (e) => !!String(e?.aiWhat ?? "").trim() || m(e?.aiModelsAll).length > 0 || Object.keys(g(e?.aiModels)).length > 0, y = (e) => Object.keys(g(e?.aiModels)).length > 0;
260
228
  //#endregion
261
- export { p as _, w as a, j as c, l as d, s as f, f as g, u as h, S as i, M as l, h as m, y as n, _ as o, m as p, b as r, A as s, v as t, c as u, d as v };
229
+ export { d as a, v as c, l as i, y as l, o as n, i as o, s as r, _ as s, a as t };
@@ -0,0 +1,228 @@
1
+ import { Ta as e, dr as t, ka as n } from "./TimeZoneField-DkI1Bkcz.js";
2
+ import { g as r } from "./verifiedAccount-DRbRFJ6H.js";
3
+ import { useEffect as i, useState as a } from "react";
4
+ import { collection as o, deleteDoc as s, doc as c, onSnapshot as l, setDoc as u } from "firebase/firestore";
5
+ //#region src/lib/publicCopy.ts
6
+ var d = /^(?:mem|admin|role_[a-z][a-z0-9]*)_(.+)$/, f = (e) => {
7
+ let t = d.exec(String(e ?? ""));
8
+ return t ? `pub_${t[1]}` : null;
9
+ }, p = [
10
+ "creatorName",
11
+ "creatorEmail",
12
+ "creatorAvatar",
13
+ "editedUid",
14
+ "editedName",
15
+ "editedAvatar",
16
+ "editedAt",
17
+ "createdBy",
18
+ "updatedBy",
19
+ "userId",
20
+ "userEmail",
21
+ "userName"
22
+ ], m = (e) => {
23
+ if (typeof e != "object" || !e) return JSON.stringify(e) ?? "undefined";
24
+ if (Array.isArray(e)) return `[${e.map(m).join(",")}]`;
25
+ let t = e;
26
+ return typeof t.toMillis == "function" ? `time:${t.seconds}.${t.nanoseconds}` : typeof t.path == "string" && t.firestore ? `ref:${t.path}` : `{${Object.keys(t).sort().map((e) => `${JSON.stringify(e)}:${m(t[e])}`).join(",")}}`;
27
+ }, h = (e, t) => {
28
+ let n = {};
29
+ for (let r of Object.keys(e)) t.includes(r) || (n[r] = e[r]);
30
+ return n;
31
+ }, g = (e) => {
32
+ if (e.metadata?.fromCache || e.metadata?.hasPendingWrites) return null;
33
+ let t = /* @__PURE__ */ new Map();
34
+ for (let n of e.docs) t.set(n.id, n.data());
35
+ return t;
36
+ }, _ = 20, v = 2e4;
37
+ async function y(e, t, r, i, a = /* @__PURE__ */ new Map()) {
38
+ let o = [...p, ...i], l = [];
39
+ for (let [i, s] of t) {
40
+ let t = h(s, o), d = m(t), f = r.get(i);
41
+ f && m(f) === d || f && a.get(i) === d || l.push(async () => {
42
+ await u(c(n, e, i), t), a.set(i, d);
43
+ });
44
+ }
45
+ for (let i of r.keys()) t.has(i) || l.push(async () => {
46
+ await s(c(n, e, i)), a.delete(i);
47
+ });
48
+ for (let e = 0; e < l.length; e += _) await Promise.all(l.slice(e, e + _).map((e) => e()));
49
+ return l.length;
50
+ }
51
+ var b = /* @__PURE__ */ new Map();
52
+ function x(e, t) {
53
+ let n = b.get(e);
54
+ n ? (n.pages += 1, n.leaveOut = t) : b.set(e, {
55
+ leaveOut: t,
56
+ pages: 1
57
+ });
58
+ let r = !1;
59
+ return () => {
60
+ if (r) return;
61
+ r = !0;
62
+ let t = b.get(e);
63
+ t && (--t.pages, t.pages <= 0 && b.delete(e));
64
+ };
65
+ }
66
+ var S = (e) => b.get(e)?.leaveOut ?? null, C = (e, t) => h(e, [
67
+ "id",
68
+ ...p,
69
+ ...t
70
+ ]);
71
+ async function w(e, t, r) {
72
+ let i = f(e), a = S(e);
73
+ if (!(!i || !a || !t)) try {
74
+ await u(c(n, i, t), C(r, a));
75
+ } catch (n) {
76
+ console.warn(`The public copy of ${e} could not be updated for ${t}. It will catch up the next time the page is open.`, n);
77
+ }
78
+ }
79
+ async function T(e, t) {
80
+ let r = f(e);
81
+ if (!(!r || S(e) === null || !t)) try {
82
+ await s(c(n, r, t));
83
+ } catch (n) {
84
+ console.warn(`The public copy of ${e} could not drop ${t}. It will catch up the next time the page is open.`, n);
85
+ }
86
+ }
87
+ function E(r, s = {}) {
88
+ let { user: c } = t(), u = c?.uid || "", d = f(r), p = (s.leaveOut || []).join("\n"), [m, h] = a({
89
+ ready: !1,
90
+ error: null
91
+ });
92
+ return i(() => {
93
+ if (!d) {
94
+ console.error(`usePublicCopy('${r}'): only a mem_, admin_ or role_<id>_ collection takes a public copy. user_ and case_ records belong to one person and are never copied into pub_ (contract rule 11).`);
95
+ return;
96
+ }
97
+ if (!u) return;
98
+ h({
99
+ ready: !1,
100
+ error: null
101
+ });
102
+ let t = x(r, p ? p.split("\n") : []), i = null, a = null, s = /* @__PURE__ */ new Map(), c = !1, f = !1, m = !1, _ = !1, b = !1, S = !0, C = !0, w, T = (e) => {
103
+ !m && !_ && h(e);
104
+ }, E = () => {
105
+ _ && b && !c && !f && !S && !C && A();
106
+ }, D = async () => {
107
+ if (!(m || !i || !a)) {
108
+ if (c) {
109
+ f = !0;
110
+ return;
111
+ }
112
+ c = !0;
113
+ try {
114
+ await y(d, i, a, p ? p.split("\n") : [], s), T({
115
+ ready: !0,
116
+ error: null
117
+ });
118
+ } catch (t) {
119
+ T({
120
+ ready: !1,
121
+ error: e(t, "The public copy could not be updated.")
122
+ }), A();
123
+ return;
124
+ } finally {
125
+ c = !1;
126
+ }
127
+ if (f) {
128
+ f = !1, D();
129
+ return;
130
+ }
131
+ b = !0, E();
132
+ }
133
+ }, O = (t) => {
134
+ T({
135
+ ready: !1,
136
+ error: e(t, "The public copy could not be updated.")
137
+ });
138
+ }, k = [l(o(n, r), { includeMetadataChanges: !0 }, (e) => {
139
+ let t = g(e);
140
+ S = !t, t && (i = t, D());
141
+ }, O), l(o(n, d), { includeMetadataChanges: !0 }, (e) => {
142
+ let t = g(e);
143
+ C = !t, t && (a = t, D());
144
+ }, O)];
145
+ function A() {
146
+ m || (m = !0, w && clearTimeout(w), k.forEach((e) => e()));
147
+ }
148
+ return () => {
149
+ t(), _ = !0, E(), m || (w = setTimeout(A, v));
150
+ };
151
+ }, [
152
+ r,
153
+ d,
154
+ u,
155
+ p
156
+ ]), m;
157
+ }
158
+ //#endregion
159
+ //#region src/lib/recordsCache.ts
160
+ var D = "fbos_records_", O = (e, t) => `${D}${t || "guest"}_${e}`;
161
+ function k(e, t) {
162
+ try {
163
+ let n = localStorage.getItem(O(e, t));
164
+ return n ? JSON.parse(n) : null;
165
+ } catch {
166
+ return null;
167
+ }
168
+ }
169
+ function A(e, t, n) {
170
+ try {
171
+ localStorage.setItem(O(e, t), JSON.stringify(n));
172
+ } catch {}
173
+ }
174
+ function j(e) {
175
+ try {
176
+ let t = `_${e}`, n = [];
177
+ for (let e = 0; e < localStorage.length; e++) {
178
+ let r = localStorage.key(e) || "";
179
+ r.startsWith(D) && r.endsWith(t) && n.push(r);
180
+ }
181
+ n.forEach((e) => localStorage.removeItem(e));
182
+ } catch {}
183
+ }
184
+ //#endregion
185
+ //#region src/lib/arrivalRoads.ts
186
+ var M = "arrivals", N = (e) => typeof e == "string" ? e.trim() : "";
187
+ function P(e) {
188
+ let t = [];
189
+ for (let n of Array.isArray(e?.roads) ? e.roads : []) {
190
+ let e = N(n?.collection), i = N(n?.formId);
191
+ !r(e) || !i || t.some((t) => t.collection === e && t.formId === i) || t.push({
192
+ collection: e,
193
+ formId: i,
194
+ paid: n?.paid !== !1,
195
+ roles: (Array.isArray(n?.roles) ? n.roles : []).map(N).filter(Boolean),
196
+ page: {
197
+ path: N(n?.page?.path),
198
+ title: N(n?.page?.title)
199
+ },
200
+ from: {
201
+ path: N(n?.from?.path),
202
+ title: N(n?.from?.title)
203
+ }
204
+ });
205
+ }
206
+ return t;
207
+ }
208
+ var F = (e, t) => {
209
+ let n = (e) => JSON.stringify([...e].sort((e, t) => `${e.collection}|${e.formId}`.localeCompare(`${t.collection}|${t.formId}`)).map((e) => [
210
+ e.collection,
211
+ e.formId,
212
+ e.paid,
213
+ [...e.roles].sort(),
214
+ e.page.path,
215
+ e.page.title,
216
+ e.from.path,
217
+ e.from.title
218
+ ]));
219
+ return n(e) === n(t);
220
+ }, I = [];
221
+ function L() {
222
+ let { user: e, isAdmin: r, roleConfirmed: o } = t(), [s, u] = a([]), d = !!e?.uid && r && o;
223
+ return i(() => {
224
+ if (d) return l(c(n, "sys_configs", M), (e) => u(P(e.exists() ? e.data() : null)), () => u([]));
225
+ }, [d]), d ? s : I;
226
+ }
227
+ //#endregion
228
+ export { j as a, S as c, f as d, E as f, L as i, w as l, P as n, k as o, F as r, A as s, M as t, T as u };
@@ -0,0 +1,4 @@
1
+ require(`./chunk-CiTBaPhY.cjs`);const e=require(`./TimeZoneField-qs7NPR30.cjs`),t=require(`./verifiedAccount-DScyKk96.cjs`);let n=require(`react`),r=require(`firebase/firestore`);var i=/^(?:mem|admin|role_[a-z][a-z0-9]*)_(.+)$/,a=e=>{let t=i.exec(String(e??``));return t?`pub_${t[1]}`:null},o=[`creatorName`,`creatorEmail`,`creatorAvatar`,`editedUid`,`editedName`,`editedAvatar`,`editedAt`,`createdBy`,`updatedBy`,`userId`,`userEmail`,`userName`],s=e=>{if(typeof e!=`object`||!e)return JSON.stringify(e)??`undefined`;if(Array.isArray(e))return`[${e.map(s).join(`,`)}]`;let t=e;return typeof t.toMillis==`function`?`time:${t.seconds}.${t.nanoseconds}`:typeof t.path==`string`&&t.firestore?`ref:${t.path}`:`{${Object.keys(t).sort().map(e=>`${JSON.stringify(e)}:${s(t[e])}`).join(`,`)}}`},c=(e,t)=>{let n={};for(let r of Object.keys(e))t.includes(r)||(n[r]=e[r]);return n},l=e=>{if(e.metadata?.fromCache||e.metadata?.hasPendingWrites)return null;let t=new Map;for(let n of e.docs)t.set(n.id,n.data());return t},u=20,d=2e4;async function f(t,n,i,a,l=new Map){let d=[...o,...a],f=[];for(let[a,o]of n){let n=c(o,d),u=s(n),p=i.get(a);p&&s(p)===u||p&&l.get(a)===u||f.push(async()=>{await(0,r.setDoc)((0,r.doc)(e.ka,t,a),n),l.set(a,u)})}for(let a of i.keys())n.has(a)||f.push(async()=>{await(0,r.deleteDoc)((0,r.doc)(e.ka,t,a)),l.delete(a)});for(let e=0;e<f.length;e+=u)await Promise.all(f.slice(e,e+u).map(e=>e()));return f.length}var p=new Map;function m(e,t){let n=p.get(e);n?(n.pages+=1,n.leaveOut=t):p.set(e,{leaveOut:t,pages:1});let r=!1;return()=>{if(r)return;r=!0;let t=p.get(e);t&&(--t.pages,t.pages<=0&&p.delete(e))}}var h=e=>p.get(e)?.leaveOut??null,g=(e,t)=>c(e,[`id`,...o,...t]);async function _(t,n,i){let o=a(t),s=h(t);if(!(!o||!s||!n))try{await(0,r.setDoc)((0,r.doc)(e.ka,o,n),g(i,s))}catch(e){console.warn(`The public copy of ${t} could not be updated for ${n}. It will catch up the next time the page is open.`,e)}}async function v(t,n){let i=a(t);if(!(!i||h(t)===null||!n))try{await(0,r.deleteDoc)((0,r.doc)(e.ka,i,n))}catch(e){console.warn(`The public copy of ${t} could not drop ${n}. It will catch up the next time the page is open.`,e)}}function y(t,i={}){let{user:o}=e.dr(),s=o?.uid||``,c=a(t),u=(i.leaveOut||[]).join(`
2
+ `),[p,h]=(0,n.useState)({ready:!1,error:null});return(0,n.useEffect)(()=>{if(!c){console.error(`usePublicCopy('${t}'): only a mem_, admin_ or role_<id>_ collection takes a public copy. user_ and case_ records belong to one person and are never copied into pub_ (contract rule 11).`);return}if(!s)return;h({ready:!1,error:null});let n=m(t,u?u.split(`
3
+ `):[]),i=null,a=null,o=new Map,p=!1,g=!1,_=!1,v=!1,y=!1,b=!0,x=!0,S,C=e=>{!_&&!v&&h(e)},w=()=>{v&&y&&!p&&!g&&!b&&!x&&O()},T=async()=>{if(!(_||!i||!a)){if(p){g=!0;return}p=!0;try{await f(c,i,a,u?u.split(`
4
+ `):[],o),C({ready:!0,error:null})}catch(t){C({ready:!1,error:e.Ta(t,`The public copy could not be updated.`)}),O();return}finally{p=!1}if(g){g=!1,T();return}y=!0,w()}},E=t=>{C({ready:!1,error:e.Ta(t,`The public copy could not be updated.`)})},D=[(0,r.onSnapshot)((0,r.collection)(e.ka,t),{includeMetadataChanges:!0},e=>{let t=l(e);b=!t,t&&(i=t,T())},E),(0,r.onSnapshot)((0,r.collection)(e.ka,c),{includeMetadataChanges:!0},e=>{let t=l(e);x=!t,t&&(a=t,T())},E)];function O(){_||(_=!0,S&&clearTimeout(S),D.forEach(e=>e()))}return()=>{n(),v=!0,w(),_||(S=setTimeout(O,d))}},[t,c,s,u]),p}var b=`fbos_records_`,x=(e,t)=>`${b}${t||`guest`}_${e}`;function S(e,t){try{let n=localStorage.getItem(x(e,t));return n?JSON.parse(n):null}catch{return null}}function C(e,t,n){try{localStorage.setItem(x(e,t),JSON.stringify(n))}catch{}}function w(e){try{let t=`_${e}`,n=[];for(let e=0;e<localStorage.length;e++){let r=localStorage.key(e)||``;r.startsWith(b)&&r.endsWith(t)&&n.push(r)}n.forEach(e=>localStorage.removeItem(e))}catch{}}var T=`arrivals`,E=e=>typeof e==`string`?e.trim():``;function D(e){let n=[];for(let r of Array.isArray(e?.roads)?e.roads:[]){let e=E(r?.collection),i=E(r?.formId);!t.g(e)||!i||n.some(t=>t.collection===e&&t.formId===i)||n.push({collection:e,formId:i,paid:r?.paid!==!1,roles:(Array.isArray(r?.roles)?r.roles:[]).map(E).filter(Boolean),page:{path:E(r?.page?.path),title:E(r?.page?.title)},from:{path:E(r?.from?.path),title:E(r?.from?.title)}})}return n}var O=(e,t)=>{let n=e=>JSON.stringify([...e].sort((e,t)=>`${e.collection}|${e.formId}`.localeCompare(`${t.collection}|${t.formId}`)).map(e=>[e.collection,e.formId,e.paid,[...e.roles].sort(),e.page.path,e.page.title,e.from.path,e.from.title]));return n(e)===n(t)},k=[];function A(){let{user:t,isAdmin:i,roleConfirmed:a}=e.dr(),[o,s]=(0,n.useState)([]),c=!!t?.uid&&i&&a;return(0,n.useEffect)(()=>{if(c)return(0,r.onSnapshot)((0,r.doc)(e.ka,`sys_configs`,T),e=>s(D(e.exists()?e.data():null)),()=>s([]))},[c]),c?o:k}Object.defineProperty(exports,`a`,{enumerable:!0,get:function(){return w}}),Object.defineProperty(exports,`c`,{enumerable:!0,get:function(){return h}}),Object.defineProperty(exports,`d`,{enumerable:!0,get:function(){return a}}),Object.defineProperty(exports,`f`,{enumerable:!0,get:function(){return y}}),Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return A}}),Object.defineProperty(exports,`l`,{enumerable:!0,get:function(){return _}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return D}}),Object.defineProperty(exports,`o`,{enumerable:!0,get:function(){return S}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return O}}),Object.defineProperty(exports,`s`,{enumerable:!0,get:function(){return C}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return T}}),Object.defineProperty(exports,`u`,{enumerable:!0,get:function(){return v}});