Skip to content

Commit f4bd817

Browse files
authored
Merge pull request #248 from dev-five-git/keyframes
Keyframes
2 parents 2348231 + 97a1679 commit f4bd817

File tree

88 files changed

+3219
-1166
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

88 files changed

+3219
-1166
lines changed

.changeset/breezy-ghosts-kiss.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@devup-ui/reset-css": major
3+
---
4+
5+
reset css

.changeset/yummy-brooms-appear.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@devup-ui/wasm": patch
3+
---
4+
5+
Implement keyframe

Cargo.lock

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

apps/landing/next.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@ export default withMDX(
1515
pageExtensions: ['js', 'jsx', 'md', 'mdx', 'ts', 'tsx'],
1616
output: 'export',
1717
},
18-
{ include: ['@devup-ui/components'] },
18+
{ include: ['@devup-ui/components', '@devup-ui/reset-css'] },
1919
),
2020
)

apps/landing/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
"dependencies": {
1414
"@devup-ui/components": "workspace:*",
1515
"@devup-ui/react": "workspace:*",
16+
"@devup-ui/reset-css": "workspace:*",
1617
"@mdx-js/loader": "^3.1.0",
1718
"@mdx-js/react": "^3.1.0",
1819
"@next/mdx": "^15.3.5",
@@ -24,8 +25,7 @@
2425
"react-dom": "^19.1.0",
2526
"react-markdown": "^10.1.0",
2627
"react-syntax-highlighter": "^15.6.1",
27-
"remark-gfm": "^4.0.1",
28-
"sanitize.css": "^13.0.0"
28+
"remark-gfm": "^4.0.1"
2929
},
3030
"devDependencies": {
3131
"@devup-ui/next-plugin": "workspace:*",

apps/landing/src/app/StarButton.css

Lines changed: 0 additions & 9 deletions
This file was deleted.

apps/landing/src/app/StarButton.tsx

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,18 @@
11
'use client'
22

3-
import './StarButton.css'
4-
5-
import { Center, css, Flex, Image, Text } from '@devup-ui/react'
3+
import { Center, css, Flex, Image, keyframes, Text } from '@devup-ui/react'
64
import Link from 'next/link'
75
import { useEffect, useState } from 'react'
86

7+
const spin = keyframes({
8+
'0%': {
9+
transform: 'rotate(0deg)',
10+
},
11+
'100%': {
12+
transform: 'rotate(360deg)',
13+
},
14+
})
15+
916
export default function StarButton() {
1017
const [starCount, setStarCount] = useState<number | null>(null)
1118

@@ -88,7 +95,8 @@ export default function StarButton() {
8895
{starCount === null ? (
8996
<Image
9097
alt="Loading"
91-
animation="spin 1s linear infinite"
98+
animation="1s linear infinite"
99+
animationName={spin}
92100
boxSize="20px"
93101
src="/spinner.svg"
94102
/>

apps/landing/src/app/layout.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
import 'sanitize.css'
2-
31
import { css, globalCss, ThemeScript } from '@devup-ui/react'
2+
import { resetCss } from '@devup-ui/reset-css'
43
import type { Metadata } from 'next'
54

65
import { Footer } from '../components/Footer'
@@ -24,6 +23,8 @@ export const metadata: Metadata = {
2423
},
2524
}
2625

26+
resetCss()
27+
2728
globalCss({
2829
imports: ['https://cdn.jsdelivr.net/gh/joungkyun/font-d2coding/d2coding.css'],
2930
table: {

bindings/devup-ui-wasm/src/lib.rs

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
use css::class_map::{get_class_map, set_class_map};
2+
use extractor::extract_style::ExtractStyleProperty;
23
use extractor::extract_style::extract_style_value::ExtractStyleValue;
3-
use extractor::{ExtractOption, StyleProperty, extract};
4+
use extractor::extract_style::style_property::StyleProperty;
5+
use extractor::{ExtractOption, extract};
46
use once_cell::sync::Lazy;
57
use sheet::StyleSheet;
68
use std::collections::HashSet;
@@ -90,6 +92,32 @@ impl Output {
9092
collected = true;
9193
}
9294
}
95+
96+
ExtractStyleValue::Keyframes(keyframes) => {
97+
if sheet.add_keyframes(
98+
&keyframes.extract().to_string(),
99+
keyframes
100+
.keyframes
101+
.iter()
102+
.map(|(key, value)| {
103+
(
104+
key.clone(),
105+
value
106+
.iter()
107+
.map(|style| {
108+
(
109+
style.property().to_string(),
110+
style.value().to_string(),
111+
)
112+
})
113+
.collect::<Vec<(String, String)>>(),
114+
)
115+
})
116+
.collect(),
117+
) {
118+
collected = true;
119+
}
120+
}
93121
ExtractStyleValue::Css(cs) => {
94122
if sheet.add_css(&cs.file, &cs.css) {
95123
collected = true;

libs/css/src/class_map.rs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,31 @@ pub fn set_class_map(map: HashMap<String, i32>) {
1919
pub fn get_class_map() -> HashMap<String, i32> {
2020
GLOBAL_CLASS_MAP.lock().unwrap().clone()
2121
}
22+
23+
#[cfg(test)]
24+
mod tests {
25+
use serial_test::serial;
26+
27+
use super::*;
28+
29+
#[test]
30+
#[serial]
31+
fn test_set_and_get_class_map() {
32+
let mut test_map = HashMap::new();
33+
test_map.insert("test-key".to_string(), 42);
34+
set_class_map(test_map.clone());
35+
let got = get_class_map();
36+
assert_eq!(got.get("test-key"), Some(&42));
37+
}
38+
39+
#[test]
40+
#[serial]
41+
fn test_reset_class_map() {
42+
let mut test_map = HashMap::new();
43+
test_map.insert("reset-key".to_string(), 1);
44+
set_class_map(test_map);
45+
reset_class_map();
46+
let got = get_class_map();
47+
assert!(got.is_empty());
48+
}
49+
}

0 commit comments

Comments
 (0)