@chaibuilder/pages 0.13.4 → 0.14.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.
Files changed (76) hide show
  1. package/dist/{2AITGKQY-DpAgk_u8.cjs → 2AITGKQY-BLi5HVHf.cjs} +1 -1
  2. package/dist/{2AITGKQY-Dx_Cte-P.js → 2AITGKQY-iyhQ7kgG.js} +5 -5
  3. package/dist/{NCMVHL6D-B6lv7Umq.cjs → NCMVHL6D-CKYg8-AM.cjs} +1 -1
  4. package/dist/{NCMVHL6D-CT2qHOTS.js → NCMVHL6D-PLvSyK5P.js} +2 -2
  5. package/dist/{ZDWCUMSJ-C1vrgsti.cjs → ZDWCUMSJ-BJZ_Yi-4.cjs} +1 -1
  6. package/dist/{ZDWCUMSJ-W9xywtZH.js → ZDWCUMSJ-CuLkdxY-.js} +1 -1
  7. package/dist/add-new-language-page--ah9yzN3.cjs +1 -0
  8. package/dist/add-new-language-page-WM_Ve2vH.js +390 -0
  9. package/dist/add-new-page-Bs_NXM9x.js +30 -0
  10. package/dist/add-new-page-CnUo6xzd.cjs +1 -0
  11. package/dist/confetti.module-BuUnQuWk.cjs +2 -0
  12. package/dist/confetti.module-DCmCkDyV.js +409 -0
  13. package/dist/delete-page-Cf88UkqJ.cjs +1 -0
  14. package/dist/delete-page-D8xhYESu.js +38 -0
  15. package/dist/digital-asset-manager-BAFTqxsM.js +976 -0
  16. package/dist/digital-asset-manager-D_lcprwY.cjs +1 -0
  17. package/dist/duplicate-page-BX1gOez-.cjs +1 -0
  18. package/dist/duplicate-page-CqXTGmWt.js +120 -0
  19. package/dist/dynamic-page-selector-0TiUnfUg.js +86 -0
  20. package/dist/dynamic-page-selector-9JIQrcq5.cjs +1 -0
  21. package/dist/get-seo-defaults-9zHebckY.js +65 -0
  22. package/dist/get-seo-defaults-Cw7vFt-B.cjs +1 -0
  23. package/dist/image-compression-DZ9WMmyn.cjs +1 -0
  24. package/dist/image-compression-DsZ1oqpb.js +37 -0
  25. package/dist/index-D7kegQ3M.js +5153 -0
  26. package/dist/index-LU0FTfeN.cjs +5 -0
  27. package/dist/index.cjs +1 -1
  28. package/dist/index.d.ts +4 -22
  29. package/dist/index.js +20 -21
  30. package/dist/json-diff-viewer-Be-PVOZN.cjs +8 -0
  31. package/dist/json-diff-viewer-C2GK_BDh.js +258 -0
  32. package/dist/lang-panel-CPFS1ssC.js +218 -0
  33. package/dist/lang-panel-CePltxo2.cjs +1 -0
  34. package/dist/mark-as-template-DeB23sWR.cjs +1 -0
  35. package/dist/mark-as-template-jdwcgRIB.js +146 -0
  36. package/dist/nested-path-selector-content-D_iF9Sm3.cjs +1 -0
  37. package/dist/nested-path-selector-content-DvIL_EoN.js +87 -0
  38. package/dist/no-language-page-content-DUM4KxWu.js +35 -0
  39. package/dist/no-language-page-content-Dsm2H3pc.cjs +1 -0
  40. package/dist/page-creator-BjuYmKfc.js +796 -0
  41. package/dist/page-creator-DG0LwvL1.cjs +1 -0
  42. package/dist/page-lock-request-B9WPmFcd.cjs +1 -0
  43. package/dist/page-lock-request-BceB1S-X.js +64 -0
  44. package/dist/page-locked-by-dialog-2MULM3jh.cjs +1 -0
  45. package/dist/page-locked-by-dialog-BEWfFLSc.js +63 -0
  46. package/dist/page-manager-new-BONZN4c5.cjs +1 -0
  47. package/dist/page-manager-new-DV6A9WFv.js +354 -0
  48. package/dist/page-manager-search-and-filter-3h4URMP_.cjs +1 -0
  49. package/dist/page-manager-search-and-filter-DIiowi9F.js +197 -0
  50. package/dist/page-revisions-content-BIxeZeND.js +446 -0
  51. package/dist/page-revisions-content-CQbt25XX.cjs +1 -0
  52. package/dist/publish-pages-content-CdKHrfys.js +178 -0
  53. package/dist/publish-pages-content-im9dPOBM.cjs +1 -0
  54. package/dist/save-to-lib-DGII9CEP.js +476 -0
  55. package/dist/save-to-lib-DOh-850u.cjs +1 -0
  56. package/dist/seo-panel-2VdpoGSg.cjs +1 -0
  57. package/dist/seo-panel-Bxo4f-a_.js +667 -0
  58. package/dist/shared-json-ld-C1OewNgp.cjs +1 -0
  59. package/dist/shared-json-ld-gbnBFljN.js +337 -0
  60. package/dist/slug-input-BmcGmc_i.js +87 -0
  61. package/dist/slug-input-CfuQV97Z.cjs +1 -0
  62. package/dist/theme-panel-footer-D3SwHqGR.js +25 -0
  63. package/dist/theme-panel-footer-FrY4U8zn.cjs +1 -0
  64. package/dist/translation-warning-modal-DalBhNQy.js +26 -0
  65. package/dist/translation-warning-modal-Kctu12rQ.cjs +1 -0
  66. package/dist/unmark-as-template-CihtTMOb.cjs +1 -0
  67. package/dist/unmark-as-template-UwmCCn0u.js +38 -0
  68. package/dist/unpublish-page-CNwIU6AS.js +26 -0
  69. package/dist/unpublish-page-DzLtZcNw.cjs +1 -0
  70. package/dist/use-page-expand-manager-B7JtHdg5.cjs +1 -0
  71. package/dist/use-page-expand-manager-BCFQnVkT.js +85 -0
  72. package/package.json +1 -1
  73. package/dist/index-C4j31Yhz.js +0 -11471
  74. package/dist/index-DnjETHks.cjs +0 -6
  75. package/dist/page-revisions-content-Gx-Qf_91.cjs +0 -8
  76. package/dist/page-revisions-content-_-Nd4U11.js +0 -712
@@ -1,7 +1,7 @@
1
1
  var xs = Object.defineProperty;
2
2
  var ws = (e, t, n) => t in e ? xs(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var _e = (e, t, n) => ws(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { s as Vn, m as jn, b as K, d as sr, e as H, a as y, f as W, h as oe, S as R, c as O, i as $e, u as Ce, j as G, k as A, l as He, o as ft, n as ve, P as Ro, p as V, D as $s, t as P, q as wt, r as un, v as k, w as T, x as Cs, y as Kt, z as Ss, A as ks, B as Cn, F as Es, C as Ds, E as Ms, G as Nt, H as As, I as Ts, J as Fs, K as ar, L as Hr, M as qs, N as _t, $ as Ko, O as Ur, Q as Is, R as Os, T as Kn, U as Ls, V as Ps, W as _s } from "./index-C4j31Yhz.js";
4
+ import { v as Vn, w as jn, x as K, y as sr, z as H, s as y, D as W, E as oe, S as R, r as O, F as $e, G as Ce, H as G, I as A, J as He, K as ft, M as ve, P as Ro, N as V, O as $s, Q as P, R as wt, T as un, U as k, V as T, W as Cs, X as Kt, Y as Ss, Z as ks, _ as Cn, $ as Es, a0 as Ds, a1 as Ms, a2 as Nt, a3 as As, a4 as Ts, a5 as Fs, a6 as ar, a7 as Hr, a8 as qs, a9 as _t, aa as Ko, ab as Ur, ac as Is, ad as Os, ae as Kn, af as Ls, ag as Ps, ah as _s } from "./index-D7kegQ3M.js";
5
5
  var zs = (e) => e != null, Rs = (e) => e.filter(zs);
6
6
  function Ks(e) {
7
7
  return (...t) => {
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),M=require("./slug-input-CfuQV97Z.cjs"),t=require("./index-LU0FTfeN.cjs"),H=require("@chaibuilder/sdk"),E=require("@chaibuilder/sdk/ui"),W=require("lodash-es"),us=require("lucide-react"),T=require("react"),J=({edit:a,lang:h,languages:i,name:u,setLang:o,setName:r,primaryPageObject:l})=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(E.Label,{htmlFor:"lang",children:t.CONTENT.LANGUAGE}),e.jsxs("select",{value:a?"":h,disabled:a||!i.length,onChange:s=>{const c=s.target.value;o(c),!a&&(W.startsWith(u,l==null?void 0:l.name)||u.length===0)&&r(`${l==null?void 0:l.name} - ${t.LANGUAGES[c]}`)},className:"col-span-3 flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",children:[e.jsx("option",{value:"",disabled:!0,children:a?t.LANGUAGES[h]||h:i.length?t.CONTENT.CHOOSE_LANGUAGE:t.CONTENT.ALL_AVAILABLE_LANGUAGE_PAGE}),i.map(s=>e.jsx("option",{value:s,children:t.LANGUAGES[s]||s},s))]})]}),K=({lang:a,name:h,setName:i,parentHasSelectedLanguagePage:u})=>e.jsxs("div",{className:"space-y-1",children:[e.jsx(E.Label,{htmlFor:"name",children:t.CONTENT.PAGE_NAME}),e.jsx(E.Input,{id:"name",value:a?h:"",onChange:o=>i(o.target.value),required:!0,placeholder:a?t.CONTENT.ENTER_PAGE_NAME:t.CONTENT.CHOOSE_LANGUAGE_TO_ADD_SLUG,disabled:!u||!a})]}),ds=({dynamic:a,isNonSlugPageType:h,isRootPage:i,lang:u,useLanguagePrefix:o,setUseLanguagePrefix:r,isHomePage:l,parentSlug:s,parentHasSelectedLanguagePage:c,slug:N,setSlug:d,setIsSlugValid:A,getSlug:x})=>h?null:e.jsxs("div",{className:"space-y-1",children:[i&&u&&e.jsxs("div",{className:"flex items-center space-x-2 pb-1",children:[e.jsx("input",{type:"checkbox",id:"useLanguagePrefix",checked:o,onChange:S=>r(S.target.checked),className:"rounded border-gray-300"}),e.jsxs(E.Label,{htmlFor:"useLanguagePrefix",className:"text-sm font-normal leading-tight",children:["Add language code (",e.jsxs("span",{className:"font-mono text-gray-900",children:["/",u]}),") as slug prefix"]})]}),e.jsx(E.Label,{htmlFor:"slug",children:t.CONTENT.SLUG}),a?e.jsx(E.Alert,{variant:"default",className:"p-2 text-xs font-medium italic text-muted-foreground",children:"This page will use dynamic slug as defined in primary page"}):e.jsx(M.SlugInput,{disabled:!u||!c,value:N,onChange:d,placeholder:u?l&&o?"Leave empty for home page":t.CONTENT.ENTER_PAGE_SLUG:t.CONTENT.CHOOSE_LANGUAGE_TO_ADD_SLUG,parentSlug:s,onValidationChange:A,fullSlug:x()})]}),Q=({parentHasSelectedLanguagePage:a,name:h,lang:i,slug:u,edit:o,id:r,primaryPageObject:l,pages:s,isNonSlugPageType:c,isHomePage:N,useLanguagePrefix:d,isSlugValid:A,isPending:x})=>{const S=x||!h||!i||s.some(f=>(o?f.id!==r:!0)&&f.parent===(l==null?void 0:l.id)&&f.lang===i)||!c&&!(N&&d)&&(!A||!u);return e.jsx(E.DialogFooter,{children:a?e.jsxs(e.Fragment,{children:[e.jsx(E.Button,{type:"submit",disabled:S&&!l.dynamic,children:x?e.jsxs("span",{className:"flex items-center gap-2",children:[e.jsx("span",{className:"loader mr-2"}),o?t.CONTENT.UPDATING:t.CONTENT.ADDING]}):o?t.CONTENT.UPDATE:t.CONTENT.ADD_NEW_LANGUAGE}),s.some(f=>(o?f.id!==r:!0)&&f.parent===(l==null?void 0:l.id)&&f.lang===i)&&e.jsx("p",{className:"mt-2 text-xs text-red-500",children:"A page for this language already exists."})]}):i&&e.jsx(E.Alert,{variant:"destructive",children:e.jsxs("p",{className:"mx-auto w-5/6 text-center",children:["You need to create the ",e.jsx("span",{className:"font-medium",children:t.LANGUAGES[i]})," page in the parent to add here."]})})})},cs=({onSubmit:a,edit:h,lang:i,languages:u,name:o,setLang:r,setName:l,primaryPageObject:s,parentHasSelectedLanguagePage:c,id:N,pages:d,isNonSlugPageType:A,isHomePage:x,useLanguagePrefix:S,slug:f,isSlugValid:U,isPending:G})=>e.jsxs("form",{onSubmit:a,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(J,{edit:h,lang:i,languages:u,name:o,setLang:r,setName:l,primaryPageObject:s}),e.jsx(K,{lang:i,name:o,setName:l,parentHasSelectedLanguagePage:c})]}),e.jsx(Q,{parentHasSelectedLanguagePage:c,name:o,lang:i,slug:f,edit:h,id:N,primaryPageObject:s,pages:d,isNonSlugPageType:A,isHomePage:x,useLanguagePrefix:S,isSlugValid:U,isPending:G})]}),as=({loading:a,onSubmit:h,edit:i,lang:u,languages:o,name:r,setLang:l,setName:s,primaryPageObject:c,parentHasSelectedLanguagePage:N,isNonSlugPageType:d,isRootPage:A,useLanguagePrefix:x,setUseLanguagePrefix:S,isHomePage:f,parentSlug:U,slug:G,setSlug:_,isSlugValid:D,setIsSlugValid:$,getSlug:I,isPending:F,id:w,pages:v})=>a?e.jsx("div",{className:"flex h-80 items-center justify-center",children:e.jsx(us.Loader,{className:"animate-spin"})}):d?e.jsx(cs,{onSubmit:h,edit:i,lang:u,languages:o,name:r,setLang:l,setName:s,primaryPageObject:c,parentHasSelectedLanguagePage:N,id:w,pages:v,isNonSlugPageType:d,isHomePage:f,useLanguagePrefix:x,slug:G,isSlugValid:D,isPending:F}):e.jsxs("form",{onSubmit:h,children:[e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsx(J,{edit:i,lang:u,languages:o,name:r,setLang:l,setName:s,primaryPageObject:c}),e.jsx(K,{lang:u,name:r,setName:s,parentHasSelectedLanguagePage:N}),e.jsx(ds,{dynamic:c==null?void 0:c.dynamic,isNonSlugPageType:d,isRootPage:A,lang:u,useLanguagePrefix:x,setUseLanguagePrefix:S,isHomePage:f,parentSlug:U,parentHasSelectedLanguagePage:N,slug:G,setSlug:_,isSlugValid:D,setIsSlugValid:$,getSlug:I})]}),e.jsx(Q,{parentHasSelectedLanguagePage:N,name:r,lang:u,slug:G,edit:i,id:w,primaryPageObject:c,pages:v,isNonSlugPageType:d,isHomePage:f,useLanguagePrefix:x,isSlugValid:D,isPending:F})]}),rs=({id:a,isOpen:h,onClose:i,primaryPage:u,edit:o=!1,preselectedLang:r})=>{const{data:l=[]}=t.useWebsitePages(),s=T.useMemo(()=>l.find(n=>n.id===u),[l,u]),[c,N]=T.useState(""),[d,A]=T.useState(""),[x,S]=T.useState(""),[f,U]=T.useState(!0),[G,_]=T.useState(!0),{mutate:D,isPending:$}=t.useCreatePage(),{mutate:I,isPending:F}=t.useUpdatePage(),w=$||F,{data:v,isFetching:X}=t.useWebsiteSetting(),B=t.useFallbackLang(),{data:m,isFetching:Z}=t.useLanguagePages(u),{data:L=[],isFetching:b}=t.useLanguagePages(s==null?void 0:s.parent),{data:V=[],isFetching:y}=t.usePageTypes(),{setSelectedLang:O}=H.useLanguages(),[,P]=t.useSearchParams(),[,ss]=H.useSidebarActivePanel(),es=X||Z||b||y,C=T.useMemo(()=>W.filter(v==null?void 0:v.languages,n=>!W.find(m,{lang:n})),[v,m]),q=T.useMemo(()=>V.find(n=>n.key===(s==null?void 0:s.pageType)),[V,s==null?void 0:s.pageType]),Y=!(q!=null&&q.hasSlug),k=(s==null?void 0:s.slug)==="/";T.useEffect(()=>{if(!o&&s&&r&&(A(r),N(`${s.name} - ${t.LANGUAGES[r]}`)),!o||!s)return;const n=m==null?void 0:m.find(is=>is.id===a);if(!n)return;N(n.name),A(n.lang);const g=n.slug||"",{initSlug:R,prefix:ls}=M.parseSlugForEdit(g,s);S(R),_(ls)},[o,a,m,s,r]),T.useEffect(()=>{if(r)A(r);else if((C==null?void 0:C.length)===1&&!o){const n=C[0];if(!n||!t.LANGUAGES[n])return;A(n),(!c||c===(s==null?void 0:s.name))&&N(`${s==null?void 0:s.name} - ${t.LANGUAGES[n]}`)}},[r,C,o,c,s]);const{parentSlug:j,isRootPage:p}=T.useMemo(()=>{if(k||!d)return{parentSlug:void 0,isRootPage:!(s!=null&&s.parent)};if(!(s!=null&&s.parent))return{parentSlug:G?`/${d}`:void 0,isRootPage:!0};const n=L==null?void 0:L.find(g=>g.lang===d);return{parentSlug:n==null?void 0:n.slug,isRootPage:!1}},[s==null?void 0:s.parent,L,G,d,k]),ns=T.useMemo(()=>p?!0:!!(L!=null&&L.some(n=>(n==null?void 0:n.lang)===d)),[d,L,p]),z=()=>{let n="";return p?n=`/${G?[d,x].filter(Boolean).join("/"):x}`:n=`${M.removeSlugExtension(j)}/${x}`,n.replace(/\/{2,}/g,"/").replace(/\/$/,"")},ts=n=>{const g=new URLSearchParams(window.location.search);B&&n===B?g.delete("lang"):g.set("lang",n),P(g),window.dispatchEvent(new PopStateEvent("popstate"))},os=n=>{n.preventDefault();const g={name:c,lang:d,primaryPage:s==null?void 0:s.id,slug:Y?"":z(),pageType:s==null?void 0:s.pageType,...o&&{id:a}},R=()=>{!o&&d&&(O(d),ts(d)),ss("outline"),i()};o?I(g,{onSuccess:R}):D(g,{onSuccess:R})};return e.jsx(E.Dialog,{open:h,onOpenChange:i,children:h&&e.jsxs(E.DialogContent,{className:"text-slate-600 sm:max-w-[425px]",children:[e.jsxs(E.DialogHeader,{children:[e.jsx(E.DialogTitle,{children:o?t.CONTENT.EDIT_LANGUAGE:t.CONTENT.ADD_NEW_LANGUAGE}),e.jsx(E.DialogDescription,{className:"font-light",children:t.CONTENT.ENTER_LANGUAGE_DETAILS})]}),e.jsx(as,{id:a,pages:l,loading:es,onSubmit:os,edit:o,lang:d,languages:C,name:c,setLang:A,setName:N,primaryPageObject:s,parentHasSelectedLanguagePage:ns,isNonSlugPageType:Y,isRootPage:p,useLanguagePrefix:G,setUseLanguagePrefix:_,isHomePage:k,parentSlug:j,slug:x,setSlug:S,isSlugValid:f,setIsSlugValid:U,getSlug:z,isPending:w})]})})};exports.default=rs;
@@ -0,0 +1,390 @@
1
+ import { jsx as t, jsxs as h, Fragment as rn } from "react/jsx-runtime";
2
+ import { p as hn, r as fn, S as An } from "./slug-input-BmcGmc_i.js";
3
+ import { b as Nn, c as mn, d as En, e as Sn, f as gn, g as K, h as xn, i as Gn, L, C as f } from "./index-D7kegQ3M.js";
4
+ import { useLanguages as vn, useSidebarActivePanel as Ln } from "@chaibuilder/sdk";
5
+ import { Dialog as Dn, DialogContent as _n, DialogHeader as Un, DialogTitle as pn, DialogDescription as Fn, Label as k, Input as Tn, Alert as X, DialogFooter as wn, Button as Cn } from "@chaibuilder/sdk/ui";
6
+ import { filter as $n, find as In, startsWith as Rn } from "lodash-es";
7
+ import { Loader as kn } from "lucide-react";
8
+ import { useMemo as F, useState as T, useEffect as Q } from "react";
9
+ const Z = ({
10
+ edit: u,
11
+ lang: r,
12
+ languages: l,
13
+ name: i,
14
+ setLang: e,
15
+ setName: c,
16
+ primaryPageObject: o
17
+ }) => /* @__PURE__ */ h("div", { className: "space-y-1", children: [
18
+ /* @__PURE__ */ t(k, { htmlFor: "lang", children: f.LANGUAGE }),
19
+ /* @__PURE__ */ h(
20
+ "select",
21
+ {
22
+ value: u ? "" : r,
23
+ disabled: u || !l.length,
24
+ onChange: (n) => {
25
+ const a = n.target.value;
26
+ e(a), !u && (Rn(i, o == null ? void 0 : o.name) || i.length === 0) && c(`${o == null ? void 0 : o.name} - ${L[a]}`);
27
+ },
28
+ className: "col-span-3 flex h-9 w-full rounded-md border border-border bg-background px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",
29
+ children: [
30
+ /* @__PURE__ */ t("option", { value: "", disabled: !0, children: u ? L[r] || r : l.length ? f.CHOOSE_LANGUAGE : f.ALL_AVAILABLE_LANGUAGE_PAGE }),
31
+ l.map((n) => /* @__PURE__ */ t("option", { value: n, children: L[n] || n }, n))
32
+ ]
33
+ }
34
+ )
35
+ ] }), b = ({ lang: u, name: r, setName: l, parentHasSelectedLanguagePage: i }) => /* @__PURE__ */ h("div", { className: "space-y-1", children: [
36
+ /* @__PURE__ */ t(k, { htmlFor: "name", children: f.PAGE_NAME }),
37
+ /* @__PURE__ */ t(
38
+ Tn,
39
+ {
40
+ id: "name",
41
+ value: u ? r : "",
42
+ onChange: (e) => l(e.target.value),
43
+ required: !0,
44
+ placeholder: u ? f.ENTER_PAGE_NAME : f.CHOOSE_LANGUAGE_TO_ADD_SLUG,
45
+ disabled: !i || !u
46
+ }
47
+ )
48
+ ] }), Wn = ({
49
+ dynamic: u,
50
+ isNonSlugPageType: r,
51
+ isRootPage: l,
52
+ lang: i,
53
+ useLanguagePrefix: e,
54
+ setUseLanguagePrefix: c,
55
+ isHomePage: o,
56
+ parentSlug: n,
57
+ parentHasSelectedLanguagePage: a,
58
+ slug: A,
59
+ setSlug: d,
60
+ setIsSlugValid: E,
61
+ getSlug: N
62
+ }) => r ? null : /* @__PURE__ */ h("div", { className: "space-y-1", children: [
63
+ l && i && /* @__PURE__ */ h("div", { className: "flex items-center space-x-2 pb-1", children: [
64
+ /* @__PURE__ */ t(
65
+ "input",
66
+ {
67
+ type: "checkbox",
68
+ id: "useLanguagePrefix",
69
+ checked: e,
70
+ onChange: (S) => c(S.target.checked),
71
+ className: "rounded border-gray-300"
72
+ }
73
+ ),
74
+ /* @__PURE__ */ h(k, { htmlFor: "useLanguagePrefix", className: "text-sm font-normal leading-tight", children: [
75
+ "Add language code (",
76
+ /* @__PURE__ */ h("span", { className: "font-mono text-gray-900", children: [
77
+ "/",
78
+ i
79
+ ] }),
80
+ ") as slug prefix"
81
+ ] })
82
+ ] }),
83
+ /* @__PURE__ */ t(k, { htmlFor: "slug", children: f.SLUG }),
84
+ u ? /* @__PURE__ */ t(X, { variant: "default", className: "p-2 text-xs font-medium italic text-muted-foreground", children: "This page will use dynamic slug as defined in primary page" }) : /* @__PURE__ */ t(
85
+ An,
86
+ {
87
+ disabled: !i || !a,
88
+ value: A,
89
+ onChange: d,
90
+ placeholder: i ? o && e ? "Leave empty for home page" : f.ENTER_PAGE_SLUG : f.CHOOSE_LANGUAGE_TO_ADD_SLUG,
91
+ parentSlug: n,
92
+ onValidationChange: E,
93
+ fullSlug: N()
94
+ }
95
+ )
96
+ ] }), y = ({
97
+ parentHasSelectedLanguagePage: u,
98
+ name: r,
99
+ lang: l,
100
+ slug: i,
101
+ edit: e,
102
+ id: c,
103
+ primaryPageObject: o,
104
+ pages: n,
105
+ isNonSlugPageType: a,
106
+ isHomePage: A,
107
+ useLanguagePrefix: d,
108
+ isSlugValid: E,
109
+ isPending: N
110
+ }) => {
111
+ const S = N || !r || !l || n.some((m) => (e ? m.id !== c : !0) && m.parent === (o == null ? void 0 : o.id) && m.lang === l) || !a && !(A && d) && (!E || !i);
112
+ return /* @__PURE__ */ t(wn, { children: u ? /* @__PURE__ */ h(rn, { children: [
113
+ /* @__PURE__ */ t(Cn, { type: "submit", disabled: S && !o.dynamic, children: N ? /* @__PURE__ */ h("span", { className: "flex items-center gap-2", children: [
114
+ /* @__PURE__ */ t("span", { className: "loader mr-2" }),
115
+ e ? f.UPDATING : f.ADDING
116
+ ] }) : e ? f.UPDATE : f.ADD_NEW_LANGUAGE }),
117
+ n.some(
118
+ (m) => (e ? m.id !== c : !0) && m.parent === (o == null ? void 0 : o.id) && m.lang === l
119
+ ) && /* @__PURE__ */ t("p", { className: "mt-2 text-xs text-red-500", children: "A page for this language already exists." })
120
+ ] }) : l && /* @__PURE__ */ t(X, { variant: "destructive", children: /* @__PURE__ */ h("p", { className: "mx-auto w-5/6 text-center", children: [
121
+ "You need to create the ",
122
+ /* @__PURE__ */ t("span", { className: "font-medium", children: L[l] }),
123
+ " page in the parent to add here."
124
+ ] }) }) });
125
+ }, Bn = ({
126
+ onSubmit: u,
127
+ edit: r,
128
+ lang: l,
129
+ languages: i,
130
+ name: e,
131
+ setLang: c,
132
+ setName: o,
133
+ primaryPageObject: n,
134
+ parentHasSelectedLanguagePage: a,
135
+ id: A,
136
+ pages: d,
137
+ isNonSlugPageType: E,
138
+ isHomePage: N,
139
+ useLanguagePrefix: S,
140
+ slug: m,
141
+ isSlugValid: U,
142
+ isPending: g
143
+ }) => /* @__PURE__ */ h("form", { onSubmit: u, children: [
144
+ /* @__PURE__ */ h("div", { className: "grid gap-4 py-4", children: [
145
+ /* @__PURE__ */ t(
146
+ Z,
147
+ {
148
+ edit: r,
149
+ lang: l,
150
+ languages: i,
151
+ name: e,
152
+ setLang: c,
153
+ setName: o,
154
+ primaryPageObject: n
155
+ }
156
+ ),
157
+ /* @__PURE__ */ t(
158
+ b,
159
+ {
160
+ lang: l,
161
+ name: e,
162
+ setName: o,
163
+ parentHasSelectedLanguagePage: a
164
+ }
165
+ )
166
+ ] }),
167
+ /* @__PURE__ */ t(
168
+ y,
169
+ {
170
+ parentHasSelectedLanguagePage: a,
171
+ name: e,
172
+ lang: l,
173
+ slug: m,
174
+ edit: r,
175
+ id: A,
176
+ primaryPageObject: n,
177
+ pages: d,
178
+ isNonSlugPageType: E,
179
+ isHomePage: N,
180
+ useLanguagePrefix: S,
181
+ isSlugValid: U,
182
+ isPending: g
183
+ }
184
+ )
185
+ ] }), Mn = ({
186
+ loading: u,
187
+ onSubmit: r,
188
+ edit: l,
189
+ lang: i,
190
+ languages: e,
191
+ name: c,
192
+ setLang: o,
193
+ setName: n,
194
+ primaryPageObject: a,
195
+ parentHasSelectedLanguagePage: A,
196
+ isNonSlugPageType: d,
197
+ isRootPage: E,
198
+ useLanguagePrefix: N,
199
+ setUseLanguagePrefix: S,
200
+ isHomePage: m,
201
+ parentSlug: U,
202
+ slug: g,
203
+ setSlug: w,
204
+ isSlugValid: p,
205
+ setIsSlugValid: W,
206
+ getSlug: B,
207
+ isPending: C,
208
+ id: $,
209
+ pages: v
210
+ }) => u ? /* @__PURE__ */ t("div", { className: "flex h-80 items-center justify-center", children: /* @__PURE__ */ t(kn, { className: "animate-spin" }) }) : d ? /* @__PURE__ */ t(
211
+ Bn,
212
+ {
213
+ onSubmit: r,
214
+ edit: l,
215
+ lang: i,
216
+ languages: e,
217
+ name: c,
218
+ setLang: o,
219
+ setName: n,
220
+ primaryPageObject: a,
221
+ parentHasSelectedLanguagePage: A,
222
+ id: $,
223
+ pages: v,
224
+ isNonSlugPageType: d,
225
+ isHomePage: m,
226
+ useLanguagePrefix: N,
227
+ slug: g,
228
+ isSlugValid: p,
229
+ isPending: C
230
+ }
231
+ ) : /* @__PURE__ */ h("form", { onSubmit: r, children: [
232
+ /* @__PURE__ */ h("div", { className: "grid gap-4 py-4", children: [
233
+ /* @__PURE__ */ t(
234
+ Z,
235
+ {
236
+ edit: l,
237
+ lang: i,
238
+ languages: e,
239
+ name: c,
240
+ setLang: o,
241
+ setName: n,
242
+ primaryPageObject: a
243
+ }
244
+ ),
245
+ /* @__PURE__ */ t(
246
+ b,
247
+ {
248
+ lang: i,
249
+ name: c,
250
+ setName: n,
251
+ parentHasSelectedLanguagePage: A
252
+ }
253
+ ),
254
+ /* @__PURE__ */ t(
255
+ Wn,
256
+ {
257
+ dynamic: a == null ? void 0 : a.dynamic,
258
+ isNonSlugPageType: d,
259
+ isRootPage: E,
260
+ lang: i,
261
+ useLanguagePrefix: N,
262
+ setUseLanguagePrefix: S,
263
+ isHomePage: m,
264
+ parentSlug: U,
265
+ parentHasSelectedLanguagePage: A,
266
+ slug: g,
267
+ setSlug: w,
268
+ isSlugValid: p,
269
+ setIsSlugValid: W,
270
+ getSlug: B
271
+ }
272
+ )
273
+ ] }),
274
+ /* @__PURE__ */ t(
275
+ y,
276
+ {
277
+ parentHasSelectedLanguagePage: A,
278
+ name: c,
279
+ lang: i,
280
+ slug: g,
281
+ edit: l,
282
+ id: $,
283
+ primaryPageObject: a,
284
+ pages: v,
285
+ isNonSlugPageType: d,
286
+ isHomePage: m,
287
+ useLanguagePrefix: N,
288
+ isSlugValid: p,
289
+ isPending: C
290
+ }
291
+ )
292
+ ] }), Xn = ({
293
+ id: u,
294
+ isOpen: r,
295
+ onClose: l,
296
+ primaryPage: i,
297
+ edit: e = !1,
298
+ preselectedLang: c
299
+ }) => {
300
+ const { data: o = [] } = Nn(), n = F(() => o.find((s) => s.id === i), [o, i]), [a, A] = T(""), [d, E] = T(""), [N, S] = T(""), [m, U] = T(!0), [g, w] = T(!0), { mutate: p, isPending: W } = mn(), { mutate: B, isPending: C } = En(), $ = W || C, { data: v, isFetching: P } = Sn(), q = gn(), { data: D, isFetching: O } = K(i), { data: G = [], isFetching: j } = K(
301
+ n == null ? void 0 : n.parent
302
+ ), { data: Y = [], isFetching: nn } = xn(), { setSelectedLang: sn } = vn(), [, en] = Gn(), [, tn] = Ln(), on = P || O || j || nn, _ = F(() => $n(v == null ? void 0 : v.languages, (s) => !In(D, { lang: s })), [v, D]), M = F(
303
+ () => Y.find((s) => s.key === (n == null ? void 0 : n.pageType)),
304
+ [Y, n == null ? void 0 : n.pageType]
305
+ ), z = !(M != null && M.hasSlug), V = (n == null ? void 0 : n.slug) === "/";
306
+ Q(() => {
307
+ if (!e && n && c && (E(c), A(`${n.name} - ${L[c]}`)), !e || !n) return;
308
+ const s = D == null ? void 0 : D.find((cn) => cn.id === u);
309
+ if (!s) return;
310
+ A(s.name), E(s.lang);
311
+ const x = s.slug || "", { initSlug: R, prefix: un } = hn(x, n);
312
+ S(R), w(un);
313
+ }, [e, u, D, n, c]), Q(() => {
314
+ if (c)
315
+ E(c);
316
+ else if ((_ == null ? void 0 : _.length) === 1 && !e) {
317
+ const s = _[0];
318
+ if (!s || !L[s]) return;
319
+ E(s), (!a || a === (n == null ? void 0 : n.name)) && A(`${n == null ? void 0 : n.name} - ${L[s]}`);
320
+ }
321
+ }, [c, _, e, a, n]);
322
+ const { parentSlug: H, isRootPage: I } = F(() => {
323
+ if (V || !d)
324
+ return { parentSlug: void 0, isRootPage: !(n != null && n.parent) };
325
+ if (!(n != null && n.parent))
326
+ return {
327
+ parentSlug: g ? `/${d}` : void 0,
328
+ isRootPage: !0
329
+ };
330
+ const s = G == null ? void 0 : G.find((x) => x.lang === d);
331
+ return { parentSlug: s == null ? void 0 : s.slug, isRootPage: !1 };
332
+ }, [n == null ? void 0 : n.parent, G, g, d, V]), ln = F(() => I ? !0 : !!(G != null && G.some((s) => (s == null ? void 0 : s.lang) === d)), [d, G, I]), J = () => {
333
+ let s = "";
334
+ return I ? s = `/${g ? [d, N].filter(Boolean).join("/") : N}` : s = `${fn(H)}/${N}`, s.replace(/\/{2,}/g, "/").replace(/\/$/, "");
335
+ }, dn = (s) => {
336
+ const x = new URLSearchParams(window.location.search);
337
+ q && s === q ? x.delete("lang") : x.set("lang", s), en(x), window.dispatchEvent(new PopStateEvent("popstate"));
338
+ }, an = (s) => {
339
+ s.preventDefault();
340
+ const x = {
341
+ name: a,
342
+ lang: d,
343
+ primaryPage: n == null ? void 0 : n.id,
344
+ slug: z ? "" : J(),
345
+ pageType: n == null ? void 0 : n.pageType,
346
+ ...e && { id: u }
347
+ }, R = () => {
348
+ !e && d && (sn(d), dn(d)), tn("outline"), l();
349
+ };
350
+ e ? B(x, { onSuccess: R }) : p(x, { onSuccess: R });
351
+ };
352
+ return /* @__PURE__ */ t(Dn, { open: r, onOpenChange: l, children: r && /* @__PURE__ */ h(_n, { className: "text-slate-600 sm:max-w-[425px]", children: [
353
+ /* @__PURE__ */ h(Un, { children: [
354
+ /* @__PURE__ */ t(pn, { children: e ? f.EDIT_LANGUAGE : f.ADD_NEW_LANGUAGE }),
355
+ /* @__PURE__ */ t(Fn, { className: "font-light", children: f.ENTER_LANGUAGE_DETAILS })
356
+ ] }),
357
+ /* @__PURE__ */ t(
358
+ Mn,
359
+ {
360
+ id: u,
361
+ pages: o,
362
+ loading: on,
363
+ onSubmit: an,
364
+ edit: e,
365
+ lang: d,
366
+ languages: _,
367
+ name: a,
368
+ setLang: E,
369
+ setName: A,
370
+ primaryPageObject: n,
371
+ parentHasSelectedLanguagePage: ln,
372
+ isNonSlugPageType: z,
373
+ isRootPage: I,
374
+ useLanguagePrefix: g,
375
+ setUseLanguagePrefix: w,
376
+ isHomePage: V,
377
+ parentSlug: H,
378
+ slug: N,
379
+ setSlug: S,
380
+ isSlugValid: m,
381
+ setIsSlugValid: U,
382
+ getSlug: J,
383
+ isPending: $
384
+ }
385
+ )
386
+ ] }) });
387
+ };
388
+ export {
389
+ Xn as default
390
+ };
@@ -0,0 +1,30 @@
1
+ import { jsx as o, jsxs as n } from "react/jsx-runtime";
2
+ import { Dialog as c, DialogContent as a, DialogHeader as t, DialogTitle as p, DialogDescription as m } from "@chaibuilder/sdk/ui";
3
+ import { lazy as h, Suspense as D } from "react";
4
+ const f = h(() => import("./page-creator-BjuYmKfc.js")), N = ({
5
+ addEditPage: e,
6
+ setAddEditPage: r,
7
+ closePanel: s
8
+ }) => {
9
+ const l = !!(e != null && e.id), i = !!e;
10
+ return /* @__PURE__ */ o(c, { open: i, onOpenChange: () => r(void 0), children: i && /* @__PURE__ */ n(a, { className: "sm:max-w-[425px]", children: [
11
+ /* @__PURE__ */ n(t, { children: [
12
+ /* @__PURE__ */ n(p, { children: [
13
+ l ? "Edit" : "Add New",
14
+ " "
15
+ ] }),
16
+ /* @__PURE__ */ o(m, { children: l ? "Update your page name" : "Enter details to create a new page" })
17
+ ] }),
18
+ /* @__PURE__ */ o(D, { fallback: /* @__PURE__ */ o("div", { className: "min-h-40" }), children: /* @__PURE__ */ o(
19
+ f,
20
+ {
21
+ closePanel: s,
22
+ addEditPage: e,
23
+ close: () => r(void 0)
24
+ }
25
+ ) })
26
+ ] }) });
27
+ };
28
+ export {
29
+ N as default
30
+ };
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),n=require("@chaibuilder/sdk/ui"),l=require("react"),t=l.lazy(()=>Promise.resolve().then(()=>require("./page-creator-DG0LwvL1.cjs"))),a=({addEditPage:s,setAddEditPage:o,closePanel:c})=>{const r=!!(s!=null&&s.id),i=!!s;return e.jsx(n.Dialog,{open:i,onOpenChange:()=>o(void 0),children:i&&e.jsxs(n.DialogContent,{className:"sm:max-w-[425px]",children:[e.jsxs(n.DialogHeader,{children:[e.jsxs(n.DialogTitle,{children:[r?"Edit":"Add New"," "]}),e.jsx(n.DialogDescription,{children:r?"Update your page name":"Enter details to create a new page"})]}),e.jsx(l.Suspense,{fallback:e.jsx("div",{className:"min-h-40"}),children:e.jsx(t,{closePanel:c,addEditPage:s,close:()=>o(void 0)})})]})})};exports.default=a;
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});var R={};(function _(M,T,B,I){var k=!!(M.Worker&&M.Blob&&M.Promise&&M.OffscreenCanvas&&M.OffscreenCanvasRenderingContext2D&&M.HTMLCanvasElement&&M.HTMLCanvasElement.prototype.transferControlToOffscreen&&M.URL&&M.URL.createObjectURL),A=typeof Path2D=="function"&&typeof DOMMatrix=="function",V=function(){if(!M.OffscreenCanvas)return!1;var r=new OffscreenCanvas(1,1),e=r.getContext("2d");e.fillRect(0,0,1,1);var a=r.transferToImageBitmap();try{e.createPattern(a,"no-repeat")}catch{return!1}return!0}();function L(){}function P(r){var e=T.exports.Promise,a=e!==void 0?e:M.Promise;return typeof a=="function"?new a(r):(r(L,L),null)}var x=function(r,e){return{transform:function(a){if(r)return a;if(e.has(a))return e.get(a);var t=new OffscreenCanvas(a.width,a.height),o=t.getContext("2d");return o.drawImage(a,0,0),e.set(a,t),t},clear:function(){e.clear()}}}(V,new Map),F=function(){var r=Math.floor(16.666666666666668),e,a,t={},o=0;return typeof requestAnimationFrame=="function"&&typeof cancelAnimationFrame=="function"?(e=function(i){var l=Math.random();return t[l]=requestAnimationFrame(function n(s){o===s||o+r-1<s?(o=s,delete t[l],i()):t[l]=requestAnimationFrame(n)}),l},a=function(i){t[i]&&cancelAnimationFrame(t[i])}):(e=function(i){return setTimeout(i,r)},a=function(i){return clearTimeout(i)}),{frame:e,cancel:a}}(),Z=function(){var r,e,a={};function t(o){function i(l,n){o.postMessage({options:l||{},callback:n})}o.init=function(n){var s=n.transferControlToOffscreen();o.postMessage({canvas:s},[s])},o.fire=function(n,s,u){if(e)return i(n,null),e;var d=Math.random().toString(36).slice(2);return e=P(function(h){function f(m){m.data.callback===d&&(delete a[d],o.removeEventListener("message",f),e=null,x.clear(),u(),h())}o.addEventListener("message",f),i(n,d),a[d]=f.bind(null,{data:{callback:d}})}),e},o.reset=function(){o.postMessage({reset:!0});for(var n in a)a[n](),delete a[n]}}return function(){if(r)return r;if(!B&&k){var o=["var CONFETTI, SIZE = {}, module = {};","("+_.toString()+")(this, module, true, SIZE);","onmessage = function(msg) {"," if (msg.data.options) {"," CONFETTI(msg.data.options).then(function () {"," if (msg.data.callback) {"," postMessage({ callback: msg.data.callback });"," }"," });"," } else if (msg.data.reset) {"," CONFETTI && CONFETTI.reset();"," } else if (msg.data.resize) {"," SIZE.width = msg.data.resize.width;"," SIZE.height = msg.data.resize.height;"," } else if (msg.data.canvas) {"," SIZE.width = msg.data.canvas.width;"," SIZE.height = msg.data.canvas.height;"," CONFETTI = module.exports.create(msg.data.canvas);"," }","}"].join(`
2
+ `);try{r=new Worker(URL.createObjectURL(new Blob([o])))}catch(i){return typeof console!==void 0&&typeof console.warn=="function"&&console.warn("🎊 Could not load worker",i),null}t(r)}return r}}(),q={particleCount:50,angle:90,spread:45,startVelocity:45,decay:.9,gravity:1,drift:0,ticks:200,x:.5,y:.5,shapes:["square","circle"],zIndex:100,colors:["#26ccff","#a25afd","#ff5e7e","#88ff5a","#fcff42","#ffa62d","#ff36ff"],disableForReducedMotion:!1,scalar:1};function H(r,e){return e?e(r):r}function $(r){return r!=null}function v(r,e,a){return H(r&&$(r[e])?r[e]:q[e],a)}function G(r){return r<0?0:Math.floor(r)}function J(r,e){return Math.floor(Math.random()*(e-r))+r}function E(r){return parseInt(r,16)}function K(r){return r.map(Q)}function Q(r){var e=String(r).replace(/[^0-9a-f]/gi,"");return e.length<6&&(e=e[0]+e[0]+e[1]+e[1]+e[2]+e[2]),{r:E(e.substring(0,2)),g:E(e.substring(2,4)),b:E(e.substring(4,6))}}function X(r){var e=v(r,"origin",Object);return e.x=v(e,"x",Number),e.y=v(e,"y",Number),e}function Y(r){r.width=document.documentElement.clientWidth,r.height=document.documentElement.clientHeight}function ee(r){var e=r.getBoundingClientRect();r.width=e.width,r.height=e.height}function re(r){var e=document.createElement("canvas");return e.style.position="fixed",e.style.top="0px",e.style.left="0px",e.style.pointerEvents="none",e.style.zIndex=r,e}function ae(r,e,a,t,o,i,l,n,s){r.save(),r.translate(e,a),r.rotate(i),r.scale(t,o),r.arc(0,0,1,l,n,s),r.restore()}function ne(r){var e=r.angle*(Math.PI/180),a=r.spread*(Math.PI/180);return{x:r.x,y:r.y,wobble:Math.random()*10,wobbleSpeed:Math.min(.11,Math.random()*.1+.05),velocity:r.startVelocity*.5+Math.random()*r.startVelocity,angle2D:-e+(.5*a-Math.random()*a),tiltAngle:(Math.random()*(.75-.25)+.25)*Math.PI,color:r.color,shape:r.shape,tick:0,totalTicks:r.ticks,decay:r.decay,drift:r.drift,random:Math.random()+2,tiltSin:0,tiltCos:0,wobbleX:0,wobbleY:0,gravity:r.gravity*3,ovalScalar:.6,scalar:r.scalar,flat:r.flat}}function te(r,e){e.x+=Math.cos(e.angle2D)*e.velocity+e.drift,e.y+=Math.sin(e.angle2D)*e.velocity+e.gravity,e.velocity*=e.decay,e.flat?(e.wobble=0,e.wobbleX=e.x+10*e.scalar,e.wobbleY=e.y+10*e.scalar,e.tiltSin=0,e.tiltCos=0,e.random=1):(e.wobble+=e.wobbleSpeed,e.wobbleX=e.x+10*e.scalar*Math.cos(e.wobble),e.wobbleY=e.y+10*e.scalar*Math.sin(e.wobble),e.tiltAngle+=.1,e.tiltSin=Math.sin(e.tiltAngle),e.tiltCos=Math.cos(e.tiltAngle),e.random=Math.random()+2);var a=e.tick++/e.totalTicks,t=e.x+e.random*e.tiltCos,o=e.y+e.random*e.tiltSin,i=e.wobbleX+e.random*e.tiltCos,l=e.wobbleY+e.random*e.tiltSin;if(r.fillStyle="rgba("+e.color.r+", "+e.color.g+", "+e.color.b+", "+(1-a)+")",r.beginPath(),A&&e.shape.type==="path"&&typeof e.shape.path=="string"&&Array.isArray(e.shape.matrix))r.fill(ie(e.shape.path,e.shape.matrix,e.x,e.y,Math.abs(i-t)*.1,Math.abs(l-o)*.1,Math.PI/10*e.wobble));else if(e.shape.type==="bitmap"){var n=Math.PI/10*e.wobble,s=Math.abs(i-t)*.1,u=Math.abs(l-o)*.1,d=e.shape.bitmap.width*e.scalar,h=e.shape.bitmap.height*e.scalar,f=new DOMMatrix([Math.cos(n)*s,Math.sin(n)*s,-Math.sin(n)*u,Math.cos(n)*u,e.x,e.y]);f.multiplySelf(new DOMMatrix(e.shape.matrix));var m=r.createPattern(x.transform(e.shape.bitmap),"no-repeat");m.setTransform(f),r.globalAlpha=1-a,r.fillStyle=m,r.fillRect(e.x-d/2,e.y-h/2,d,h),r.globalAlpha=1}else if(e.shape==="circle")r.ellipse?r.ellipse(e.x,e.y,Math.abs(i-t)*e.ovalScalar,Math.abs(l-o)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI):ae(r,e.x,e.y,Math.abs(i-t)*e.ovalScalar,Math.abs(l-o)*e.ovalScalar,Math.PI/10*e.wobble,0,2*Math.PI);else if(e.shape==="star")for(var c=Math.PI/2*3,g=4*e.scalar,p=8*e.scalar,y=e.x,w=e.y,C=5,b=Math.PI/C;C--;)y=e.x+Math.cos(c)*p,w=e.y+Math.sin(c)*p,r.lineTo(y,w),c+=b,y=e.x+Math.cos(c)*g,w=e.y+Math.sin(c)*g,r.lineTo(y,w),c+=b;else r.moveTo(Math.floor(e.x),Math.floor(e.y)),r.lineTo(Math.floor(e.wobbleX),Math.floor(o)),r.lineTo(Math.floor(i),Math.floor(l)),r.lineTo(Math.floor(t),Math.floor(e.wobbleY));return r.closePath(),r.fill(),e.tick<e.totalTicks}function oe(r,e,a,t,o){var i=e.slice(),l=r.getContext("2d"),n,s,u=P(function(d){function h(){n=s=null,l.clearRect(0,0,t.width,t.height),x.clear(),o(),d()}function f(){B&&!(t.width===I.width&&t.height===I.height)&&(t.width=r.width=I.width,t.height=r.height=I.height),!t.width&&!t.height&&(a(r),t.width=r.width,t.height=r.height),l.clearRect(0,0,t.width,t.height),i=i.filter(function(m){return te(l,m)}),i.length?n=F.frame(f):h()}n=F.frame(f),s=h});return{addFettis:function(d){return i=i.concat(d),u},canvas:r,promise:u,reset:function(){n&&F.cancel(n),s&&s()}}}function N(r,e){var a=!r,t=!!v(e||{},"resize"),o=!1,i=v(e,"disableForReducedMotion",Boolean),l=k&&!!v(e||{},"useWorker"),n=l?Z():null,s=a?Y:ee,u=r&&n?!!r.__confetti_initialized:!1,d=typeof matchMedia=="function"&&matchMedia("(prefers-reduced-motion)").matches,h;function f(c,g,p){for(var y=v(c,"particleCount",G),w=v(c,"angle",Number),C=v(c,"spread",Number),b=v(c,"startVelocity",Number),ce=v(c,"decay",Number),ue=v(c,"gravity",Number),he=v(c,"drift",Number),W=v(c,"colors",K),de=v(c,"ticks",Number),D=v(c,"shapes"),fe=v(c,"scalar"),ve=!!v(c,"flat"),U=X(c),z=y,O=[],me=r.width*U.x,ge=r.height*U.y;z--;)O.push(ne({x:me,y:ge,angle:w,spread:C,startVelocity:b,color:W[z%W.length],shape:D[J(0,D.length)],ticks:de,decay:ce,gravity:ue,drift:he,scalar:fe,flat:ve}));return h?h.addFettis(O):(h=oe(r,O,s,g,p),h.promise)}function m(c){var g=i||v(c,"disableForReducedMotion",Boolean),p=v(c,"zIndex",Number);if(g&&d)return P(function(b){b()});a&&h?r=h.canvas:a&&!r&&(r=re(p),document.body.appendChild(r)),t&&!u&&s(r);var y={width:r.width,height:r.height};n&&!u&&n.init(r),u=!0,n&&(r.__confetti_initialized=!0);function w(){if(n){var b={getBoundingClientRect:function(){if(!a)return r.getBoundingClientRect()}};s(b),n.postMessage({resize:{width:b.width,height:b.height}});return}y.width=y.height=null}function C(){h=null,t&&(o=!1,M.removeEventListener("resize",w)),a&&r&&(document.body.contains(r)&&document.body.removeChild(r),r=null,u=!1)}return t&&!o&&(o=!0,M.addEventListener("resize",w,!1)),n?n.fire(c,y,C):f(c,y,C)}return m.reset=function(){n&&n.reset(),h&&h.reset()},m}var S;function j(){return S||(S=N(null,{useWorker:!0,resize:!0})),S}function ie(r,e,a,t,o,i,l){var n=new Path2D(r),s=new Path2D;s.addPath(n,new DOMMatrix(e));var u=new Path2D;return u.addPath(s,new DOMMatrix([Math.cos(l)*o,Math.sin(l)*o,-Math.sin(l)*i,Math.cos(l)*i,a,t])),u}function le(r){if(!A)throw new Error("path confetti are not supported in this browser");var e,a;typeof r=="string"?e=r:(e=r.path,a=r.matrix);var t=new Path2D(e),o=document.createElement("canvas"),i=o.getContext("2d");if(!a){for(var l=1e3,n=l,s=l,u=0,d=0,h,f,m=0;m<l;m+=2)for(var c=0;c<l;c+=2)i.isPointInPath(t,m,c,"nonzero")&&(n=Math.min(n,m),s=Math.min(s,c),u=Math.max(u,m),d=Math.max(d,c));h=u-n,f=d-s;var g=10,p=Math.min(g/h,g/f);a=[p,0,0,p,-Math.round(h/2+n)*p,-Math.round(f/2+s)*p]}return{type:"path",path:e,matrix:a}}function se(r){var e,a=1,t="#000000",o='"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", "EmojiOne Color", "Android Emoji", "Twemoji Mozilla", "system emoji", sans-serif';typeof r=="string"?e=r:(e=r.text,a="scalar"in r?r.scalar:a,o="fontFamily"in r?r.fontFamily:o,t="color"in r?r.color:t);var i=10*a,l=""+i+"px "+o,n=new OffscreenCanvas(i,i),s=n.getContext("2d");s.font=l;var u=s.measureText(e),d=Math.ceil(u.actualBoundingBoxRight+u.actualBoundingBoxLeft),h=Math.ceil(u.actualBoundingBoxAscent+u.actualBoundingBoxDescent),f=2,m=u.actualBoundingBoxLeft+f,c=u.actualBoundingBoxAscent+f;d+=f+f,h+=f+f,n=new OffscreenCanvas(d,h),s=n.getContext("2d"),s.font=l,s.fillStyle=t,s.fillText(e,m,c);var g=1/a;return{type:"bitmap",bitmap:n.transferToImageBitmap(),matrix:[g,0,0,g,-d*g/2,-h*g/2]}}T.exports=function(){return j().apply(this,arguments)},T.exports.reset=function(){j().reset()},T.exports.create=N,T.exports.shapeFromPath=le,T.exports.shapeFromText=se})(function(){return typeof window<"u"?window:typeof self<"u"?self:this||{}}(),R,!1);const Me=R.exports;R.exports.create;exports.default=Me;