diff --git a/moon/api/lib/demo_orgs/data/calls.json b/moon/api/lib/demo_orgs/data/calls.json index 315d646a2..ee1e8aaa6 100644 --- a/moon/api/lib/demo_orgs/data/calls.json +++ b/moon/api/lib/demo_orgs/data/calls.json @@ -1 +1 @@ -[{"generated_title":"Park Ranger Rick","peers":["Ranger Rick","Daisy Meadows","Reed Marsh","Cliff Rockwell"],"recordings":[{"file_path":"o/dev-seed-files/park-rec.mp4","transcription_vtt":"WEBVTT\n\n1\n00:00:00.000 --> 00:00:02.600\nCliff Rockwell: It says here one o'clock meeting. Who are we meeting with?\n\n2\n00:00:02.600 --> 00:00:03.600\nDaisy Meadows: Don't worry about it.\n\n3\n00:00:03.600 --> 00:00:05.100\nCliff Rockwell: Oh no, please.\n\n4\n00:00:05.100 --> 00:00:07.400\nDaisy Meadows: No, it's important to meet with the park rangers.\n\n5\n00:00:07.400 --> 00:00:09.400\nDaisy Meadows: They are the first line of defense.\n\n6\n00:00:09.900 --> 00:00:11.900\nRanger Rick: Daisy Meadows!\n\n7\n00:00:12.900 --> 00:00:13.700\nDaisy Meadows: Hey, Reed.\n\n8\n00:00:13.700 --> 00:00:15.300\nRanger Rick: What's up, pencil pushers?\n\n9\n00:00:15.300 --> 00:00:17.299\nRanger Rick: Haverford, good to see you, man.\n\n10\n00:00:18.400 --> 00:00:19.700\nRanger Rick: Is it hot in here?\n\n11\n00:00:19.700 --> 00:00:21.400\nRanger Rick: I feel hot. Are you guys hot?\n\n12\n00:00:21.400 --> 00:00:23.000\nRanger Rick: How you guys doing? I'm good.\n\n13\n00:00:23.000 --> 00:00:25.000\nRanger Rick: You guys got any snacks?\n\n14\n00:00:25.000 --> 00:00:27.700\nCliff Rockwell: Reed is the head of all outdoor security.\n\n15\n00:00:27.700 --> 00:00:30.500\nCliff Rockwell: Why was he transferred from his indoor desk job, you ask?\n\n16\n00:00:30.500 --> 00:00:31.500\nCliff Rockwell: Listen.\n\n17\n00:00:31.500 --> 00:00:34.000\nRanger Rick: Hey, Daisy, have you seen Avatar?\n\n18\n00:00:34.000 --> 00:00:35.799\nRanger Rick: I never saw Avatar.\n\n19\n00:00:35.799 --> 00:00:37.700\nRanger Rick: I wanted to read the book first,\n\n20\n00:00:37.700 --> 00:00:41.000\nRanger Rick: but then I realized there's no book version of Avatar.\n\n21\n00:00:41.000 --> 00:00:43.299\nRanger Rick: What'd you guys do for St. Paddy's Day?\n\n22\n00:00:43.299 --> 00:00:45.000\nRanger Rick: I was wearing this t-shirt that said,\n\n23\n00:00:45.000 --> 00:00:46.299\nRanger Rick: kiss me, I'm Irish,\n\n24\n00:00:46.299 --> 00:00:48.400\nRanger Rick: but no one would kiss me.\n\n25\n00:00:48.400 --> 00:00:49.400\nRanger Rick: So!\n\n26\n00:00:50.599 --> 00:00:54.000\nRanger Rick: You're too important for me until one of your own gets attacked.\n\n27\n00:00:54.099 --> 00:00:58.099\nDaisy Meadows: I just feel like there's more we can do to keep the park safe.\n\n28\n00:00:58.099 --> 00:01:00.500\nRanger Rick: Oh, you think you know how to do my job?\n\n29\n00:01:00.500 --> 00:01:01.900\nRanger Rick: Well, you might not be so confident\n\n30\n00:01:01.900 --> 00:01:04.300\nRanger Rick: once you've walked a mile on my size sevens.\n\n31\n00:01:05.800 --> 00:01:07.099\nDaisy Meadows: Kind of small feet.\n\n32\n00:01:07.099 --> 00:01:09.300\nCliff Rockwell: Actually, seven is the worldwide average.\n\n33\n00:01:09.300 --> 00:01:10.500\nRanger Rick: Boo!\n\n34\n00:01:10.500 --> 00:01:11.300\nReed Marsh: I don't know.\n\n35\n00:01:11.300 --> 00:01:13.300\nReed Marsh: Daisy, I'd rather be back at the office.\n\n36\n00:01:13.300 --> 00:01:15.000\nDaisy Meadows: I know this is painful for you, Reed,\n\n37\n00:01:15.000 --> 00:01:17.000\nDaisy Meadows: but you have to be strong.\n\n38\n00:01:18.300 --> 00:01:19.800\nRanger Rick: You guys ready?\n\n39\n00:01:20.599 --> 00:01:22.000\nDaisy Meadows: Oh, boy, yeah.\n\n40\n00:01:22.000 --> 00:01:23.599\nDaisy Meadows: Okay, we're ready.\n\n41\n00:01:23.599 --> 00:01:26.400\nRanger Rick: I'm gonna show you guys all the problems we've been facing.\n\n42\n00:01:26.400 --> 00:01:28.599\nRanger Rick: I'm gonna show you that we've been doing everything we can.\n\n43\n00:01:28.599 --> 00:01:30.599\nDaisy Meadows: I'm looking forward to working together, Reed.\n\n44\n00:01:30.599 --> 00:01:33.599\nRanger Rick: And after that, I'm gonna show you this log I found.\n\n45\n00:01:33.599 --> 00:01:35.599\nRanger Rick: It's got, like, 50 worms on it.\n\n46\n00:01:36.599 --> 00:01:38.599\nRanger Rick: I call it Worm Log.\n\n47\n00:01:40.000 --> 00:01:42.199\nRanger Rick: Yeah, I've always been a bit of an outdoorsman.\n\n48\n00:01:42.199 --> 00:01:43.199\nRanger Rick: Uh, when I was a kid,\n\n49\n00:01:43.199 --> 00:01:45.500\nRanger Rick: my parents used to make me hang out in the backyard a lot\n\n50\n00:01:45.500 --> 00:01:48.199\nRanger Rick: and just run around till I got tired.\n\n51\n00:01:48.199 --> 00:01:50.300\nRanger Rick: But if there's any criminals out there watching,\n\n52\n00:01:50.300 --> 00:01:52.300\nRanger Rick: I never get tired.\n\n53\n00:01:52.900 --> 00:01:54.900\nRanger Rick: And ladies, too.\n\n54\n00:01:57.099 --> 00:01:58.500\nCliff Rockwell: This thing is a mess.\n\n55\n00:01:58.500 --> 00:02:00.400\nRanger Rick: We used to have three carts, actually.\n\n56\n00:02:00.400 --> 00:02:03.599\nRanger Rick: The first one got pushed into the creek by some kids.\n\n57\n00:02:03.599 --> 00:02:05.900\nRanger Rick: The second one, raccoons got onto.\n\n58\n00:02:05.900 --> 00:02:07.699\nRanger Rick: There was urine everywhere.\n\n59\n00:02:07.699 --> 00:02:10.100\nRanger Rick: And the third one was recently stolen.\n\n60\n00:02:10.100 --> 00:02:10.899\nCliff Rockwell: What's this one?\n\n61\n00:02:10.899 --> 00:02:13.899\nRanger Rick: This is the second one, the raccoon piss one.\n\n62\n00:02:14.699 --> 00:02:17.899\nRanger Rick: All right, so, we're gonna just head out.\n\n63\n00:02:19.800 --> 00:02:21.600\nRanger Rick: Oh, no.\n\n64\n00:02:21.600 --> 00:02:24.600\nRanger Rick: You know what? I think we got too much weight.\n\n65\n00:02:24.600 --> 00:02:25.600\nDaisy Meadows: Oh.\n\n66\n00:02:25.600 --> 00:02:27.199\nDaisy Meadows: That's Cliff, probably.\n\n67\n00:02:27.199 --> 00:02:28.500\nCliff Rockwell: Are you serious?\n\n68\n00:02:28.500 --> 00:02:30.600\nDaisy Meadows: Cliff, can you get off, please?\n\n69\n00:02:30.600 --> 00:02:33.100\nDaisy Meadows: Just run alongside the cart, okay?\n\n70\n00:02:33.100 --> 00:02:34.600\nRanger Rick: Okay, here we go.\n\n71\n00:02:34.600 --> 00:02:35.800\nDaisy Meadows: Whoa.\n\n72\n00:02:35.800 --> 00:02:38.399\nRanger Rick: So, let me tell you a little bit about the park.\n\n73\n00:02:38.399 --> 00:02:40.199\nRanger Rick: Uh, up here on the left is, uh,\n\n74\n00:02:40.199 --> 00:02:43.100\nRanger Rick: one of our most beautiful grass fields.\n\n75\n00:02:43.100 --> 00:02:45.500\nRanger Rick: Uh, it's primarily grass.\n\n76\n00:02:45.500 --> 00:02:47.000\nRanger Rick: All right, I'm gonna make a hard left here.\n\n77\n00:02:47.000 --> 00:02:49.600\nRanger Rick: Stick with us, Cliff.\n\n78\n00:02:49.600 --> 00:02:51.000\nRanger Rick: Hey, is this looking familiar?\n\n79\n00:02:51.000 --> 00:02:53.600\nReed Marsh: Uh, yeah, it happened right over there.\n\n80\n00:02:53.600 --> 00:02:55.199\nRanger Rick: Oh, yeah.\n\n81\n00:02:55.199 --> 00:02:56.899\nRanger Rick: I'm not surprised.\n\n82\n00:02:56.899 --> 00:02:58.600\nRanger Rick: Take a look at this path.\n\n83\n00:02:58.600 --> 00:03:01.600\nRanger Rick: With budget cuts, we can't afford a single safety light.\n\n84\n00:03:01.600 --> 00:03:03.600\nRanger Rick: There's been 10 assaults already this year.\n\n85\n00:03:03.600 --> 00:03:04.800\nDaisy Meadows: Wow, really?\n\n86\n00:03:04.800 --> 00:03:06.699\nDaisy Meadows: Can't you station a park ranger out here?\n\n87\n00:03:06.699 --> 00:03:09.500\nRanger Rick: We have. Who do you think they're assaulting?\n\n88\n00:03:09.500 --> 00:03:12.000\nRanger Rick: I'm sorry, I didn't mean to yell.\n\n89\n00:03:12.000 --> 00:03:13.800\nDaisy Meadows: One way or another, I'm gonna get money\n\n90\n00:03:13.800 --> 00:03:16.199\nDaisy Meadows: so you can protect Reed and all the other\n\n91\n00:03:16.199 --> 00:03:18.800\nDaisy Meadows: helpless, pathetic people in this town.\n\n92\n00:03:19.600 --> 00:03:21.199\nCliff Rockwell: Oh.\n\n93\n00:03:21.199 --> 00:03:22.800\nCliff Rockwell: You guys gotta slow down.\n\n94\n00:03:22.800 --> 00:03:24.000\nCliff Rockwell: You guys taking a rest for a minute?\n\n95\n00:03:24.000 --> 00:03:25.399\nDaisy Meadows: No, Cliff, sorry, no can do.\n\n96\n00:03:25.399 --> 00:03:27.000\nDaisy Meadows: Sun's going down. It's real dangerous out here.\n\n97\n00:03:27.000 --> 00:03:28.000\nDaisy Meadows: Let's roll, Reed.\n\n98\n00:03:28.000 --> 00:03:29.600\nReed Marsh: Okay, going fast.\n\n","size":65335581,"duration":233.012,"max_width":1920,"max_height":1080,"summary_sections":[{"section":"summary","response":"

The team met with park rangers to discuss park safety issues. Ranger Rick highlighted recent security challenges and resource limitations. Daisy Meadows committed to securing funds for improved safety measures.

"},{"section":"agenda","response":"

Meeting with Park Rangers

Park Safety Concerns

Tour of the Park

Equipment and Resources

"},{"section":"next_steps","response":""}]}]}] \ No newline at end of file +[{"generated_title":"Park Ranger Rick","peers":["Ranger Rick","Daisy Meadows","Reed Marsh","Cliff Rockwell"],"recordings":[{"file_path":"o/dev-seed-files/park-rec.mp4","transcription_vtt":"WEBVTT\r\n\r\n1\r\n00:00:00.000 --> 00:00:02.600\r\nCliff Rockwell: It says here one o'clock meeting. Who are we meeting with?\r\n\r\n2\r\n00:00:02.600 --> 00:00:03.600\r\nDaisy Meadows: Don't worry about it.\r\n\r\n3\r\n00:00:03.600 --> 00:00:05.100\r\nCliff Rockwell: Oh no, please.\r\n\r\n4\r\n00:00:05.100 --> 00:00:07.400\r\nDaisy Meadows: No, it's important to meet with the park rangers.\r\n\r\n5\r\n00:00:07.400 --> 00:00:09.400\r\nDaisy Meadows: They are the first line of defense.\r\n\r\n6\r\n00:00:09.900 --> 00:00:11.900\r\nRanger Rick: Daisy Meadows!\r\n\r\n7\r\n00:00:12.900 --> 00:00:13.700\r\nDaisy Meadows: Hey, Reed.\r\n\r\n8\r\n00:00:13.700 --> 00:00:15.300\r\nRanger Rick: What's up, pencil pushers?\r\n\r\n9\r\n00:00:15.300 --> 00:00:17.299\r\nRanger Rick: Haverford, good to see you, man.\r\n\r\n10\r\n00:00:18.400 --> 00:00:19.700\r\nRanger Rick: Is it hot in here?\r\n\r\n11\r\n00:00:19.700 --> 00:00:21.400\r\nRanger Rick: I feel hot. Are you guys hot?\r\n\r\n12\r\n00:00:21.400 --> 00:00:23.000\r\nRanger Rick: How you guys doing? I'm good.\r\n\r\n13\r\n00:00:23.000 --> 00:00:25.000\r\nRanger Rick: You guys got any snacks?\r\n\r\n14\r\n00:00:25.000 --> 00:00:27.700\r\nCliff Rockwell: Reed is the head of all outdoor security.\r\n\r\n15\r\n00:00:27.700 --> 00:00:30.500\r\nCliff Rockwell: Why was he transferred from his indoor desk job, you ask?\r\n\r\n16\r\n00:00:30.500 --> 00:00:31.500\r\nCliff Rockwell: Listen.\r\n\r\n17\r\n00:00:31.500 --> 00:00:34.000\r\nRanger Rick: Hey, Daisy, have you seen Avatar?\r\n\r\n18\r\n00:00:34.000 --> 00:00:35.799\r\nRanger Rick: I never saw Avatar.\r\n\r\n19\r\n00:00:35.799 --> 00:00:37.700\r\nRanger Rick: I wanted to read the book first,\r\n\r\n20\r\n00:00:37.700 --> 00:00:41.000\r\nRanger Rick: but then I realized there's no book version of Avatar.\r\n\r\n21\r\n00:00:41.000 --> 00:00:43.299\r\nRanger Rick: What'd you guys do for St. Paddy's Day?\r\n\r\n22\r\n00:00:43.299 --> 00:00:45.000\r\nRanger Rick: I was wearing this t-shirt that said,\r\n\r\n23\r\n00:00:45.000 --> 00:00:46.299\r\nRanger Rick: kiss me, I'm Irish,\r\n\r\n24\r\n00:00:46.299 --> 00:00:48.400\r\nRanger Rick: but no one would kiss me.\r\n\r\n25\r\n00:00:48.400 --> 00:00:49.400\r\nRanger Rick: So!\r\n\r\n26\r\n00:00:50.599 --> 00:00:54.000\r\nRanger Rick: You're too important for me until one of your own gets attacked.\r\n\r\n27\r\n00:00:54.099 --> 00:00:58.099\r\nDaisy Meadows: I just feel like there's more we can do to keep the park safe.\r\n\r\n28\r\n00:00:58.099 --> 00:01:00.500\r\nRanger Rick: Oh, you think you know how to do my job?\r\n\r\n29\r\n00:01:00.500 --> 00:01:01.900\r\nRanger Rick: Well, you might not be so confident\r\n\r\n30\r\n00:01:01.900 --> 00:01:04.300\r\nRanger Rick: once you've walked a mile on my size sevens.\r\n\r\n31\r\n00:01:05.800 --> 00:01:07.099\r\nDaisy Meadows: Kind of small feet.\r\n\r\n32\r\n00:01:07.099 --> 00:01:09.300\r\nCliff Rockwell: Actually, seven is the worldwide average.\r\n\r\n33\r\n00:01:09.300 --> 00:01:10.500\r\nRanger Rick: Boo!\r\n\r\n34\r\n00:01:10.500 --> 00:01:11.300\r\nReed Marsh: I don't know.\r\n\r\n35\r\n00:01:11.300 --> 00:01:13.300\r\nReed Marsh: Daisy, I'd rather be back at the office.\r\n\r\n36\r\n00:01:13.300 --> 00:01:15.000\r\nDaisy Meadows: I know this is painful for you, Reed,\r\n\r\n37\r\n00:01:15.000 --> 00:01:17.000\r\nDaisy Meadows: but you have to be strong.\r\n\r\n38\r\n00:01:18.300 --> 00:01:19.800\r\nRanger Rick: You guys ready?\r\n\r\n39\r\n00:01:20.599 --> 00:01:22.000\r\nDaisy Meadows: Oh, boy, yeah.\r\n\r\n40\r\n00:01:22.000 --> 00:01:23.599\r\nDaisy Meadows: Okay, we're ready.\r\n\r\n41\r\n00:01:23.599 --> 00:01:26.400\r\nRanger Rick: I'm gonna show you guys all the problems we've been facing.\r\n\r\n42\r\n00:01:26.400 --> 00:01:28.599\r\nRanger Rick: I'm gonna show you that we've been doing everything we can.\r\n\r\n43\r\n00:01:28.599 --> 00:01:30.599\r\nDaisy Meadows: I'm looking forward to working together, Reed.\r\n\r\n44\r\n00:01:30.599 --> 00:01:33.599\r\nRanger Rick: And after that, I'm gonna show you this log I found.\r\n\r\n45\r\n00:01:33.599 --> 00:01:35.599\r\nRanger Rick: It's got, like, 50 worms on it.\r\n\r\n46\r\n00:01:36.599 --> 00:01:38.599\r\nRanger Rick: I call it Worm Log.\r\n\r\n47\r\n00:01:40.000 --> 00:01:42.199\r\nRanger Rick: Yeah, I've always been a bit of an outdoorsman.\r\n\r\n48\r\n00:01:42.199 --> 00:01:43.199\r\nRanger Rick: Uh, when I was a kid,\r\n\r\n49\r\n00:01:43.199 --> 00:01:45.500\r\nRanger Rick: my parents used to make me hang out in the backyard a lot\r\n\r\n50\r\n00:01:45.500 --> 00:01:48.199\r\nRanger Rick: and just run around till I got tired.\r\n\r\n51\r\n00:01:48.199 --> 00:01:50.300\r\nRanger Rick: But if there's any criminals out there watching,\r\n\r\n52\r\n00:01:50.300 --> 00:01:52.300\r\nRanger Rick: I never get tired.\r\n\r\n53\r\n00:01:52.900 --> 00:01:54.900\r\nRanger Rick: And ladies, too.\r\n\r\n54\r\n00:01:57.099 --> 00:01:58.500\r\nCliff Rockwell: This thing is a mess.\r\n\r\n55\r\n00:01:58.500 --> 00:02:00.400\r\nRanger Rick: We used to have three carts, actually.\r\n\r\n56\r\n00:02:00.400 --> 00:02:03.599\r\nRanger Rick: The first one got pushed into the creek by some kids.\r\n\r\n57\r\n00:02:03.599 --> 00:02:05.900\r\nRanger Rick: The second one, raccoons got onto.\r\n\r\n58\r\n00:02:05.900 --> 00:02:07.699\r\nRanger Rick: There was urine everywhere.\r\n\r\n59\r\n00:02:07.699 --> 00:02:10.100\r\nRanger Rick: And the third one was recently stolen.\r\n\r\n60\r\n00:02:10.100 --> 00:02:10.899\r\nCliff Rockwell: What's this one?\r\n\r\n61\r\n00:02:10.899 --> 00:02:13.899\r\nRanger Rick: This is the second one, the raccoon piss one.\r\n\r\n62\r\n00:02:14.699 --> 00:02:17.899\r\nRanger Rick: All right, so, we're gonna just head out.\r\n\r\n63\r\n00:02:19.800 --> 00:02:21.600\r\nRanger Rick: Oh, no.\r\n\r\n64\r\n00:02:21.600 --> 00:02:24.600\r\nRanger Rick: You know what? I think we got too much weight.\r\n\r\n65\r\n00:02:24.600 --> 00:02:25.600\r\nDaisy Meadows: Oh.\r\n\r\n66\r\n00:02:25.600 --> 00:02:27.199\r\nDaisy Meadows: That's Cliff, probably.\r\n\r\n67\r\n00:02:27.199 --> 00:02:28.500\r\nCliff Rockwell: Are you serious?\r\n\r\n68\r\n00:02:28.500 --> 00:02:30.600\r\nDaisy Meadows: Cliff, can you get off, please?\r\n\r\n69\r\n00:02:30.600 --> 00:02:33.100\r\nDaisy Meadows: Just run alongside the cart, okay?\r\n\r\n70\r\n00:02:33.100 --> 00:02:34.600\r\nRanger Rick: Okay, here we go.\r\n\r\n71\r\n00:02:34.600 --> 00:02:35.800\r\nDaisy Meadows: Whoa.\r\n\r\n72\r\n00:02:35.800 --> 00:02:38.399\r\nRanger Rick: So, let me tell you a little bit about the park.\r\n\r\n73\r\n00:02:38.399 --> 00:02:40.199\r\nRanger Rick: Uh, up here on the left is, uh,\r\n\r\n74\r\n00:02:40.199 --> 00:02:43.100\r\nRanger Rick: one of our most beautiful grass fields.\r\n\r\n75\r\n00:02:43.100 --> 00:02:45.500\r\nRanger Rick: Uh, it's primarily grass.\r\n\r\n76\r\n00:02:45.500 --> 00:02:47.000\r\nRanger Rick: All right, I'm gonna make a hard left here.\r\n\r\n77\r\n00:02:47.000 --> 00:02:49.600\r\nRanger Rick: Stick with us, Cliff.\r\n\r\n78\r\n00:02:49.600 --> 00:02:51.000\r\nRanger Rick: Hey, is this looking familiar?\r\n\r\n79\r\n00:02:51.000 --> 00:02:53.600\r\nReed Marsh: Uh, yeah, it happened right over there.\r\n\r\n80\r\n00:02:53.600 --> 00:02:55.199\r\nRanger Rick: Oh, yeah.\r\n\r\n81\r\n00:02:55.199 --> 00:02:56.899\r\nRanger Rick: I'm not surprised.\r\n\r\n82\r\n00:02:56.899 --> 00:02:58.600\r\nRanger Rick: Take a look at this path.\r\n\r\n83\r\n00:02:58.600 --> 00:03:01.600\r\nRanger Rick: With budget cuts, we can't afford a single safety light.\r\n\r\n84\r\n00:03:01.600 --> 00:03:03.600\r\nRanger Rick: There's been 10 assaults already this year.\r\n\r\n85\r\n00:03:03.600 --> 00:03:04.800\r\nDaisy Meadows: Wow, really?\r\n\r\n86\r\n00:03:04.800 --> 00:03:06.699\r\nDaisy Meadows: Can't you station a park ranger out here?\r\n\r\n87\r\n00:03:06.699 --> 00:03:09.500\r\nRanger Rick: We have. Who do you think they're assaulting?\r\n\r\n88\r\n00:03:09.500 --> 00:03:12.000\r\nRanger Rick: I'm sorry, I didn't mean to yell.\r\n\r\n89\r\n00:03:12.000 --> 00:03:13.800\r\nDaisy Meadows: One way or another, I'm gonna get money\r\n\r\n90\r\n00:03:13.800 --> 00:03:16.199\r\nDaisy Meadows: so you can protect Reed and all the other\r\n\r\n91\r\n00:03:16.199 --> 00:03:18.800\r\nDaisy Meadows: helpless, pathetic people in this town.\r\n\r\n92\r\n00:03:19.600 --> 00:03:21.199\r\nCliff Rockwell: Oh.\r\n\r\n93\r\n00:03:21.199 --> 00:03:22.800\r\nCliff Rockwell: You guys gotta slow down.\r\n\r\n94\r\n00:03:22.800 --> 00:03:24.000\r\nCliff Rockwell: You guys taking a rest for a minute?\r\n\r\n95\r\n00:03:24.000 --> 00:03:25.399\r\nDaisy Meadows: No, Cliff, sorry, no can do.\r\n\r\n96\r\n00:03:25.399 --> 00:03:27.000\r\nDaisy Meadows: Sun's going down. It's real dangerous out here.\r\n\r\n97\r\n00:03:27.000 --> 00:03:28.000\r\nDaisy Meadows: Let's roll, Reed.\r\n\r\n98\r\n00:03:28.000 --> 00:03:29.600\r\nReed Marsh: Okay, going fast.\r\n\r\n","size":65335581,"duration":233.012,"max_width":1920,"max_height":1080,"summary_sections":[{"section":"summary","response":"

The team met with park rangers to discuss park safety issues. Ranger Rick highlighted recent security challenges and resource limitations. Daisy Meadows committed to securing funds for improved safety measures.

"},{"section":"agenda","response":"

Meeting with Park Rangers

Park Safety Concerns

Tour of the Park

Equipment and Resources

"},{"section":"next_steps","response":""}]}]}] \ No newline at end of file diff --git a/moon/api/lib/demo_orgs/data/notes.json b/moon/api/lib/demo_orgs/data/notes.json index f487f7a2c..206dc39ed 100644 --- a/moon/api/lib/demo_orgs/data/notes.json +++ b/moon/api/lib/demo_orgs/data/notes.json @@ -1 +1 @@ -[{"title":"2024 Park Plan","description_html":"

Welcome to the collaborative document for the 2024 Park Plan! This document is intended to outline\n our strategies, initiatives, and milestones for the upcoming year.

\n

Table of Contents

\n
    \n
  1. \n

    Introduction

    \n
  2. \n
  3. \n

    Key Objectives

    \n
  4. \n
  5. \n

    Project Proposals

    \n
  6. \n
  7. \n

    Budget Overview

    \n
  8. \n
  9. \n

    Timeline

    \n
  10. \n
\n
\n
\n
\n

Introduction

\n

Frontier Park is dedicated to preserving natural beauty and providing an exceptional experience to all\n visitors. As we move into 2024, we must focus on sustainability and innovation.

\n

Our Mission

\n
\n

To protect the park's natural resources while fostering an environment that allows visitors to enjoy and learn\n from the wilderness.

\n
\n

Vision for 2024

\n

Our vision is to make Frontier Park a model for conservation and visitor engagement, setting a benchmark for parks\n nationwide.

\n

Key Objectives

\n\n

Project Proposals

\n\n

Budget Overview

\n

Here is a brief overview of the proposed budget:

\n\n

Timeline

\n
\n Q1: Research and Development\n
\n

In the first quarter of the year, the focus will be on conducting surveys to gather visitor feedback, analyzing\n biodiversity data, and exploring innovative ways to enhance visitor experiences. Additionally, research will be\n carried out to identify potential conservation initiatives and sustainability projects for the park.

\n
\n
\n
\n Q2: Implementation of Pilot Programs\n
\n

During the second quarter, pilot programs will be implemented to test new visitor engagement activities,\n conservation practices, and sustainable infrastructure initiatives within the park.

\n

These pilot programs aim to assess their feasibility, effectiveness, and impact on enhancing the overall visitor\n experience and environmental conservation efforts.

\n
\n
\n
\n Q3: Review & Adjustments\n
\n

In the third quarter, a comprehensive review of the pilot programs will be conducted to" evaluate their\n outcomes, gather stakeholder feedback, and assess any necessary adjustments for optimization.

\n

This phase involves:

\n \n
\n
\n
\n Q4: Full-Scale Rollout\n
\n

During the fourth quarter, the full-scale rollout of successful pilot programs and initiatives will take place\n across the park. This phase involves expanding and implementing the refined strategies, integrating feedback from\n the review phase, and ensuring seamless execution of planned activities to maximize visitor engagement,\n conservation efforts, and sustainable practices park-wide.

\n
\n
\n

Communication Guidelines

\n

Please adhere to the following when posting in our Frontier Park Spaces:

\n\n

Updates & Progress

\n\n

Technical Notes

\n

For those working on the new mobile app, here's a snippet of the code to integrate the park map:

\n
const mapOptions = {\\n  center: { lat: 44.58, lng: -110.5 },\\n  zoom: 8,\\n};\\n\\nfunction initMap() {\\n  const parkMap = new google.maps.Map(document.getElementById('map'), mapOptions);\\n}
\n

This code block initializes the map with predefined mapOptions.

\n
\n
\n
\n

Let's work together to make 2024 a milestone year for Frontier Park! 🌲

","public_visibility":false,"project":"General","project_permission":"view","member":"Ranger Rick","description_schema_version":4}] \ No newline at end of file +[{"title":"2024 Park Plan","description_html":"

Welcome to the collaborative document for the 2024 Park Plan! This document is intended to outline\r\n our strategies, initiatives, and milestones for the upcoming year.

\r\n

Table of Contents

\r\n
    \r\n
  1. \r\n

    Introduction

    \r\n
  2. \r\n
  3. \r\n

    Key Objectives

    \r\n
  4. \r\n
  5. \r\n

    Project Proposals

    \r\n
  6. \r\n
  7. \r\n

    Budget Overview

    \r\n
  8. \r\n
  9. \r\n

    Timeline

    \r\n
  10. \r\n
\r\n
\r\n
\r\n
\r\n

Introduction

\r\n

Frontier Park is dedicated to preserving natural beauty and providing an exceptional experience to all\r\n visitors. As we move into 2024, we must focus on sustainability and innovation.

\r\n

Our Mission

\r\n
\r\n

To protect the park's natural resources while fostering an environment that allows visitors to enjoy and learn\r\n from the wilderness.

\r\n
\r\n

Vision for 2024

\r\n

Our vision is to make Frontier Park a model for conservation and visitor engagement, setting a benchmark for parks\r\n nationwide.

\r\n

Key Objectives

\r\n\r\n

Project Proposals

\r\n\r\n

Budget Overview

\r\n

Here is a brief overview of the proposed budget:

\r\n\r\n

Timeline

\r\n
\r\n Q1: Research and Development\r\n
\r\n

In the first quarter of the year, the focus will be on conducting surveys to gather visitor feedback, analyzing\r\n biodiversity data, and exploring innovative ways to enhance visitor experiences. Additionally, research will be\r\n carried out to identify potential conservation initiatives and sustainability projects for the park.

\r\n
\r\n
\r\n
\r\n Q2: Implementation of Pilot Programs\r\n
\r\n

During the second quarter, pilot programs will be implemented to test new visitor engagement activities,\r\n conservation practices, and sustainable infrastructure initiatives within the park.

\r\n

These pilot programs aim to assess their feasibility, effectiveness, and impact on enhancing the overall visitor\r\n experience and environmental conservation efforts.

\r\n
\r\n
\r\n
\r\n Q3: Review & Adjustments\r\n
\r\n

In the third quarter, a comprehensive review of the pilot programs will be conducted to" evaluate their\r\n outcomes, gather stakeholder feedback, and assess any necessary adjustments for optimization.

\r\n

This phase involves:

\r\n \r\n
\r\n
\r\n
\r\n Q4: Full-Scale Rollout\r\n
\r\n

During the fourth quarter, the full-scale rollout of successful pilot programs and initiatives will take place\r\n across the park. This phase involves expanding and implementing the refined strategies, integrating feedback from\r\n the review phase, and ensuring seamless execution of planned activities to maximize visitor engagement,\r\n conservation efforts, and sustainable practices park-wide.

\r\n
\r\n
\r\n

Communication Guidelines

\r\n

Please adhere to the following when posting in our Frontier Park Spaces:

\r\n\r\n

Updates & Progress

\r\n\r\n

Technical Notes

\r\n

For those working on the new mobile app, here's a snippet of the code to integrate the park map:

\r\n
const mapOptions = {\\n  center: { lat: 44.58, lng: -110.5 },\\n  zoom: 8,\\n};\\n\\nfunction initMap() {\\n  const parkMap = new google.maps.Map(document.getElementById('map'), mapOptions);\\n}
\r\n

This code block initializes the map with predefined mapOptions.

\r\n
\r\n
\r\n
\r\n

Let's work together to make 2024 a milestone year for Frontier Park! 🌲

","public_visibility":false,"project":"General","project_permission":"view","member":"Ranger Rick","description_schema_version":4}] \ No newline at end of file diff --git a/moon/apps/web/components/Rust/Graph/DependencyGraph.tsx b/moon/apps/web/components/Rust/Graph/DependencyGraph.tsx new file mode 100644 index 000000000..5e52f266c --- /dev/null +++ b/moon/apps/web/components/Rust/Graph/DependencyGraph.tsx @@ -0,0 +1,344 @@ +import React, { useEffect, useRef, useState } from 'react'; +import * as d3 from 'd3'; +// import { useParams } from "next/navigation"; + +export interface GraphDependency { + name_and_version: string; + cve_count: number; + direct_dependency?: GraphDependency[]; +} + +interface DependencyNode extends d3.SimulationNodeDatum { + id: string; + color: string; + cve_count: number; +} + +interface DependencyLink extends d3.SimulationLinkDatum { + source: DependencyNode; + target: DependencyNode; +} + +// 模拟数据生成函数 +const generateMockDependencyData = (): GraphDependency => { + const dependencies: GraphDependency[] = [ + { + name_and_version: "tokio-1.35.1", + cve_count: 0, + direct_dependency: [ + { + name_and_version: "bytes-1.5.0", + cve_count: 2, + direct_dependency: [ + { name_and_version: "serde-1.0.195", cve_count: 1 }, + { name_and_version: "log-0.4.20", cve_count: 0 } + ] + }, + { + name_and_version: "futures-0.3.29", + cve_count: 0, + direct_dependency: [ + { name_and_version: "pin-project-1.1.3", cve_count: 0 }, + { name_and_version: "futures-core-0.3.29", cve_count: 0 } + ] + }, + { + name_and_version: "mio-0.8.8", + cve_count: 5, + direct_dependency: [ + { name_and_version: "libc-0.2.150", cve_count: 3 }, + { name_and_version: "log-0.4.20", cve_count: 0 } + ] + }, + { + name_and_version: "num_cpus-1.16.0", + cve_count: 0, + direct_dependency: [ + { name_and_version: "hermit-abi-0.3.3", cve_count: 0 } + ] + }, + { + name_and_version: "parking_lot-0.12.1", + cve_count: 8, + direct_dependency: [ + { name_and_version: "lock_api-0.4.11", cve_count: 2 }, + { name_and_version: "scopeguard-1.2.0", cve_count: 0 } + ] + }, + { + name_and_version: "signal-hook-registry-1.4.1", + cve_count: 0, + direct_dependency: [ + { name_and_version: "libc-0.2.150", cve_count: 3 } + ] + }, + { + name_and_version: "socket2-0.5.5", + cve_count: 12, + direct_dependency: [ + { name_and_version: "libc-0.2.150", cve_count: 3 }, + { name_and_version: "winapi-0.3.9", cve_count: 0 } + ] + }, + { + name_and_version: "tracing-0.1.40", + cve_count: 0, + direct_dependency: [ + { name_and_version: "tracing-core-0.1.32", cve_count: 0 }, + { name_and_version: "log-0.4.20", cve_count: 0 } + ] + }, + { + name_and_version: "windows-sys-0.48.0", + cve_count: 0, + direct_dependency: [ + { name_and_version: "windows-targets-0.48.5", cve_count: 0 } + ] + }, + { + name_and_version: "serde-1.0.195", + cve_count: 1, + direct_dependency: [ + { name_and_version: "serde_derive-1.0.195", cve_count: 0 } + ] + } + ] + } + ]; + + return dependencies[0]; +}; + +const DependencyGraph: React.FC = () => { + const [graphDependencies, setGraphDependencies] = useState(null); + const d3Container = useRef(null); + // const params = useParams(); + + useEffect(() => { + // 使用本地模拟数据替代 API 调用 + const mockData = generateMockDependencyData(); + + // console.log('Mock data for graph:', mockData); + setGraphDependencies(mockData); + }, []); + + useEffect(() => { + if (!graphDependencies || d3Container.current === null) return; + + const containerWidth = d3Container.current.clientWidth; + + const containerHeight = d3Container.current.clientHeight; + + const width = containerWidth; + + const height = containerHeight; + + d3.select(d3Container.current).select('svg').remove(); + + const svg = d3.select(d3Container.current).append('svg') + .attr('width', '100%') + .attr('height', '100%') + .attr('viewBox', `0 0 ${width} ${height}`) + .attr('preserveAspectRatio', 'xMidYMid slice'); + + svg.append('defs').append('marker') + .attr('id', 'arrowhead') + .attr('viewBox', '0 -5 10 10') + .attr('refX', 7) + .attr('refY', 0) + .attr('orient', 'auto') + .attr('markerWidth', 4) + .attr('markerHeight', 4) + .append('path') + .attr('d', 'M 0,-5 L 10,0 L 0,5') + .attr('fill', '#333') + .style('stroke', 'none'); + + const nodesMap = new Map(); + + const links: DependencyLink[] = []; + + // 根据cve_count设置节点颜色 + function processDependencies(dep: GraphDependency, parent?: DependencyNode) { + const nodeId = `${dep.name_and_version}`; + + let node = nodesMap.get(nodeId); + + if (!node) { + const getColorByCveCount = (count: number) => { + + if (count === 0) return 'rgb(46,204,113)'; // 绿色 - CVE = 0 + return 'rgb(229,72,77)'; // 红色 - CVE > 0 + }; + + const nodeColor = !parent ? 'rgb(50,224,196)' : getColorByCveCount(dep.cve_count); + + node = { + id: nodeId, + color: nodeColor, + cve_count: dep.cve_count + }; + nodesMap.set(nodeId, node); + } + if (parent) { + links.push({ source: parent, target: node }); + } + if (dep.direct_dependency) { + dep.direct_dependency.forEach(subDep => processDependencies(subDep, node)); + } + } + + processDependencies(graphDependencies); + + const nodes = Array.from(nodesMap.values()); + + const simulation = d3.forceSimulation(nodes) + + .force('link', d3.forceLink(links).id(d => d.id).distance(150)) + .force('charge', d3.forceManyBody().strength(-1000)) + .force('center', d3.forceCenter(width / 2, height / 2)) + .force('collide', d3.forceCollide().radius(20)); + + const g = svg.append('g'); + + const link = g.append('g') + .selectAll('line') + .data(links) + .enter().append('line') + .attr('stroke-width', 1) + .attr('stroke', '#333') + .attr('marker-end', 'url(#arrowhead)') + .attr('x2', function (d) { + const dx = (d.target as DependencyNode).x! - (d.source as DependencyNode).x!; + + const dy = (d.target as DependencyNode).y! - (d.source as DependencyNode).y!; + + const dist = Math.sqrt(dx * dx + dy * dy); + + return dist === 0 ? 0 : (d.target as DependencyNode).x! - (dx * 7 / dist); + }) + .attr('y2', function (d) { + const dx = (d.target as DependencyNode).x! - (d.source as DependencyNode).x!; + + const dy = (d.target as DependencyNode).y! - (d.source as DependencyNode).y!; + + const dist = Math.sqrt(dx * dx + dy * dy); + + return dist === 0 ? 0 : (d.target as DependencyNode).y! - (dy * 7 / dist); + }); + + const node = g.append('g') + .selectAll('circle') + .data(nodes) + .enter().append('circle') + .attr('r', 7) + .attr('fill', d => d.color) + .attr('stroke', '#333') + .attr('stroke-width', 1) + .call(d3.drag() + .on('start', dragstarted) + .on('drag', dragged) + .on('end', dragended)); + + node.append('title') + .text(d => d.id); + + const labels = g.append('g') + .attr('class', 'labels') + .selectAll('text') + .data(nodes) + .enter().append('text') + .attr('dy', '.35em') + .attr('x', d => d.x! + 12) + .attr('y', d => d.y!) + .text(d => d.id) + .style('font-family', '"HarmonyOS Sans SC"') + .style('font-size', '12px') + .style('font-weight', '400') + .style('fill', d => d.color === 'rgb(229,72,77)' ? '#e5484d' : '#000000') + .style('text-transform', 'capitalize'); + + simulation + .nodes(nodes) + .on('tick', ticked); + + (simulation.force('link') as d3.ForceLink).links(links); + + function ticked() { + link + .attr('x1', d => (d.source as DependencyNode).x!) + .attr('y1', d => (d.source as DependencyNode).y!) + .attr('x2', function (d) { + const dx = (d.target as DependencyNode).x! - (d.source as DependencyNode).x!; + + const dy = (d.target as DependencyNode).y! - (d.source as DependencyNode).y!; + + const dist = Math.sqrt(dx * dx + dy * dy); + + return dist === 0 ? 0 : (d.target as DependencyNode).x! - (dx * 7 / dist); + }) + .attr('y2', function (d) { + const dx = (d.target as DependencyNode).x! - (d.source as DependencyNode).x!; + + const dy = (d.target as DependencyNode).y! - (d.source as DependencyNode).y!; + + const dist = Math.sqrt(dx * dx + dy * dy); + + return dist === 0 ? 0 : (d.target as DependencyNode).y! - (dy * 7 / dist); + }); + + node + .attr('cx', d => d.x!) + .attr('cy', d => d.y!); + + labels + .attr('x', d => d.x! + 12) + .attr('y', d => d.y!); + } + + function dragstarted(event: d3.D3DragEvent, d: DependencyNode) { + if (!event.active) simulation.alphaTarget(0.3).restart(); + d.fx = d.x; + d.fy = d.y; + } + + function dragged(event: d3.D3DragEvent, d: DependencyNode) { + d.fx = event.x; + d.fy = event.y; + } + + function dragended(event: d3.D3DragEvent, d: DependencyNode) { + if (!event.active) simulation.alphaTarget(0); + d.fx = null; + d.fy = null; + } + + const zoom = d3.zoom() + .scaleExtent([0.1, 20]) + .on('zoom', (event) => { + g.attr('transform', event.transform); + }); + + svg.call(zoom); + const initialScale = 0.8; + + svg.call( + zoom.transform, + d3.zoomIdentity + .translate(width / 2, height / 2) + .scale(initialScale) + .translate(-width / 2, -height / 2) + ); + + }, [graphDependencies]); + + return ( +
+ ); +}; + +export default DependencyGraph; \ No newline at end of file diff --git a/moon/apps/web/components/Rust/VersionSelector/VersionSelectorDropdown.tsx b/moon/apps/web/components/Rust/VersionSelector/VersionSelectorDropdown.tsx new file mode 100644 index 000000000..2726cb284 --- /dev/null +++ b/moon/apps/web/components/Rust/VersionSelector/VersionSelectorDropdown.tsx @@ -0,0 +1,118 @@ +import React, { useRef, useEffect } from 'react'; + +interface VersionSelectorDropdownProps { + isOpen: boolean; + onClose: () => void; + onVersionSelect: (version: string) => void; + currentVersion: string; + versions: string[]; +} + +export const VersionSelectorDropdown: React.FC = ({ + isOpen, + onClose, + onVersionSelect, + currentVersion, + versions +}) => { + const dropdownRef = useRef(null); + + const handleVersionSelect = (version: string) => { + onVersionSelect(version); + onClose(); + }; + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { + onClose(); + } + }; + + if (isOpen) { + document.addEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [isOpen, onClose]); + + if (!isOpen) return null; + + return ( +
+
+
+
+
+ Default +
+
+ +
+
+ +
+
+
+
+
+ ALL +
+
+ {versions.map((version: string) => ( + + ))} +
+
+
+ +
+ +
+
+
+ ); +}; diff --git a/moon/apps/web/package.json b/moon/apps/web/package.json index fde5fb53d..cbee9bf8e 100644 --- a/moon/apps/web/package.json +++ b/moon/apps/web/package.json @@ -39,8 +39,8 @@ "@primer/primitives": "catalog:", "@primer/react": "catalog:", "@radix-ui/react-accordion": "catalog:", - "@radix-ui/react-context-menu": "^2.2.15", "@radix-ui/react-collapsible": "catalog:", + "@radix-ui/react-context-menu": "^2.2.15", "@radix-ui/react-dialog": "catalog:", "@radix-ui/react-hover-card": "catalog:", "@radix-ui/react-popover": "catalog:", @@ -53,6 +53,7 @@ "@radix-ui/themes": "catalog:", "@sentry/nextjs": "catalog:", "@shopify/react-shortcuts": "catalog:", + "@swc/helpers": "^0.5.17", "@tanstack/react-query": "catalog:", "@tanstack/react-virtual": "catalog:", "@tiptap/extension-collaboration": "catalog:", @@ -60,12 +61,14 @@ "@tiptap/pm": "catalog:", "@tiptap/react": "catalog:", "@todesktop/client-core": "catalog:", + "@types/d3": "catalog:", "@vercel/og": "catalog:", "@vercel/speed-insights": "catalog:", "clsx": "catalog:", "colord": "catalog:", "cookies-next": "catalog:", "copy-to-clipboard": "catalog:", + "d3": "catalog:", "d3-selection": "catalog:", "d3-zoom": "catalog:", "date-fns": "catalog:", @@ -131,6 +134,7 @@ "remeda": "catalog:", "slugify": "catalog:", "styled-components": "catalog:", + "styled-jsx": "^5.1.7", "tippy.js": "catalog:", "use-debounce": "catalog:", "use-sound": "catalog:", diff --git a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/compare/index.tsx b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/compare/index.tsx index 6a3e4197e..0186d60cb 100644 --- a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/compare/index.tsx +++ b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/compare/index.tsx @@ -1,5 +1,5 @@ "use client"; -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useState, useRef } from 'react'; import Head from 'next/head'; import Image from 'next/image'; import { useParams } from 'next/navigation'; @@ -36,9 +36,12 @@ const ComparePage = () => { const router = useRouter(); const [leftVersion, setLeftVersion] = useState(null); const [rightVersion, setRightVersion] = useState(null); - const selectedLeftVersion = '1.2.01'; - const selectedRightVersion = '1.2.01'; + const [selectedLeftVersion, setSelectedLeftVersion] = useState('1.2.01'); + const [selectedRightVersion, setSelectedRightVersion] = useState('1.2.01'); const [isSwapped, setIsSwapped] = useState(false); + const [isLeftVersionDialogOpen, setIsLeftVersionDialogOpen] = useState(false); + const [isRightVersionDialogOpen, setIsRightVersionDialogOpen] = useState(false); + const [versions] = useState(["1.0.0", "1.1.0", "1.2.0", "2.0.0", "0.2.01", "0.2.02", "0.1.06", "0.1.05"]); // 从查询参数或URL参数中获取crate信息 const crateName = (router.query.crateName as string) || params?.crateName as string || "tokio"; @@ -99,58 +102,204 @@ const ComparePage = () => { setIsSwapped(!isSwapped); }; + const handleLeftVersionSelect = (version: string) => { + setSelectedLeftVersion(version); + setIsLeftVersionDialogOpen(false); + }; + + const handleRightVersionSelect = (version: string) => { + setSelectedRightVersion(version); + setIsRightVersionDialogOpen(false); + }; + + // 版本选择下拉框组件 + const VersionSelectorDropdown = ({ + isOpen, + onClose, + onVersionSelect, + currentVersion, + versions + }: { + isOpen: boolean; + onClose: () => void; + onVersionSelect: (version: string) => void; + currentVersion: string; + versions: string[]; + }) => { + const dropdownRef = useRef(null); + + const handleVersionSelect = (version: string) => { + onVersionSelect(version); + onClose(); + }; + + useEffect(() => { + const handleClickOutside = (event: MouseEvent) => { + if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) { + onClose(); + } + }; + + if (isOpen) { + document.addEventListener('mousedown', handleClickOutside); + } + + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + }, [isOpen, onClose]); + + if (!isOpen) return null; + + return ( +
+
+
+
+
+ Default +
+
+ +
+
+ +
+
+
+
+
+ ALL +
+
+ {versions.map((version: string) => ( + + ))} +
+
+
+ +
+ +
+
+
+ ); + }; + const VersionSelector = ({ - version + version, + isOpen, + onToggle, + onVersionSelect, + versions }: { - version: string; + version: string; + isOpen: boolean; + onToggle: () => void; + onVersionSelect: (version: string) => void; + versions: string[]; }) => ( -
-
+
+ + {version} + + + -
- - {version} - - - - + + + onToggle()} + onVersionSelect={onVersionSelect} + currentVersion={version} + versions={versions} + />
); @@ -242,6 +391,10 @@ const ComparePage = () => {
setIsLeftVersionDialogOpen(!isLeftVersionDialogOpen)} + onVersionSelect={handleLeftVersionSelect} + versions={versions} />
{/* Published */} @@ -666,6 +819,10 @@ const ComparePage = () => {
setIsRightVersionDialogOpen(!isRightVersionDialogOpen)} + onVersionSelect={handleRightVersionSelect} + versions={versions} />
{/* Published */} diff --git a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/graph/index.tsx b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/graph/index.tsx new file mode 100644 index 000000000..091278b58 --- /dev/null +++ b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/graph/index.tsx @@ -0,0 +1,170 @@ +"use client"; +import React, { useState } from 'react'; +import Head from 'next/head'; +import { useParams } from 'next/navigation'; +import { useRouter } from 'next/router'; +import { AppLayout } from '@/components/Layout/AppLayout'; +import AuthAppProviders from '@/components/Providers/AuthAppProviders'; +import { MagnifyingGlassIcon } from '@heroicons/react/24/outline'; +import CrateInfoLayout from '../../layout'; +import DependencyGraph from '@/components/Rust/Graph/DependencyGraph'; + +const DependenciesGraphPage = () => { + const params = useParams(); + const router = useRouter(); + const [currentPage, setCurrentPage] = useState(1); + const [searchTerm, setSearchTerm] = useState(''); + + // 从查询参数或URL参数中获取crate信息 + const crateName = (router.query.crateName as string) || params?.crateName as string || "tokio"; + // const version = (router.query.version as string) || params?.version as string || "1.2.01"; + const nsfront = params?.nsfront as string || router.query.org as string; + + const handleBackToTable = () => { + router.push(`/${nsfront}/rust/rust-ecosystem/crate-info/${crateName}/dependencies`); + }; + + return ( + <> + + Dependencies Graph - {crateName} + + + {/* 主要内容区域 */} +
+
+ {/* 统一的白色面板 */} +
+ {/* 搜索和视图切换 - 在面板内部 */} +
+
+
+
+ +
+ setSearchTerm(e.target.value)} + style={{ + display: 'flex', + height: 'var(--Spacing-8, 36px)', + padding: '0 var(--Spacing-1, 4px)', + alignItems: 'center', + alignSelf: 'stretch', + borderRadius: 'var(--Radius-2-max, 4px)', + border: '1px solid var(--Colors-Neutral-Neutral-Alpha-5, #0009321f)', + background: 'var(--Tokens-Colors-surface, #ffffffe6)', + paddingLeft: '40px', + width: '100%' + }} + /> +
+
+
+ + +
+
+ + {/* 图形视图内容 */} +
+ +
+
+ + {/* 分页功能区 */} +
+
+
+ {/* Previous 按钮 */} + + + {/* 当前页码 */} + {currentPage} + + {/* Next 按钮 */} + +
+
+
+
+
+
+ + ); +}; + +// 添加 getProviders 方法以适配新的项目结构 +DependenciesGraphPage.getProviders = (page: any, pageProps: any) => { + return ( + + {page} + + ); +}; + +export default DependenciesGraphPage; diff --git a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/index.tsx b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/index.tsx index 797c9efdf..c80badff4 100644 --- a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/index.tsx +++ b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/dependencies/index.tsx @@ -26,14 +26,12 @@ const DependenciesPage = () => { const router = useRouter(); const [dependencies, setDependencies] = useState([]); const [currentPage, setCurrentPage] = useState(1); - const [viewMode, setViewMode] = useState<'table' | 'graph'>('table'); const [searchTerm, setSearchTerm] = useState(''); // 从查询参数或URL参数中获取crate信息 const crateName = (router.query.crateName as string) || params?.crateName as string || "tokio"; const version = (router.query.version as string) || params?.version as string || "1.2.01"; - // const nsfront = params?.nsfront as string || router.query.org as string; - // const nsbehind = params?.nsbehind as string || "rust/rust-ecosystem/crate-info"; + const nsfront = params?.nsfront as string || router.query.org as string; useEffect(() => { // 模拟依赖数据 @@ -41,7 +39,7 @@ const DependenciesPage = () => { { id: '1', name: 'cheerio', - version: '1.1.1.0', + version: '1.1.3.0', relation: 'Direct', license: 'MIT', dependencies: 21, @@ -131,6 +129,10 @@ const DependenciesPage = () => { dep.version.toLowerCase().includes(searchTerm.toLowerCase()) ); + const handleNavigateToGraph = () => { + router.push(`/${nsfront}/rust/rust-ecosystem/crate-info/${crateName}/dependencies/graph`); + }; + return ( <> @@ -169,9 +171,8 @@ const DependenciesPage = () => { /> -
+
- {/* 表格 - 在面板内部 */} + {/* 表格视图内容 */}
- + - - - + + + + - {dependency.expanded && dependency.description && ( - - - - )} + {dependency.expanded && dependency.description && ( + + + + )} ))} @@ -477,39 +474,39 @@ const DependenciesPage = () => { - {/* 分页功能区 */} -
-
-
- {/* Previous 按钮 */} - + {/* 分页功能区 */} +
+
+
+ {/* Previous 按钮 */} + - {/* 当前页码 */} - {currentPage} + {/* 当前页码 */} + {currentPage} - {/* Next 按钮 */} - -
-
-
+ {/* Next 按钮 */} + +
+
+
diff --git a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/index.tsx b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/index.tsx index cf2cda4ca..773fb8104 100644 --- a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/index.tsx +++ b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/index.tsx @@ -76,6 +76,8 @@ const CratePage = () => { const nsbehind = params?.nsbehind as string || "rust/rust-ecosystem/crate-info"; const name = params?.name as string || crateName; + + // const basePath = `/${nsfront}/${nsbehind}/${name}/${version}`; useEffect(() => { @@ -119,7 +121,7 @@ const CratePage = () => { license: "MIT License", github_url: "https://github.com/example/example-crate", doc_url: "https://docs.rs/example-crate", - versions: ["1.0.0", "1.1.0", "1.2.0", "2.0.0"] + versions: ["1.0.0", "1.1.0", "1.2.0", "2.0.0", "0.2.01", "0.2.02", "0.1.06", "0.1.05"] }; // 直接设置数据,不使用加载延迟 diff --git a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/layout.tsx b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/layout.tsx index 1c1af6ef3..89e6a5107 100644 --- a/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/layout.tsx +++ b/moon/apps/web/pages/[org]/rust/rust-ecosystem/crate-info/[crateName]/layout.tsx @@ -3,6 +3,7 @@ import React, { useState, useEffect, useMemo, useCallback } from 'react'; import { useRouter } from 'next/router'; import { useParams } from 'next/navigation'; import { MagnifyingGlassIcon } from '@heroicons/react/24/outline'; +import { VersionSelectorDropdown } from '../../../../../../components/Rust/VersionSelector/VersionSelectorDropdown'; interface CrateInfoLayoutProps { children: React.ReactNode; @@ -26,6 +27,11 @@ const CrateInfoLayoutComponent = ({ children }: CrateInfoLayoutProps) => { [params?.nsfront, router.query.org] ); + // 版本选择相关状态 + const [isVersionDialogOpen, setIsVersionDialogOpen] = useState(false); + const [selectedVersion, setSelectedVersion] = useState(version); + const [versions] = useState(["1.0.0", "1.1.0", "1.2.0", "2.0.0", "0.2.01", "0.2.02", "0.1.06", "0.1.05"]); + // 根据当前路径确定activeTab const [activeTab, setActiveTab] = useState<'overview' | 'dependencies' | 'dependents' | 'compare' | 'versions'>('overview'); @@ -49,6 +55,18 @@ const CrateInfoLayoutComponent = ({ children }: CrateInfoLayoutProps) => { router.push(href, undefined, { shallow: true }); }, [router]); + // 版本选择处理函数 + const handleVersionSelect = useCallback((newVersion: string) => { + setSelectedVersion(newVersion); + // 更新URL中的版本参数 + const currentPath = router.asPath; + + const newPath = currentPath.replace(/[?&]version=[^&]*/, '') + + (currentPath.includes('?') ? '&' : '?') + `version=${newVersion}`; + + router.push(newPath, undefined, { shallow: true }); + }, [router]); + const navigationTabs = useMemo(() => [ { id: 'overview', label: 'overview', href: `/${nsfront}/rust/rust-ecosystem/crate-info/${crateName}?crateName=${crateName}&version=${version}` }, { id: 'dependencies', label: 'dependencies', href: `/${nsfront}/rust/rust-ecosystem/crate-info/${crateName}/dependencies?crateName=${crateName}&version=${version}` }, @@ -124,29 +142,41 @@ const CrateInfoLayoutComponent = ({ children }: CrateInfoLayoutProps) => { {crateName} -
-
- - +
+
- {version} - - - + + + setIsVersionDialogOpen(false)} + onVersionSelect={handleVersionSelect} + currentVersion={selectedVersion} + versions={versions} + />
diff --git a/moon/apps/web/pages/_app.tsx b/moon/apps/web/pages/_app.tsx index a135e004c..9f00c6f21 100644 --- a/moon/apps/web/pages/_app.tsx +++ b/moon/apps/web/pages/_app.tsx @@ -80,4 +80,4 @@ export function reportWebVitals(metric: NextWebVitalsMetric) { } else { sendFallback(url) } -} +} \ No newline at end of file diff --git a/moon/pnpm-lock.yaml b/moon/pnpm-lock.yaml index a879bc07b..36a53c85c 100644 --- a/moon/pnpm-lock.yaml +++ b/moon/pnpm-lock.yaml @@ -303,6 +303,9 @@ catalogs: '@todesktop/client-core': specifier: ^1.10.0 version: 1.10.0 + '@types/d3': + specifier: ^7.4.3 + version: 7.4.3 '@types/d3-selection': specifier: ^3.0.3 version: 3.0.5 @@ -369,6 +372,9 @@ catalogs: copy-to-clipboard: specifier: ^3.3.3 version: 3.3.3 + d3: + specifier: ^7.8.5 + version: 7.9.0 d3-selection: specifier: ^3.0.0 version: 3.0.0 @@ -890,6 +896,9 @@ importers: '@shopify/react-shortcuts': specifier: 'catalog:' version: 5.2.0(react@18.2.0) + '@swc/helpers': + specifier: ^0.5.17 + version: 0.5.17 '@tanstack/react-query': specifier: 'catalog:' version: 5.59.0(react@18.2.0) @@ -911,6 +920,9 @@ importers: '@todesktop/client-core': specifier: 'catalog:' version: 1.10.0 + '@types/d3': + specifier: 'catalog:' + version: 7.4.3 '@vercel/og': specifier: 'catalog:' version: 0.6.2 @@ -929,6 +941,9 @@ importers: copy-to-clipboard: specifier: 'catalog:' version: 3.3.3 + d3: + specifier: 'catalog:' + version: 7.9.0 d3-selection: specifier: 'catalog:' version: 3.0.0 @@ -1124,6 +1139,9 @@ importers: styled-components: specifier: 'catalog:' version: 6.1.19(react-dom@18.2.0(react@18.2.0))(react@18.2.0) + styled-jsx: + specifier: ^5.1.7 + version: 5.1.7(@babel/core@7.24.6)(react@18.2.0) tippy.js: specifier: 'catalog:' version: 6.3.7 @@ -5183,6 +5201,9 @@ packages: '@swc/helpers@0.4.14': resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + '@swc/helpers@0.5.17': + resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} + '@swc/helpers@0.5.5': resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} @@ -5557,21 +5578,99 @@ packages: '@types/cross-spawn@6.0.6': resolution: {integrity: sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==} + '@types/d3-array@3.2.1': + resolution: {integrity: sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-brush@3.0.6': + resolution: {integrity: sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==} + + '@types/d3-chord@3.0.6': + resolution: {integrity: sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==} + '@types/d3-color@3.1.0': resolution: {integrity: sha512-HKuicPHJuvPgCD+np6Se9MQvS6OCbJmOjGvylzMJRlDwUXjKTTXs6Pwgk79O09Vj/ho3u1ofXnhFOaEWWPrlwA==} + '@types/d3-contour@3.0.6': + resolution: {integrity: sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==} + + '@types/d3-delaunay@6.0.4': + resolution: {integrity: sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==} + + '@types/d3-dispatch@3.0.7': + resolution: {integrity: sha512-5o9OIAdKkhN1QItV2oqaE5KMIiXAvDWBDPrD85e58Qlz1c1kI/J0NcqbEG88CoTwJrYe7ntUCVfeUl2UJKbWgA==} + + '@types/d3-drag@3.0.7': + resolution: {integrity: sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==} + + '@types/d3-dsv@3.0.7': + resolution: {integrity: sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==} + + '@types/d3-ease@3.0.2': + resolution: {integrity: sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==} + + '@types/d3-fetch@3.0.7': + resolution: {integrity: sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==} + + '@types/d3-force@3.0.10': + resolution: {integrity: sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-geo@3.1.0': + resolution: {integrity: sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + '@types/d3-interpolate@3.0.1': resolution: {integrity: sha512-jx5leotSeac3jr0RePOH1KdR9rISG91QIE4Q2PYTu4OymLTZfA3SrnURSLzKH48HmXVUru50b8nje4E79oQSQw==} + '@types/d3-path@3.1.1': + resolution: {integrity: sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==} + + '@types/d3-polygon@3.0.2': + resolution: {integrity: sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==} + + '@types/d3-quadtree@3.0.6': + resolution: {integrity: sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==} + + '@types/d3-random@3.0.3': + resolution: {integrity: sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==} + + '@types/d3-scale-chromatic@3.1.0': + resolution: {integrity: sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + '@types/d3-selection@3.0.5': resolution: {integrity: sha512-xCB0z3Hi8eFIqyja3vW8iV01+OHGYR2di/+e+AiOcXIOrY82lcvWW8Ke1DYE/EUVMsBl4Db9RppSBS3X1U6J0w==} + '@types/d3-shape@3.1.7': + resolution: {integrity: sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==} + + '@types/d3-time-format@4.0.3': + resolution: {integrity: sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/d3-timer@3.0.2': + resolution: {integrity: sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==} + '@types/d3-transition@3.0.8': resolution: {integrity: sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==} '@types/d3-zoom@3.0.3': resolution: {integrity: sha512-OWk1yYIIWcZ07+igN6BeoG6rqhnJ/pYe+R1qWFM2DtW49zsoSjgb9G5xB0ZXA8hh2jAzey1XuRmMSoXdKw8MDA==} + '@types/d3@7.4.3': + resolution: {integrity: sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==} + '@types/debug@4.1.12': resolution: {integrity: sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==} @@ -5617,6 +5716,9 @@ packages: '@types/express@4.17.21': resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==} + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + '@types/hast@2.3.4': resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==} @@ -6904,10 +7006,34 @@ packages: csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-brush@3.0.0: + resolution: {integrity: sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==} + engines: {node: '>=12'} + + d3-chord@3.0.1: + resolution: {integrity: sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==} + engines: {node: '>=12'} + d3-color@3.1.0: resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} engines: {node: '>=12'} + d3-contour@4.0.2: + resolution: {integrity: sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==} + engines: {node: '>=12'} + + d3-delaunay@6.0.4: + resolution: {integrity: sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==} + engines: {node: '>=12'} + d3-dispatch@3.0.1: resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} engines: {node: '>=12'} @@ -6916,18 +7042,79 @@ packages: resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} engines: {node: '>=12'} + d3-dsv@3.0.1: + resolution: {integrity: sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==} + engines: {node: '>=12'} + hasBin: true + d3-ease@3.0.1: resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} engines: {node: '>=12'} + d3-fetch@3.0.1: + resolution: {integrity: sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==} + engines: {node: '>=12'} + + d3-force@3.0.0: + resolution: {integrity: sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==} + engines: {node: '>=12'} + + d3-format@3.1.0: + resolution: {integrity: sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==} + engines: {node: '>=12'} + + d3-geo@3.1.1: + resolution: {integrity: sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + d3-interpolate@3.0.1: resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} engines: {node: '>=12'} + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + d3-selection@3.0.0: resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} engines: {node: '>=12'} + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + d3-timer@3.0.1: resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} engines: {node: '>=12'} @@ -6942,6 +7129,10 @@ packages: resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} engines: {node: '>=12'} + d3@7.9.0: + resolution: {integrity: sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==} + engines: {node: '>=12'} + damerau-levenshtein@1.0.8: resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} @@ -7068,6 +7259,9 @@ packages: resolution: {integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==} engines: {node: '>=10'} + delaunator@5.0.1: + resolution: {integrity: sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==} + delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} @@ -8227,6 +8421,10 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + intl-messageformat@10.5.0: resolution: {integrity: sha512-AvojYuOaRb6r2veOKfTVpxH9TrmjSdc5iR9R5RgBwrDZYSmAAFVT+QLbW3C4V7Qsg0OguMp67Q/EoUkxZzXRGw==} @@ -10512,6 +10710,9 @@ packages: ripemd160@2.0.2: resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + robust-predicates@3.0.2: + resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==} + rollup@3.29.4: resolution: {integrity: sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==} engines: {node: '>=14.18.0', npm: '>=8.0.0'} @@ -10537,6 +10738,9 @@ packages: run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + rw@1.3.3: + resolution: {integrity: sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==} + sade@1.8.1: resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} engines: {node: '>=6'} @@ -10965,6 +11169,19 @@ packages: babel-plugin-macros: optional: true + styled-jsx@5.1.7: + resolution: {integrity: sha512-HPLmEIYprxCeWDMLYiaaAhsV3yGfIlCqzuVOybE6fjF3SUJmH67nCoMDO+nAvHNHo46OfvpCNu4Rcue82dMNFg==} + engines: {node: '>= 12.0.0'} + peerDependencies: + '@babel/core': '*' + babel-plugin-macros: '*' + react: '>= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0' + peerDependenciesMeta: + '@babel/core': + optional: true + babel-plugin-macros: + optional: true + styled-system@5.1.5: resolution: {integrity: sha512-7VoD0o2R3RKzOzPK0jYrVnS8iJdfkKsQJNiLRDjikOpQVqQHns/DXWaPZOH4tIKkhAT7I6wIsy9FWTWh2X3q+A==} @@ -11257,6 +11474,9 @@ packages: tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + tsup@8.0.2: resolution: {integrity: sha512-NY8xtQXdH7hDUAZwcQdY/Vzlw9johQsaqf7iwZ6g1DOUlFYQ5/AtVAjTvihhEyeRlGo4dLRVHtrRaL35M1daqQ==} engines: {node: '>=18'} @@ -13341,20 +13561,20 @@ snapshots: '@internationalized/date@3.4.0': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 '@internationalized/message@3.1.1': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 intl-messageformat: 10.5.0 '@internationalized/number@3.2.1': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 '@internationalized/string@3.1.1': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 '@isaacs/cliui@8.0.2': dependencies: @@ -14817,7 +15037,7 @@ snapshots: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/breadcrumbs': 3.6.1(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/button@3.8.1(react@18.2.0)': @@ -14828,7 +15048,7 @@ snapshots: '@react-stately/toggle': 3.6.1(react@18.2.0) '@react-types/button': 3.7.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/calendar@3.4.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -14842,7 +15062,7 @@ snapshots: '@react-types/button': 3.7.4(react@18.2.0) '@react-types/calendar': 3.3.1(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -14855,7 +15075,7 @@ snapshots: '@react-stately/toggle': 3.6.1(react@18.2.0) '@react-types/checkbox': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/combobox@3.6.3(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -14875,7 +15095,7 @@ snapshots: '@react-types/button': 3.7.4(react@18.2.0) '@react-types/combobox': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -14896,7 +15116,7 @@ snapshots: '@react-types/datepicker': 3.5.0(react@18.2.0) '@react-types/dialog': 3.5.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -14908,7 +15128,7 @@ snapshots: '@react-stately/overlays': 3.6.1(react@18.2.0) '@react-types/dialog': 3.5.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -14925,7 +15145,7 @@ snapshots: '@react-stately/dnd': 3.2.3(react@18.2.0) '@react-types/button': 3.7.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -14934,7 +15154,7 @@ snapshots: '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 clsx: 1.2.1 react: 18.2.0 @@ -14953,7 +15173,7 @@ snapshots: '@react-types/checkbox': 3.5.0(react@18.2.0) '@react-types/grid': 3.2.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -14968,7 +15188,7 @@ snapshots: '@react-stately/list': 3.9.1(react@18.2.0) '@react-types/checkbox': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -14982,7 +15202,7 @@ snapshots: '@react-aria/ssr': 3.7.1(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/interactions@3.17.0(react@18.2.0)': @@ -14990,7 +15210,7 @@ snapshots: '@react-aria/ssr': 3.7.1(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/label@3.6.1(react@18.2.0)': @@ -14998,7 +15218,7 @@ snapshots: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/label': 3.7.5(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/link@3.5.3(react@18.2.0)': @@ -15008,7 +15228,7 @@ snapshots: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/link': 3.4.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/listbox@3.10.1(react@18.2.0)': @@ -15022,12 +15242,12 @@ snapshots: '@react-stately/list': 3.9.1(react@18.2.0) '@react-types/listbox': 3.4.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/live-announcer@3.3.1': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 '@react-aria/menu@3.10.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': dependencies: @@ -15043,7 +15263,7 @@ snapshots: '@react-types/button': 3.7.4(react@18.2.0) '@react-types/menu': 3.9.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -15052,7 +15272,7 @@ snapshots: '@react-aria/progress': 3.4.4(react@18.2.0) '@react-types/meter': 3.3.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/numberfield@3.7.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -15068,7 +15288,7 @@ snapshots: '@react-types/numberfield': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/textfield': 3.7.3(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -15084,7 +15304,7 @@ snapshots: '@react-types/button': 3.7.4(react@18.2.0) '@react-types/overlays': 3.8.1(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -15095,7 +15315,7 @@ snapshots: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/progress': 3.4.2(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/radio@3.7.0(react@18.2.0)': @@ -15108,7 +15328,7 @@ snapshots: '@react-stately/radio': 3.8.3(react@18.2.0) '@react-types/radio': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/searchfield@3.5.4(react@18.2.0)': @@ -15121,7 +15341,7 @@ snapshots: '@react-types/button': 3.7.4(react@18.2.0) '@react-types/searchfield': 3.4.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/select@3.12.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -15138,7 +15358,7 @@ snapshots: '@react-types/button': 3.7.4(react@18.2.0) '@react-types/select': 3.8.2(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -15151,14 +15371,14 @@ snapshots: '@react-stately/collections': 3.10.0(react@18.2.0) '@react-stately/selection': 3.13.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/separator@3.3.4(react@18.2.0)': dependencies: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/slider@3.6.0(react@18.2.0)': @@ -15173,7 +15393,7 @@ snapshots: '@react-types/radio': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/slider': 3.6.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/spinbutton@3.5.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -15183,13 +15403,13 @@ snapshots: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/button': 3.7.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) '@react-aria/ssr@3.7.1(react@18.2.0)': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/switch@3.5.3(react@18.2.0)': @@ -15197,7 +15417,7 @@ snapshots: '@react-aria/toggle': 3.7.0(react@18.2.0) '@react-stately/toggle': 3.6.1(react@18.2.0) '@react-types/switch': 3.4.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/table@3.11.0(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -15218,7 +15438,7 @@ snapshots: '@react-types/grid': 3.2.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/table': 3.8.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 react-dom: 18.2.0(react@18.2.0) @@ -15233,7 +15453,7 @@ snapshots: '@react-stately/tabs': 3.5.1(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/tabs': 3.3.1(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/tag@3.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0)': @@ -15247,7 +15467,7 @@ snapshots: '@react-stately/list': 3.9.1(react@18.2.0) '@react-types/button': 3.7.4(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 transitivePeerDependencies: - react-dom @@ -15259,7 +15479,7 @@ snapshots: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/textfield': 3.7.3(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/toggle@3.7.0(react@18.2.0)': @@ -15271,7 +15491,7 @@ snapshots: '@react-types/checkbox': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/switch': 3.4.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/tooltip@3.6.1(react@18.2.0)': @@ -15282,7 +15502,7 @@ snapshots: '@react-stately/tooltip': 3.4.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/tooltip': 3.4.3(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-aria/utils@3.19.0(react@18.2.0)': @@ -15290,7 +15510,7 @@ snapshots: '@react-aria/ssr': 3.7.1(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 clsx: 1.2.1 react: 18.2.0 @@ -15299,7 +15519,7 @@ snapshots: '@react-aria/interactions': 3.17.0(react@18.2.0) '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 clsx: 1.2.1 react: 18.2.0 @@ -15310,7 +15530,7 @@ snapshots: '@react-types/calendar': 3.3.1(react@18.2.0) '@react-types/datepicker': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/checkbox@3.4.4(react@18.2.0)': @@ -15319,13 +15539,13 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/checkbox': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/collections@3.10.0(react@18.2.0)': dependencies: '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/combobox@3.6.0(react@18.2.0)': @@ -15337,7 +15557,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/combobox': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/datepicker@3.6.0(react@18.2.0)': @@ -15348,14 +15568,14 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/datepicker': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/dnd@3.2.3(react@18.2.0)': dependencies: '@react-stately/selection': 3.13.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/flags@3.0.0': @@ -15368,7 +15588,7 @@ snapshots: '@react-stately/selection': 3.13.3(react@18.2.0) '@react-types/grid': 3.2.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/layout@3.13.0(react@18.2.0)': @@ -15379,7 +15599,7 @@ snapshots: '@react-types/grid': 3.2.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/table': 3.8.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/list@3.9.1(react@18.2.0)': @@ -15388,7 +15608,7 @@ snapshots: '@react-stately/selection': 3.13.3(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/menu@3.5.4(react@18.2.0)': @@ -15397,7 +15617,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/menu': 3.9.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/numberfield@3.6.0(react@18.2.0)': @@ -15406,14 +15626,14 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/numberfield': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/overlays@3.6.1(react@18.2.0)': dependencies: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/overlays': 3.8.1(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/radio@3.8.3(react@18.2.0)': @@ -15421,7 +15641,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/radio': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/searchfield@3.4.4(react@18.2.0)': @@ -15429,7 +15649,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/searchfield': 3.4.3(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/select@3.5.3(react@18.2.0)': @@ -15441,7 +15661,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/select': 3.8.2(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/selection@3.13.3(react@18.2.0)': @@ -15449,7 +15669,7 @@ snapshots: '@react-stately/collections': 3.10.0(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/slider@3.4.1(react@18.2.0)': @@ -15459,7 +15679,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/slider': 3.6.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/table@3.11.0(react@18.2.0)': @@ -15472,7 +15692,7 @@ snapshots: '@react-types/grid': 3.2.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/table': 3.8.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/tabs@3.5.1(react@18.2.0)': @@ -15481,7 +15701,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) '@react-types/tabs': 3.3.1(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/toggle@3.6.1(react@18.2.0)': @@ -15489,7 +15709,7 @@ snapshots: '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/checkbox': 3.5.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/tooltip@3.4.3(react@18.2.0)': @@ -15497,7 +15717,7 @@ snapshots: '@react-stately/overlays': 3.6.1(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/tooltip': 3.4.3(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/tree@3.7.1(react@18.2.0)': @@ -15506,19 +15726,19 @@ snapshots: '@react-stately/selection': 3.13.3(react@18.2.0) '@react-stately/utils': 3.7.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/utils@3.7.0(react@18.2.0)': dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-stately/virtualizer@3.6.1(react@18.2.0)': dependencies: '@react-aria/utils': 3.19.0(react@18.2.0) '@react-types/shared': 3.19.0(react@18.2.0) - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 react: 18.2.0 '@react-types/breadcrumbs@3.6.1(react@18.2.0)': @@ -16819,6 +17039,10 @@ snapshots: dependencies: tslib: 2.6.2 + '@swc/helpers@0.5.17': + dependencies: + tslib: 2.8.1 + '@swc/helpers@0.5.5': dependencies: '@swc/counter': 0.1.3 @@ -17225,14 +17449,81 @@ snapshots: dependencies: '@types/node': 20.12.4 + '@types/d3-array@3.2.1': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.5 + + '@types/d3-brush@3.0.6': + dependencies: + '@types/d3-selection': 3.0.5 + + '@types/d3-chord@3.0.6': {} + '@types/d3-color@3.1.0': {} + '@types/d3-contour@3.0.6': + dependencies: + '@types/d3-array': 3.2.1 + '@types/geojson': 7946.0.16 + + '@types/d3-delaunay@6.0.4': {} + + '@types/d3-dispatch@3.0.7': {} + + '@types/d3-drag@3.0.7': + dependencies: + '@types/d3-selection': 3.0.5 + + '@types/d3-dsv@3.0.7': {} + + '@types/d3-ease@3.0.2': {} + + '@types/d3-fetch@3.0.7': + dependencies: + '@types/d3-dsv': 3.0.7 + + '@types/d3-force@3.0.10': {} + + '@types/d3-format@3.0.4': {} + + '@types/d3-geo@3.1.0': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/d3-hierarchy@3.1.7': {} + '@types/d3-interpolate@3.0.1': dependencies: '@types/d3-color': 3.1.0 + '@types/d3-path@3.1.1': {} + + '@types/d3-polygon@3.0.2': {} + + '@types/d3-quadtree@3.0.6': {} + + '@types/d3-random@3.0.3': {} + + '@types/d3-scale-chromatic@3.1.0': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + '@types/d3-selection@3.0.5': {} + '@types/d3-shape@3.1.7': + dependencies: + '@types/d3-path': 3.1.1 + + '@types/d3-time-format@4.0.3': {} + + '@types/d3-time@3.0.4': {} + + '@types/d3-timer@3.0.2': {} + '@types/d3-transition@3.0.8': dependencies: '@types/d3-selection': 3.0.5 @@ -17242,6 +17533,39 @@ snapshots: '@types/d3-interpolate': 3.0.1 '@types/d3-selection': 3.0.5 + '@types/d3@7.4.3': + dependencies: + '@types/d3-array': 3.2.1 + '@types/d3-axis': 3.0.6 + '@types/d3-brush': 3.0.6 + '@types/d3-chord': 3.0.6 + '@types/d3-color': 3.1.0 + '@types/d3-contour': 3.0.6 + '@types/d3-delaunay': 6.0.4 + '@types/d3-dispatch': 3.0.7 + '@types/d3-drag': 3.0.7 + '@types/d3-dsv': 3.0.7 + '@types/d3-ease': 3.0.2 + '@types/d3-fetch': 3.0.7 + '@types/d3-force': 3.0.10 + '@types/d3-format': 3.0.4 + '@types/d3-geo': 3.1.0 + '@types/d3-hierarchy': 3.1.7 + '@types/d3-interpolate': 3.0.1 + '@types/d3-path': 3.1.1 + '@types/d3-polygon': 3.0.2 + '@types/d3-quadtree': 3.0.6 + '@types/d3-random': 3.0.3 + '@types/d3-scale': 4.0.9 + '@types/d3-scale-chromatic': 3.1.0 + '@types/d3-selection': 3.0.5 + '@types/d3-shape': 3.1.7 + '@types/d3-time': 3.0.4 + '@types/d3-time-format': 4.0.3 + '@types/d3-timer': 3.0.2 + '@types/d3-transition': 3.0.8 + '@types/d3-zoom': 3.0.3 + '@types/debug@4.1.12': dependencies: '@types/ms': 2.1.0 @@ -17290,6 +17614,8 @@ snapshots: '@types/qs': 6.9.11 '@types/serve-static': 1.15.5 + '@types/geojson@7946.0.16': {} + '@types/hast@2.3.4': dependencies: '@types/unist': 3.0.2 @@ -18787,8 +19113,34 @@ snapshots: csstype@3.1.3: {} + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-brush@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + d3-chord@3.0.1: + dependencies: + d3-path: 3.1.0 + d3-color@3.1.0: {} + d3-contour@4.0.2: + dependencies: + d3-array: 3.2.4 + + d3-delaunay@6.0.4: + dependencies: + delaunator: 5.0.1 + d3-dispatch@3.0.1: {} d3-drag@3.0.0: @@ -18796,14 +19148,71 @@ snapshots: d3-dispatch: 3.0.1 d3-selection: 3.0.0 + d3-dsv@3.0.1: + dependencies: + commander: 7.2.0 + iconv-lite: 0.6.3 + rw: 1.3.3 + d3-ease@3.0.1: {} + d3-fetch@3.0.1: + dependencies: + d3-dsv: 3.0.1 + + d3-force@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-quadtree: 3.0.1 + d3-timer: 3.0.1 + + d3-format@3.1.0: {} + + d3-geo@3.1.1: + dependencies: + d3-array: 3.2.4 + + d3-hierarchy@3.1.2: {} + d3-interpolate@3.0.1: dependencies: d3-color: 3.1.0 + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.0 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-selection@3.0.0: {} + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + d3-timer@3.0.1: {} d3-transition@3.0.1(d3-selection@3.0.0): @@ -18823,6 +19232,39 @@ snapshots: d3-selection: 3.0.0 d3-transition: 3.0.1(d3-selection@3.0.0) + d3@7.9.0: + dependencies: + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-brush: 3.0.0 + d3-chord: 3.0.1 + d3-color: 3.1.0 + d3-contour: 4.0.2 + d3-delaunay: 6.0.4 + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-dsv: 3.0.1 + d3-ease: 3.0.1 + d3-fetch: 3.0.1 + d3-force: 3.0.0 + d3-format: 3.1.0 + d3-geo: 3.1.1 + d3-hierarchy: 3.1.2 + d3-interpolate: 3.0.1 + d3-path: 3.1.0 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + d3-timer: 3.0.1 + d3-transition: 3.0.1(d3-selection@3.0.0) + d3-zoom: 3.0.0 + damerau-levenshtein@1.0.8: {} data-uri-to-buffer@4.0.1: {} @@ -18958,6 +19400,10 @@ snapshots: rimraf: 3.0.2 slash: 3.0.0 + delaunator@5.0.1: + dependencies: + robust-predicates: 3.0.2 + delayed-stream@1.0.0: {} delegates@1.0.0: {} @@ -20394,6 +20840,8 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 + internmap@2.0.3: {} + intl-messageformat@10.5.0: dependencies: '@formatjs/ecma402-abstract': 1.17.0 @@ -22864,7 +23312,7 @@ snapshots: react-tweet@3.1.1(react-dom@18.2.0(react@18.2.0))(react@18.2.0): dependencies: - '@swc/helpers': 0.5.5 + '@swc/helpers': 0.5.17 clsx: 1.2.1 date-fns: 2.30.0 react: 18.2.0 @@ -23122,6 +23570,8 @@ snapshots: hash-base: 3.1.0 inherits: 2.0.4 + robust-predicates@3.0.2: {} + rollup@3.29.4: optionalDependencies: fsevents: 2.3.3 @@ -23161,6 +23611,8 @@ snapshots: dependencies: queue-microtask: 1.2.3 + rw@1.3.3: {} + sade@1.8.1: dependencies: mri: 1.2.0 @@ -23642,6 +24094,13 @@ snapshots: optionalDependencies: '@babel/core': 7.24.6 + styled-jsx@5.1.7(@babel/core@7.24.6)(react@18.2.0): + dependencies: + client-only: 0.0.1 + react: 18.2.0 + optionalDependencies: + '@babel/core': 7.24.6 + styled-system@5.1.5: dependencies: '@styled-system/background': 5.1.2 @@ -24014,6 +24473,8 @@ snapshots: tslib@2.6.2: {} + tslib@2.8.1: {} + tsup@8.0.2(postcss@8.5.4)(ts-node@10.9.1(@types/node@20.12.4)(typescript@5.4.3))(typescript@5.4.3): dependencies: bundle-require: 4.0.3(esbuild@0.19.5) diff --git a/moon/pnpm-workspace.yaml b/moon/pnpm-workspace.yaml index 7a69aa304..b2f549b27 100644 --- a/moon/pnpm-workspace.yaml +++ b/moon/pnpm-workspace.yaml @@ -110,6 +110,7 @@ catalog: '@tiptap/react': ^2.6.4 '@todesktop/client-core': ^1.10.0 '@types/body-parser': ^1.19.5 + '@types/d3': ^7.4.3 '@types/d3-selection': ^3.0.3 '@types/d3-transition': ^3.0.3 '@types/d3-zoom': ^3.0.3 @@ -140,6 +141,7 @@ catalog: cmark-gfm-js: ^1.1.7 concurrently: '>=8' cookies-next: ^2.1.1 + d3: ^7.8.5 d3-selection: ^3.0.0 d3-zoom: ^3.0.0 date-fns: ^3.6.0 @@ -272,3 +274,5 @@ catalog: prism-react-renderer: ^2.4.1 material-file-icons: ^2.4.0 colord: ^2.9.3 + merge-stream: ^2.0.0 + picomatch: ^4.0.3 diff --git a/moon/turbo b/moon/turbo new file mode 100644 index 000000000..e69de29bb
{ - - - - - {dependency.relation} - - - {dependency.license} - - {dependency.dependencies} - + + + + {dependency.relation} + + + {dependency.license} + + {dependency.dependencies} +
-
- - - - - - - - - - - - - - - -
- Version: - - {dependency.version} -
- Published: - - {dependency.published} -
- Description: - - {dependency.description} -
-
-
+
+ + + + + + + + + + + + + + + +
+ Version: + + {dependency.version} +
+ Published: + + {dependency.published} +
+ Description: + + {dependency.description} +
+
+