@readme/markdown 9.0.1 → 9.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/components/TailwindStyle/index.tsx +41 -21
- package/dist/components/TailwindStyle/index.d.ts +5 -1
- package/dist/example/components.d.ts +1 -0
- package/dist/main.js +42 -26
- package/dist/main.node.js +42 -26
- package/dist/main.node.js.map +1 -1
- package/dist/utils/tailwind-compiler.d.ts +2 -1
- package/package.json +1 -1
|
@@ -11,29 +11,47 @@ const traverse = (node: Node, callback: (element: Node) => void) => {
|
|
|
11
11
|
});
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
interface Props {
|
|
15
|
+
children: React.ReactNode;
|
|
16
|
+
darkModeDataAttribute?: boolean;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
const TailwindStyle = ({ children, darkModeDataAttribute }: Props) => {
|
|
15
20
|
const [stylesheet, setStylesheet] = useState('');
|
|
16
|
-
const
|
|
17
|
-
const ref = useRef<
|
|
21
|
+
const classesSet = useRef(new Set<string>());
|
|
22
|
+
const ref = useRef<HTMLStyleElement>(null);
|
|
23
|
+
const [classes, setClasses] = useState<string[]>([]);
|
|
18
24
|
|
|
19
25
|
const addClasses = useCallback((element: Node) => {
|
|
20
26
|
if (!(element instanceof HTMLElement)) return;
|
|
21
27
|
|
|
22
28
|
element.classList.forEach(className => {
|
|
23
|
-
|
|
29
|
+
classesSet.current.add(className);
|
|
24
30
|
});
|
|
25
31
|
}, []);
|
|
26
32
|
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
33
|
+
/*
|
|
34
|
+
* @note: regenerate stylesheet
|
|
35
|
+
*/
|
|
36
|
+
useEffect(() => {
|
|
37
|
+
const run = async () => {
|
|
38
|
+
if (classes.length === 0) {
|
|
39
|
+
setStylesheet('');
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
const sheet = await tailwindCompiler(classes, {
|
|
44
|
+
prefix: `.${tailwindPrefix}`,
|
|
45
|
+
darkModeDataAttribute,
|
|
46
|
+
});
|
|
47
|
+
/* @note: don't insert an empty stylesheet */
|
|
48
|
+
if (sheet.css.match(/^@layer utilities;/m)) return;
|
|
30
49
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
if (sheet.css.match(/^@layer utilities;/m)) return;
|
|
50
|
+
setStylesheet(sheet.css);
|
|
51
|
+
};
|
|
34
52
|
|
|
35
|
-
|
|
36
|
-
}, []);
|
|
53
|
+
run();
|
|
54
|
+
}, [classes, darkModeDataAttribute]);
|
|
37
55
|
|
|
38
56
|
/*
|
|
39
57
|
* @note: execute once on load
|
|
@@ -41,9 +59,9 @@ const TailwindStyle = ({ children }: React.PropsWithChildren<unknown>) => {
|
|
|
41
59
|
useEffect(() => {
|
|
42
60
|
if (!ref.current) return;
|
|
43
61
|
|
|
44
|
-
ref.current.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));
|
|
45
|
-
|
|
46
|
-
});
|
|
62
|
+
ref.current.parentElement.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));
|
|
63
|
+
setClasses(Array.from(classesSet.current));
|
|
64
|
+
}, [addClasses]);
|
|
47
65
|
|
|
48
66
|
/*
|
|
49
67
|
* @note: observe for changes
|
|
@@ -70,12 +88,12 @@ const TailwindStyle = ({ children }: React.PropsWithChildren<unknown>) => {
|
|
|
70
88
|
}
|
|
71
89
|
|
|
72
90
|
if (shouldUpdate) {
|
|
73
|
-
|
|
91
|
+
setClasses(Array.from(classesSet.current));
|
|
74
92
|
}
|
|
75
93
|
});
|
|
76
94
|
});
|
|
77
95
|
|
|
78
|
-
observer.observe(ref.current, {
|
|
96
|
+
observer.observe(ref.current.parentElement, {
|
|
79
97
|
subtree: true,
|
|
80
98
|
childList: true,
|
|
81
99
|
attributes: true,
|
|
@@ -84,13 +102,15 @@ const TailwindStyle = ({ children }: React.PropsWithChildren<unknown>) => {
|
|
|
84
102
|
|
|
85
103
|
// eslint-disable-next-line consistent-return
|
|
86
104
|
return () => observer.disconnect();
|
|
87
|
-
}, [addClasses
|
|
105
|
+
}, [addClasses]);
|
|
88
106
|
|
|
89
107
|
return (
|
|
90
|
-
|
|
91
|
-
<style data-tailwind-stylesheet>
|
|
108
|
+
<>
|
|
109
|
+
<style ref={ref} data-tailwind-stylesheet>
|
|
110
|
+
{stylesheet}
|
|
111
|
+
</style>
|
|
92
112
|
{children}
|
|
93
|
-
|
|
113
|
+
</>
|
|
94
114
|
);
|
|
95
115
|
};
|
|
96
116
|
|
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
|
|
2
|
+
interface Props {
|
|
3
|
+
children: React.ReactNode;
|
|
4
|
+
darkModeDataAttribute?: boolean;
|
|
5
|
+
}
|
|
6
|
+
declare const TailwindStyle: ({ children, darkModeDataAttribute }: Props) => React.JSX.Element;
|
|
3
7
|
export default TailwindStyle;
|
package/dist/main.js
CHANGED
|
@@ -18720,21 +18720,26 @@ async function loadStylesheet(id, base) {
|
|
|
18720
18720
|
async function loadModule() {
|
|
18721
18721
|
throw new Error('The browser build does not support plugins or config files.');
|
|
18722
18722
|
}
|
|
18723
|
-
async function createCompiler() {
|
|
18724
|
-
|
|
18723
|
+
async function createCompiler({ darkModeDataAttribute }) {
|
|
18724
|
+
let css = `
|
|
18725
18725
|
@layer theme, base, components, utilities;
|
|
18726
18726
|
|
|
18727
18727
|
@import "tailwindcss/theme.css" layer(theme);
|
|
18728
18728
|
@import "tailwindcss/utilities.css" layer(utilities);
|
|
18729
18729
|
`;
|
|
18730
|
+
if (darkModeDataAttribute) {
|
|
18731
|
+
css += `
|
|
18732
|
+
|
|
18733
|
+
@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));`;
|
|
18734
|
+
}
|
|
18730
18735
|
return tl(css, {
|
|
18731
18736
|
base: '/',
|
|
18732
18737
|
loadStylesheet,
|
|
18733
18738
|
loadModule,
|
|
18734
18739
|
});
|
|
18735
18740
|
}
|
|
18736
|
-
async function tailwindCompiler(classes, { prefix }) {
|
|
18737
|
-
const compiler = await createCompiler();
|
|
18741
|
+
async function tailwindCompiler(classes, { prefix, darkModeDataAttribute }) {
|
|
18742
|
+
const compiler = await createCompiler({ darkModeDataAttribute });
|
|
18738
18743
|
const css = compiler.build(Array.from(classes));
|
|
18739
18744
|
return lib_postcss([postcss_prefix_selector_default()({ prefix })]).process(css, { from: undefined });
|
|
18740
18745
|
}
|
|
@@ -18749,36 +18754,47 @@ const traverse = (node, callback) => {
|
|
|
18749
18754
|
traverse(child, callback);
|
|
18750
18755
|
});
|
|
18751
18756
|
};
|
|
18752
|
-
const TailwindStyle = ({ children }) => {
|
|
18757
|
+
const TailwindStyle = ({ children, darkModeDataAttribute }) => {
|
|
18753
18758
|
const [stylesheet, setStylesheet] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)('');
|
|
18754
|
-
const
|
|
18759
|
+
const classesSet = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useRef)(new Set());
|
|
18755
18760
|
const ref = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useRef)(null);
|
|
18761
|
+
const [classes, setClasses] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)([]);
|
|
18756
18762
|
const addClasses = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useCallback)((element) => {
|
|
18757
18763
|
if (!(element instanceof HTMLElement))
|
|
18758
18764
|
return;
|
|
18759
18765
|
element.classList.forEach(className => {
|
|
18760
|
-
|
|
18766
|
+
classesSet.current.add(className);
|
|
18761
18767
|
});
|
|
18762
18768
|
}, []);
|
|
18763
|
-
|
|
18764
|
-
|
|
18765
|
-
|
|
18766
|
-
|
|
18767
|
-
const
|
|
18768
|
-
|
|
18769
|
-
|
|
18770
|
-
|
|
18771
|
-
|
|
18772
|
-
|
|
18769
|
+
/*
|
|
18770
|
+
* @note: regenerate stylesheet
|
|
18771
|
+
*/
|
|
18772
|
+
(0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {
|
|
18773
|
+
const run = async () => {
|
|
18774
|
+
if (classes.length === 0) {
|
|
18775
|
+
setStylesheet('');
|
|
18776
|
+
return;
|
|
18777
|
+
}
|
|
18778
|
+
const sheet = await tailwindCompiler(classes, {
|
|
18779
|
+
prefix: `.${tailwindPrefix}`,
|
|
18780
|
+
darkModeDataAttribute,
|
|
18781
|
+
});
|
|
18782
|
+
/* @note: don't insert an empty stylesheet */
|
|
18783
|
+
if (sheet.css.match(/^@layer utilities;/m))
|
|
18784
|
+
return;
|
|
18785
|
+
setStylesheet(sheet.css);
|
|
18786
|
+
};
|
|
18787
|
+
run();
|
|
18788
|
+
}, [classes, darkModeDataAttribute]);
|
|
18773
18789
|
/*
|
|
18774
18790
|
* @note: execute once on load
|
|
18775
18791
|
*/
|
|
18776
18792
|
(0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {
|
|
18777
18793
|
if (!ref.current)
|
|
18778
18794
|
return;
|
|
18779
|
-
ref.current.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));
|
|
18780
|
-
|
|
18781
|
-
});
|
|
18795
|
+
ref.current.parentElement.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));
|
|
18796
|
+
setClasses(Array.from(classesSet.current));
|
|
18797
|
+
}, [addClasses]);
|
|
18782
18798
|
/*
|
|
18783
18799
|
* @note: observe for changes
|
|
18784
18800
|
*/
|
|
@@ -18803,11 +18819,11 @@ const TailwindStyle = ({ children }) => {
|
|
|
18803
18819
|
shouldUpdate = true;
|
|
18804
18820
|
}
|
|
18805
18821
|
if (shouldUpdate) {
|
|
18806
|
-
|
|
18822
|
+
setClasses(Array.from(classesSet.current));
|
|
18807
18823
|
}
|
|
18808
18824
|
});
|
|
18809
18825
|
});
|
|
18810
|
-
observer.observe(ref.current, {
|
|
18826
|
+
observer.observe(ref.current.parentElement, {
|
|
18811
18827
|
subtree: true,
|
|
18812
18828
|
childList: true,
|
|
18813
18829
|
attributes: true,
|
|
@@ -18815,9 +18831,9 @@ const TailwindStyle = ({ children }) => {
|
|
|
18815
18831
|
});
|
|
18816
18832
|
// eslint-disable-next-line consistent-return
|
|
18817
18833
|
return () => observer.disconnect();
|
|
18818
|
-
}, [addClasses
|
|
18819
|
-
return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(
|
|
18820
|
-
external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement("style", { "data-tailwind-stylesheet": true }, stylesheet),
|
|
18834
|
+
}, [addClasses]);
|
|
18835
|
+
return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement((external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment, null,
|
|
18836
|
+
external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement("style", { ref: ref, "data-tailwind-stylesheet": true }, stylesheet),
|
|
18821
18837
|
children));
|
|
18822
18838
|
};
|
|
18823
18839
|
/* harmony default export */ const components_TailwindStyle = (TailwindStyle);
|
|
@@ -83755,7 +83771,7 @@ const compile_compile = async (text, { components = {}, copyButtons, useTailwind
|
|
|
83755
83771
|
...opts,
|
|
83756
83772
|
});
|
|
83757
83773
|
const string = String(vfile)
|
|
83758
|
-
.
|
|
83774
|
+
.replaceAll(/await import\(_resolveDynamicMdxSpecifier\(('react'|"react")\)\)/g, 'arguments[0].imports.React')
|
|
83759
83775
|
.replace('"use strict";', '"use strict";\nconst { user } = arguments[0].imports;\n');
|
|
83760
83776
|
return string;
|
|
83761
83777
|
}
|
package/dist/main.node.js
CHANGED
|
@@ -21749,21 +21749,26 @@ async function loadStylesheet(id, base) {
|
|
|
21749
21749
|
async function loadModule() {
|
|
21750
21750
|
throw new Error('The browser build does not support plugins or config files.');
|
|
21751
21751
|
}
|
|
21752
|
-
async function createCompiler() {
|
|
21753
|
-
|
|
21752
|
+
async function createCompiler({ darkModeDataAttribute }) {
|
|
21753
|
+
let css = `
|
|
21754
21754
|
@layer theme, base, components, utilities;
|
|
21755
21755
|
|
|
21756
21756
|
@import "tailwindcss/theme.css" layer(theme);
|
|
21757
21757
|
@import "tailwindcss/utilities.css" layer(utilities);
|
|
21758
21758
|
`;
|
|
21759
|
+
if (darkModeDataAttribute) {
|
|
21760
|
+
css += `
|
|
21761
|
+
|
|
21762
|
+
@custom-variant dark (&:where([data-theme=dark], [data-theme=dark] *));`;
|
|
21763
|
+
}
|
|
21759
21764
|
return tl(css, {
|
|
21760
21765
|
base: '/',
|
|
21761
21766
|
loadStylesheet,
|
|
21762
21767
|
loadModule,
|
|
21763
21768
|
});
|
|
21764
21769
|
}
|
|
21765
|
-
async function tailwindCompiler(classes, { prefix }) {
|
|
21766
|
-
const compiler = await createCompiler();
|
|
21770
|
+
async function tailwindCompiler(classes, { prefix, darkModeDataAttribute }) {
|
|
21771
|
+
const compiler = await createCompiler({ darkModeDataAttribute });
|
|
21767
21772
|
const css = compiler.build(Array.from(classes));
|
|
21768
21773
|
return lib_postcss([postcss_prefix_selector_default()({ prefix })]).process(css, { from: undefined });
|
|
21769
21774
|
}
|
|
@@ -21778,36 +21783,47 @@ const traverse = (node, callback) => {
|
|
|
21778
21783
|
traverse(child, callback);
|
|
21779
21784
|
});
|
|
21780
21785
|
};
|
|
21781
|
-
const TailwindStyle = ({ children }) => {
|
|
21786
|
+
const TailwindStyle = ({ children, darkModeDataAttribute }) => {
|
|
21782
21787
|
const [stylesheet, setStylesheet] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)('');
|
|
21783
|
-
const
|
|
21788
|
+
const classesSet = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useRef)(new Set());
|
|
21784
21789
|
const ref = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useRef)(null);
|
|
21790
|
+
const [classes, setClasses] = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useState)([]);
|
|
21785
21791
|
const addClasses = (0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useCallback)((element) => {
|
|
21786
21792
|
if (!(element instanceof HTMLElement))
|
|
21787
21793
|
return;
|
|
21788
21794
|
element.classList.forEach(className => {
|
|
21789
|
-
|
|
21795
|
+
classesSet.current.add(className);
|
|
21790
21796
|
});
|
|
21791
21797
|
}, []);
|
|
21792
|
-
|
|
21793
|
-
|
|
21794
|
-
|
|
21795
|
-
|
|
21796
|
-
const
|
|
21797
|
-
|
|
21798
|
-
|
|
21799
|
-
|
|
21800
|
-
|
|
21801
|
-
|
|
21798
|
+
/*
|
|
21799
|
+
* @note: regenerate stylesheet
|
|
21800
|
+
*/
|
|
21801
|
+
(0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {
|
|
21802
|
+
const run = async () => {
|
|
21803
|
+
if (classes.length === 0) {
|
|
21804
|
+
setStylesheet('');
|
|
21805
|
+
return;
|
|
21806
|
+
}
|
|
21807
|
+
const sheet = await tailwindCompiler(classes, {
|
|
21808
|
+
prefix: `.${tailwindPrefix}`,
|
|
21809
|
+
darkModeDataAttribute,
|
|
21810
|
+
});
|
|
21811
|
+
/* @note: don't insert an empty stylesheet */
|
|
21812
|
+
if (sheet.css.match(/^@layer utilities;/m))
|
|
21813
|
+
return;
|
|
21814
|
+
setStylesheet(sheet.css);
|
|
21815
|
+
};
|
|
21816
|
+
run();
|
|
21817
|
+
}, [classes, darkModeDataAttribute]);
|
|
21802
21818
|
/*
|
|
21803
21819
|
* @note: execute once on load
|
|
21804
21820
|
*/
|
|
21805
21821
|
(0,external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_.useEffect)(() => {
|
|
21806
21822
|
if (!ref.current)
|
|
21807
21823
|
return;
|
|
21808
|
-
ref.current.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));
|
|
21809
|
-
|
|
21810
|
-
});
|
|
21824
|
+
ref.current.parentElement.querySelectorAll(`.${tailwindPrefix}`).forEach(child => traverse(child, addClasses));
|
|
21825
|
+
setClasses(Array.from(classesSet.current));
|
|
21826
|
+
}, [addClasses]);
|
|
21811
21827
|
/*
|
|
21812
21828
|
* @note: observe for changes
|
|
21813
21829
|
*/
|
|
@@ -21832,11 +21848,11 @@ const TailwindStyle = ({ children }) => {
|
|
|
21832
21848
|
shouldUpdate = true;
|
|
21833
21849
|
}
|
|
21834
21850
|
if (shouldUpdate) {
|
|
21835
|
-
|
|
21851
|
+
setClasses(Array.from(classesSet.current));
|
|
21836
21852
|
}
|
|
21837
21853
|
});
|
|
21838
21854
|
});
|
|
21839
|
-
observer.observe(ref.current, {
|
|
21855
|
+
observer.observe(ref.current.parentElement, {
|
|
21840
21856
|
subtree: true,
|
|
21841
21857
|
childList: true,
|
|
21842
21858
|
attributes: true,
|
|
@@ -21844,9 +21860,9 @@ const TailwindStyle = ({ children }) => {
|
|
|
21844
21860
|
});
|
|
21845
21861
|
// eslint-disable-next-line consistent-return
|
|
21846
21862
|
return () => observer.disconnect();
|
|
21847
|
-
}, [addClasses
|
|
21848
|
-
return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement(
|
|
21849
|
-
external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement("style", { "data-tailwind-stylesheet": true }, stylesheet),
|
|
21863
|
+
}, [addClasses]);
|
|
21864
|
+
return (external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement((external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default()).Fragment, null,
|
|
21865
|
+
external_amd_react_commonjs_react_commonjs2_react_root_React_umd_react_default().createElement("style", { ref: ref, "data-tailwind-stylesheet": true }, stylesheet),
|
|
21850
21866
|
children));
|
|
21851
21867
|
};
|
|
21852
21868
|
/* harmony default export */ const components_TailwindStyle = (TailwindStyle);
|
|
@@ -88347,7 +88363,7 @@ const compile_compile = async (text, { components = {}, copyButtons, useTailwind
|
|
|
88347
88363
|
...opts,
|
|
88348
88364
|
});
|
|
88349
88365
|
const string = String(vfile)
|
|
88350
|
-
.
|
|
88366
|
+
.replaceAll(/await import\(_resolveDynamicMdxSpecifier\(('react'|"react")\)\)/g, 'arguments[0].imports.React')
|
|
88351
88367
|
.replace('"use strict";', '"use strict";\nconst { user } = arguments[0].imports;\n');
|
|
88352
88368
|
return string;
|
|
88353
88369
|
}
|