@object-ui/plugin-calendar 3.1.4 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +9 -9
- package/CHANGELOG.md +37 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +26 -16
- package/dist/index.umd.cjs +2 -2
- package/dist/packages/plugin-calendar/src/CalendarView.d.ts.map +1 -0
- package/dist/packages/plugin-calendar/src/ObjectCalendar.d.ts.map +1 -0
- package/dist/packages/plugin-calendar/src/calendar-view-renderer.d.ts.map +1 -0
- package/dist/packages/plugin-calendar/src/index.d.ts.map +1 -0
- package/package.json +12 -12
- package/src/ObjectCalendar.msw.test.tsx +4 -0
- package/src/ObjectCalendar.tsx +13 -0
- package/vite.config.ts +1 -0
- package/dist/src/CalendarView.d.ts.map +0 -1
- package/dist/src/ObjectCalendar.d.ts.map +0 -1
- package/dist/src/calendar-view-renderer.d.ts.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- /package/dist/{src → packages/plugin-calendar/src}/CalendarView.d.ts +0 -0
- /package/dist/{src → packages/plugin-calendar/src}/ObjectCalendar.d.ts +0 -0
- /package/dist/{src → packages/plugin-calendar/src}/calendar-view-renderer.d.ts +0 -0
- /package/dist/{src → packages/plugin-calendar/src}/index.d.ts +0 -0
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
|
|
2
|
-
> @object-ui/plugin-calendar@3.
|
|
2
|
+
> @object-ui/plugin-calendar@3.3.0 build /home/runner/work/objectui/objectui/packages/plugin-calendar
|
|
3
3
|
> vite build
|
|
4
4
|
|
|
5
|
-
[36mvite v8.0.
|
|
6
|
-
[2K
|
|
5
|
+
[36mvite v8.0.8 [32mbuilding client environment for production...[36m[39m
|
|
6
|
+
[2K
|
|
7
7
|
rendering chunks...
|
|
8
8
|
[32m
|
|
9
9
|
[36m[vite:dts][32m Start generate declaration files...[39m
|
|
10
|
-
[32m[36m[vite:dts][32m Declaration files built in
|
|
10
|
+
[32m[36m[vite:dts][32m Declaration files built in 18126ms.
|
|
11
11
|
[39m
|
|
12
12
|
computing gzip size...
|
|
13
|
-
dist/index.js 45.84 kB │ gzip: 13.28 kB
|
|
14
|
-
|
|
15
13
|
[33m[33m[PLUGIN_TIMINGS] Warning:[0m Your build spent significant time in plugin `vite:dts`. See https://rolldown.rs/options/checks#plugintimings for more details.
|
|
16
14
|
[39m
|
|
17
|
-
|
|
15
|
+
dist/index.js 46.03 kB │ gzip: 13.34 kB
|
|
16
|
+
|
|
17
|
+
[2K
|
|
18
18
|
rendering chunks...
|
|
19
19
|
computing gzip size...
|
|
20
|
-
dist/index.umd.cjs 35.
|
|
20
|
+
dist/index.umd.cjs 35.18 kB │ gzip: 11.73 kB
|
|
21
21
|
|
|
22
|
-
[32m✓ built in
|
|
22
|
+
[32m✓ built in 19.93s[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,42 @@
|
|
|
1
1
|
# @object-ui/plugin-calendar
|
|
2
2
|
|
|
3
|
+
## 3.3.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- @object-ui/types@3.3.0
|
|
8
|
+
- @object-ui/core@3.3.0
|
|
9
|
+
- @object-ui/i18n@3.3.0
|
|
10
|
+
- @object-ui/react@3.3.0
|
|
11
|
+
- @object-ui/components@3.3.0
|
|
12
|
+
- @object-ui/fields@3.3.0
|
|
13
|
+
- @object-ui/mobile@3.3.0
|
|
14
|
+
|
|
15
|
+
## 3.2.0
|
|
16
|
+
|
|
17
|
+
### Patch Changes
|
|
18
|
+
|
|
19
|
+
- @object-ui/types@3.2.0
|
|
20
|
+
- @object-ui/core@3.2.0
|
|
21
|
+
- @object-ui/i18n@3.2.0
|
|
22
|
+
- @object-ui/react@3.2.0
|
|
23
|
+
- @object-ui/components@3.2.0
|
|
24
|
+
- @object-ui/fields@3.2.0
|
|
25
|
+
- @object-ui/mobile@3.2.0
|
|
26
|
+
|
|
27
|
+
## 3.1.5
|
|
28
|
+
|
|
29
|
+
### Patch Changes
|
|
30
|
+
|
|
31
|
+
- Updated dependencies [cfe0596]
|
|
32
|
+
- @object-ui/i18n@3.1.5
|
|
33
|
+
- @object-ui/react@3.1.5
|
|
34
|
+
- @object-ui/components@3.1.5
|
|
35
|
+
- @object-ui/fields@3.1.5
|
|
36
|
+
- @object-ui/types@3.1.5
|
|
37
|
+
- @object-ui/core@3.1.5
|
|
38
|
+
- @object-ui/mobile@3.1.5
|
|
39
|
+
|
|
3
40
|
## 3.1.4
|
|
4
41
|
|
|
5
42
|
### Patch Changes
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export * from './src/index'
|
|
1
|
+
export * from './packages/plugin-calendar/src/index'
|
|
2
2
|
export {}
|
package/dist/index.js
CHANGED
|
@@ -283,7 +283,7 @@ function fe(e) {
|
|
|
283
283
|
};
|
|
284
284
|
}
|
|
285
285
|
//#endregion
|
|
286
|
-
//#region ../../node_modules/.pnpm/react@19.2.
|
|
286
|
+
//#region ../../node_modules/.pnpm/react@19.2.5/node_modules/react/cjs/react-jsx-runtime.production.js
|
|
287
287
|
var pe = /* @__PURE__ */ A(((e) => {
|
|
288
288
|
var t = Symbol.for("react.transitional.element"), n = Symbol.for("react.fragment");
|
|
289
289
|
function r(e, n, r) {
|
|
@@ -538,17 +538,7 @@ function Y({ events: t = [], view: n = "month", currentDate: r = he, locale: i =
|
|
|
538
538
|
day: "numeric",
|
|
539
539
|
year: "numeric"
|
|
540
540
|
});
|
|
541
|
-
}, B = e.useRef(0)
|
|
542
|
-
B.current = e.touches[0].clientX;
|
|
543
|
-
}, H = (e) => {
|
|
544
|
-
let t = B.current - e.changedTouches[0].clientX;
|
|
545
|
-
if (Math.abs(t) > 50) {
|
|
546
|
-
let e = new Date(b);
|
|
547
|
-
f === "day" ? e.setDate(e.getDate() + (t > 0 ? 1 : -1)) : f === "week" ? e.setDate(e.getDate() + (t > 0 ? 7 : -7)) : e.setMonth(e.getMonth() + (t > 0 ? 1 : -1)), A(e), c?.(e);
|
|
548
|
-
}
|
|
549
|
-
}, U = (e) => {
|
|
550
|
-
e && (A(e), c?.(e));
|
|
551
|
-
};
|
|
541
|
+
}, B = e.useRef(0);
|
|
552
542
|
return /* @__PURE__ */ (0, G.jsxs)("div", {
|
|
553
543
|
role: "region",
|
|
554
544
|
"aria-label": "Calendar",
|
|
@@ -600,7 +590,9 @@ function Y({ events: t = [], view: n = "month", currentDate: r = he, locale: i =
|
|
|
600
590
|
children: /* @__PURE__ */ (0, G.jsx)(y, {
|
|
601
591
|
mode: "single",
|
|
602
592
|
selected: b,
|
|
603
|
-
onSelect:
|
|
593
|
+
onSelect: (e) => {
|
|
594
|
+
e && (A(e), c?.(e));
|
|
595
|
+
},
|
|
604
596
|
initialFocus: !0,
|
|
605
597
|
fromYear: 2e3,
|
|
606
598
|
toYear: 2050
|
|
@@ -637,8 +629,16 @@ function Y({ events: t = [], view: n = "month", currentDate: r = he, locale: i =
|
|
|
637
629
|
})]
|
|
638
630
|
}), /* @__PURE__ */ (0, G.jsxs)("div", {
|
|
639
631
|
className: "flex-1 overflow-auto",
|
|
640
|
-
onTouchStart:
|
|
641
|
-
|
|
632
|
+
onTouchStart: (e) => {
|
|
633
|
+
B.current = e.touches[0].clientX;
|
|
634
|
+
},
|
|
635
|
+
onTouchEnd: (e) => {
|
|
636
|
+
let t = B.current - e.changedTouches[0].clientX;
|
|
637
|
+
if (Math.abs(t) > 50) {
|
|
638
|
+
let e = new Date(b);
|
|
639
|
+
f === "day" ? e.setDate(e.getDate() + (t > 0 ? 1 : -1)) : f === "week" ? e.setDate(e.getDate() + (t > 0 ? 7 : -7)) : e.setMonth(e.getMonth() + (t > 0 ? 1 : -1)), A(e), c?.(e);
|
|
640
|
+
}
|
|
641
|
+
},
|
|
642
642
|
children: [
|
|
643
643
|
f === "month" && /* @__PURE__ */ (0, G.jsx)(_e, {
|
|
644
644
|
date: b,
|
|
@@ -1004,7 +1004,17 @@ function we(e) {
|
|
|
1004
1004
|
} : null;
|
|
1005
1005
|
}
|
|
1006
1006
|
var Te = ({ schema: e, dataSource: t, className: n, data: i, loading: l, onEventClick: p, onRowClick: m, onDateClick: h, onNavigate: g, onViewChange: _, onEventDrop: v, locale: y }) => {
|
|
1007
|
-
let x = Array.isArray(i), [S, C] = c(x ? i : []), [w, T] = c(x ? l ?? !1 : !0), [E, D] = c(null), [O, k] = c(null), [A, j] = c(/* @__PURE__ */ new Date()), [M, N] = c("month"), [P, F] = c(0)
|
|
1007
|
+
let x = Array.isArray(i), [S, C] = c(x ? i : []), [w, T] = c(x ? l ?? !1 : !0), [E, D] = c(null), [O, k] = c(null), [A, j] = c(/* @__PURE__ */ new Date()), [M, N] = c("month"), [P, F] = c(0);
|
|
1008
|
+
a(() => {
|
|
1009
|
+
if (!x && !(!t?.onMutation || !e.objectName)) return t.onMutation((t) => {
|
|
1010
|
+
t.resource === e.objectName && F((e) => e + 1);
|
|
1011
|
+
});
|
|
1012
|
+
}, [
|
|
1013
|
+
t,
|
|
1014
|
+
e.objectName,
|
|
1015
|
+
x
|
|
1016
|
+
]);
|
|
1017
|
+
let { ref: I, isRefreshing: L, pullDistance: R } = be({
|
|
1008
1018
|
onRefresh: r(async () => {
|
|
1009
1019
|
F((e) => e + 1);
|
|
1010
1020
|
}, []),
|
package/dist/index.umd.cjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`@object-ui/core`),require(`@object-ui/react`),require(`lucide-react`),require(`@object-ui/components`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`@object-ui/core`,`@object-ui/react`,`lucide-react`,`@object-ui/components`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginCalendar={},e.React,e.ObjectUICore,e.ObjectUIReact,e.LucideReact,e.ObjectUIComponents))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),p=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:o(u(e)),p(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(t);var m=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);x(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},h={},g=(e,t,n,r)=>{x(n)&&h[n]||(x(n)&&(h[n]=new Date),m(e,t,n,r))},_=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},v=(e,t,n)=>{e.loadNamespaces(t,_(e,n))},y=(e,t,n,r)=>{if(x(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return v(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,_(e,r))},b=(e,t,n={})=>!t.languages||!t.languages.length?(g(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),x=e=>typeof e==`string`,S=e=>typeof e==`object`&&!!e,C=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,w={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},T=e=>w[e],E={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(C,T),transDefaultProps:void 0},D=()=>E,O,k=()=>O,A=(0,t.createContext)(),j=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},M=f((e=>{var t=require(`react`);function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),N=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}function n(e,t){d||a.startTransition===void 0||(d=!0,console.error(`You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.`));var n=t();if(!f){var i=t();o(n,i)||(console.error(`The result of getSnapshot should be cached to avoid an infinite loop`),f=!0)}i=s({inst:{value:n,getSnapshot:t}});var p=i[0].inst,m=i[1];return l(function(){p.value=n,p.getSnapshot=t,r(p)&&m({inst:p})},[e,n,t]),c(function(){return r(p)&&m({inst:p}),e(function(){r(p)&&m({inst:p})})},[e]),u(n),n}function r(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch{return!0}}function i(e,t){return t()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=require(`react`),o=typeof Object.is==`function`?Object.is:t,s=a.useState,c=a.useEffect,l=a.useLayoutEffect,u=a.useDebugValue,d=!1,f=!1,p=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?i:n;e.useSyncExternalStore=a.useSyncExternalStore===void 0?p:a.useSyncExternalStore,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})),P=f(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=M():t.exports=N()}))(),F={t:(e,t)=>{if(x(t))return t;if(S(t)&&x(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},I=()=>()=>{},L=(e,n={})=>{let{i18n:r}=n,{i18n:i,defaultNS:a}=(0,t.useContext)(A)||{},o=r||i||k();o&&!o.reportNamespaces&&(o.reportNamespaces=new j),o||g(o,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let s=(0,t.useMemo)(()=>({...D(),...o?.options?.react,...n}),[o,n]),{useSuspense:c,keyPrefix:l}=s,u=e||a||o?.options?.defaultNS,d=x(u)?[u]:u||[`translation`],f=(0,t.useMemo)(()=>d,d);o?.reportNamespaces?.addUsedNamespaces?.(f);let p=(0,t.useRef)(0),m=(0,t.useCallback)(e=>{if(!o)return I;let{bindI18n:t,bindI18nStore:n}=s,r=()=>{p.current+=1,e()};return t&&o.on(t,r),n&&o.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>o.off(e,r)),n&&n.split(` `).forEach(e=>o.store.off(e,r))}},[o,s]),h=(0,t.useRef)(),_=(0,t.useCallback)(()=>{if(!o)return F;let e=!!(o.isInitialized||o.initializedStoreOnce)&&f.every(e=>b(e,o,s)),t=n.lng||o.language,r=p.current,i=h.current;if(i&&i.ready===e&&i.lng===t&&i.keyPrefix===l&&i.revision===r)return i;let a={t:o.getFixedT(t,s.nsMode===`fallback`?f:f[0],l),ready:e,lng:t,keyPrefix:l,revision:r};return h.current=a,a},[o,f,l,s,n.lng]),[S,C]=(0,t.useState)(0),{t:w,ready:T}=(0,P.useSyncExternalStore)(m,_,_);(0,t.useEffect)(()=>{if(o&&!T&&!c){let e=()=>C(e=>e+1);n.lng?y(o,n.lng,f,e):v(o,f,e)}},[o,n.lng,f,T,c,S]);let E=o||{},O=(0,t.useRef)(null),M=(0,t.useRef)(),N=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},L=(0,t.useMemo)(()=>{let e=E,t=e?.language,n=e;e&&(O.current&&O.current.__original===e&&M.current===t?n=O.current:(n=N(e),O.current=n,M.current=t));let r=!T&&!c?(...e)=>(g(o,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),w(...e)):w,i=[r,n,T];return i.t=r,i.i18n=n,i.ready=T,i},[w,E,T,E.resolvedLanguage,E.language,E.languages]);if(o&&c&&!T)throw new Promise(e=>{let t=()=>e();n.lng?y(o,n.lng,f,t):v(o,f,t)});return L},R=(0,t.createContext)(null);function z(e){let n=(0,t.useContext)(R),{t:r,i18n:i}=L(e);return{t:r,language:n?.language||i.language||`en`,changeLanguage:n?.changeLanguage||(async e=>{await i.changeLanguage(e)}),direction:n?.direction||`ltr`,i18n:i}}var B=f((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),V=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
1
|
+
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports,require(`react`),require(`@object-ui/core`),require(`@object-ui/react`),require(`lucide-react`),require(`@object-ui/components`)):typeof define==`function`&&define.amd?define([`exports`,`react`,`@object-ui/core`,`@object-ui/react`,`lucide-react`,`@object-ui/components`],t):(e=typeof globalThis<`u`?globalThis:e||self,t(e.ObjectUIPluginCalendar={},e.React,e.ObjectUICore,e.ObjectUIReact,e.LucideReact,e.ObjectUIComponents))})(this,function(e,t,n,r,i,a){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var o=Object.create,s=Object.defineProperty,c=Object.getOwnPropertyDescriptor,l=Object.getOwnPropertyNames,u=Object.getPrototypeOf,d=Object.prototype.hasOwnProperty,f=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),p=(e,t,n,r)=>{if(t&&typeof t==`object`||typeof t==`function`)for(var i=l(t),a=0,o=i.length,u;a<o;a++)u=i[a],!d.call(e,u)&&u!==n&&s(e,u,{get:(e=>t[e]).bind(null,u),enumerable:!(r=c(t,u))||r.enumerable});return e};t=((e,t,n)=>(n=e==null?{}:o(u(e)),p(t||!e||!e.__esModule?s(n,`default`,{value:e,enumerable:!0}):n,e)))(t,1);var m=(e,t,n,r)=>{let i=[n,{code:t,...r||{}}];if(e?.services?.logger?.forward)return e.services.logger.forward(i,`warn`,`react-i18next::`,!0);x(i[0])&&(i[0]=`react-i18next:: ${i[0]}`),e?.services?.logger?.warn?e.services.logger.warn(...i):console?.warn&&console.warn(...i)},h={},g=(e,t,n,r)=>{x(n)&&h[n]||(x(n)&&(h[n]=new Date),m(e,t,n,r))},_=(e,t)=>()=>{if(e.isInitialized)t();else{let n=()=>{setTimeout(()=>{e.off(`initialized`,n)},0),t()};e.on(`initialized`,n)}},v=(e,t,n)=>{e.loadNamespaces(t,_(e,n))},y=(e,t,n,r)=>{if(x(n)&&(n=[n]),e.options.preload&&e.options.preload.indexOf(t)>-1)return v(e,n,r);n.forEach(t=>{e.options.ns.indexOf(t)<0&&e.options.ns.push(t)}),e.loadLanguages(t,_(e,r))},b=(e,t,n={})=>!t.languages||!t.languages.length?(g(t,`NO_LANGUAGES`,`i18n.languages were undefined or empty`,{languages:t.languages}),!0):t.hasLoadedNamespace(e,{lng:n.lng,precheck:(t,r)=>{if(n.bindI18n&&n.bindI18n.indexOf(`languageChanging`)>-1&&t.services.backendConnector.backend&&t.isLanguageChangingTo&&!r(t.isLanguageChangingTo,e))return!1}}),x=e=>typeof e==`string`,S=e=>typeof e==`object`&&!!e,C=/&(?:amp|#38|lt|#60|gt|#62|apos|#39|quot|#34|nbsp|#160|copy|#169|reg|#174|hellip|#8230|#x2F|#47);/g,w={"&":`&`,"&":`&`,"<":`<`,"<":`<`,">":`>`,">":`>`,"'":`'`,"'":`'`,""":`"`,""":`"`," ":` `," ":` `,"©":`©`,"©":`©`,"®":`®`,"®":`®`,"…":`…`,"…":`…`,"/":`/`,"/":`/`},T=e=>w[e],E={bindI18n:`languageChanged`,bindI18nStore:``,transEmptyNodeValue:``,transSupportBasicHtmlNodes:!0,transWrapTextNodes:``,transKeepBasicHtmlNodesFor:[`br`,`strong`,`i`,`p`],useSuspense:!0,unescape:e=>e.replace(C,T),transDefaultProps:void 0},D=()=>E,O,k=()=>O,A=(0,t.createContext)(),j=class{constructor(){this.usedNamespaces={}}addUsedNamespaces(e){e.forEach(e=>{this.usedNamespaces[e]||(this.usedNamespaces[e]=!0)})}getUsedNamespaces(){return Object.keys(this.usedNamespaces)}},M=f((e=>{var t=require(`react`);function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var d=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?d:t.useSyncExternalStore})),N=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}function n(e,t){d||a.startTransition===void 0||(d=!0,console.error(`You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.`));var n=t();if(!f){var i=t();o(n,i)||(console.error(`The result of getSnapshot should be cached to avoid an infinite loop`),f=!0)}i=s({inst:{value:n,getSnapshot:t}});var p=i[0].inst,m=i[1];return l(function(){p.value=n,p.getSnapshot=t,r(p)&&m({inst:p})},[e,n,t]),c(function(){return r(p)&&m({inst:p}),e(function(){r(p)&&m({inst:p})})},[e]),u(n),n}function r(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!o(e,n)}catch{return!0}}function i(e,t){return t()}typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());var a=require(`react`),o=typeof Object.is==`function`?Object.is:t,s=a.useState,c=a.useEffect,l=a.useLayoutEffect,u=a.useDebugValue,d=!1,f=!1,p=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?i:n;e.useSyncExternalStore=a.useSyncExternalStore===void 0?p:a.useSyncExternalStore,typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<`u`&&typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop==`function`&&__REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error())})()})),P=f(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=M():t.exports=N()}))(),F={t:(e,t)=>{if(x(t))return t;if(S(t)&&x(t.defaultValue))return t.defaultValue;if(typeof e==`function`)return``;if(Array.isArray(e)){let t=e[e.length-1];return typeof t==`function`?``:t}return e},ready:!1},I=()=>()=>{},L=(e,n={})=>{let{i18n:r}=n,{i18n:i,defaultNS:a}=(0,t.useContext)(A)||{},o=r||i||k();o&&!o.reportNamespaces&&(o.reportNamespaces=new j),o||g(o,`NO_I18NEXT_INSTANCE`,`useTranslation: You will need to pass in an i18next instance by using initReactI18next`);let s=(0,t.useMemo)(()=>({...D(),...o?.options?.react,...n}),[o,n]),{useSuspense:c,keyPrefix:l}=s,u=e||a||o?.options?.defaultNS,d=x(u)?[u]:u||[`translation`],f=(0,t.useMemo)(()=>d,d);o?.reportNamespaces?.addUsedNamespaces?.(f);let p=(0,t.useRef)(0),m=(0,t.useCallback)(e=>{if(!o)return I;let{bindI18n:t,bindI18nStore:n}=s,r=()=>{p.current+=1,e()};return t&&o.on(t,r),n&&o.store.on(n,r),()=>{t&&t.split(` `).forEach(e=>o.off(e,r)),n&&n.split(` `).forEach(e=>o.store.off(e,r))}},[o,s]),h=(0,t.useRef)(),_=(0,t.useCallback)(()=>{if(!o)return F;let e=!!(o.isInitialized||o.initializedStoreOnce)&&f.every(e=>b(e,o,s)),t=n.lng||o.language,r=p.current,i=h.current;if(i&&i.ready===e&&i.lng===t&&i.keyPrefix===l&&i.revision===r)return i;let a={t:o.getFixedT(t,s.nsMode===`fallback`?f:f[0],l),ready:e,lng:t,keyPrefix:l,revision:r};return h.current=a,a},[o,f,l,s,n.lng]),[S,C]=(0,t.useState)(0),{t:w,ready:T}=(0,P.useSyncExternalStore)(m,_,_);(0,t.useEffect)(()=>{if(o&&!T&&!c){let e=()=>C(e=>e+1);n.lng?y(o,n.lng,f,e):v(o,f,e)}},[o,n.lng,f,T,c,S]);let E=o||{},O=(0,t.useRef)(null),M=(0,t.useRef)(),N=e=>{let t=Object.getOwnPropertyDescriptors(e);t.__original&&delete t.__original;let n=Object.create(Object.getPrototypeOf(e),t);if(!Object.prototype.hasOwnProperty.call(n,`__original`))try{Object.defineProperty(n,`__original`,{value:e,writable:!1,enumerable:!1,configurable:!1})}catch{}return n},L=(0,t.useMemo)(()=>{let e=E,t=e?.language,n=e;e&&(O.current&&O.current.__original===e&&M.current===t?n=O.current:(n=N(e),O.current=n,M.current=t));let r=!T&&!c?(...e)=>(g(o,`USE_T_BEFORE_READY`,`useTranslation: t was called before ready. When using useSuspense: false, make sure to check the ready flag before using t.`),w(...e)):w,i=[r,n,T];return i.t=r,i.i18n=n,i.ready=T,i},[w,E,T,E.resolvedLanguage,E.language,E.languages]);if(o&&c&&!T)throw new Promise(e=>{let t=()=>e();n.lng?y(o,n.lng,f,t):v(o,f,t)});return L},R=(0,t.createContext)(null);function z(e){let n=(0,t.useContext)(R),{t:r,i18n:i}=L(e);return{t:r,language:n?.language||i.language||`en`,changeLanguage:n?.changeLanguage||(async e=>{await i.changeLanguage(e)}),direction:n?.direction||`ltr`,i18n:i}}var B=f((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),V=f((e=>{process.env.NODE_ENV!==`production`&&(function(){function t(e){if(e==null)return null;if(typeof e==`function`)return e.$$typeof===O?null:e.displayName||e.name||null;if(typeof e==`string`)return e;switch(e){case _:return`Fragment`;case y:return`Profiler`;case v:return`StrictMode`;case C:return`Suspense`;case w:return`SuspenseList`;case D:return`Activity`}if(typeof e==`object`)switch(typeof e.tag==`number`&&console.error(`Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.`),e.$$typeof){case g:return`Portal`;case x:return e.displayName||`Context`;case b:return(e._context.displayName||`Context`)+`.Consumer`;case S:var n=e.render;return e=e.displayName,e||=(e=n.displayName||n.name||``,e===``?`ForwardRef`:`ForwardRef(`+e+`)`),e;case T:return n=e.displayName||null,n===null?t(e.type)||`Memo`:n;case E:n=e._payload,e=e._init;try{return t(e(n))}catch{}}return null}function n(e){return``+e}function r(e){try{n(e);var t=!1}catch{t=!0}if(t){t=console;var r=t.error,i=typeof Symbol==`function`&&Symbol.toStringTag&&e[Symbol.toStringTag]||e.constructor.name||`Object`;return r.call(t,`The provided key is an unsupported type %s. This value must be coerced to a string before using it here.`,i),n(e)}}function i(e){if(e===_)return`<>`;if(typeof e==`object`&&e&&e.$$typeof===E)return`<...>`;try{var n=t(e);return n?`<`+n+`>`:`<...>`}catch{return`<...>`}}function a(){var e=k.A;return e===null?null:e.getOwner()}function o(){return Error(`react-stack-top-frame`)}function s(e){if(A.call(e,`key`)){var t=Object.getOwnPropertyDescriptor(e,`key`).get;if(t&&t.isReactWarning)return!1}return e.key!==void 0}function c(e,t){function n(){N||(N=!0,console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)",t))}n.isReactWarning=!0,Object.defineProperty(e,`key`,{get:n,configurable:!0})}function l(){var e=t(this.type);return P[e]||(P[e]=!0,console.error(`Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.`)),e=this.props.ref,e===void 0?null:e}function u(e,t,n,r,i,a){var o=n.ref;return e={$$typeof:h,type:e,key:t,props:n,_owner:r},(o===void 0?null:o)===null?Object.defineProperty(e,`ref`,{enumerable:!1,value:null}):Object.defineProperty(e,`ref`,{enumerable:!1,get:l}),e._store={},Object.defineProperty(e._store,`validated`,{configurable:!1,enumerable:!1,writable:!0,value:0}),Object.defineProperty(e,`_debugInfo`,{configurable:!1,enumerable:!1,writable:!0,value:null}),Object.defineProperty(e,`_debugStack`,{configurable:!1,enumerable:!1,writable:!0,value:i}),Object.defineProperty(e,`_debugTask`,{configurable:!1,enumerable:!1,writable:!0,value:a}),Object.freeze&&(Object.freeze(e.props),Object.freeze(e)),e}function d(e,n,i,o,l,d){var p=n.children;if(p!==void 0)if(o)if(j(p)){for(o=0;o<p.length;o++)f(p[o]);Object.freeze&&Object.freeze(p)}else console.error(`React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.`);else f(p);if(A.call(n,`key`)){p=t(e);var m=Object.keys(n).filter(function(e){return e!==`key`});o=0<m.length?`{key: someKey, `+m.join(`: ..., `)+`: ...}`:`{key: someKey}`,L[p+o]||(m=0<m.length?`{`+m.join(`: ..., `)+`: ...}`:`{}`,console.error(`A props object containing a "key" prop is being spread into JSX:
|
|
2
2
|
let props = %s;
|
|
3
3
|
<%s {...props} />
|
|
4
4
|
React keys must be passed directly to JSX without using spread:
|
|
5
5
|
let props = %s;
|
|
6
|
-
<%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),H=f(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=B():t.exports=V()}))(),U=`bg-blue-500 text-white`,W=new Date,G={"calendar.today":`Today`,"calendar.month":`Month`,"calendar.week":`Week`,"calendar.day":`Day`,"calendar.newEvent":`New event`,"calendar.moreEvents":`+{{count}} more`};function K(){try{let e=z();return e.t(`calendar.today`)===`calendar.today`?{t:(e,t)=>{let n=G[e]||e;if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{{${e}}}`,String(r));return n},language:`en`}:{t:e.t,language:e.language}}catch{return{t:(e,t)=>{let n=G[e]||e;if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{{${e}}}`,String(r));return n},language:`en`}}}function q({events:e=[],view:n=`month`,currentDate:r=W,locale:o=`default`,onEventClick:s,onDateClick:c,onViewChange:l,onNavigate:u,onAddClick:d,onEventDrop:f,className:p}){let[m,h]=t.useState(n),[g,_]=t.useState(r),{t:v,language:y}=K(),b=o===`default`?y:o;t.useEffect(()=>{_(r)},[r]),t.useEffect(()=>{h(n)},[n]);let x=t.useRef(l);x.current=l,t.useEffect(()=>{let e=window.matchMedia(`(max-width: 639px)`),t=e=>{e.matches&&(h(`day`),x.current?.(`day`))};return t(e),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let S=()=>{let e=new Date(g);m===`month`?e.setMonth(e.getMonth()-1):m===`week`?e.setDate(e.getDate()-7):e.setDate(e.getDate()-1),_(e),u?.(e)},C=()=>{let e=new Date(g);m===`month`?e.setMonth(e.getMonth()+1):m===`week`?e.setDate(e.getDate()+7):e.setDate(e.getDate()+1),_(e),u?.(e)},w=()=>{let e=new Date;_(e),u?.(e)},T=e=>{h(e),l?.(e)},E=()=>{if(m===`month`)return g.toLocaleDateString(b,{month:`long`,year:`numeric`});if(m===`week`){let e=J(g),t=new Date(e);return t.setDate(t.getDate()+6),`${e.toLocaleDateString(b,{month:`short`,day:`numeric`})} - ${t.toLocaleDateString(b,{month:`short`,day:`numeric`,year:`numeric`})}`}else return g.toLocaleDateString(b,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})},D=t.useRef(0),O=e=>{D.current=e.touches[0].clientX},k=e=>{let t=D.current-e.changedTouches[0].clientX;if(Math.abs(t)>50){let e=new Date(g);m===`day`?e.setDate(e.getDate()+(t>0?1:-1)):m===`week`?e.setDate(e.getDate()+(t>0?7:-7)):e.setMonth(e.getMonth()+(t>0?1:-1)),_(e),u?.(e)}},A=e=>{e&&(_(e),u?.(e))};return(0,H.jsxs)(`div`,{role:`region`,"aria-label":`Calendar`,className:(0,a.cn)(`flex flex-col h-full bg-background min-w-0 overflow-hidden`,p),children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 p-2 sm:p-4 border-b min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center bg-muted/50 rounded-lg p-1 gap-1`,children:[(0,H.jsx)(a.Button,{variant:`ghost`,size:`sm`,onClick:w,className:`h-8`,"aria-label":`Go to today`,children:v(`calendar.today`)}),(0,H.jsx)(`div`,{className:`h-4 w-px bg-border mx-1`}),(0,H.jsx)(a.Button,{variant:`ghost`,size:`icon`,"aria-label":`Previous period`,onClick:S,className:`h-8 w-8`,children:(0,H.jsx)(i.ChevronLeftIcon,{className:`h-4 w-4`})}),(0,H.jsx)(a.Button,{variant:`ghost`,size:`icon`,"aria-label":`Next period`,onClick:C,className:`h-8 w-8`,children:(0,H.jsx)(i.ChevronRightIcon,{className:`h-4 w-4`})})]}),(0,H.jsxs)(a.Popover,{children:[(0,H.jsx)(a.PopoverTrigger,{asChild:!0,children:(0,H.jsxs)(a.Button,{variant:`ghost`,"aria-label":`Current date: ${E()}`,className:(0,a.cn)(`text-base sm:text-xl font-semibold h-auto px-2 sm:px-3 py-1 hover:bg-muted/50 transition-colors`,`flex items-center gap-2`),children:[(0,H.jsx)(i.CalendarIcon,{className:`h-5 w-5 text-muted-foreground`}),(0,H.jsx)(`span`,{children:E()})]})}),(0,H.jsx)(a.PopoverContent,{className:`w-auto p-0`,align:`start`,children:(0,H.jsx)(a.Calendar,{mode:`single`,selected:g,onSelect:A,initialFocus:!0,fromYear:2e3,toYear:2050})})]})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(a.Select,{value:m,onValueChange:T,children:[(0,H.jsx)(a.SelectTrigger,{className:`w-32 bg-background`,children:(0,H.jsx)(a.SelectValue,{})}),(0,H.jsxs)(a.SelectContent,{children:[(0,H.jsx)(a.SelectItem,{value:`day`,children:v(`calendar.day`)}),(0,H.jsx)(a.SelectItem,{value:`week`,children:v(`calendar.week`)}),(0,H.jsx)(a.SelectItem,{value:`month`,children:v(`calendar.month`)})]})]}),d&&(0,H.jsxs)(a.Button,{onClick:d,size:`sm`,className:`gap-1`,children:[(0,H.jsx)(i.PlusIcon,{className:`h-4 w-4`}),v(`calendar.newEvent`)]})]})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-auto`,onTouchStart:O,onTouchEnd:k,children:[m===`month`&&(0,H.jsx)(ee,{date:g,events:e,locale:b,onEventClick:s,onDateClick:c,onEventDrop:f}),m===`week`&&(0,H.jsx)(te,{date:g,events:e,locale:b,onEventClick:s,onDateClick:c}),m===`day`&&(0,H.jsx)(ne,{date:g,events:e,onEventClick:s,onDateClick:c})]})]})}function J(e){let t=new Date(e),n=t.getDay(),r=t.getDate()-n;return t.setDate(r),t}function Y(e){let t=e.getFullYear(),n=e.getMonth(),r=new Date(t,n,1),i=new Date(t,n+1,0),a=r.getDay(),o=[];for(let e=a-1;e>=0;e--){let t=new Date(r.getTime());t.setDate(t.getDate()-(e+1)),o.push(t)}for(let e=1;e<=i.getDate();e++)o.push(new Date(t,n,e));let s=42-o.length;for(let e=1;e<=s;e++){let t=new Date(i.getTime());t.setDate(t.getDate()+e),o.push(t)}return o}function X(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Z(e,t){return t.filter(t=>{let n=new Date(t.start),r=t.end?new Date(t.end):new Date(n),i=new Date(e);i.setHours(0,0,0,0);let a=new Date(e);a.setHours(23,59,59,999);let o=new Date(n);o.setHours(0,0,0,0);let s=new Date(r);return s.setHours(23,59,59,999),i<=s&&a>=o})}function ee({date:e,events:n,locale:r=`default`,onEventClick:i,onDateClick:o,onEventDrop:s}){let c=t.useMemo(()=>Y(e),[e.getFullYear(),e.getMonth()]),l=t.useMemo(()=>new Date,[]),{t:u}=K(),d=t.useMemo(()=>{let e=new Date(2024,0,7);return Array.from({length:7},(t,n)=>{let i=new Date(e);return i.setDate(i.getDate()+n),i.toLocaleDateString(r,{weekday:`short`})})},[r]),[f,p]=t.useState(null),[m,h]=t.useState(null),g=t.useMemo(()=>{let e=new Map;for(let t of n){let n=new Date(t.start),r=t.end?new Date(t.end):new Date(n);n.setHours(0,0,0,0),r.setHours(0,0,0,0);let i=new Date(n);for(;i<=r;){let n=`${i.getFullYear()}-${i.getMonth()}-${i.getDate()}`,r=e.get(n);r?r.push(t):e.set(n,[t]),i.setDate(i.getDate()+1)}}return e},[n]),_=(e,t)=>{p(t.id),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(t.id))},v=()=>{p(null),h(null)},y=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,h(t)},b=e=>{e.currentTarget.contains(e.relatedTarget)||h(null)},x=(e,t)=>{if(e.preventDefault(),h(null),p(null),!s)return;let r=e.dataTransfer.getData(`text/plain`),i=n.find(e=>String(e.id)===r);if(!i)return;let a=new Date(i.start),o=new Date(a);o.setHours(0,0,0,0);let c=new Date(t);c.setHours(0,0,0,0);let l=c.getTime()-o.getTime();if(l===0)return;let u=new Date(a.getTime()+l),d;i.end&&(d=new Date(new Date(i.end).getTime()+l)),s(i,u,d)};return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(`div`,{role:`row`,className:`grid grid-cols-7 border-b`,children:d.map(e=>(0,H.jsx)(`div`,{role:`columnheader`,className:`p-2 text-center text-sm font-medium text-muted-foreground border-r last:border-r-0`,children:e},e))}),(0,H.jsx)(`div`,{role:`grid`,"aria-label":`Calendar grid`,className:`grid grid-cols-7 flex-1 auto-rows-fr`,children:c.map((t,n)=>{let r=`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`,c=g.get(r)||[],d=t.getMonth()===e.getMonth(),p=X(t,l);return(0,H.jsxs)(`div`,{role:`gridcell`,"aria-label":`${t.toLocaleDateString(`default`,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}${c.length>0?`, ${c.length} event${c.length>1?`s`:``}`:``}`,className:(0,a.cn)(`border-b border-r last:border-r-0 p-2 min-h-[100px] cursor-pointer hover:bg-accent/50`,!d&&`bg-muted/50 text-muted-foreground opacity-50`,m===n&&`ring-2 ring-primary`),onClick:()=>o?.(t),onDragOver:e=>y(e,n),onDragLeave:b,onDrop:e=>x(e,t),children:[(0,H.jsx)(`div`,{className:(0,a.cn)(`text-sm font-medium mb-2`,p&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-6 w-6`),...p?{"aria-current":`date`}:{},children:t.getDate()}),(0,H.jsxs)(`div`,{className:`space-y-1`,children:[c.slice(0,3).map(e=>(0,H.jsx)(`div`,{role:`button`,title:e.title,"aria-label":e.title,draggable:!!s,onDragStart:t=>_(t,e),onDragEnd:v,className:(0,a.cn)(`text-xs px-2 py-1 rounded truncate cursor-pointer hover:opacity-80`,e.color?.startsWith(`#`)?`text-white`:e.color||U,f===e.id&&`opacity-50`),style:e.color&&e.color.startsWith(`#`)?{backgroundColor:e.color}:void 0,onClick:t=>{t.stopPropagation(),i?.(e)},children:e.title},e.id)),c.length>3&&(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground px-2`,children:u(`calendar.moreEvents`,{count:c.length-3})})]})]},n)})})]})}function te({date:e,events:n,locale:r=`default`,onEventClick:i,onDateClick:o}){let s=t.useRef(null),c=e=>{o&&(s.current=setTimeout(()=>{o(e)},500))},l=()=>{s.current&&=(clearTimeout(s.current),null)},u=J(e),d=Array.from({length:7},(e,t)=>{let n=new Date(u);return n.setDate(n.getDate()+t),n}),f=new Date;return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(`div`,{className:`grid grid-cols-7 border-b`,children:d.map(e=>{let t=X(e,f);return(0,H.jsxs)(`div`,{className:`p-3 text-center border-r last:border-r-0`,children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:e.toLocaleDateString(r,{weekday:`short`})}),(0,H.jsx)(`div`,{className:(0,a.cn)(`text-lg font-semibold mt-1`,t&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-8 w-8`),children:e.getDate()})]},e.toISOString())})}),(0,H.jsx)(`div`,{role:`grid`,className:`grid grid-cols-7 flex-1`,children:d.map(e=>{let t=Z(e,n);return(0,H.jsx)(`div`,{role:`gridcell`,"aria-label":`${e.toLocaleDateString(`default`,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}${t.length>0?`, ${t.length} event${t.length>1?`s`:``}`:``}`,className:`border-r last:border-r-0 p-2 min-h-[400px] cursor-pointer hover:bg-accent/50`,onClick:()=>o?.(e),onTouchStart:()=>c(e),onTouchEnd:l,children:(0,H.jsx)(`div`,{className:`space-y-2`,children:t.map(e=>(0,H.jsxs)(`div`,{role:`button`,title:e.title,"aria-label":e.title,className:(0,a.cn)(`text-xs sm:text-sm px-2 sm:px-3 py-1.5 sm:py-2 rounded cursor-pointer hover:opacity-80`,e.color?.startsWith(`#`)?`text-white`:e.color||U),style:e.color&&e.color.startsWith(`#`)?{backgroundColor:e.color}:void 0,onClick:t=>{t.stopPropagation(),i?.(e)},children:[(0,H.jsx)(`div`,{className:`font-medium truncate`,children:e.title}),!e.allDay&&(0,H.jsx)(`div`,{className:`text-xs opacity-90 mt-1`,children:e.start.toLocaleTimeString(`default`,{hour:`numeric`,minute:`2-digit`})})]},e.id))})},e.toISOString())})})]})}function ne({date:e,events:n,onEventClick:r,onDateClick:i}){let o=Z(e,n),s=Array.from({length:24},(e,t)=>t),c=t.useRef(null),l=t=>{i&&(c.current=setTimeout(()=>{let n=new Date(e);n.setHours(t,0,0,0),i(n)},500))},u=()=>{c.current&&=(clearTimeout(c.current),null)};return(0,H.jsx)(`div`,{className:`flex flex-col h-full`,children:(0,H.jsx)(`div`,{role:`list`,className:`flex-1 overflow-auto`,children:s.map(e=>{let t=o.filter(t=>t.allDay?e===0:t.start.getHours()===e);return(0,H.jsxs)(`div`,{role:`listitem`,className:`flex border-b min-h-[60px]`,children:[(0,H.jsx)(`div`,{className:`w-20 p-2 text-sm text-muted-foreground border-r`,children:e===0?`12 AM`:e<12?`${e} AM`:e===12?`12 PM`:`${e-12} PM`}),(0,H.jsx)(`div`,{className:`flex-1 p-2 space-y-2`,onTouchStart:()=>l(e),onTouchEnd:u,children:t.map(e=>(0,H.jsxs)(`div`,{title:e.title,"aria-label":e.title,className:(0,a.cn)(`px-2 sm:px-3 py-1.5 sm:py-2 rounded cursor-pointer hover:opacity-80`,e.color?.startsWith(`#`)?`text-white`:e.color||U),style:e.color&&e.color.startsWith(`#`)?{backgroundColor:e.color}:void 0,onClick:()=>r?.(e),children:[(0,H.jsx)(`div`,{className:`font-medium truncate`,children:e.title}),!e.allDay&&(0,H.jsxs)(`div`,{className:`text-xs opacity-90 mt-1`,children:[e.start.toLocaleTimeString(`default`,{hour:`numeric`,minute:`2-digit`}),e.end&&` - ${e.end.toLocaleTimeString(`default`,{hour:`numeric`,minute:`2-digit`})}`]})]},e.id))})]},e)})})})}function re(e){let{onRefresh:n,threshold:r=80,enabled:i=!0}=e,a=(0,t.useRef)(null),[o,s]=(0,t.useState)(!1),[c,l]=(0,t.useState)(0),u=(0,t.useRef)(0),d=(0,t.useCallback)(e=>{if(!i||o)return;let t=a.current;t&&t.scrollTop===0&&(u.current=e.touches[0].clientY)},[i,o]),f=(0,t.useCallback)(e=>{if(!i||o||!u.current)return;let t=e.touches[0].clientY-u.current;t>0&&l(Math.min(t,r*1.5))},[i,o,r]),p=(0,t.useCallback)(async()=>{if(!i||o)return;let e=c;if(l(0),u.current=0,e>=r){s(!0);try{await n()}finally{s(!1)}}},[i,o,c,r,n]);return(0,t.useEffect)(()=>{let e=a.current;if(!(!e||!i))return e.addEventListener(`touchstart`,d,{passive:!0}),e.addEventListener(`touchmove`,f,{passive:!0}),e.addEventListener(`touchend`,p,{passive:!0}),()=>{e.removeEventListener(`touchstart`,d),e.removeEventListener(`touchmove`,f),e.removeEventListener(`touchend`,p)}},[d,f,p,i]),{ref:a,isRefreshing:o,pullDistance:c}}var ie=(0,t.createContext)(null);ie.displayName=`MobileContext`;function ae(e){return`data`in e&&e.data?e.data:`staticData`in e&&e.staticData?{provider:`value`,items:e.staticData}:e.objectName?{provider:`object`,object:e.objectName}:null}function oe(e){if(e){if(typeof e==`string`){let t=e.split(` `),n=t[0],r=t[1]?.toLowerCase()===`desc`?`desc`:`asc`;return{[n]:r}}if(Array.isArray(e))return e.reduce((e,t)=>(t.field&&t.order&&(e[t.field]=t.order),e),{})}}function se(e){return`filter`in e&&e.filter&&typeof e.filter==`object`&&`calendar`in e.filter?e.filter.calendar:e.calendar?e.calendar:e.startDateField||e.dateField?{startDateField:e.startDateField||e.dateField,endDateField:e.endDateField||e.endField,titleField:e.titleField||`name`,colorField:e.colorField,allDayField:e.allDayField}:null}var Q=({schema:e,dataSource:i,className:o,data:s,loading:c,onEventClick:l,onRowClick:u,onDateClick:d,onNavigate:f,onViewChange:p,onEventDrop:m,locale:h})=>{let g=Array.isArray(s),[_,v]=(0,t.useState)(g?s:[]),[y,b]=(0,t.useState)(g?c??!1:!0),[x,S]=(0,t.useState)(null),[C,w]=(0,t.useState)(null),[T,E]=(0,t.useState)(new Date),[D,O]=(0,t.useState)(`month`),[k,A]=(0,t.useState)(0),{ref:j,isRefreshing:M,pullDistance:N}=re({onRefresh:(0,t.useCallback)(async()=>{A(e=>e+1)},[]),enabled:!!i&&!!e.objectName}),P=(0,t.useMemo)(()=>ae(e),[e.data,e.staticData,e.objectName]),F=(0,t.useMemo)(()=>se(e),[e.filter,e.calendar,e.dateField,e.endField,e.titleField,e.colorField]),I=P?.provider===`value`,L=(0,t.useRef)(null);L.current=C,(0,t.useEffect)(()=>{g&&v(s)},[s,g]),(0,t.useEffect)(()=>{g&&c!==void 0&&b(c)},[c,g]),(0,t.useEffect)(()=>{if(g)return;let t=!0;return(async()=>{try{if(!t)return;if(b(!0),I&&P?.provider===`value`){t&&(v(P.items),b(!1));return}if(!i||typeof i.find!=`function`)throw Error(`DataSource required for object/api providers`);if(P?.provider===`object`){let r=P.object,a=(0,n.buildExpandFields)(L.current?.fields),o=(0,n.extractRecords)(await i.find(r,{$filter:e.filter,$orderby:oe(e.sort),...a.length>0?{$expand:a}:{}}));t&&v(o)}else P?.provider===`api`&&(console.warn(`API provider not yet implemented for ObjectCalendar`),t&&v([]));t&&b(!1)}catch(e){console.error(`[ObjectCalendar] Error fetching data:`,e),t&&(S(e),b(!1))}})(),()=>{t=!1}},[g,P,i,I,e.filter,e.sort,k]),(0,t.useEffect)(()=>{!I&&i&&(async()=>{try{if(!i)return;let t=P?.provider===`object`?P.object:e.objectName;if(!t)return;w(await i.getObjectSchema(t))}catch(e){console.error(`Failed to fetch object schema:`,e)}})()},[e.objectName,i,I,P]);let R=(0,t.useMemo)(()=>{if(!F||!_.length)return[];let{startDateField:e,endDateField:t,titleField:n,colorField:r}=F;return _.map((i,a)=>{let o=i[e],s=t?i[t]:null,c=i[n]||`Untitled`,l=r?i[r]:void 0;return{id:i.id||i._id||`event-${a}`,title:c,start:o?new Date(o):new Date,end:s?new Date(s):void 0,color:l,allDay:!s,data:i}}).filter(e=>!isNaN(e.start.getTime()))},[_,F]);(0,t.useCallback)(()=>{d?.(new Date)},[d]);let z=(0,r.useNavigationOverlay)({navigation:e.navigation,objectName:e.objectName,onRowClick:u});return y?(0,H.jsx)(`div`,{className:o,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`Loading calendar...`})})}):x?(0,H.jsx)(`div`,{className:o,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,H.jsxs)(`div`,{className:`text-destructive`,children:[`Error: `,x.message]})})}):F?(0,H.jsxs)(`div`,{ref:j,className:o,children:[N>0&&(0,H.jsx)(`div`,{className:`flex items-center justify-center text-xs text-muted-foreground`,style:{height:N},children:M?`Refreshing…`:`Pull to refresh`}),(0,H.jsx)(`div`,{className:`border rounded-lg bg-background h-[calc(100vh-120px)] sm:h-[calc(100vh-160px)] md:h-[calc(100vh-200px)] min-h-[400px] sm:min-h-[600px]`,children:(0,H.jsx)(q,{events:R,currentDate:T,view:e.defaultView||`month`,locale:h,onEventClick:e=>{z.handleClick(e.data),l?.(e.data)},onDateClick:d,onNavigate:e=>{E(e),f?.(e)},onViewChange:e=>{O(e),p?.(e)},onAddClick:void 0,onEventDrop:m?(e,t,n)=>{m(e.data,t,n)}:void 0})}),z.isOverlay&&(0,H.jsx)(a.NavigationOverlay,{...z,title:`Event Details`,children:e=>(0,H.jsx)(`div`,{className:`space-y-3`,children:Object.entries(e).map(([e,t])=>(0,H.jsxs)(`div`,{className:`flex flex-col`,children:[(0,H.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:e.replace(/_/g,` `)}),(0,H.jsx)(`span`,{className:`text-sm`,children:String(t??`—`)})]},e))})})]}):(0,H.jsx)(`div`,{className:o,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`Calendar configuration required. Please specify startDateField and titleField.`})})})};n.ComponentRegistry.register(`calendar-view`,({schema:e,className:n,onAction:r,...i})=>{let a=t.default.useMemo(()=>!e.data||!Array.isArray(e.data)?[]:e.data.map((t,n)=>{let r=e.titleField||`title`,i=e.startDateField||`start`,a=e.endDateField||`end`,o=e.colorField||`color`,s=e.allDayField||`allDay`;return{id:t.id||t._id||n,title:t[r]||`Untitled Event`,start:new Date(t[i]),end:t[a]?new Date(t[a]):void 0,allDay:t[s],color:t[o],data:t}}),[e.data,e.titleField,e.startDateField,e.endDateField,e.colorField,e.allDayField]);return(0,H.jsx)(q,{className:n,events:a,onEventClick:e=>{r?.({type:`event-click`,payload:e})},...i})},{namespace:`plugin-calendar`,label:`Calendar View`,inputs:[{name:`data`,type:`array`,label:`Data`,description:`Array of record objects to display as events`},{name:`titleField`,type:`string`,label:`Title Field`,defaultValue:`title`,description:`Field name to use for event title`},{name:`startDateField`,type:`string`,label:`Start Date Field`,defaultValue:`start`,description:`Field name for event start date`},{name:`endDateField`,type:`string`,label:`End Date Field`,defaultValue:`end`,description:`Field name for event end date (optional)`},{name:`allDayField`,type:`string`,label:`All Day Field`,defaultValue:`allDay`,description:`Field name for all-day flag`},{name:`colorField`,type:`string`,label:`Color Field`,defaultValue:`color`,description:`Field name for event color`},{name:`colorMapping`,type:`object`,label:`Color Mapping`,description:`Map field values to colors (e.g., {meeting: "blue", deadline: "red"})`},{name:`view`,type:`enum`,enum:[`month`,`week`,`day`],defaultValue:`month`,label:`View Mode`,description:`Calendar view mode (month, week, or day)`},{name:`currentDate`,type:`string`,label:`Current Date`,description:`ISO date string for initial calendar date`},{name:`allowCreate`,type:`boolean`,label:`Allow Create`,defaultValue:!1,description:`Allow creating events by clicking on dates`},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{view:`month`,titleField:`title`,startDateField:`start`,endDateField:`end`,allDayField:`allDay`,colorField:`color`,allowCreate:!1,data:[{id:1,title:`Team Meeting`,start:new Date(new Date().setHours(10,0,0,0)).toISOString(),end:new Date(new Date().setHours(11,0,0,0)).toISOString(),color:`#3b82f6`,allDay:!1},{id:2,title:`Project Deadline`,start:new Date(new Date().setDate(new Date().getDate()+3)).toISOString(),color:`#ef4444`,allDay:!0},{id:3,title:`Conference`,start:new Date(new Date().setDate(new Date().getDate()+7)).toISOString(),end:new Date(new Date().setDate(new Date().getDate()+9)).toISOString(),color:`#10b981`,allDay:!0}],className:`h-[600px] border rounded-lg`}});var $=({schema:e,...t})=>{let{dataSource:n}=(0,r.useSchemaContext)()||{};return(0,H.jsx)(Q,{schema:e,dataSource:n,...t})};n.ComponentRegistry.register(`object-calendar`,$,{namespace:`plugin-calendar`,label:`Object Calendar`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`calendar`,type:`object`,label:`Calendar Config`,description:`startDateField, endDateField, titleField, colorField`}]}),n.ComponentRegistry.register(`calendar`,$,{namespace:`view`,label:`Calendar View`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`calendar`,type:`object`,label:`Calendar Config`,description:`startDateField, endDateField, titleField, colorField`}]}),e.CalendarView=q,e.ObjectCalendar=Q,e.ObjectCalendarRenderer=$});
|
|
6
|
+
<%s key={someKey} {...props} />`,o,p,m,p),L[p+o]=!0)}if(p=null,i!==void 0&&(r(i),p=``+i),s(n)&&(r(n.key),p=``+n.key),`key`in n)for(var h in i={},n)h!==`key`&&(i[h]=n[h]);else i=n;return p&&c(i,typeof e==`function`?e.displayName||e.name||`Unknown`:e),u(e,p,i,a(),l,d)}function f(e){p(e)?e._store&&(e._store.validated=1):typeof e==`object`&&e&&e.$$typeof===E&&(e._payload.status===`fulfilled`?p(e._payload.value)&&e._payload.value._store&&(e._payload.value._store.validated=1):e._store&&(e._store.validated=1))}function p(e){return typeof e==`object`&&!!e&&e.$$typeof===h}var m=require(`react`),h=Symbol.for(`react.transitional.element`),g=Symbol.for(`react.portal`),_=Symbol.for(`react.fragment`),v=Symbol.for(`react.strict_mode`),y=Symbol.for(`react.profiler`),b=Symbol.for(`react.consumer`),x=Symbol.for(`react.context`),S=Symbol.for(`react.forward_ref`),C=Symbol.for(`react.suspense`),w=Symbol.for(`react.suspense_list`),T=Symbol.for(`react.memo`),E=Symbol.for(`react.lazy`),D=Symbol.for(`react.activity`),O=Symbol.for(`react.client.reference`),k=m.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,A=Object.prototype.hasOwnProperty,j=Array.isArray,M=console.createTask?console.createTask:function(){return null};m={react_stack_bottom_frame:function(e){return e()}};var N,P={},F=m.react_stack_bottom_frame.bind(m,o)(),I=M(i(o)),L={};e.Fragment=_,e.jsx=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!1,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)},e.jsxs=function(e,t,n){var r=1e4>k.recentlyCreatedOwnerStacks++;return d(e,t,n,!0,r?Error(`react-stack-top-frame`):F,r?M(i(e)):I)}})()})),H=f(((e,t)=>{process.env.NODE_ENV===`production`?t.exports=B():t.exports=V()}))(),U=`bg-blue-500 text-white`,W=new Date,G={"calendar.today":`Today`,"calendar.month":`Month`,"calendar.week":`Week`,"calendar.day":`Day`,"calendar.newEvent":`New event`,"calendar.moreEvents":`+{{count}} more`};function K(){try{let e=z();return e.t(`calendar.today`)===`calendar.today`?{t:(e,t)=>{let n=G[e]||e;if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{{${e}}}`,String(r));return n},language:`en`}:{t:e.t,language:e.language}}catch{return{t:(e,t)=>{let n=G[e]||e;if(t)for(let[e,r]of Object.entries(t))n=n.replace(`{{${e}}}`,String(r));return n},language:`en`}}}function q({events:e=[],view:n=`month`,currentDate:r=W,locale:o=`default`,onEventClick:s,onDateClick:c,onViewChange:l,onNavigate:u,onAddClick:d,onEventDrop:f,className:p}){let[m,h]=t.useState(n),[g,_]=t.useState(r),{t:v,language:y}=K(),b=o===`default`?y:o;t.useEffect(()=>{_(r)},[r]),t.useEffect(()=>{h(n)},[n]);let x=t.useRef(l);x.current=l,t.useEffect(()=>{let e=window.matchMedia(`(max-width: 639px)`),t=e=>{e.matches&&(h(`day`),x.current?.(`day`))};return t(e),e.addEventListener(`change`,t),()=>e.removeEventListener(`change`,t)},[]);let S=()=>{let e=new Date(g);m===`month`?e.setMonth(e.getMonth()-1):m===`week`?e.setDate(e.getDate()-7):e.setDate(e.getDate()-1),_(e),u?.(e)},C=()=>{let e=new Date(g);m===`month`?e.setMonth(e.getMonth()+1):m===`week`?e.setDate(e.getDate()+7):e.setDate(e.getDate()+1),_(e),u?.(e)},w=()=>{let e=new Date;_(e),u?.(e)},T=e=>{h(e),l?.(e)},E=()=>{if(m===`month`)return g.toLocaleDateString(b,{month:`long`,year:`numeric`});if(m===`week`){let e=J(g),t=new Date(e);return t.setDate(t.getDate()+6),`${e.toLocaleDateString(b,{month:`short`,day:`numeric`})} - ${t.toLocaleDateString(b,{month:`short`,day:`numeric`,year:`numeric`})}`}else return g.toLocaleDateString(b,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})},D=t.useRef(0);return(0,H.jsxs)(`div`,{role:`region`,"aria-label":`Calendar`,className:(0,a.cn)(`flex flex-col h-full bg-background min-w-0 overflow-hidden`,p),children:[(0,H.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 p-2 sm:p-4 border-b min-w-0`,children:[(0,H.jsxs)(`div`,{className:`flex items-center gap-4`,children:[(0,H.jsxs)(`div`,{className:`flex items-center bg-muted/50 rounded-lg p-1 gap-1`,children:[(0,H.jsx)(a.Button,{variant:`ghost`,size:`sm`,onClick:w,className:`h-8`,"aria-label":`Go to today`,children:v(`calendar.today`)}),(0,H.jsx)(`div`,{className:`h-4 w-px bg-border mx-1`}),(0,H.jsx)(a.Button,{variant:`ghost`,size:`icon`,"aria-label":`Previous period`,onClick:S,className:`h-8 w-8`,children:(0,H.jsx)(i.ChevronLeftIcon,{className:`h-4 w-4`})}),(0,H.jsx)(a.Button,{variant:`ghost`,size:`icon`,"aria-label":`Next period`,onClick:C,className:`h-8 w-8`,children:(0,H.jsx)(i.ChevronRightIcon,{className:`h-4 w-4`})})]}),(0,H.jsxs)(a.Popover,{children:[(0,H.jsx)(a.PopoverTrigger,{asChild:!0,children:(0,H.jsxs)(a.Button,{variant:`ghost`,"aria-label":`Current date: ${E()}`,className:(0,a.cn)(`text-base sm:text-xl font-semibold h-auto px-2 sm:px-3 py-1 hover:bg-muted/50 transition-colors`,`flex items-center gap-2`),children:[(0,H.jsx)(i.CalendarIcon,{className:`h-5 w-5 text-muted-foreground`}),(0,H.jsx)(`span`,{children:E()})]})}),(0,H.jsx)(a.PopoverContent,{className:`w-auto p-0`,align:`start`,children:(0,H.jsx)(a.Calendar,{mode:`single`,selected:g,onSelect:e=>{e&&(_(e),u?.(e))},initialFocus:!0,fromYear:2e3,toYear:2050})})]})]}),(0,H.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,H.jsxs)(a.Select,{value:m,onValueChange:T,children:[(0,H.jsx)(a.SelectTrigger,{className:`w-32 bg-background`,children:(0,H.jsx)(a.SelectValue,{})}),(0,H.jsxs)(a.SelectContent,{children:[(0,H.jsx)(a.SelectItem,{value:`day`,children:v(`calendar.day`)}),(0,H.jsx)(a.SelectItem,{value:`week`,children:v(`calendar.week`)}),(0,H.jsx)(a.SelectItem,{value:`month`,children:v(`calendar.month`)})]})]}),d&&(0,H.jsxs)(a.Button,{onClick:d,size:`sm`,className:`gap-1`,children:[(0,H.jsx)(i.PlusIcon,{className:`h-4 w-4`}),v(`calendar.newEvent`)]})]})]}),(0,H.jsxs)(`div`,{className:`flex-1 overflow-auto`,onTouchStart:e=>{D.current=e.touches[0].clientX},onTouchEnd:e=>{let t=D.current-e.changedTouches[0].clientX;if(Math.abs(t)>50){let e=new Date(g);m===`day`?e.setDate(e.getDate()+(t>0?1:-1)):m===`week`?e.setDate(e.getDate()+(t>0?7:-7)):e.setMonth(e.getMonth()+(t>0?1:-1)),_(e),u?.(e)}},children:[m===`month`&&(0,H.jsx)(ee,{date:g,events:e,locale:b,onEventClick:s,onDateClick:c,onEventDrop:f}),m===`week`&&(0,H.jsx)(te,{date:g,events:e,locale:b,onEventClick:s,onDateClick:c}),m===`day`&&(0,H.jsx)(ne,{date:g,events:e,onEventClick:s,onDateClick:c})]})]})}function J(e){let t=new Date(e),n=t.getDay(),r=t.getDate()-n;return t.setDate(r),t}function Y(e){let t=e.getFullYear(),n=e.getMonth(),r=new Date(t,n,1),i=new Date(t,n+1,0),a=r.getDay(),o=[];for(let e=a-1;e>=0;e--){let t=new Date(r.getTime());t.setDate(t.getDate()-(e+1)),o.push(t)}for(let e=1;e<=i.getDate();e++)o.push(new Date(t,n,e));let s=42-o.length;for(let e=1;e<=s;e++){let t=new Date(i.getTime());t.setDate(t.getDate()+e),o.push(t)}return o}function X(e,t){return e.getFullYear()===t.getFullYear()&&e.getMonth()===t.getMonth()&&e.getDate()===t.getDate()}function Z(e,t){return t.filter(t=>{let n=new Date(t.start),r=t.end?new Date(t.end):new Date(n),i=new Date(e);i.setHours(0,0,0,0);let a=new Date(e);a.setHours(23,59,59,999);let o=new Date(n);o.setHours(0,0,0,0);let s=new Date(r);return s.setHours(23,59,59,999),i<=s&&a>=o})}function ee({date:e,events:n,locale:r=`default`,onEventClick:i,onDateClick:o,onEventDrop:s}){let c=t.useMemo(()=>Y(e),[e.getFullYear(),e.getMonth()]),l=t.useMemo(()=>new Date,[]),{t:u}=K(),d=t.useMemo(()=>{let e=new Date(2024,0,7);return Array.from({length:7},(t,n)=>{let i=new Date(e);return i.setDate(i.getDate()+n),i.toLocaleDateString(r,{weekday:`short`})})},[r]),[f,p]=t.useState(null),[m,h]=t.useState(null),g=t.useMemo(()=>{let e=new Map;for(let t of n){let n=new Date(t.start),r=t.end?new Date(t.end):new Date(n);n.setHours(0,0,0,0),r.setHours(0,0,0,0);let i=new Date(n);for(;i<=r;){let n=`${i.getFullYear()}-${i.getMonth()}-${i.getDate()}`,r=e.get(n);r?r.push(t):e.set(n,[t]),i.setDate(i.getDate()+1)}}return e},[n]),_=(e,t)=>{p(t.id),e.dataTransfer.effectAllowed=`move`,e.dataTransfer.setData(`text/plain`,String(t.id))},v=()=>{p(null),h(null)},y=(e,t)=>{e.preventDefault(),e.dataTransfer.dropEffect=`move`,h(t)},b=e=>{e.currentTarget.contains(e.relatedTarget)||h(null)},x=(e,t)=>{if(e.preventDefault(),h(null),p(null),!s)return;let r=e.dataTransfer.getData(`text/plain`),i=n.find(e=>String(e.id)===r);if(!i)return;let a=new Date(i.start),o=new Date(a);o.setHours(0,0,0,0);let c=new Date(t);c.setHours(0,0,0,0);let l=c.getTime()-o.getTime();if(l===0)return;let u=new Date(a.getTime()+l),d;i.end&&(d=new Date(new Date(i.end).getTime()+l)),s(i,u,d)};return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(`div`,{role:`row`,className:`grid grid-cols-7 border-b`,children:d.map(e=>(0,H.jsx)(`div`,{role:`columnheader`,className:`p-2 text-center text-sm font-medium text-muted-foreground border-r last:border-r-0`,children:e},e))}),(0,H.jsx)(`div`,{role:`grid`,"aria-label":`Calendar grid`,className:`grid grid-cols-7 flex-1 auto-rows-fr`,children:c.map((t,n)=>{let r=`${t.getFullYear()}-${t.getMonth()}-${t.getDate()}`,c=g.get(r)||[],d=t.getMonth()===e.getMonth(),p=X(t,l);return(0,H.jsxs)(`div`,{role:`gridcell`,"aria-label":`${t.toLocaleDateString(`default`,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}${c.length>0?`, ${c.length} event${c.length>1?`s`:``}`:``}`,className:(0,a.cn)(`border-b border-r last:border-r-0 p-2 min-h-[100px] cursor-pointer hover:bg-accent/50`,!d&&`bg-muted/50 text-muted-foreground opacity-50`,m===n&&`ring-2 ring-primary`),onClick:()=>o?.(t),onDragOver:e=>y(e,n),onDragLeave:b,onDrop:e=>x(e,t),children:[(0,H.jsx)(`div`,{className:(0,a.cn)(`text-sm font-medium mb-2`,p&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-6 w-6`),...p?{"aria-current":`date`}:{},children:t.getDate()}),(0,H.jsxs)(`div`,{className:`space-y-1`,children:[c.slice(0,3).map(e=>(0,H.jsx)(`div`,{role:`button`,title:e.title,"aria-label":e.title,draggable:!!s,onDragStart:t=>_(t,e),onDragEnd:v,className:(0,a.cn)(`text-xs px-2 py-1 rounded truncate cursor-pointer hover:opacity-80`,e.color?.startsWith(`#`)?`text-white`:e.color||U,f===e.id&&`opacity-50`),style:e.color&&e.color.startsWith(`#`)?{backgroundColor:e.color}:void 0,onClick:t=>{t.stopPropagation(),i?.(e)},children:e.title},e.id)),c.length>3&&(0,H.jsx)(`div`,{className:`text-xs text-muted-foreground px-2`,children:u(`calendar.moreEvents`,{count:c.length-3})})]})]},n)})})]})}function te({date:e,events:n,locale:r=`default`,onEventClick:i,onDateClick:o}){let s=t.useRef(null),c=e=>{o&&(s.current=setTimeout(()=>{o(e)},500))},l=()=>{s.current&&=(clearTimeout(s.current),null)},u=J(e),d=Array.from({length:7},(e,t)=>{let n=new Date(u);return n.setDate(n.getDate()+t),n}),f=new Date;return(0,H.jsxs)(`div`,{className:`flex flex-col h-full`,children:[(0,H.jsx)(`div`,{className:`grid grid-cols-7 border-b`,children:d.map(e=>{let t=X(e,f);return(0,H.jsxs)(`div`,{className:`p-3 text-center border-r last:border-r-0`,children:[(0,H.jsx)(`div`,{className:`text-sm font-medium text-muted-foreground`,children:e.toLocaleDateString(r,{weekday:`short`})}),(0,H.jsx)(`div`,{className:(0,a.cn)(`text-lg font-semibold mt-1`,t&&`inline-flex items-center justify-center rounded-full bg-primary text-primary-foreground h-8 w-8`),children:e.getDate()})]},e.toISOString())})}),(0,H.jsx)(`div`,{role:`grid`,className:`grid grid-cols-7 flex-1`,children:d.map(e=>{let t=Z(e,n);return(0,H.jsx)(`div`,{role:`gridcell`,"aria-label":`${e.toLocaleDateString(`default`,{weekday:`long`,month:`long`,day:`numeric`,year:`numeric`})}${t.length>0?`, ${t.length} event${t.length>1?`s`:``}`:``}`,className:`border-r last:border-r-0 p-2 min-h-[400px] cursor-pointer hover:bg-accent/50`,onClick:()=>o?.(e),onTouchStart:()=>c(e),onTouchEnd:l,children:(0,H.jsx)(`div`,{className:`space-y-2`,children:t.map(e=>(0,H.jsxs)(`div`,{role:`button`,title:e.title,"aria-label":e.title,className:(0,a.cn)(`text-xs sm:text-sm px-2 sm:px-3 py-1.5 sm:py-2 rounded cursor-pointer hover:opacity-80`,e.color?.startsWith(`#`)?`text-white`:e.color||U),style:e.color&&e.color.startsWith(`#`)?{backgroundColor:e.color}:void 0,onClick:t=>{t.stopPropagation(),i?.(e)},children:[(0,H.jsx)(`div`,{className:`font-medium truncate`,children:e.title}),!e.allDay&&(0,H.jsx)(`div`,{className:`text-xs opacity-90 mt-1`,children:e.start.toLocaleTimeString(`default`,{hour:`numeric`,minute:`2-digit`})})]},e.id))})},e.toISOString())})})]})}function ne({date:e,events:n,onEventClick:r,onDateClick:i}){let o=Z(e,n),s=Array.from({length:24},(e,t)=>t),c=t.useRef(null),l=t=>{i&&(c.current=setTimeout(()=>{let n=new Date(e);n.setHours(t,0,0,0),i(n)},500))},u=()=>{c.current&&=(clearTimeout(c.current),null)};return(0,H.jsx)(`div`,{className:`flex flex-col h-full`,children:(0,H.jsx)(`div`,{role:`list`,className:`flex-1 overflow-auto`,children:s.map(e=>{let t=o.filter(t=>t.allDay?e===0:t.start.getHours()===e);return(0,H.jsxs)(`div`,{role:`listitem`,className:`flex border-b min-h-[60px]`,children:[(0,H.jsx)(`div`,{className:`w-20 p-2 text-sm text-muted-foreground border-r`,children:e===0?`12 AM`:e<12?`${e} AM`:e===12?`12 PM`:`${e-12} PM`}),(0,H.jsx)(`div`,{className:`flex-1 p-2 space-y-2`,onTouchStart:()=>l(e),onTouchEnd:u,children:t.map(e=>(0,H.jsxs)(`div`,{title:e.title,"aria-label":e.title,className:(0,a.cn)(`px-2 sm:px-3 py-1.5 sm:py-2 rounded cursor-pointer hover:opacity-80`,e.color?.startsWith(`#`)?`text-white`:e.color||U),style:e.color&&e.color.startsWith(`#`)?{backgroundColor:e.color}:void 0,onClick:()=>r?.(e),children:[(0,H.jsx)(`div`,{className:`font-medium truncate`,children:e.title}),!e.allDay&&(0,H.jsxs)(`div`,{className:`text-xs opacity-90 mt-1`,children:[e.start.toLocaleTimeString(`default`,{hour:`numeric`,minute:`2-digit`}),e.end&&` - ${e.end.toLocaleTimeString(`default`,{hour:`numeric`,minute:`2-digit`})}`]})]},e.id))})]},e)})})})}function re(e){let{onRefresh:n,threshold:r=80,enabled:i=!0}=e,a=(0,t.useRef)(null),[o,s]=(0,t.useState)(!1),[c,l]=(0,t.useState)(0),u=(0,t.useRef)(0),d=(0,t.useCallback)(e=>{if(!i||o)return;let t=a.current;t&&t.scrollTop===0&&(u.current=e.touches[0].clientY)},[i,o]),f=(0,t.useCallback)(e=>{if(!i||o||!u.current)return;let t=e.touches[0].clientY-u.current;t>0&&l(Math.min(t,r*1.5))},[i,o,r]),p=(0,t.useCallback)(async()=>{if(!i||o)return;let e=c;if(l(0),u.current=0,e>=r){s(!0);try{await n()}finally{s(!1)}}},[i,o,c,r,n]);return(0,t.useEffect)(()=>{let e=a.current;if(!(!e||!i))return e.addEventListener(`touchstart`,d,{passive:!0}),e.addEventListener(`touchmove`,f,{passive:!0}),e.addEventListener(`touchend`,p,{passive:!0}),()=>{e.removeEventListener(`touchstart`,d),e.removeEventListener(`touchmove`,f),e.removeEventListener(`touchend`,p)}},[d,f,p,i]),{ref:a,isRefreshing:o,pullDistance:c}}var ie=(0,t.createContext)(null);ie.displayName=`MobileContext`;function ae(e){return`data`in e&&e.data?e.data:`staticData`in e&&e.staticData?{provider:`value`,items:e.staticData}:e.objectName?{provider:`object`,object:e.objectName}:null}function oe(e){if(e){if(typeof e==`string`){let t=e.split(` `),n=t[0],r=t[1]?.toLowerCase()===`desc`?`desc`:`asc`;return{[n]:r}}if(Array.isArray(e))return e.reduce((e,t)=>(t.field&&t.order&&(e[t.field]=t.order),e),{})}}function se(e){return`filter`in e&&e.filter&&typeof e.filter==`object`&&`calendar`in e.filter?e.filter.calendar:e.calendar?e.calendar:e.startDateField||e.dateField?{startDateField:e.startDateField||e.dateField,endDateField:e.endDateField||e.endField,titleField:e.titleField||`name`,colorField:e.colorField,allDayField:e.allDayField}:null}var Q=({schema:e,dataSource:i,className:o,data:s,loading:c,onEventClick:l,onRowClick:u,onDateClick:d,onNavigate:f,onViewChange:p,onEventDrop:m,locale:h})=>{let g=Array.isArray(s),[_,v]=(0,t.useState)(g?s:[]),[y,b]=(0,t.useState)(g?c??!1:!0),[x,S]=(0,t.useState)(null),[C,w]=(0,t.useState)(null),[T,E]=(0,t.useState)(new Date),[D,O]=(0,t.useState)(`month`),[k,A]=(0,t.useState)(0);(0,t.useEffect)(()=>{if(!g&&!(!i?.onMutation||!e.objectName))return i.onMutation(t=>{t.resource===e.objectName&&A(e=>e+1)})},[i,e.objectName,g]);let{ref:j,isRefreshing:M,pullDistance:N}=re({onRefresh:(0,t.useCallback)(async()=>{A(e=>e+1)},[]),enabled:!!i&&!!e.objectName}),P=(0,t.useMemo)(()=>ae(e),[e.data,e.staticData,e.objectName]),F=(0,t.useMemo)(()=>se(e),[e.filter,e.calendar,e.dateField,e.endField,e.titleField,e.colorField]),I=P?.provider===`value`,L=(0,t.useRef)(null);L.current=C,(0,t.useEffect)(()=>{g&&v(s)},[s,g]),(0,t.useEffect)(()=>{g&&c!==void 0&&b(c)},[c,g]),(0,t.useEffect)(()=>{if(g)return;let t=!0;return(async()=>{try{if(!t)return;if(b(!0),I&&P?.provider===`value`){t&&(v(P.items),b(!1));return}if(!i||typeof i.find!=`function`)throw Error(`DataSource required for object/api providers`);if(P?.provider===`object`){let r=P.object,a=(0,n.buildExpandFields)(L.current?.fields),o=(0,n.extractRecords)(await i.find(r,{$filter:e.filter,$orderby:oe(e.sort),...a.length>0?{$expand:a}:{}}));t&&v(o)}else P?.provider===`api`&&(console.warn(`API provider not yet implemented for ObjectCalendar`),t&&v([]));t&&b(!1)}catch(e){console.error(`[ObjectCalendar] Error fetching data:`,e),t&&(S(e),b(!1))}})(),()=>{t=!1}},[g,P,i,I,e.filter,e.sort,k]),(0,t.useEffect)(()=>{!I&&i&&(async()=>{try{if(!i)return;let t=P?.provider===`object`?P.object:e.objectName;if(!t)return;w(await i.getObjectSchema(t))}catch(e){console.error(`Failed to fetch object schema:`,e)}})()},[e.objectName,i,I,P]);let R=(0,t.useMemo)(()=>{if(!F||!_.length)return[];let{startDateField:e,endDateField:t,titleField:n,colorField:r}=F;return _.map((i,a)=>{let o=i[e],s=t?i[t]:null,c=i[n]||`Untitled`,l=r?i[r]:void 0;return{id:i.id||i._id||`event-${a}`,title:c,start:o?new Date(o):new Date,end:s?new Date(s):void 0,color:l,allDay:!s,data:i}}).filter(e=>!isNaN(e.start.getTime()))},[_,F]);(0,t.useCallback)(()=>{d?.(new Date)},[d]);let z=(0,r.useNavigationOverlay)({navigation:e.navigation,objectName:e.objectName,onRowClick:u});return y?(0,H.jsx)(`div`,{className:o,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`Loading calendar...`})})}):x?(0,H.jsx)(`div`,{className:o,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,H.jsxs)(`div`,{className:`text-destructive`,children:[`Error: `,x.message]})})}):F?(0,H.jsxs)(`div`,{ref:j,className:o,children:[N>0&&(0,H.jsx)(`div`,{className:`flex items-center justify-center text-xs text-muted-foreground`,style:{height:N},children:M?`Refreshing…`:`Pull to refresh`}),(0,H.jsx)(`div`,{className:`border rounded-lg bg-background h-[calc(100vh-120px)] sm:h-[calc(100vh-160px)] md:h-[calc(100vh-200px)] min-h-[400px] sm:min-h-[600px]`,children:(0,H.jsx)(q,{events:R,currentDate:T,view:e.defaultView||`month`,locale:h,onEventClick:e=>{z.handleClick(e.data),l?.(e.data)},onDateClick:d,onNavigate:e=>{E(e),f?.(e)},onViewChange:e=>{O(e),p?.(e)},onAddClick:void 0,onEventDrop:m?(e,t,n)=>{m(e.data,t,n)}:void 0})}),z.isOverlay&&(0,H.jsx)(a.NavigationOverlay,{...z,title:`Event Details`,children:e=>(0,H.jsx)(`div`,{className:`space-y-3`,children:Object.entries(e).map(([e,t])=>(0,H.jsxs)(`div`,{className:`flex flex-col`,children:[(0,H.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground uppercase tracking-wide`,children:e.replace(/_/g,` `)}),(0,H.jsx)(`span`,{className:`text-sm`,children:String(t??`—`)})]},e))})})]}):(0,H.jsx)(`div`,{className:o,children:(0,H.jsx)(`div`,{className:`flex items-center justify-center h-96`,children:(0,H.jsx)(`div`,{className:`text-muted-foreground`,children:`Calendar configuration required. Please specify startDateField and titleField.`})})})};n.ComponentRegistry.register(`calendar-view`,({schema:e,className:n,onAction:r,...i})=>{let a=t.default.useMemo(()=>!e.data||!Array.isArray(e.data)?[]:e.data.map((t,n)=>{let r=e.titleField||`title`,i=e.startDateField||`start`,a=e.endDateField||`end`,o=e.colorField||`color`,s=e.allDayField||`allDay`;return{id:t.id||t._id||n,title:t[r]||`Untitled Event`,start:new Date(t[i]),end:t[a]?new Date(t[a]):void 0,allDay:t[s],color:t[o],data:t}}),[e.data,e.titleField,e.startDateField,e.endDateField,e.colorField,e.allDayField]);return(0,H.jsx)(q,{className:n,events:a,onEventClick:e=>{r?.({type:`event-click`,payload:e})},...i})},{namespace:`plugin-calendar`,label:`Calendar View`,inputs:[{name:`data`,type:`array`,label:`Data`,description:`Array of record objects to display as events`},{name:`titleField`,type:`string`,label:`Title Field`,defaultValue:`title`,description:`Field name to use for event title`},{name:`startDateField`,type:`string`,label:`Start Date Field`,defaultValue:`start`,description:`Field name for event start date`},{name:`endDateField`,type:`string`,label:`End Date Field`,defaultValue:`end`,description:`Field name for event end date (optional)`},{name:`allDayField`,type:`string`,label:`All Day Field`,defaultValue:`allDay`,description:`Field name for all-day flag`},{name:`colorField`,type:`string`,label:`Color Field`,defaultValue:`color`,description:`Field name for event color`},{name:`colorMapping`,type:`object`,label:`Color Mapping`,description:`Map field values to colors (e.g., {meeting: "blue", deadline: "red"})`},{name:`view`,type:`enum`,enum:[`month`,`week`,`day`],defaultValue:`month`,label:`View Mode`,description:`Calendar view mode (month, week, or day)`},{name:`currentDate`,type:`string`,label:`Current Date`,description:`ISO date string for initial calendar date`},{name:`allowCreate`,type:`boolean`,label:`Allow Create`,defaultValue:!1,description:`Allow creating events by clicking on dates`},{name:`className`,type:`string`,label:`CSS Class`}],defaultProps:{view:`month`,titleField:`title`,startDateField:`start`,endDateField:`end`,allDayField:`allDay`,colorField:`color`,allowCreate:!1,data:[{id:1,title:`Team Meeting`,start:new Date(new Date().setHours(10,0,0,0)).toISOString(),end:new Date(new Date().setHours(11,0,0,0)).toISOString(),color:`#3b82f6`,allDay:!1},{id:2,title:`Project Deadline`,start:new Date(new Date().setDate(new Date().getDate()+3)).toISOString(),color:`#ef4444`,allDay:!0},{id:3,title:`Conference`,start:new Date(new Date().setDate(new Date().getDate()+7)).toISOString(),end:new Date(new Date().setDate(new Date().getDate()+9)).toISOString(),color:`#10b981`,allDay:!0}],className:`h-[600px] border rounded-lg`}});var $=({schema:e,...t})=>{let{dataSource:n}=(0,r.useSchemaContext)()||{};return(0,H.jsx)(Q,{schema:e,dataSource:n,...t})};n.ComponentRegistry.register(`object-calendar`,$,{namespace:`plugin-calendar`,label:`Object Calendar`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`calendar`,type:`object`,label:`Calendar Config`,description:`startDateField, endDateField, titleField, colorField`}]}),n.ComponentRegistry.register(`calendar`,$,{namespace:`view`,label:`Calendar View`,category:`view`,inputs:[{name:`objectName`,type:`string`,label:`Object Name`,required:!0},{name:`calendar`,type:`object`,label:`Calendar Config`,description:`startDateField, endDateField, titleField, colorField`}]}),e.CalendarView=q,e.ObjectCalendar=Q,e.ObjectCalendarRenderer=$});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarView.d.ts","sourceRoot":"","sources":["../../../../src/CalendarView.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2EH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,IAAI,CAAA;IACX,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;IAC/B,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,CAAA;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,YAAY,CAAC,EACpB,MAAW,EACX,IAAc,EACd,WAAiC,EACjC,MAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,GACV,EAAE,iBAAiB,2CAuOnB;AAwdD,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObjectCalendar.d.ts","sourceRoot":"","sources":["../../../../src/ObjectCalendar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAC;AAO/F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAAC;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6GAA6G;IAC7G,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IACxD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkFD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAgSxD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-view-renderer.d.ts","sourceRoot":"","sources":["../../../../src/calendar-view-renderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,0BAA0B,CAAC;AAGlC,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAGhF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@object-ui/plugin-calendar",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"description": "Calendar view plugins for Object UI - includes both ObjectQL-integrated and standalone calendar components",
|
|
@@ -24,14 +24,14 @@
|
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
|
-
"lucide-react": "^
|
|
28
|
-
"@object-ui/components": "3.
|
|
29
|
-
"@object-ui/core": "3.
|
|
30
|
-
"@object-ui/fields": "3.
|
|
31
|
-
"@object-ui/
|
|
32
|
-
"@object-ui/
|
|
33
|
-
"@object-ui/
|
|
34
|
-
"@object-ui/
|
|
27
|
+
"lucide-react": "^1.8.0",
|
|
28
|
+
"@object-ui/components": "3.3.0",
|
|
29
|
+
"@object-ui/core": "3.3.0",
|
|
30
|
+
"@object-ui/fields": "3.3.0",
|
|
31
|
+
"@object-ui/i18n": "3.3.0",
|
|
32
|
+
"@object-ui/mobile": "3.3.0",
|
|
33
|
+
"@object-ui/react": "3.3.0",
|
|
34
|
+
"@object-ui/types": "3.3.0"
|
|
35
35
|
},
|
|
36
36
|
"peerDependencies": {
|
|
37
37
|
"react": "^18.0.0 || ^19.0.0",
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"@types/react": "19.2.14",
|
|
42
42
|
"@types/react-dom": "19.2.3",
|
|
43
43
|
"@vitejs/plugin-react": "^6.0.1",
|
|
44
|
-
"typescript": "^
|
|
45
|
-
"vite": "^8.0.
|
|
44
|
+
"typescript": "^6.0.2",
|
|
45
|
+
"vite": "^8.0.8",
|
|
46
46
|
"vite-plugin-dts": "^4.5.4",
|
|
47
|
-
"@object-ui/data-objectstack": "3.
|
|
47
|
+
"@object-ui/data-objectstack": "3.3.0"
|
|
48
48
|
},
|
|
49
49
|
"scripts": {
|
|
50
50
|
"build": "vite build",
|
|
@@ -44,6 +44,10 @@ const handlers = [
|
|
|
44
44
|
return HttpResponse.json({ status: 'ok', version: '1.0.0' });
|
|
45
45
|
}),
|
|
46
46
|
|
|
47
|
+
http.get(`${BASE_URL}/api/v1/discovery`, () => {
|
|
48
|
+
return HttpResponse.json({ status: 'ok', version: '1.0.0' });
|
|
49
|
+
}),
|
|
50
|
+
|
|
47
51
|
// Data Query: GET /api/v1/data/events
|
|
48
52
|
http.get(`${BASE_URL}/api/v1/data/events`, () => {
|
|
49
53
|
return HttpResponse.json(mockEvents);
|
package/src/ObjectCalendar.tsx
CHANGED
|
@@ -168,6 +168,19 @@ export const ObjectCalendar: React.FC<ObjectCalendarProps> = ({
|
|
|
168
168
|
const [view, setView] = useState<'month' | 'week' | 'day'>('month');
|
|
169
169
|
const [refreshKey, setRefreshKey] = useState(0);
|
|
170
170
|
|
|
171
|
+
// P2: Auto-subscribe to DataSource mutation events (standalone mode only).
|
|
172
|
+
// When rendered as a child of ObjectView with external data, parent handles refresh.
|
|
173
|
+
useEffect(() => {
|
|
174
|
+
if (hasExternalData) return; // Parent handles refresh
|
|
175
|
+
if (!dataSource?.onMutation || !schema.objectName) return;
|
|
176
|
+
const unsub = dataSource.onMutation((event: any) => {
|
|
177
|
+
if (event.resource === schema.objectName) {
|
|
178
|
+
setRefreshKey(k => k + 1);
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
return unsub;
|
|
182
|
+
}, [dataSource, schema.objectName, hasExternalData]);
|
|
183
|
+
|
|
171
184
|
const handlePullRefresh = useCallback(async () => {
|
|
172
185
|
setRefreshKey(k => k + 1);
|
|
173
186
|
}, []);
|
package/vite.config.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CalendarView.d.ts","sourceRoot":"","sources":["../../src/CalendarView.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA2EH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,GAAG,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,IAAI,CAAA;IACX,GAAG,CAAC,EAAE,IAAI,CAAA;IACV,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE,GAAG,CAAA;CACX;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,aAAa,EAAE,CAAA;IACxB,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAA;IAC/B,WAAW,CAAC,EAAE,IAAI,CAAA;IAClB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;IAC7C,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,CAAA;IACvD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAA;IACjC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;IACvB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,CAAA;IAC3E,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,iBAAS,YAAY,CAAC,EACpB,MAAW,EACX,IAAc,EACd,WAAiC,EACjC,MAAkB,EAClB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,GACV,EAAE,iBAAiB,2CAuOnB;AAwdD,OAAO,EAAE,YAAY,EAAE,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ObjectCalendar.d.ts","sourceRoot":"","sources":["../../src/ObjectCalendar.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAA4D,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAA4B,MAAM,kBAAkB,CAAC;AAO/F,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,UAAU,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,GAAG,CAAC;IACb,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,wBAAwB;IACxB,WAAW,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,gBAAgB,GAAG,cAAc,CAAC;IAC1C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6GAA6G;IAC7G,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACb,2FAA2F;IAC3F,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACrC,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IACnC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAClC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,KAAK,IAAI,CAAC;IACxD,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,EAAE,IAAI,KAAK,IAAI,CAAC;IACnE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAkFD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAmRxD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calendar-view-renderer.d.ts","sourceRoot":"","sources":["../../src/calendar-view-renderer.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/dist/src/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAGpC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,0BAA0B,CAAC;AAGlC,eAAO,MAAM,sBAAsB,EAAE,KAAK,CAAC,EAAE,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,CAGhF,CAAC"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|