@schedule-x/react 1.2.0 → 1.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/CHANGELOG.md CHANGED
@@ -2,12 +2,25 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
4
4
 
5
- # [1.2.0](https://github.com/schedule-x/react/compare/v1.1.1...v1.2.0) (2024-01-04)
5
+ # [1.3.0](https://github.com/schedule-x/react/compare/v1.2.1...v1.3.0) (2024-01-05)
6
+
7
+
8
+ ### Features
9
+
10
+ * **deps:** update schedule-x monorepo packages to v1.4.0 ([#18](https://github.com/schedule-x/react/issues/18)) ([6ac8ac4](https://github.com/schedule-x/react/commit/6ac8ac4db022e7e792a512e5db0f2f06d8373871))
11
+
12
+ ## [1.2.1](https://github.com/schedule-x/react/compare/v1.2.0...v1.2.1) (2024-01-04)
6
13
 
7
14
 
15
+ ### Bug Fixes
16
+
17
+ * usage in nextjs ([#22](https://github.com/schedule-x/react/issues/22)) ([70f81df](https://github.com/schedule-x/react/commit/70f81dff94c7c3334cf69ed5935aa4b0fdf6966d))
18
+
19
+ # [1.2.0](https://github.com/schedule-x/react/compare/v1.1.1...v1.2.0) (2024-01-04)
20
+
8
21
  ### Features
9
22
 
10
- * bump calendar monorepo packages to 1.3.0 ([#21](https://github.com/schedule-x/react/issues/21)) ([bcba535](https://github.com/schedule-x/react/commit/bcba5359d430942ea82ec5662c9848791c9b2f13))
23
+ - bump calendar monorepo packages to 1.3.0 ([#21](https://github.com/schedule-x/react/issues/21)) ([bcba535](https://github.com/schedule-x/react/commit/bcba5359d430942ea82ec5662c9848791c9b2f13))
11
24
 
12
25
  ## [1.1.1](https://github.com/schedule-x/react/compare/v1.1.0...v1.1.1) (2023-12-29)
13
26
 
@@ -1,6 +1,6 @@
1
1
  import { createCalendarHeaderPageObject } from '@schedule-x/e2e-testing'
2
2
 
3
- describe('Smoke Test', () => {
3
+ describe('Smoke test', () => {
4
4
  const calendarHeader = createCalendarHeaderPageObject()
5
5
 
6
6
  beforeEach(() => {
@@ -0,0 +1,36 @@
1
+ This is a [Next.js](https://nextjs.org/) project bootstrapped with [`create-next-app`](https://github.com/vercel/next.js/tree/canary/packages/create-next-app).
2
+
3
+ ## Getting Started
4
+
5
+ First, run the development server:
6
+
7
+ ```bash
8
+ npm run dev
9
+ # or
10
+ yarn dev
11
+ # or
12
+ pnpm dev
13
+ # or
14
+ bun dev
15
+ ```
16
+
17
+ Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
18
+
19
+ You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
20
+
21
+ This project uses [`next/font`](https://nextjs.org/docs/basic-features/font-optimization) to automatically optimize and load Inter, a custom Google Font.
22
+
23
+ ## Learn More
24
+
25
+ To learn more about Next.js, take a look at the following resources:
26
+
27
+ - [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
28
+ - [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
29
+
30
+ You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js/) - your feedback and contributions are welcome!
31
+
32
+ ## Deploy on Vercel
33
+
34
+ The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
35
+
36
+ Check out our [Next.js deployment documentation](https://nextjs.org/docs/deployment) for more details.
@@ -0,0 +1,113 @@
1
+ :root {
2
+ --max-width: 1100px;
3
+ --border-radius: 12px;
4
+ --font-mono: ui-monospace, Menlo, Monaco, 'Cascadia Mono', 'Segoe UI Mono',
5
+ 'Roboto Mono', 'Oxygen Mono', 'Ubuntu Monospace', 'Source Code Pro',
6
+ 'Fira Mono', 'Droid Sans Mono', 'Courier New', monospace;
7
+
8
+ --foreground-rgb: 0, 0, 0;
9
+ --background-start-rgb: 214, 219, 220;
10
+ --background-end-rgb: 255, 255, 255;
11
+
12
+ --primary-glow: conic-gradient(
13
+ from 180deg at 50% 50%,
14
+ #16abff33 0deg,
15
+ #0885ff33 55deg,
16
+ #54d6ff33 120deg,
17
+ #0071ff33 160deg,
18
+ transparent 360deg
19
+ );
20
+ --secondary-glow: radial-gradient(
21
+ rgba(255, 255, 255, 1),
22
+ rgba(255, 255, 255, 0)
23
+ );
24
+
25
+ --tile-start-rgb: 239, 245, 249;
26
+ --tile-end-rgb: 228, 232, 233;
27
+ --tile-border: conic-gradient(
28
+ #00000080,
29
+ #00000040,
30
+ #00000030,
31
+ #00000020,
32
+ #00000010,
33
+ #00000010,
34
+ #00000080
35
+ );
36
+
37
+ --callout-rgb: 238, 240, 241;
38
+ --callout-border-rgb: 172, 175, 176;
39
+ --card-rgb: 180, 185, 188;
40
+ --card-border-rgb: 131, 134, 135;
41
+ }
42
+
43
+ @media (prefers-color-scheme: dark) {
44
+ :root {
45
+ --foreground-rgb: 255, 255, 255;
46
+ --background-start-rgb: 0, 0, 0;
47
+ --background-end-rgb: 0, 0, 0;
48
+
49
+ --primary-glow: radial-gradient(rgba(1, 65, 255, 0.4), rgba(1, 65, 255, 0));
50
+ --secondary-glow: linear-gradient(
51
+ to bottom right,
52
+ rgba(1, 65, 255, 0),
53
+ rgba(1, 65, 255, 0),
54
+ rgba(1, 65, 255, 0.3)
55
+ );
56
+
57
+ --tile-start-rgb: 2, 13, 46;
58
+ --tile-end-rgb: 2, 5, 19;
59
+ --tile-border: conic-gradient(
60
+ #ffffff80,
61
+ #ffffff40,
62
+ #ffffff30,
63
+ #ffffff20,
64
+ #ffffff10,
65
+ #ffffff10,
66
+ #ffffff80
67
+ );
68
+
69
+ --callout-rgb: 20, 20, 20;
70
+ --callout-border-rgb: 108, 108, 108;
71
+ --card-rgb: 100, 100, 100;
72
+ --card-border-rgb: 200, 200, 200;
73
+ }
74
+ }
75
+
76
+ * {
77
+ box-sizing: border-box;
78
+ padding: 0;
79
+ margin: 0;
80
+ }
81
+
82
+ html,
83
+ body {
84
+ max-width: 100vw;
85
+ overflow-x: hidden;
86
+ }
87
+
88
+ body {
89
+ color: rgb(var(--foreground-rgb));
90
+ background: linear-gradient(
91
+ to bottom,
92
+ transparent,
93
+ rgb(var(--background-end-rgb))
94
+ )
95
+ rgb(var(--background-start-rgb));
96
+ }
97
+
98
+ a {
99
+ color: inherit;
100
+ text-decoration: none;
101
+ }
102
+
103
+ @media (prefers-color-scheme: dark) {
104
+ html {
105
+ color-scheme: dark;
106
+ }
107
+ }
108
+
109
+ .sx-react-calendar-wrapper {
110
+ width: 100%;
111
+ max-width: 100%;
112
+ height: 800px;
113
+ }
@@ -0,0 +1,22 @@
1
+ import type { Metadata } from 'next'
2
+ import { Inter } from 'next/font/google'
3
+ import './globals.css'
4
+
5
+ const inter = Inter({ subsets: ['latin'] })
6
+
7
+ export const metadata: Metadata = {
8
+ title: 'Create Next App',
9
+ description: 'Generated by create next app',
10
+ }
11
+
12
+ export default function RootLayout({
13
+ children,
14
+ }: {
15
+ children: React.ReactNode
16
+ }) {
17
+ return (
18
+ <html lang="en">
19
+ <body className={inter.className}>{children}</body>
20
+ </html>
21
+ )
22
+ }
@@ -0,0 +1,231 @@
1
+ .main {
2
+ display: flex;
3
+ flex-direction: column;
4
+ justify-content: space-between;
5
+ align-items: center;
6
+ padding: 6rem;
7
+ min-height: 100vh;
8
+ }
9
+
10
+ .description {
11
+ display: inherit;
12
+ justify-content: inherit;
13
+ align-items: inherit;
14
+ font-size: 0.85rem;
15
+ max-width: var(--max-width);
16
+ width: 100%;
17
+ z-index: 2;
18
+ font-family: var(--font-mono);
19
+ }
20
+
21
+ .description a {
22
+ display: flex;
23
+ justify-content: center;
24
+ align-items: center;
25
+ gap: 0.5rem;
26
+ }
27
+
28
+ .description p {
29
+ position: relative;
30
+ margin: 0;
31
+ padding: 1rem;
32
+ background-color: rgba(var(--callout-rgb), 0.5);
33
+ border: 1px solid rgba(var(--callout-border-rgb), 0.3);
34
+ border-radius: var(--border-radius);
35
+ }
36
+
37
+ .code {
38
+ font-weight: 700;
39
+ font-family: var(--font-mono);
40
+ }
41
+
42
+ .grid {
43
+ display: grid;
44
+ grid-template-columns: repeat(4, minmax(25%, auto));
45
+ max-width: 100%;
46
+ width: var(--max-width);
47
+ }
48
+
49
+ .card {
50
+ padding: 1rem 1.2rem;
51
+ border-radius: var(--border-radius);
52
+ background: rgba(var(--card-rgb), 0);
53
+ border: 1px solid rgba(var(--card-border-rgb), 0);
54
+ transition:
55
+ background 200ms,
56
+ border 200ms;
57
+ }
58
+
59
+ .card span {
60
+ display: inline-block;
61
+ transition: transform 200ms;
62
+ }
63
+
64
+ .card h2 {
65
+ font-weight: 600;
66
+ margin-bottom: 0.7rem;
67
+ }
68
+
69
+ .card p {
70
+ margin: 0;
71
+ opacity: 0.6;
72
+ font-size: 0.9rem;
73
+ line-height: 1.5;
74
+ max-width: 30ch;
75
+ }
76
+
77
+ .center {
78
+ display: flex;
79
+ justify-content: center;
80
+ align-items: center;
81
+ position: relative;
82
+ padding: 4rem 0;
83
+ }
84
+
85
+ .center::before {
86
+ background: var(--secondary-glow);
87
+ border-radius: 50%;
88
+ width: 480px;
89
+ height: 360px;
90
+ margin-left: -400px;
91
+ }
92
+
93
+ .center::after {
94
+ background: var(--primary-glow);
95
+ width: 240px;
96
+ height: 180px;
97
+ z-index: -1;
98
+ }
99
+
100
+ .center::before,
101
+ .center::after {
102
+ content: '';
103
+ left: 50%;
104
+ position: absolute;
105
+ filter: blur(45px);
106
+ transform: translateZ(0);
107
+ }
108
+
109
+ .logo {
110
+ position: relative;
111
+ }
112
+ /* Enable hover only on non-touch devices */
113
+ @media (hover: hover) and (pointer: fine) {
114
+ .card:hover {
115
+ background: rgba(var(--card-rgb), 0.1);
116
+ border: 1px solid rgba(var(--card-border-rgb), 0.15);
117
+ }
118
+
119
+ .card:hover span {
120
+ transform: translateX(4px);
121
+ }
122
+ }
123
+
124
+ @media (prefers-reduced-motion) {
125
+ .card:hover span {
126
+ transform: none;
127
+ }
128
+ }
129
+
130
+ /* Mobile */
131
+ @media (max-width: 700px) {
132
+ .content {
133
+ padding: 4rem;
134
+ }
135
+
136
+ .grid {
137
+ grid-template-columns: 1fr;
138
+ margin-bottom: 120px;
139
+ max-width: 320px;
140
+ text-align: center;
141
+ }
142
+
143
+ .card {
144
+ padding: 1rem 2.5rem;
145
+ }
146
+
147
+ .card h2 {
148
+ margin-bottom: 0.5rem;
149
+ }
150
+
151
+ .center {
152
+ padding: 8rem 0 6rem;
153
+ }
154
+
155
+ .center::before {
156
+ transform: none;
157
+ height: 300px;
158
+ }
159
+
160
+ .description {
161
+ font-size: 0.8rem;
162
+ }
163
+
164
+ .description a {
165
+ padding: 1rem;
166
+ }
167
+
168
+ .description p,
169
+ .description div {
170
+ display: flex;
171
+ justify-content: center;
172
+ position: fixed;
173
+ width: 100%;
174
+ }
175
+
176
+ .description p {
177
+ align-items: center;
178
+ inset: 0 0 auto;
179
+ padding: 2rem 1rem 1.4rem;
180
+ border-radius: 0;
181
+ border: none;
182
+ border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25);
183
+ background: linear-gradient(
184
+ to bottom,
185
+ rgba(var(--background-start-rgb), 1),
186
+ rgba(var(--callout-rgb), 0.5)
187
+ );
188
+ background-clip: padding-box;
189
+ backdrop-filter: blur(24px);
190
+ }
191
+
192
+ .description div {
193
+ align-items: flex-end;
194
+ pointer-events: none;
195
+ inset: auto 0 0;
196
+ padding: 2rem;
197
+ height: 200px;
198
+ background: linear-gradient(
199
+ to bottom,
200
+ transparent 0%,
201
+ rgb(var(--background-end-rgb)) 40%
202
+ );
203
+ z-index: 1;
204
+ }
205
+ }
206
+
207
+ /* Tablet and Smaller Desktop */
208
+ @media (min-width: 701px) and (max-width: 1120px) {
209
+ .grid {
210
+ grid-template-columns: repeat(2, 50%);
211
+ }
212
+ }
213
+
214
+ @media (prefers-color-scheme: dark) {
215
+ .vercelLogo {
216
+ filter: invert(1);
217
+ }
218
+
219
+ .logo {
220
+ filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70);
221
+ }
222
+ }
223
+
224
+ @keyframes rotate {
225
+ from {
226
+ transform: rotate(360deg);
227
+ }
228
+ to {
229
+ transform: rotate(0deg);
230
+ }
231
+ }
@@ -0,0 +1,35 @@
1
+ 'use client'
2
+ import styles from './page.module.css'
3
+ // import { Calendar, useCalendarApp } from '../../../..'
4
+ import { useCalendarApp, ScheduleXCalendar } from '../../..'
5
+ import {
6
+ viewDay,
7
+ viewMonthAgenda,
8
+ viewMonthGrid,
9
+ viewWeek,
10
+ } from '@schedule-x/calendar'
11
+ import '@schedule-x/theme-default/dist/index.css'
12
+ import { createDragAndDropPlugin } from '@schedule-x/drag-and-drop'
13
+
14
+ export default function Home() {
15
+ const calendarApp = useCalendarApp({
16
+ views: [viewWeek, viewMonthGrid, viewDay, viewMonthAgenda],
17
+ defaultView: viewWeek.name,
18
+ events: [
19
+ {
20
+ id: '12',
21
+ title: 'Event 1',
22
+ start: '2023-12-15 06:00',
23
+ end: '2023-12-15 08:00',
24
+ },
25
+ ],
26
+ selectedDate: '2023-12-15',
27
+ plugins: [createDragAndDropPlugin()],
28
+ })
29
+
30
+ return (
31
+ <main className={styles.main}>
32
+ <ScheduleXCalendar calendarApp={calendarApp} />
33
+ </main>
34
+ )
35
+ }
@@ -0,0 +1,9 @@
1
+ const { defineConfig } = require('cypress')
2
+
3
+ module.exports = defineConfig({
4
+ e2e: {
5
+ setupNodeEvents(on, config) {
6
+ // implement node event listeners here
7
+ },
8
+ },
9
+ })
@@ -0,0 +1,4 @@
1
+ /** @type {import('next').NextConfig} */
2
+ const nextConfig = {}
3
+
4
+ module.exports = nextConfig
@@ -0,0 +1,479 @@
1
+ {
2
+ "name": "next-app",
3
+ "version": "0.1.0",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "next-app",
9
+ "version": "0.1.0",
10
+ "dependencies": {
11
+ "next": "14.0.4",
12
+ "react": "^18",
13
+ "react-dom": "^18"
14
+ },
15
+ "devDependencies": {
16
+ "@types/node": "^20",
17
+ "@types/react": "^18",
18
+ "@types/react-dom": "^18",
19
+ "typescript": "^5"
20
+ }
21
+ },
22
+ "node_modules/@next/env": {
23
+ "version": "14.0.4",
24
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.0.4.tgz",
25
+ "integrity": "sha512-irQnbMLbUNQpP1wcE5NstJtbuA/69kRfzBrpAD7Gsn8zm/CY6YQYc3HQBz8QPxwISG26tIm5afvvVbu508oBeQ=="
26
+ },
27
+ "node_modules/@next/swc-darwin-arm64": {
28
+ "version": "14.0.4",
29
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.0.4.tgz",
30
+ "integrity": "sha512-mF05E/5uPthWzyYDyptcwHptucf/jj09i2SXBPwNzbgBNc+XnwzrL0U6BmPjQeOL+FiB+iG1gwBeq7mlDjSRPg==",
31
+ "cpu": [
32
+ "arm64"
33
+ ],
34
+ "optional": true,
35
+ "os": [
36
+ "darwin"
37
+ ],
38
+ "engines": {
39
+ "node": ">= 10"
40
+ }
41
+ },
42
+ "node_modules/@next/swc-darwin-x64": {
43
+ "version": "14.0.4",
44
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.0.4.tgz",
45
+ "integrity": "sha512-IZQ3C7Bx0k2rYtrZZxKKiusMTM9WWcK5ajyhOZkYYTCc8xytmwSzR1skU7qLgVT/EY9xtXDG0WhY6fyujnI3rw==",
46
+ "cpu": [
47
+ "x64"
48
+ ],
49
+ "optional": true,
50
+ "os": [
51
+ "darwin"
52
+ ],
53
+ "engines": {
54
+ "node": ">= 10"
55
+ }
56
+ },
57
+ "node_modules/@next/swc-linux-arm64-gnu": {
58
+ "version": "14.0.4",
59
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.0.4.tgz",
60
+ "integrity": "sha512-VwwZKrBQo/MGb1VOrxJ6LrKvbpo7UbROuyMRvQKTFKhNaXjUmKTu7wxVkIuCARAfiI8JpaWAnKR+D6tzpCcM4w==",
61
+ "cpu": [
62
+ "arm64"
63
+ ],
64
+ "optional": true,
65
+ "os": [
66
+ "linux"
67
+ ],
68
+ "engines": {
69
+ "node": ">= 10"
70
+ }
71
+ },
72
+ "node_modules/@next/swc-linux-arm64-musl": {
73
+ "version": "14.0.4",
74
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.0.4.tgz",
75
+ "integrity": "sha512-8QftwPEW37XxXoAwsn+nXlodKWHfpMaSvt81W43Wh8dv0gkheD+30ezWMcFGHLI71KiWmHK5PSQbTQGUiidvLQ==",
76
+ "cpu": [
77
+ "arm64"
78
+ ],
79
+ "optional": true,
80
+ "os": [
81
+ "linux"
82
+ ],
83
+ "engines": {
84
+ "node": ">= 10"
85
+ }
86
+ },
87
+ "node_modules/@next/swc-linux-x64-gnu": {
88
+ "version": "14.0.4",
89
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.0.4.tgz",
90
+ "integrity": "sha512-/s/Pme3VKfZAfISlYVq2hzFS8AcAIOTnoKupc/j4WlvF6GQ0VouS2Q2KEgPuO1eMBwakWPB1aYFIA4VNVh667A==",
91
+ "cpu": [
92
+ "x64"
93
+ ],
94
+ "optional": true,
95
+ "os": [
96
+ "linux"
97
+ ],
98
+ "engines": {
99
+ "node": ">= 10"
100
+ }
101
+ },
102
+ "node_modules/@next/swc-linux-x64-musl": {
103
+ "version": "14.0.4",
104
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.0.4.tgz",
105
+ "integrity": "sha512-m8z/6Fyal4L9Bnlxde5g2Mfa1Z7dasMQyhEhskDATpqr+Y0mjOBZcXQ7G5U+vgL22cI4T7MfvgtrM2jdopqWaw==",
106
+ "cpu": [
107
+ "x64"
108
+ ],
109
+ "optional": true,
110
+ "os": [
111
+ "linux"
112
+ ],
113
+ "engines": {
114
+ "node": ">= 10"
115
+ }
116
+ },
117
+ "node_modules/@next/swc-win32-arm64-msvc": {
118
+ "version": "14.0.4",
119
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.0.4.tgz",
120
+ "integrity": "sha512-7Wv4PRiWIAWbm5XrGz3D8HUkCVDMMz9igffZG4NB1p4u1KoItwx9qjATHz88kwCEal/HXmbShucaslXCQXUM5w==",
121
+ "cpu": [
122
+ "arm64"
123
+ ],
124
+ "optional": true,
125
+ "os": [
126
+ "win32"
127
+ ],
128
+ "engines": {
129
+ "node": ">= 10"
130
+ }
131
+ },
132
+ "node_modules/@next/swc-win32-ia32-msvc": {
133
+ "version": "14.0.4",
134
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.0.4.tgz",
135
+ "integrity": "sha512-zLeNEAPULsl0phfGb4kdzF/cAVIfaC7hY+kt0/d+y9mzcZHsMS3hAS829WbJ31DkSlVKQeHEjZHIdhN+Pg7Gyg==",
136
+ "cpu": [
137
+ "ia32"
138
+ ],
139
+ "optional": true,
140
+ "os": [
141
+ "win32"
142
+ ],
143
+ "engines": {
144
+ "node": ">= 10"
145
+ }
146
+ },
147
+ "node_modules/@next/swc-win32-x64-msvc": {
148
+ "version": "14.0.4",
149
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.0.4.tgz",
150
+ "integrity": "sha512-yEh2+R8qDlDCjxVpzOTEpBLQTEFAcP2A8fUFLaWNap9GitYKkKv1//y2S6XY6zsR4rCOPRpU7plYDR+az2n30A==",
151
+ "cpu": [
152
+ "x64"
153
+ ],
154
+ "optional": true,
155
+ "os": [
156
+ "win32"
157
+ ],
158
+ "engines": {
159
+ "node": ">= 10"
160
+ }
161
+ },
162
+ "node_modules/@swc/helpers": {
163
+ "version": "0.5.2",
164
+ "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.2.tgz",
165
+ "integrity": "sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==",
166
+ "dependencies": {
167
+ "tslib": "^2.4.0"
168
+ }
169
+ },
170
+ "node_modules/@types/node": {
171
+ "version": "20.10.6",
172
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.6.tgz",
173
+ "integrity": "sha512-Vac8H+NlRNNlAmDfGUP7b5h/KA+AtWIzuXy0E6OyP8f1tCLYAtPvKRRDJjAPqhpCb0t6U2j7/xqAuLEebW2kiw==",
174
+ "dev": true,
175
+ "dependencies": {
176
+ "undici-types": "~5.26.4"
177
+ }
178
+ },
179
+ "node_modules/@types/prop-types": {
180
+ "version": "15.7.11",
181
+ "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz",
182
+ "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==",
183
+ "dev": true
184
+ },
185
+ "node_modules/@types/react": {
186
+ "version": "18.2.46",
187
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.46.tgz",
188
+ "integrity": "sha512-nNCvVBcZlvX4NU1nRRNV/mFl1nNRuTuslAJglQsq+8ldXe5Xv0Wd2f7WTE3jOxhLH2BFfiZGC6GCp+kHQbgG+w==",
189
+ "dev": true,
190
+ "dependencies": {
191
+ "@types/prop-types": "*",
192
+ "@types/scheduler": "*",
193
+ "csstype": "^3.0.2"
194
+ }
195
+ },
196
+ "node_modules/@types/react-dom": {
197
+ "version": "18.2.18",
198
+ "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.18.tgz",
199
+ "integrity": "sha512-TJxDm6OfAX2KJWJdMEVTwWke5Sc/E/RlnPGvGfS0W7+6ocy2xhDVQVh/KvC2Uf7kACs+gDytdusDSdWfWkaNzw==",
200
+ "dev": true,
201
+ "dependencies": {
202
+ "@types/react": "*"
203
+ }
204
+ },
205
+ "node_modules/@types/scheduler": {
206
+ "version": "0.16.8",
207
+ "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz",
208
+ "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==",
209
+ "dev": true
210
+ },
211
+ "node_modules/busboy": {
212
+ "version": "1.6.0",
213
+ "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz",
214
+ "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==",
215
+ "dependencies": {
216
+ "streamsearch": "^1.1.0"
217
+ },
218
+ "engines": {
219
+ "node": ">=10.16.0"
220
+ }
221
+ },
222
+ "node_modules/caniuse-lite": {
223
+ "version": "1.0.30001574",
224
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001574.tgz",
225
+ "integrity": "sha512-BtYEK4r/iHt/txm81KBudCUcTy7t+s9emrIaHqjYurQ10x71zJ5VQ9x1dYPcz/b+pKSp4y/v1xSI67A+LzpNyg==",
226
+ "funding": [
227
+ {
228
+ "type": "opencollective",
229
+ "url": "https://opencollective.com/browserslist"
230
+ },
231
+ {
232
+ "type": "tidelift",
233
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
234
+ },
235
+ {
236
+ "type": "github",
237
+ "url": "https://github.com/sponsors/ai"
238
+ }
239
+ ]
240
+ },
241
+ "node_modules/client-only": {
242
+ "version": "0.0.1",
243
+ "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz",
244
+ "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA=="
245
+ },
246
+ "node_modules/csstype": {
247
+ "version": "3.1.3",
248
+ "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
249
+ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
250
+ "dev": true
251
+ },
252
+ "node_modules/glob-to-regexp": {
253
+ "version": "0.4.1",
254
+ "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz",
255
+ "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw=="
256
+ },
257
+ "node_modules/graceful-fs": {
258
+ "version": "4.2.11",
259
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
260
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ=="
261
+ },
262
+ "node_modules/js-tokens": {
263
+ "version": "4.0.0",
264
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
265
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ=="
266
+ },
267
+ "node_modules/loose-envify": {
268
+ "version": "1.4.0",
269
+ "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
270
+ "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
271
+ "dependencies": {
272
+ "js-tokens": "^3.0.0 || ^4.0.0"
273
+ },
274
+ "bin": {
275
+ "loose-envify": "cli.js"
276
+ }
277
+ },
278
+ "node_modules/nanoid": {
279
+ "version": "3.3.7",
280
+ "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz",
281
+ "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==",
282
+ "funding": [
283
+ {
284
+ "type": "github",
285
+ "url": "https://github.com/sponsors/ai"
286
+ }
287
+ ],
288
+ "bin": {
289
+ "nanoid": "bin/nanoid.cjs"
290
+ },
291
+ "engines": {
292
+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"
293
+ }
294
+ },
295
+ "node_modules/next": {
296
+ "version": "14.0.4",
297
+ "resolved": "https://registry.npmjs.org/next/-/next-14.0.4.tgz",
298
+ "integrity": "sha512-qbwypnM7327SadwFtxXnQdGiKpkuhaRLE2uq62/nRul9cj9KhQ5LhHmlziTNqUidZotw/Q1I9OjirBROdUJNgA==",
299
+ "dependencies": {
300
+ "@next/env": "14.0.4",
301
+ "@swc/helpers": "0.5.2",
302
+ "busboy": "1.6.0",
303
+ "caniuse-lite": "^1.0.30001406",
304
+ "graceful-fs": "^4.2.11",
305
+ "postcss": "8.4.31",
306
+ "styled-jsx": "5.1.1",
307
+ "watchpack": "2.4.0"
308
+ },
309
+ "bin": {
310
+ "next": "dist/bin/next"
311
+ },
312
+ "engines": {
313
+ "node": ">=18.17.0"
314
+ },
315
+ "optionalDependencies": {
316
+ "@next/swc-darwin-arm64": "14.0.4",
317
+ "@next/swc-darwin-x64": "14.0.4",
318
+ "@next/swc-linux-arm64-gnu": "14.0.4",
319
+ "@next/swc-linux-arm64-musl": "14.0.4",
320
+ "@next/swc-linux-x64-gnu": "14.0.4",
321
+ "@next/swc-linux-x64-musl": "14.0.4",
322
+ "@next/swc-win32-arm64-msvc": "14.0.4",
323
+ "@next/swc-win32-ia32-msvc": "14.0.4",
324
+ "@next/swc-win32-x64-msvc": "14.0.4"
325
+ },
326
+ "peerDependencies": {
327
+ "@opentelemetry/api": "^1.1.0",
328
+ "react": "^18.2.0",
329
+ "react-dom": "^18.2.0",
330
+ "sass": "^1.3.0"
331
+ },
332
+ "peerDependenciesMeta": {
333
+ "@opentelemetry/api": {
334
+ "optional": true
335
+ },
336
+ "sass": {
337
+ "optional": true
338
+ }
339
+ }
340
+ },
341
+ "node_modules/picocolors": {
342
+ "version": "1.0.0",
343
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
344
+ "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
345
+ },
346
+ "node_modules/postcss": {
347
+ "version": "8.4.31",
348
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz",
349
+ "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==",
350
+ "funding": [
351
+ {
352
+ "type": "opencollective",
353
+ "url": "https://opencollective.com/postcss/"
354
+ },
355
+ {
356
+ "type": "tidelift",
357
+ "url": "https://tidelift.com/funding/github/npm/postcss"
358
+ },
359
+ {
360
+ "type": "github",
361
+ "url": "https://github.com/sponsors/ai"
362
+ }
363
+ ],
364
+ "dependencies": {
365
+ "nanoid": "^3.3.6",
366
+ "picocolors": "^1.0.0",
367
+ "source-map-js": "^1.0.2"
368
+ },
369
+ "engines": {
370
+ "node": "^10 || ^12 || >=14"
371
+ }
372
+ },
373
+ "node_modules/react": {
374
+ "version": "18.2.0",
375
+ "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz",
376
+ "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==",
377
+ "dependencies": {
378
+ "loose-envify": "^1.1.0"
379
+ },
380
+ "engines": {
381
+ "node": ">=0.10.0"
382
+ }
383
+ },
384
+ "node_modules/react-dom": {
385
+ "version": "18.2.0",
386
+ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz",
387
+ "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==",
388
+ "dependencies": {
389
+ "loose-envify": "^1.1.0",
390
+ "scheduler": "^0.23.0"
391
+ },
392
+ "peerDependencies": {
393
+ "react": "^18.2.0"
394
+ }
395
+ },
396
+ "node_modules/scheduler": {
397
+ "version": "0.23.0",
398
+ "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz",
399
+ "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==",
400
+ "dependencies": {
401
+ "loose-envify": "^1.1.0"
402
+ }
403
+ },
404
+ "node_modules/source-map-js": {
405
+ "version": "1.0.2",
406
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz",
407
+ "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==",
408
+ "engines": {
409
+ "node": ">=0.10.0"
410
+ }
411
+ },
412
+ "node_modules/streamsearch": {
413
+ "version": "1.1.0",
414
+ "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz",
415
+ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==",
416
+ "engines": {
417
+ "node": ">=10.0.0"
418
+ }
419
+ },
420
+ "node_modules/styled-jsx": {
421
+ "version": "5.1.1",
422
+ "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.1.tgz",
423
+ "integrity": "sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==",
424
+ "dependencies": {
425
+ "client-only": "0.0.1"
426
+ },
427
+ "engines": {
428
+ "node": ">= 12.0.0"
429
+ },
430
+ "peerDependencies": {
431
+ "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0"
432
+ },
433
+ "peerDependenciesMeta": {
434
+ "@babel/core": {
435
+ "optional": true
436
+ },
437
+ "babel-plugin-macros": {
438
+ "optional": true
439
+ }
440
+ }
441
+ },
442
+ "node_modules/tslib": {
443
+ "version": "2.6.2",
444
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz",
445
+ "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q=="
446
+ },
447
+ "node_modules/typescript": {
448
+ "version": "5.3.3",
449
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz",
450
+ "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==",
451
+ "dev": true,
452
+ "bin": {
453
+ "tsc": "bin/tsc",
454
+ "tsserver": "bin/tsserver"
455
+ },
456
+ "engines": {
457
+ "node": ">=14.17"
458
+ }
459
+ },
460
+ "node_modules/undici-types": {
461
+ "version": "5.26.5",
462
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
463
+ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
464
+ "dev": true
465
+ },
466
+ "node_modules/watchpack": {
467
+ "version": "2.4.0",
468
+ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz",
469
+ "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==",
470
+ "dependencies": {
471
+ "glob-to-regexp": "^0.4.1",
472
+ "graceful-fs": "^4.1.2"
473
+ },
474
+ "engines": {
475
+ "node": ">=10.13.0"
476
+ }
477
+ }
478
+ }
479
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "name": "next-app",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev",
7
+ "build": "next build",
8
+ "start": "next start",
9
+ "lint": "next lint"
10
+ },
11
+ "dependencies": {
12
+ "react": "^18",
13
+ "react-dom": "^18",
14
+ "next": "14.0.4"
15
+ },
16
+ "devDependencies": {
17
+ "typescript": "^5",
18
+ "@types/node": "^20",
19
+ "@types/react": "^18",
20
+ "@types/react-dom": "^18"
21
+ }
22
+ }
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 394 80"><path fill="#000" d="M262 0h68.5v12.7h-27.2v66.6h-13.6V12.7H262V0ZM149 0v12.7H94v20.4h44.3v12.6H94v21h55v12.6H80.5V0h68.7zm34.3 0h-17.8l63.8 79.4h17.9l-32-39.7 32-39.6h-17.9l-23 28.6-23-28.6zm18.3 56.7-9-11-27.1 33.7h17.8l18.3-22.7z"/><path fill="#000" d="M81 79.3 17 0H0v79.3h13.6V17l50.2 62.3H81Zm252.6-.4c-1 0-1.8-.4-2.5-1s-1.1-1.6-1.1-2.6.3-1.8 1-2.5 1.6-1 2.6-1 1.8.3 2.5 1a3.4 3.4 0 0 1 .6 4.3 3.7 3.7 0 0 1-3 1.8zm23.2-33.5h6v23.3c0 2.1-.4 4-1.3 5.5a9.1 9.1 0 0 1-3.8 3.5c-1.6.8-3.5 1.3-5.7 1.3-2 0-3.7-.4-5.3-1s-2.8-1.8-3.7-3.2c-.9-1.3-1.4-3-1.4-5h6c.1.8.3 1.6.7 2.2s1 1.2 1.6 1.5c.7.4 1.5.5 2.4.5 1 0 1.8-.2 2.4-.6a4 4 0 0 0 1.6-1.8c.3-.8.5-1.8.5-3V45.5zm30.9 9.1a4.4 4.4 0 0 0-2-3.3 7.5 7.5 0 0 0-4.3-1.1c-1.3 0-2.4.2-3.3.5-.9.4-1.6 1-2 1.6a3.5 3.5 0 0 0-.3 4c.3.5.7.9 1.3 1.2l1.8 1 2 .5 3.2.8c1.3.3 2.5.7 3.7 1.2a13 13 0 0 1 3.2 1.8 8.1 8.1 0 0 1 3 6.5c0 2-.5 3.7-1.5 5.1a10 10 0 0 1-4.4 3.5c-1.8.8-4.1 1.2-6.8 1.2-2.6 0-4.9-.4-6.8-1.2-2-.8-3.4-2-4.5-3.5a10 10 0 0 1-1.7-5.6h6a5 5 0 0 0 3.5 4.6c1 .4 2.2.6 3.4.6 1.3 0 2.5-.2 3.5-.6 1-.4 1.8-1 2.4-1.7a4 4 0 0 0 .8-2.4c0-.9-.2-1.6-.7-2.2a11 11 0 0 0-2.1-1.4l-3.2-1-3.8-1c-2.8-.7-5-1.7-6.6-3.2a7.2 7.2 0 0 1-2.4-5.7 8 8 0 0 1 1.7-5 10 10 0 0 1 4.3-3.5c2-.8 4-1.2 6.4-1.2 2.3 0 4.4.4 6.2 1.2 1.8.8 3.2 2 4.3 3.4 1 1.4 1.5 3 1.5 5h-5.8z"/></svg>
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 283 64"><path fill="black" d="M141 16c-11 0-19 7-19 18s9 18 20 18c7 0 13-3 16-7l-7-5c-2 3-6 4-9 4-5 0-9-3-10-7h28v-3c0-11-8-18-19-18zm-9 15c1-4 4-7 9-7s8 3 9 7h-18zm117-15c-11 0-19 7-19 18s9 18 20 18c6 0 12-3 16-7l-8-5c-2 3-5 4-8 4-5 0-9-3-11-7h28l1-3c0-11-8-18-19-18zm-10 15c2-4 5-7 10-7s8 3 9 7h-19zm-39 3c0 6 4 10 10 10 4 0 7-2 9-5l8 5c-3 5-9 8-17 8-11 0-19-7-19-18s8-18 19-18c8 0 14 3 17 8l-8 5c-2-3-5-5-9-5-6 0-10 4-10 10zm83-29v46h-9V5h9zM37 0l37 64H0L37 0zm92 5-27 48L74 5h10l18 30 17-30h10zm59 12v10l-3-1c-6 0-10 4-10 10v15h-9V17h9v9c0-5 6-9 13-9z"/></svg>
@@ -0,0 +1,27 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es5",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "ESNext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "preserve",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./*"]
23
+ }
24
+ },
25
+ "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
26
+ "exclude": ["node_modules"]
27
+ }
package/dist/index.cjs.js CHANGED
@@ -12,7 +12,7 @@ const createCustomComponentFn = (setCustomComponent, customComponent) => (wrappe
12
12
  });
13
13
  };
14
14
  function ScheduleXCalendar({ calendarApp, customComponents }) {
15
- const randomId = 'sx' + Math.random().toString(36).substring(2, 11);
15
+ const [randomId, setRandomId] = react.useState('');
16
16
  const [customComponentsMeta, setCustomComponentsMeta] = react.useState([]);
17
17
  const setComponent = (component) => {
18
18
  setCustomComponentsMeta((prev) => {
@@ -25,12 +25,18 @@ function ScheduleXCalendar({ calendarApp, customComponents }) {
25
25
  return [...newComponents, component];
26
26
  });
27
27
  };
28
+ react.useEffect(() => {
29
+ setRandomId('sx' + Math.random().toString(36).substring(2, 11));
30
+ }, []);
28
31
  react.useEffect(() => {
29
32
  for (const [componentName, Component] of Object.entries(customComponents || {})) {
30
33
  calendarApp._setCustomComponentFn(componentName, createCustomComponentFn(setComponent, Component));
31
34
  }
32
- calendarApp.render(document.getElementById(randomId));
33
- }, [calendarApp, randomId, customComponents]);
35
+ const calendarElement = document.getElementById(randomId);
36
+ if (!calendarElement)
37
+ return;
38
+ calendarApp.render(calendarElement);
39
+ }, [calendarApp, customComponents, randomId]);
34
40
  return (jsxRuntime.jsx(jsxRuntime.Fragment, { children: jsxRuntime.jsxs(react.Fragment, { children: [jsxRuntime.jsx("div", { className: "sx-react-calendar-wrapper", id: randomId }), customComponentsMeta.map(({ Component, wrapperElement }) => {
35
41
  return reactDom.createPortal(Component, wrapperElement);
36
42
  })] }) }));
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ const createCustomComponentFn = (setCustomComponent, customComponent) => (wrappe
10
10
  });
11
11
  };
12
12
  function ScheduleXCalendar({ calendarApp, customComponents }) {
13
- const randomId = 'sx' + Math.random().toString(36).substring(2, 11);
13
+ const [randomId, setRandomId] = useState('');
14
14
  const [customComponentsMeta, setCustomComponentsMeta] = useState([]);
15
15
  const setComponent = (component) => {
16
16
  setCustomComponentsMeta((prev) => {
@@ -23,12 +23,18 @@ function ScheduleXCalendar({ calendarApp, customComponents }) {
23
23
  return [...newComponents, component];
24
24
  });
25
25
  };
26
+ useEffect(() => {
27
+ setRandomId('sx' + Math.random().toString(36).substring(2, 11));
28
+ }, []);
26
29
  useEffect(() => {
27
30
  for (const [componentName, Component] of Object.entries(customComponents || {})) {
28
31
  calendarApp._setCustomComponentFn(componentName, createCustomComponentFn(setComponent, Component));
29
32
  }
30
- calendarApp.render(document.getElementById(randomId));
31
- }, [calendarApp, randomId, customComponents]);
33
+ const calendarElement = document.getElementById(randomId);
34
+ if (!calendarElement)
35
+ return;
36
+ calendarApp.render(calendarElement);
37
+ }, [calendarApp, customComponents, randomId]);
32
38
  return (jsx(Fragment, { children: jsxs(Fragment$1, { children: [jsx("div", { className: "sx-react-calendar-wrapper", id: randomId }), customComponentsMeta.map(({ Component, wrapperElement }) => {
33
39
  return createPortal(Component, wrapperElement);
34
40
  })] }) }));
package/package.json CHANGED
@@ -14,7 +14,7 @@
14
14
  "main": "dist/index.cjs.js",
15
15
  "module": "dist/index.js",
16
16
  "types": "dist/types/index.d.ts",
17
- "version": "1.2.0",
17
+ "version": "1.3.0",
18
18
  "type": "module",
19
19
  "scripts": {
20
20
  "dev": "vite",
@@ -26,7 +26,7 @@
26
26
  "build:publish": "npm run build && npm publish"
27
27
  },
28
28
  "peerDependencies": {
29
- "@schedule-x/calendar": "1.3.0",
29
+ "@schedule-x/calendar": "1.4.0",
30
30
  "react": "^16.7.0 || ^17 || ^18",
31
31
  "react-dom": "^16.7.0 || ^17 || ^18"
32
32
  },
@@ -32,7 +32,7 @@ const createCustomComponentFn =
32
32
  }
33
33
 
34
34
  export function ScheduleXCalendar({ calendarApp, customComponents }: props) {
35
- const randomId = 'sx' + Math.random().toString(36).substring(2, 11)
35
+ const [randomId, setRandomId] = useState('')
36
36
  const [customComponentsMeta, setCustomComponentsMeta] =
37
37
  useState<CustomComponentsMeta>([])
38
38
 
@@ -52,6 +52,10 @@ export function ScheduleXCalendar({ calendarApp, customComponents }: props) {
52
52
  })
53
53
  }
54
54
 
55
+ useEffect(() => {
56
+ setRandomId('sx' + Math.random().toString(36).substring(2, 11))
57
+ }, [])
58
+
55
59
  useEffect(() => {
56
60
  for (const [componentName, Component] of Object.entries(
57
61
  customComponents || {}
@@ -62,8 +66,11 @@ export function ScheduleXCalendar({ calendarApp, customComponents }: props) {
62
66
  )
63
67
  }
64
68
 
65
- calendarApp.render(document.getElementById(randomId) as HTMLElement)
66
- }, [calendarApp, randomId, customComponents])
69
+ const calendarElement = document.getElementById(randomId)
70
+ if (!calendarElement) return
71
+
72
+ calendarApp.render(calendarElement as HTMLElement)
73
+ }, [calendarApp, customComponents, randomId])
67
74
 
68
75
  return (
69
76
  <>