marqy 0.0.9 → 1.0.1
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/.claude/settings.local.json +13 -0
- package/.vscode/settings.json +3 -0
- package/README.md +43 -12
- package/dist/marqy.css +131 -0
- package/dist/marqy.d.ts +4 -3
- package/dist/marqy.esm.js +1 -1
- package/dist/marqy.esm.js.map +1 -1
- package/dist/marqy.js +1 -1
- package/dist/marqy.js.map +1 -1
- package/dist/marqy.umd.js +1 -1
- package/dist/marqy.umd.js.map +1 -1
- package/examples/.astro/content-assets.mjs +1 -0
- package/examples/.astro/content-modules.mjs +1 -0
- package/examples/.astro/content.d.ts +154 -0
- package/examples/.astro/data-store.json +1 -0
- package/examples/.astro/fonts/font-akkurat-mono-500-normal-40f4e0ea0b54adc5.woff2 +0 -0
- package/examples/.astro/fonts/font-akkurat-mono-700-normal-b9f40f1447b587bd.woff +0 -0
- package/examples/.astro/fonts/font-grtsk-300-normal-8ef14ca23be6893c.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-400-normal-13ba8954073ee64a.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-500-normal-d214468daf16245f.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-wide-500-normal-6f8c2658b9c2ba8e.woff2 +0 -0
- package/examples/.astro/fonts/font-grtsk-wide-700-normal-17406f09c7b68ca3.woff2 +0 -0
- package/examples/.astro/fonts.d.ts +4 -0
- package/examples/.astro/settings.json +5 -0
- package/examples/.astro/types.d.ts +3 -0
- package/examples/.yarnrc +1 -0
- package/examples/astro.config.mjs +101 -0
- package/examples/package.json +30 -0
- package/examples/public/apple-touch-icon.png +0 -0
- package/examples/public/favicon.ico +0 -0
- package/examples/public/favicon.svg +4 -0
- package/examples/public/marqy-logo.svg +35 -0
- package/examples/src/assets/baggu.jpg +0 -0
- package/examples/src/assets/bluesky.jpg +0 -0
- package/examples/src/assets/clams-lol.jpg +0 -0
- package/examples/src/assets/coconut-club-2.jpg +0 -0
- package/examples/src/assets/coconut-club.jpg +0 -0
- package/examples/src/assets/lucci.jpg +0 -0
- package/examples/src/assets/phila-museum.jpg +0 -0
- package/examples/src/assets/red-rooster.jpg +0 -0
- package/examples/src/assets/sanity.jpg +0 -0
- package/examples/src/assets/usal.jpg +0 -0
- package/examples/src/assets/vacation.jpg +0 -0
- package/examples/src/components/CopyButton.tsx +26 -0
- package/examples/src/components/Divider.tsx +3 -0
- package/examples/src/components/Footer.astro +7 -0
- package/examples/src/components/InUse.astro +89 -0
- package/examples/src/components/InUseExamples.tsx +60 -0
- package/examples/src/components/MarqyCredits.tsx +33 -0
- package/examples/src/components/MarqyHero.tsx +77 -0
- package/examples/src/components/MarqyInteractiveDemo.tsx +46 -0
- package/examples/src/components/MarqyPlayground.tsx +496 -0
- package/examples/src/components/MarqySpeedDemo.tsx +34 -0
- package/examples/src/components/MarqyVerticalDemo.tsx +44 -0
- package/examples/src/components/Playground.astro +11 -0
- package/examples/src/components/QuickStart.astro +59 -0
- package/examples/src/components/SectionHeadline.tsx +41 -0
- package/examples/src/components/Tile.tsx +32 -0
- package/examples/src/content.config.ts +3 -0
- package/examples/src/fonts/Akkurat-Mono-Bold.woff +0 -0
- package/examples/src/fonts/Akkurat-Mono.woff +0 -0
- package/examples/src/fonts/Akkurat-Mono.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Peta-Light.woff +0 -0
- package/examples/src/fonts/Grtsk-Peta-Light.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Peta-Medium.woff +0 -0
- package/examples/src/fonts/Grtsk-Peta-Medium.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Peta-Regular.woff +0 -0
- package/examples/src/fonts/Grtsk-Peta-Regular.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Tera-Bold.woff +0 -0
- package/examples/src/fonts/Grtsk-Tera-Bold.woff2 +0 -0
- package/examples/src/fonts/Grtsk-Tera-Medium.woff +0 -0
- package/examples/src/fonts/Grtsk-Tera-Medium.woff2 +0 -0
- package/examples/src/layouts/layout.astro +107 -0
- package/examples/src/lib/cn.ts +16 -0
- package/examples/src/lib/helpers.ts +13 -0
- package/examples/src/lib/hooks/useCopyText.ts +47 -0
- package/examples/src/pages/index.astro +56 -0
- package/examples/src/styles/_base.css +155 -0
- package/examples/src/styles/_components.css +123 -0
- package/examples/src/styles/_utilities.css +23 -0
- package/examples/src/styles/app.css +397 -0
- package/examples/tsconfig.json +3 -0
- package/examples/yarn.lock +3316 -0
- package/marqy.css +131 -0
- package/package.json +26 -12
- package/src/marqy.tsx +63 -53
- package/tsconfig.json +5 -2
- package/dist/marqy.modern.js +0 -2
- package/dist/marqy.modern.js.map +0 -1
- package/examples/index.css +0 -96
- package/examples/index.html +0 -15
- package/examples/index.js +0 -62
- package/styles.css +0 -65
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
{
|
|
2
|
+
"permissions": {
|
|
3
|
+
"allow": [
|
|
4
|
+
"Bash(yarn install:*)",
|
|
5
|
+
"Bash(node_modules/.bin/astro --version)",
|
|
6
|
+
"Bash(npx update-browserslist-db@latest)",
|
|
7
|
+
"Bash(python3 -c \"import json,sys; d=json.load\\(sys.stdin\\); print\\(json.dumps\\(d.get\\('exports', {}\\), indent=2\\)\\)\")",
|
|
8
|
+
"WebFetch(domain:base-ui.com)",
|
|
9
|
+
"Bash(yarn add:*)",
|
|
10
|
+
"Bash(md5 /Users/ndimatteo/code/plugins/marqy/examples/src/components/MarqyPlayground.tsx)"
|
|
11
|
+
]
|
|
12
|
+
}
|
|
13
|
+
}
|
package/README.md
CHANGED
|
@@ -1,28 +1,59 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="
|
|
2
|
+
<img src="./examples/public/marqy-logo.svg" align="center" height="40" />
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p align="center">
|
|
6
|
-
<strong>
|
|
7
|
-
|
|
6
|
+
<strong>High-fidelity loops for modern interfaces</strong><br />
|
|
7
|
+
under 1kB gzipped // synchronized speeds // CSS-based animations
|
|
8
8
|
</p>
|
|
9
9
|
|
|
10
|
+
[](https://www.npmjs.com/package/marqy)
|
|
12
|
+
[](https://www.npmjs.com/package/marqy)
|
|
14
|
+
[](https://bundlephobia.com/package/marqy)
|
|
15
|
+
|
|
16
|
+
# DEMO: [MARQY.PARTY](https://marqy.party)
|
|
17
|
+
|
|
10
18
|
## Install
|
|
11
19
|
|
|
12
|
-
```sh
|
|
13
|
-
npm i marqy
|
|
14
|
-
```
|
|
15
|
-
or using yarn
|
|
16
20
|
```sh
|
|
17
21
|
yarn add marqy
|
|
18
22
|
```
|
|
19
23
|
|
|
20
|
-
|
|
24
|
+
or using npm
|
|
25
|
+
|
|
26
|
+
```sh
|
|
27
|
+
npm i marqy
|
|
21
28
|
```
|
|
22
|
-
|
|
29
|
+
|
|
30
|
+
## Usage
|
|
31
|
+
|
|
32
|
+
#### Import React
|
|
33
|
+
```tsx
|
|
34
|
+
import { Marqy } from 'marqy';
|
|
35
|
+
|
|
36
|
+
<Marqy speed={1} direction="left" pauseOnHover>
|
|
37
|
+
<span>Your content here</span>
|
|
38
|
+
</Marqy>
|
|
23
39
|
```
|
|
24
40
|
|
|
25
|
-
|
|
41
|
+
#### Import CSS
|
|
42
|
+
```js
|
|
43
|
+
import 'marqy/dist/marqy.css';
|
|
26
44
|
```
|
|
27
|
-
|
|
28
|
-
|
|
45
|
+
**or add it manually:** [see marqy.css stylesheet](./marqy.css)
|
|
46
|
+
|
|
47
|
+
### Properties
|
|
48
|
+
|
|
49
|
+
| Name | Type | Description |
|
|
50
|
+
| -------------- | ------------------------------- | ----------------------------------------- |
|
|
51
|
+
| `speed` | number **[default: 0.5]** | Scroll speed multiplier |
|
|
52
|
+
| `direction` | string **[default: 'left']** | Direction of scroll |
|
|
53
|
+
| `pauseOnHover` | boolean **[default: false]** | Pauses the animation on hover |
|
|
54
|
+
| `manual` | boolean **[default: false]** | Renders without applying CSS animations |
|
|
55
|
+
| `children` | React.ReactNode | Content to repeat inside the marqy |
|
|
56
|
+
|
|
57
|
+
### License
|
|
58
|
+
|
|
59
|
+
MIT © [Nick DiMatteo](https://www.nickdimatteo.com) + [Mike Wagz](https://www.mikewagz.com)
|
package/dist/marqy.css
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
[data-marqy] {
|
|
2
|
+
position: relative;
|
|
3
|
+
width: 100%;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
[data-marqy][data-direction='left'],
|
|
7
|
+
[data-marqy][data-direction='right'] {
|
|
8
|
+
overflow-x: clip;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
[data-marqy][data-direction='up'],
|
|
12
|
+
[data-marqy][data-direction='down'] {
|
|
13
|
+
overflow-y: clip;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
[data-marqy-inner] {
|
|
17
|
+
display: flex;
|
|
18
|
+
-ms-overflow-style: none;
|
|
19
|
+
scrollbar-width: none;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
[data-marqy][data-direction='up'] [data-marqy-inner],
|
|
23
|
+
[data-marqy][data-direction='down'] [data-marqy-inner],
|
|
24
|
+
[data-marqy][data-direction='up'] [data-marqy-content],
|
|
25
|
+
[data-marqy][data-direction='down'] [data-marqy-content] {
|
|
26
|
+
flex-direction: column;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
[data-marqy-inner]::-webkit-scrollbar {
|
|
30
|
+
display: none;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
[data-marqy][data-direction='right'] [data-marqy-inner] {
|
|
34
|
+
justify-content: flex-end;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
[data-marqy][data-direction='down'] [data-marqy-inner],
|
|
38
|
+
[data-marqy][data-direction='down'] [data-marqy-content] {
|
|
39
|
+
justify-content: flex-end;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
[data-marqy-content] {
|
|
43
|
+
display: flex;
|
|
44
|
+
flex: 1 0 auto;
|
|
45
|
+
animation-timing-function: linear;
|
|
46
|
+
animation-iteration-count: infinite;
|
|
47
|
+
animation-play-state: running;
|
|
48
|
+
will-change: transform;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
[data-marqy-static] [data-marqy-content] {
|
|
52
|
+
animation: none !important;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
[data-marqy][data-direction='left'] [data-marqy-content] {
|
|
56
|
+
animation-name: marqyL;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
[data-marqy][data-direction='right'] [data-marqy-content] {
|
|
60
|
+
animation-name: marqyR;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
[data-marqy][data-direction='up'] [data-marqy-content] {
|
|
64
|
+
animation-name: marqyU;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
[data-marqy][data-direction='down'] [data-marqy-content] {
|
|
68
|
+
animation-name: marqyD;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
[data-marqy][data-pause-on-hover]:hover
|
|
72
|
+
> [data-marqy-inner]
|
|
73
|
+
> [data-marqy-content] {
|
|
74
|
+
animation-play-state: paused;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
[data-marqy-item] {
|
|
78
|
+
flex-grow: 0;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
@keyframes marqyL {
|
|
82
|
+
0% {
|
|
83
|
+
transform: translate3d(0, 0, 0);
|
|
84
|
+
}
|
|
85
|
+
100% {
|
|
86
|
+
transform: translate3d(-100%, 0, 0);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@keyframes marqyR {
|
|
91
|
+
0% {
|
|
92
|
+
transform: translate3d(0, 0, 0);
|
|
93
|
+
}
|
|
94
|
+
100% {
|
|
95
|
+
transform: translate3d(100%, 0, 0);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
@keyframes marqyU {
|
|
100
|
+
0% {
|
|
101
|
+
transform: translate3d(0, 0, 0);
|
|
102
|
+
}
|
|
103
|
+
100% {
|
|
104
|
+
transform: translate3d(0, -100%, 0);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
@keyframes marqyD {
|
|
109
|
+
0% {
|
|
110
|
+
transform: translate3d(0, -100%, 0);
|
|
111
|
+
}
|
|
112
|
+
100% {
|
|
113
|
+
transform: translate3d(0, 0, 0);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
@media (prefers-reduced-motion) {
|
|
118
|
+
[data-marqy][data-direction='left'] [data-marqy-inner],
|
|
119
|
+
[data-marqy][data-direction='right'] [data-marqy-inner] {
|
|
120
|
+
overflow-x: scroll;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
[data-marqy][data-direction='up'],
|
|
124
|
+
[data-marqy][data-direction='down'] {
|
|
125
|
+
overflow-y: scroll;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
[data-marqy-content] {
|
|
129
|
+
animation: none !important;
|
|
130
|
+
}
|
|
131
|
+
}
|
package/dist/marqy.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import * as React from 'react';
|
|
2
|
-
export
|
|
2
|
+
export interface MarqyProps extends React.ComponentPropsWithoutRef<'div'> {
|
|
3
3
|
speed?: number;
|
|
4
|
-
direction?: 'left' | 'right';
|
|
4
|
+
direction?: 'left' | 'right' | 'up' | 'down';
|
|
5
5
|
pauseOnHover?: boolean;
|
|
6
|
+
manual?: boolean;
|
|
6
7
|
children: React.ReactNode;
|
|
7
8
|
}
|
|
8
|
-
export declare function Marqy({ speed, direction, pauseOnHover, children, ...rest }: MarqyProps):
|
|
9
|
+
export declare function Marqy({ speed, direction, pauseOnHover, manual, children, ...rest }: MarqyProps): React.ReactElement;
|
package/dist/marqy.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import*as e from"react";function t(){return t=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},t.apply(null,arguments)}var n=["speed","direction","pauseOnHover","manual","children"];function r(r){var a=r.speed,u=void 0===a?.5:a,c=r.direction,l=void 0===c?"left":c,o=r.pauseOnHover,d=r.manual,h=void 0!==d&&d,f=r.children,s=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(r,n),v=e.useState(1),m=v[0],w=v[1],p=i(),y=p[0],g=p[1],O=i(),b=O[0],q=O[1],E="up"===l||"down"===l,k=e.useCallback(function(e){return(null!=e?e:0)*m/(100*u)+"s"},[m,u]);return e.useEffect(function(){!E&&g.width&&q.width&&w(Math.ceil(g.width/q.width)),E&&g.height&&q.height&&w(Math.ceil(g.height/q.height))},[E,g,q]),e.createElement("div",t({ref:y,"data-marqy":"","data-direction":l,"data-pause-on-hover":o?"":null},s),e.createElement("div",{"data-marqy-inner":""},new Array(2).fill(0).map(function(n,r){return e.createElement("div",t({key:r,"data-marqy-content":""},h?{"data-marqy-static":k(E?q.height:q.width)}:{style:{animationDuration:k(E?q.height:q.width)}}),new Array(m).fill(0).map(function(t,n){var i=0===r&&0===n;return e.createElement("div",{key:n,ref:i?b:null,"aria-hidden":!i||null,"data-marqy-item":""},f)}))})))}function i(){var t=e.useState({width:0,height:0}),n=t[0],r=t[1],i=e.useRef(null);return[e.useCallback(function(e){var t;null==(t=i.current)||t.disconnect(),e&&(i.current=new ResizeObserver(function(e){var t=e[0];return r({width:t.contentRect.width,height:t.contentRect.height})}),i.current.observe(e))},[]),n]}export{r as Marqy};
|
|
2
2
|
//# sourceMappingURL=marqy.esm.js.map
|
package/dist/marqy.esm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marqy.esm.js","sources":["../src/marqy.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport
|
|
1
|
+
{"version":3,"file":"marqy.esm.js","sources":["../src/marqy.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport interface MarqyProps extends React.ComponentPropsWithoutRef<'div'> {\n speed?: number\n direction?: 'left' | 'right' | 'up' | 'down'\n pauseOnHover?: boolean\n manual?: boolean\n children: React.ReactNode\n}\n\nexport function Marqy({\n speed = 0.5,\n direction = 'left',\n pauseOnHover,\n manual = false,\n children,\n ...rest\n}: MarqyProps): React.ReactElement {\n const [reps, setReps] = React.useState(1)\n\n const [container, containerDimensions] = useDimensions()\n const [item, itemDimensions] = useDimensions()\n\n const isVertical = direction === 'up' || direction === 'down'\n\n const getAnimationDuration = React.useCallback(\n (itemDimension: number) => {\n return `${((itemDimension ?? 0) * reps) / (100 * speed)}s`\n },\n [reps, speed]\n )\n\n React.useEffect(() => {\n if (!isVertical && containerDimensions.width && itemDimensions.width) {\n setReps(Math.ceil(containerDimensions.width / itemDimensions.width))\n }\n if (isVertical && containerDimensions.height && itemDimensions.height) {\n setReps(Math.ceil(containerDimensions.height / itemDimensions.height))\n }\n }, [isVertical, containerDimensions, itemDimensions])\n\n return (\n <div\n ref={container}\n data-marqy=\"\"\n data-direction={direction}\n data-pause-on-hover={pauseOnHover ? '' : null}\n {...rest}\n >\n <div data-marqy-inner=\"\">\n {new Array(2).fill(0).map((_, clone) => (\n <div\n key={clone}\n data-marqy-content=\"\"\n {...(manual\n ? { 'data-marqy-static': getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) }\n : { style: { animationDuration: getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) } }\n )}\n >\n {new Array(reps).fill(0).map((_, rep) => {\n const isFirstItem = clone === 0 && rep === 0\n return (\n <div\n key={rep}\n ref={isFirstItem ? item : null}\n aria-hidden={!isFirstItem || null}\n data-marqy-item=\"\"\n >\n {children}\n </div>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction useDimensions() {\n const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 })\n const observer = React.useRef<ResizeObserver | null>(null)\n\n const ref = React.useCallback((node: HTMLElement | null) => {\n observer.current?.disconnect()\n if (!node) return\n observer.current = new ResizeObserver(([entry]) =>\n setDimensions({\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n })\n )\n observer.current.observe(node)\n }, [])\n\n return [ref, dimensions] as const\n}\n"],"names":["_excluded","Marqy","_ref","_ref$speed","speed","_ref$direction","direction","pauseOnHover","_ref$manual","manual","children","rest","_objectWithoutPropertiesLoose","_React$useState","React","useState","reps","setReps","_useDimensions","useDimensions","container","containerDimensions","_useDimensions2","item","itemDimensions","isVertical","getAnimationDuration","useCallback","itemDimension","useEffect","width","Math","ceil","height","ref","createElement","Array","fill","map","_","clone","_extends","key","style","animationDuration","rep","isFirstItem","_React$useState2","dimensions","setDimensions","observer","useRef","node","_observer$current","current","disconnect","ResizeObserver","_ref2","entry","contentRect","observe"],"mappings":"gPAAA,IAAAA,EAAA,CAAA,QAAA,YAAA,eAAA,SAAA,YAUgB,SAAAC,EAAKC,OAORC,EAAAD,EANXE,MAAAA,OAAQ,IAAHD,EAAG,GAAGA,EAAAE,EAAAH,EACXI,UAAAA,OAAS,IAAAD,EAAG,OAAMA,EAClBE,EAAYL,EAAZK,aAAYC,EAAAN,EACZO,OAAAA,OAAM,IAAAD,GAAQA,EACdE,EAAQR,EAARQ,SACGC,6IAAIC,CAAAV,EAAAF,GAEPa,EAAwBC,EAAMC,SAAS,GAAhCC,EAAIH,EAAA,GAAEI,EAAOJ,EAAA,GAEpBK,EAAyCC,IAAlCC,EAASF,EAAEG,GAAAA,EAAmBH,EACrC,GAAAI,EAA+BH,IAAxBI,EAAID,EAAEE,GAAAA,EAAcF,EAAA,GAErBG,EAA2B,OAAdnB,GAAoC,SAAdA,EAEnCoB,EAAuBZ,EAAMa,YACjC,SAACC,GACC,OAAYA,MAAAA,EAAAA,EAAiB,GAAKZ,GAAS,IAAMZ,GACnD,GAAA,EACA,CAACY,EAAMZ,IAYT,OATAU,EAAMe,UAAU,YACTJ,GAAcJ,EAAoBS,OAASN,EAAeM,OAC7Db,EAAQc,KAAKC,KAAKX,EAAoBS,MAAQN,EAAeM,QAE3DL,GAAcJ,EAAoBY,QAAUT,EAAeS,QAC7DhB,EAAQc,KAAKC,KAAKX,EAAoBY,OAAST,EAAeS,QAElE,EAAG,CAACR,EAAYJ,EAAqBG,IAGnCV,yBACEoB,IAAKd,EACM,aAAA,oBACKd,EAAS,sBACJC,EAAe,GAAK,MACrCI,GAEJG,EAAAqB,cAAA,MAAA,CAAA,mBAAsB,IACnB,IAAIC,MAAM,GAAGC,KAAK,GAAGC,IAAI,SAACC,EAAGC,GAC5B,OAAA1B,EAAAqB,cAAA,MAAAM,EACEC,CAAAA,IAAKF,EAAK,qBACS,IACd/B,EACD,CAAE,oBAAqBiB,EAAqBD,EAAaD,EAAeS,OAAST,EAAeM,QAChG,CAAEa,MAAO,CAAEC,kBAAmBlB,EAAqBD,EAAaD,EAAeS,OAAST,EAAeM,UAG1G,IAAIM,MAAMpB,GAAMqB,KAAK,GAAGC,IAAI,SAACC,EAAGM,GAC/B,IAAMC,EAAwB,IAAVN,GAAuB,IAARK,EACnC,OACE/B,EAAAqB,cAAA,MAAA,CACEO,IAAKG,EACLX,IAAKY,EAAcvB,EAAO,KAAI,eAChBuB,GAAe,KACb,kBAAA,IAEfpC,EAGP,GACI,IAKhB,CAEA,SAASS,IACP,IAAA4B,EAAoCjC,EAAMC,SAAS,CAAEe,MAAO,EAAGG,OAAQ,IAAhEe,EAAUD,EAAEE,GAAAA,EAAaF,KAC1BG,EAAWpC,EAAMqC,OAA8B,MAcrD,MAAO,CAZKrC,EAAMa,YAAY,SAACyB,GAA4BC,IAAAA,EACzDA,OAAAA,EAAAH,EAASI,UAATD,EAAkBE,aACbH,IACLF,EAASI,QAAU,IAAIE,eAAe,SAAAC,OAAEC,EAAKD,EAC3C,GAAA,OAAAR,EAAc,CACZnB,MAAO4B,EAAMC,YAAY7B,MACzBG,OAAQyB,EAAMC,YAAY1B,QAC1B,GAEJiB,EAASI,QAAQM,QAAQR,GAC3B,EAAG,IAEUJ,EACf"}
|
package/dist/marqy.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=require("react");function n(){
|
|
1
|
+
function e(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,t}var t=/*#__PURE__*/e(require("react"));function n(){return n=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},n.apply(null,arguments)}var r=["speed","direction","pauseOnHover","manual","children"];function a(){var e=t.useState({width:0,height:0}),n=e[0],r=e[1],a=t.useRef(null);return[t.useCallback(function(e){var t;null==(t=a.current)||t.disconnect(),e&&(a.current=new ResizeObserver(function(e){var t=e[0];return r({width:t.contentRect.width,height:t.contentRect.height})}),a.current.observe(e))},[]),n]}exports.Marqy=function(e){var i=e.speed,u=void 0===i?.5:i,c=e.direction,l=void 0===c?"left":c,o=e.pauseOnHover,d=e.manual,h=void 0!==d&&d,f=e.children,s=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,r),v=t.useState(1),y=v[0],m=v[1],p=a(),w=p[0],g=p[1],O=a(),b=O[0],q=O[1],j="up"===l||"down"===l,E=t.useCallback(function(e){return(null!=e?e:0)*y/(100*u)+"s"},[y,u]);return t.useEffect(function(){!j&&g.width&&q.width&&m(Math.ceil(g.width/q.width)),j&&g.height&&q.height&&m(Math.ceil(g.height/q.height))},[j,g,q]),t.createElement("div",n({ref:w,"data-marqy":"","data-direction":l,"data-pause-on-hover":o?"":null},s),t.createElement("div",{"data-marqy-inner":""},new Array(2).fill(0).map(function(e,r){return t.createElement("div",n({key:r,"data-marqy-content":""},h?{"data-marqy-static":E(j?q.height:q.width)}:{style:{animationDuration:E(j?q.height:q.width)}}),new Array(y).fill(0).map(function(e,n){var a=0===r&&0===n;return t.createElement("div",{key:n,ref:a?b:null,"aria-hidden":!a||null,"data-marqy-item":""},f)}))})))};
|
|
2
2
|
//# sourceMappingURL=marqy.js.map
|
package/dist/marqy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marqy.js","sources":["../src/marqy.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport
|
|
1
|
+
{"version":3,"file":"marqy.js","sources":["../src/marqy.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport interface MarqyProps extends React.ComponentPropsWithoutRef<'div'> {\n speed?: number\n direction?: 'left' | 'right' | 'up' | 'down'\n pauseOnHover?: boolean\n manual?: boolean\n children: React.ReactNode\n}\n\nexport function Marqy({\n speed = 0.5,\n direction = 'left',\n pauseOnHover,\n manual = false,\n children,\n ...rest\n}: MarqyProps): React.ReactElement {\n const [reps, setReps] = React.useState(1)\n\n const [container, containerDimensions] = useDimensions()\n const [item, itemDimensions] = useDimensions()\n\n const isVertical = direction === 'up' || direction === 'down'\n\n const getAnimationDuration = React.useCallback(\n (itemDimension: number) => {\n return `${((itemDimension ?? 0) * reps) / (100 * speed)}s`\n },\n [reps, speed]\n )\n\n React.useEffect(() => {\n if (!isVertical && containerDimensions.width && itemDimensions.width) {\n setReps(Math.ceil(containerDimensions.width / itemDimensions.width))\n }\n if (isVertical && containerDimensions.height && itemDimensions.height) {\n setReps(Math.ceil(containerDimensions.height / itemDimensions.height))\n }\n }, [isVertical, containerDimensions, itemDimensions])\n\n return (\n <div\n ref={container}\n data-marqy=\"\"\n data-direction={direction}\n data-pause-on-hover={pauseOnHover ? '' : null}\n {...rest}\n >\n <div data-marqy-inner=\"\">\n {new Array(2).fill(0).map((_, clone) => (\n <div\n key={clone}\n data-marqy-content=\"\"\n {...(manual\n ? { 'data-marqy-static': getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) }\n : { style: { animationDuration: getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) } }\n )}\n >\n {new Array(reps).fill(0).map((_, rep) => {\n const isFirstItem = clone === 0 && rep === 0\n return (\n <div\n key={rep}\n ref={isFirstItem ? item : null}\n aria-hidden={!isFirstItem || null}\n data-marqy-item=\"\"\n >\n {children}\n </div>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction useDimensions() {\n const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 })\n const observer = React.useRef<ResizeObserver | null>(null)\n\n const ref = React.useCallback((node: HTMLElement | null) => {\n observer.current?.disconnect()\n if (!node) return\n observer.current = new ResizeObserver(([entry]) =>\n setDimensions({\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n })\n )\n observer.current.observe(node)\n }, [])\n\n return [ref, dimensions] as const\n}\n"],"names":["_excluded","useDimensions","_React$useState2","React","useState","width","height","dimensions","setDimensions","observer","useRef","useCallback","node","_observer$current","current","disconnect","ResizeObserver","_ref2","entry","contentRect","observe","_ref","_ref$speed","speed","_ref$direction","direction","pauseOnHover","_ref$manual","manual","children","rest","_objectWithoutPropertiesLoose","_React$useState","reps","setReps","_useDimensions","container","containerDimensions","_useDimensions2","item","itemDimensions","isVertical","getAnimationDuration","itemDimension","useEffect","Math","ceil","ref","createElement","Array","fill","map","_","clone","_extends","key","style","animationDuration","rep","isFirstItem"],"mappings":"6gBAAA,IAAAA,EAAA,CAAA,QAAA,YAAA,eAAA,SAAA,YA+EA,SAASC,IACP,IAAAC,EAAoCC,EAAMC,SAAS,CAAEC,MAAO,EAAGC,OAAQ,IAAhEC,EAAUL,EAAEM,GAAAA,EAAaN,KAC1BO,EAAWN,EAAMO,OAA8B,MAcrD,MAAO,CAZKP,EAAMQ,YAAY,SAACC,GAA4BC,IAAAA,EACzDA,OAAAA,EAAAJ,EAASK,UAATD,EAAkBE,aACbH,IACLH,EAASK,QAAU,IAAIE,eAAe,SAAAC,OAAEC,EAAKD,EAC3C,GAAA,OAAAT,EAAc,CACZH,MAAOa,EAAMC,YAAYd,MACzBC,OAAQY,EAAMC,YAAYb,QAC1B,GAEJG,EAASK,QAAQM,QAAQR,GAC3B,EAAG,IAEUL,EACf,eAtFgB,SAAKc,OAORC,EAAAD,EANXE,MAAAA,OAAQ,IAAHD,EAAG,GAAGA,EAAAE,EAAAH,EACXI,UAAAA,OAAS,IAAAD,EAAG,OAAMA,EAClBE,EAAYL,EAAZK,aAAYC,EAAAN,EACZO,OAAAA,OAAM,IAAAD,GAAQA,EACdE,EAAQR,EAARQ,SACGC,6IAAIC,CAAAV,EAAArB,GAEPgC,EAAwB7B,EAAMC,SAAS,GAAhC6B,EAAID,EAAA,GAAEE,EAAOF,EAAA,GAEpBG,EAAyClC,IAAlCmC,EAASD,EAAEE,GAAAA,EAAmBF,EACrC,GAAAG,EAA+BrC,IAAxBsC,EAAID,EAAEE,GAAAA,EAAcF,EAAA,GAErBG,EAA2B,OAAdhB,GAAoC,SAAdA,EAEnCiB,EAAuBvC,EAAMQ,YACjC,SAACgC,GACC,OAAYA,MAAAA,EAAAA,EAAiB,GAAKV,GAAS,IAAMV,GACnD,GAAA,EACA,CAACU,EAAMV,IAYT,OATApB,EAAMyC,UAAU,YACTH,GAAcJ,EAAoBhC,OAASmC,EAAenC,OAC7D6B,EAAQW,KAAKC,KAAKT,EAAoBhC,MAAQmC,EAAenC,QAE3DoC,GAAcJ,EAAoB/B,QAAUkC,EAAelC,QAC7D4B,EAAQW,KAAKC,KAAKT,EAAoB/B,OAASkC,EAAelC,QAElE,EAAG,CAACmC,EAAYJ,EAAqBG,IAGnCrC,yBACE4C,IAAKX,EACM,aAAA,oBACKX,EAAS,sBACJC,EAAe,GAAK,MACrCI,GAEJ3B,EAAA6C,cAAA,MAAA,CAAA,mBAAsB,IACnB,IAAIC,MAAM,GAAGC,KAAK,GAAGC,IAAI,SAACC,EAAGC,GAC5B,OAAAlD,EAAA6C,cAAA,MAAAM,EACEC,CAAAA,IAAKF,EAAK,qBACS,IACdzB,EACD,CAAE,oBAAqBc,EAAqBD,EAAaD,EAAelC,OAASkC,EAAenC,QAChG,CAAEmD,MAAO,CAAEC,kBAAmBf,EAAqBD,EAAaD,EAAelC,OAASkC,EAAenC,UAG1G,IAAI4C,MAAMhB,GAAMiB,KAAK,GAAGC,IAAI,SAACC,EAAGM,GAC/B,IAAMC,EAAwB,IAAVN,GAAuB,IAARK,EACnC,OACEvD,EAAA6C,cAAA,MAAA,CACEO,IAAKG,EACLX,IAAKY,EAAcpB,EAAO,KAAI,eAChBoB,GAAe,KACb,kBAAA,IAEf9B,EAGP,GACI,IAKhB"}
|
package/dist/marqy.umd.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(e,
|
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports,require("react")):"function"==typeof define&&define.amd?define(["exports","react"],t):t((e||self).marqy={},e.react)}(this,function(e,t){function n(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach(function(n){if("default"!==n){var r=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,r.get?r:{enumerable:!0,get:function(){return e[n]}})}}),t.default=e,t}var r=/*#__PURE__*/n(t);function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},i.apply(null,arguments)}var a=["speed","direction","pauseOnHover","manual","children"];function u(){var e=r.useState({width:0,height:0}),t=e[0],n=e[1],i=r.useRef(null);return[r.useCallback(function(e){var t;null==(t=i.current)||t.disconnect(),e&&(i.current=new ResizeObserver(function(e){var t=e[0];return n({width:t.contentRect.width,height:t.contentRect.height})}),i.current.observe(e))},[]),t]}e.Marqy=function(e){var t=e.speed,n=void 0===t?.5:t,c=e.direction,o=void 0===c?"left":c,l=e.pauseOnHover,d=e.manual,f=void 0!==d&&d,h=e.children,s=function(e,t){if(null==e)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(-1!==t.indexOf(r))continue;n[r]=e[r]}return n}(e,a),v=r.useState(1),p=v[0],y=v[1],m=u(),g=m[0],w=m[1],b=u(),O=b[0],q=b[1],j="up"===o||"down"===o,E=r.useCallback(function(e){return(null!=e?e:0)*p/(100*n)+"s"},[p,n]);return r.useEffect(function(){!j&&w.width&&q.width&&y(Math.ceil(w.width/q.width)),j&&w.height&&q.height&&y(Math.ceil(w.height/q.height))},[j,w,q]),r.createElement("div",i({ref:g,"data-marqy":"","data-direction":o,"data-pause-on-hover":l?"":null},s),r.createElement("div",{"data-marqy-inner":""},new Array(2).fill(0).map(function(e,t){return r.createElement("div",i({key:t,"data-marqy-content":""},f?{"data-marqy-static":E(j?q.height:q.width)}:{style:{animationDuration:E(j?q.height:q.width)}}),new Array(p).fill(0).map(function(e,n){var i=0===t&&0===n;return r.createElement("div",{key:n,ref:i?O:null,"aria-hidden":!i||null,"data-marqy-item":""},h)}))})))}});
|
|
2
2
|
//# sourceMappingURL=marqy.umd.js.map
|
package/dist/marqy.umd.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"marqy.umd.js","sources":["../src/marqy.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport
|
|
1
|
+
{"version":3,"file":"marqy.umd.js","sources":["../src/marqy.tsx"],"sourcesContent":["import * as React from 'react'\n\nexport interface MarqyProps extends React.ComponentPropsWithoutRef<'div'> {\n speed?: number\n direction?: 'left' | 'right' | 'up' | 'down'\n pauseOnHover?: boolean\n manual?: boolean\n children: React.ReactNode\n}\n\nexport function Marqy({\n speed = 0.5,\n direction = 'left',\n pauseOnHover,\n manual = false,\n children,\n ...rest\n}: MarqyProps): React.ReactElement {\n const [reps, setReps] = React.useState(1)\n\n const [container, containerDimensions] = useDimensions()\n const [item, itemDimensions] = useDimensions()\n\n const isVertical = direction === 'up' || direction === 'down'\n\n const getAnimationDuration = React.useCallback(\n (itemDimension: number) => {\n return `${((itemDimension ?? 0) * reps) / (100 * speed)}s`\n },\n [reps, speed]\n )\n\n React.useEffect(() => {\n if (!isVertical && containerDimensions.width && itemDimensions.width) {\n setReps(Math.ceil(containerDimensions.width / itemDimensions.width))\n }\n if (isVertical && containerDimensions.height && itemDimensions.height) {\n setReps(Math.ceil(containerDimensions.height / itemDimensions.height))\n }\n }, [isVertical, containerDimensions, itemDimensions])\n\n return (\n <div\n ref={container}\n data-marqy=\"\"\n data-direction={direction}\n data-pause-on-hover={pauseOnHover ? '' : null}\n {...rest}\n >\n <div data-marqy-inner=\"\">\n {new Array(2).fill(0).map((_, clone) => (\n <div\n key={clone}\n data-marqy-content=\"\"\n {...(manual\n ? { 'data-marqy-static': getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) }\n : { style: { animationDuration: getAnimationDuration(isVertical ? itemDimensions.height : itemDimensions.width) } }\n )}\n >\n {new Array(reps).fill(0).map((_, rep) => {\n const isFirstItem = clone === 0 && rep === 0\n return (\n <div\n key={rep}\n ref={isFirstItem ? item : null}\n aria-hidden={!isFirstItem || null}\n data-marqy-item=\"\"\n >\n {children}\n </div>\n )\n })}\n </div>\n ))}\n </div>\n </div>\n )\n}\n\nfunction useDimensions() {\n const [dimensions, setDimensions] = React.useState({ width: 0, height: 0 })\n const observer = React.useRef<ResizeObserver | null>(null)\n\n const ref = React.useCallback((node: HTMLElement | null) => {\n observer.current?.disconnect()\n if (!node) return\n observer.current = new ResizeObserver(([entry]) =>\n setDimensions({\n width: entry.contentRect.width,\n height: entry.contentRect.height,\n })\n )\n observer.current.observe(node)\n }, [])\n\n return [ref, dimensions] as const\n}\n"],"names":["_excluded","useDimensions","_React$useState2","React","useState","width","height","dimensions","setDimensions","observer","useRef","useCallback","node","_observer$current","current","disconnect","ResizeObserver","_ref2","entry","contentRect","observe","_ref","_ref$speed","speed","_ref$direction","direction","pauseOnHover","_ref$manual","manual","children","rest","_objectWithoutPropertiesLoose","_React$useState","reps","setReps","_useDimensions","container","containerDimensions","_useDimensions2","item","itemDimensions","isVertical","getAnimationDuration","itemDimension","useEffect","Math","ceil","ref","createElement","Array","fill","map","_","clone","_extends","key","style","animationDuration","rep","isFirstItem"],"mappings":"gwBAAA,IAAAA,EAAA,CAAA,QAAA,YAAA,eAAA,SAAA,YA+EA,SAASC,IACP,IAAAC,EAAoCC,EAAMC,SAAS,CAAEC,MAAO,EAAGC,OAAQ,IAAhEC,EAAUL,EAAEM,GAAAA,EAAaN,KAC1BO,EAAWN,EAAMO,OAA8B,MAcrD,MAAO,CAZKP,EAAMQ,YAAY,SAACC,GAA4BC,IAAAA,EACzDA,OAAAA,EAAAJ,EAASK,UAATD,EAAkBE,aACbH,IACLH,EAASK,QAAU,IAAIE,eAAe,SAAAC,OAAEC,EAAKD,EAC3C,GAAA,OAAAT,EAAc,CACZH,MAAOa,EAAMC,YAAYd,MACzBC,OAAQY,EAAMC,YAAYb,QAC1B,GAEJG,EAASK,QAAQM,QAAQR,GAC3B,EAAG,IAEUL,EACf,SAtFgB,SAAKc,OAORC,EAAAD,EANXE,MAAAA,OAAQ,IAAHD,EAAG,GAAGA,EAAAE,EAAAH,EACXI,UAAAA,OAAS,IAAAD,EAAG,OAAMA,EAClBE,EAAYL,EAAZK,aAAYC,EAAAN,EACZO,OAAAA,OAAM,IAAAD,GAAQA,EACdE,EAAQR,EAARQ,SACGC,6IAAIC,CAAAV,EAAArB,GAEPgC,EAAwB7B,EAAMC,SAAS,GAAhC6B,EAAID,EAAA,GAAEE,EAAOF,EAAA,GAEpBG,EAAyClC,IAAlCmC,EAASD,EAAEE,GAAAA,EAAmBF,EACrC,GAAAG,EAA+BrC,IAAxBsC,EAAID,EAAEE,GAAAA,EAAcF,EAAA,GAErBG,EAA2B,OAAdhB,GAAoC,SAAdA,EAEnCiB,EAAuBvC,EAAMQ,YACjC,SAACgC,GACC,OAAYA,MAAAA,EAAAA,EAAiB,GAAKV,GAAS,IAAMV,GACnD,GAAA,EACA,CAACU,EAAMV,IAYT,OATApB,EAAMyC,UAAU,YACTH,GAAcJ,EAAoBhC,OAASmC,EAAenC,OAC7D6B,EAAQW,KAAKC,KAAKT,EAAoBhC,MAAQmC,EAAenC,QAE3DoC,GAAcJ,EAAoB/B,QAAUkC,EAAelC,QAC7D4B,EAAQW,KAAKC,KAAKT,EAAoB/B,OAASkC,EAAelC,QAElE,EAAG,CAACmC,EAAYJ,EAAqBG,IAGnCrC,yBACE4C,IAAKX,EACM,aAAA,oBACKX,EAAS,sBACJC,EAAe,GAAK,MACrCI,GAEJ3B,EAAA6C,cAAA,MAAA,CAAA,mBAAsB,IACnB,IAAIC,MAAM,GAAGC,KAAK,GAAGC,IAAI,SAACC,EAAGC,GAC5B,OAAAlD,EAAA6C,cAAA,MAAAM,EACEC,CAAAA,IAAKF,EAAK,qBACS,IACdzB,EACD,CAAE,oBAAqBc,EAAqBD,EAAaD,EAAelC,OAASkC,EAAenC,QAChG,CAAEmD,MAAO,CAAEC,kBAAmBf,EAAqBD,EAAaD,EAAelC,OAASkC,EAAenC,UAG1G,IAAI4C,MAAMhB,GAAMiB,KAAK,GAAGC,IAAI,SAACC,EAAGM,GAC/B,IAAMC,EAAwB,IAAVN,GAAuB,IAARK,EACnC,OACEvD,EAAA6C,cAAA,MAAA,CACEO,IAAKG,EACLX,IAAKY,EAAcpB,EAAO,KAAI,eAChBoB,GAAe,KACb,kBAAA,IAEf9B,EAGP,GACI,IAKhB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default new Map();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export default new Map();
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
declare module 'astro:content' {
|
|
2
|
+
export interface RenderResult {
|
|
3
|
+
Content: import('astro/runtime/server/index.js').AstroComponentFactory;
|
|
4
|
+
headings: import('astro').MarkdownHeading[];
|
|
5
|
+
remarkPluginFrontmatter: Record<string, any>;
|
|
6
|
+
}
|
|
7
|
+
interface Render {
|
|
8
|
+
'.md': Promise<RenderResult>;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface RenderedContent {
|
|
12
|
+
html: string;
|
|
13
|
+
metadata?: {
|
|
14
|
+
imagePaths: Array<string>;
|
|
15
|
+
[key: string]: unknown;
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
type Flatten<T> = T extends { [K: string]: infer U } ? U : never;
|
|
20
|
+
|
|
21
|
+
export type CollectionKey = keyof DataEntryMap;
|
|
22
|
+
export type CollectionEntry<C extends CollectionKey> = Flatten<DataEntryMap[C]>;
|
|
23
|
+
|
|
24
|
+
type AllValuesOf<T> = T extends any ? T[keyof T] : never;
|
|
25
|
+
|
|
26
|
+
export type ReferenceDataEntry<
|
|
27
|
+
C extends CollectionKey,
|
|
28
|
+
E extends keyof DataEntryMap[C] = string,
|
|
29
|
+
> = {
|
|
30
|
+
collection: C;
|
|
31
|
+
id: E;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export type ReferenceLiveEntry<C extends keyof LiveContentConfig['collections']> = {
|
|
35
|
+
collection: C;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export function getCollection<C extends keyof DataEntryMap, E extends CollectionEntry<C>>(
|
|
40
|
+
collection: C,
|
|
41
|
+
filter?: (entry: CollectionEntry<C>) => entry is E,
|
|
42
|
+
): Promise<E[]>;
|
|
43
|
+
export function getCollection<C extends keyof DataEntryMap>(
|
|
44
|
+
collection: C,
|
|
45
|
+
filter?: (entry: CollectionEntry<C>) => unknown,
|
|
46
|
+
): Promise<CollectionEntry<C>[]>;
|
|
47
|
+
|
|
48
|
+
export function getLiveCollection<C extends keyof LiveContentConfig['collections']>(
|
|
49
|
+
collection: C,
|
|
50
|
+
filter?: LiveLoaderCollectionFilterType<C>,
|
|
51
|
+
): Promise<
|
|
52
|
+
import('astro').LiveDataCollectionResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>
|
|
53
|
+
>;
|
|
54
|
+
|
|
55
|
+
export function getEntry<
|
|
56
|
+
C extends keyof DataEntryMap,
|
|
57
|
+
E extends keyof DataEntryMap[C] | (string & {}),
|
|
58
|
+
>(
|
|
59
|
+
entry: ReferenceDataEntry<C, E>,
|
|
60
|
+
): E extends keyof DataEntryMap[C]
|
|
61
|
+
? Promise<DataEntryMap[C][E]>
|
|
62
|
+
: Promise<CollectionEntry<C> | undefined>;
|
|
63
|
+
export function getEntry<
|
|
64
|
+
C extends keyof DataEntryMap,
|
|
65
|
+
E extends keyof DataEntryMap[C] | (string & {}),
|
|
66
|
+
>(
|
|
67
|
+
collection: C,
|
|
68
|
+
id: E,
|
|
69
|
+
): E extends keyof DataEntryMap[C]
|
|
70
|
+
? string extends keyof DataEntryMap[C]
|
|
71
|
+
? Promise<DataEntryMap[C][E]> | undefined
|
|
72
|
+
: Promise<DataEntryMap[C][E]>
|
|
73
|
+
: Promise<CollectionEntry<C> | undefined>;
|
|
74
|
+
export function getLiveEntry<C extends keyof LiveContentConfig['collections']>(
|
|
75
|
+
collection: C,
|
|
76
|
+
filter: string | LiveLoaderEntryFilterType<C>,
|
|
77
|
+
): Promise<import('astro').LiveDataEntryResult<LiveLoaderDataType<C>, LiveLoaderErrorType<C>>>;
|
|
78
|
+
|
|
79
|
+
/** Resolve an array of entry references from the same collection */
|
|
80
|
+
export function getEntries<C extends keyof DataEntryMap>(
|
|
81
|
+
entries: ReferenceDataEntry<C, keyof DataEntryMap[C]>[],
|
|
82
|
+
): Promise<CollectionEntry<C>[]>;
|
|
83
|
+
|
|
84
|
+
export function render<C extends keyof DataEntryMap>(
|
|
85
|
+
entry: DataEntryMap[C][string],
|
|
86
|
+
): Promise<RenderResult>;
|
|
87
|
+
|
|
88
|
+
export function reference<
|
|
89
|
+
C extends
|
|
90
|
+
| keyof DataEntryMap
|
|
91
|
+
// Allow generic `string` to avoid excessive type errors in the config
|
|
92
|
+
// if `dev` is not running to update as you edit.
|
|
93
|
+
// Invalid collection names will be caught at build time.
|
|
94
|
+
| (string & {}),
|
|
95
|
+
>(
|
|
96
|
+
collection: C,
|
|
97
|
+
): import('astro/zod').ZodPipe<
|
|
98
|
+
import('astro/zod').ZodString,
|
|
99
|
+
import('astro/zod').ZodTransform<
|
|
100
|
+
C extends keyof DataEntryMap
|
|
101
|
+
? {
|
|
102
|
+
collection: C;
|
|
103
|
+
id: string;
|
|
104
|
+
}
|
|
105
|
+
: never,
|
|
106
|
+
string
|
|
107
|
+
>
|
|
108
|
+
>;
|
|
109
|
+
|
|
110
|
+
type ReturnTypeOrOriginal<T> = T extends (...args: any[]) => infer R ? R : T;
|
|
111
|
+
type InferEntrySchema<C extends keyof DataEntryMap> = import('astro/zod').infer<
|
|
112
|
+
ReturnTypeOrOriginal<Required<ContentConfig['collections'][C]>['schema']>
|
|
113
|
+
>;
|
|
114
|
+
type ExtractLoaderConfig<T> = T extends { loader: infer L } ? L : never;
|
|
115
|
+
type InferLoaderSchema<
|
|
116
|
+
C extends keyof DataEntryMap,
|
|
117
|
+
L = ExtractLoaderConfig<ContentConfig['collections'][C]>,
|
|
118
|
+
> = L extends { schema: import('astro/zod').ZodSchema }
|
|
119
|
+
? import('astro/zod').infer<L['schema']>
|
|
120
|
+
: any;
|
|
121
|
+
|
|
122
|
+
type DataEntryMap = {
|
|
123
|
+
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
type ExtractLoaderTypes<T> = T extends import('astro/loaders').LiveLoader<
|
|
127
|
+
infer TData,
|
|
128
|
+
infer TEntryFilter,
|
|
129
|
+
infer TCollectionFilter,
|
|
130
|
+
infer TError
|
|
131
|
+
>
|
|
132
|
+
? { data: TData; entryFilter: TEntryFilter; collectionFilter: TCollectionFilter; error: TError }
|
|
133
|
+
: { data: never; entryFilter: never; collectionFilter: never; error: never };
|
|
134
|
+
type ExtractEntryFilterType<T> = ExtractLoaderTypes<T>['entryFilter'];
|
|
135
|
+
type ExtractCollectionFilterType<T> = ExtractLoaderTypes<T>['collectionFilter'];
|
|
136
|
+
type ExtractErrorType<T> = ExtractLoaderTypes<T>['error'];
|
|
137
|
+
|
|
138
|
+
type LiveLoaderDataType<C extends keyof LiveContentConfig['collections']> =
|
|
139
|
+
LiveContentConfig['collections'][C]['schema'] extends undefined
|
|
140
|
+
? ExtractDataType<LiveContentConfig['collections'][C]['loader']>
|
|
141
|
+
: import('astro/zod').infer<
|
|
142
|
+
Exclude<LiveContentConfig['collections'][C]['schema'], undefined>
|
|
143
|
+
>;
|
|
144
|
+
type LiveLoaderEntryFilterType<C extends keyof LiveContentConfig['collections']> =
|
|
145
|
+
ExtractEntryFilterType<LiveContentConfig['collections'][C]['loader']>;
|
|
146
|
+
type LiveLoaderCollectionFilterType<C extends keyof LiveContentConfig['collections']> =
|
|
147
|
+
ExtractCollectionFilterType<LiveContentConfig['collections'][C]['loader']>;
|
|
148
|
+
type LiveLoaderErrorType<C extends keyof LiveContentConfig['collections']> = ExtractErrorType<
|
|
149
|
+
LiveContentConfig['collections'][C]['loader']
|
|
150
|
+
>;
|
|
151
|
+
|
|
152
|
+
export type ContentConfig = typeof import("../src/content.config.js");
|
|
153
|
+
export type LiveContentConfig = never;
|
|
154
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
[["Map",1,2],"meta::meta",["Map",3,4,5,6,7,8],"astro-config-digest","{\"root\":{},\"srcDir\":{},\"publicDir\":{},\"outDir\":{},\"cacheDir\":{},\"compressHTML\":true,\"base\":\"/\",\"trailingSlash\":\"ignore\",\"output\":\"static\",\"scopedStyleStrategy\":\"attribute\",\"build\":{\"format\":\"directory\",\"client\":{},\"server\":{},\"assets\":\"_astro\",\"serverEntry\":\"entry.mjs\",\"redirects\":true,\"inlineStylesheets\":\"auto\",\"concurrency\":1},\"server\":{\"open\":false,\"host\":false,\"port\":4321,\"streaming\":true,\"allowedHosts\":[]},\"redirects\":{},\"image\":{\"endpoint\":{\"route\":\"/_image\"},\"service\":{\"entrypoint\":\"astro/assets/services/sharp\",\"config\":{}},\"domains\":[],\"remotePatterns\":[],\"responsiveStyles\":false},\"devToolbar\":{\"enabled\":true},\"markdown\":{\"syntaxHighlight\":{\"type\":\"shiki\",\"excludeLangs\":[\"math\"]},\"shikiConfig\":{\"langs\":[],\"langAlias\":{},\"theme\":\"github-dark\",\"themes\":{},\"wrap\":false,\"transformers\":[]},\"remarkPlugins\":[],\"rehypePlugins\":[],\"remarkRehype\":{},\"gfm\":true,\"smartypants\":{\"backticks\":true,\"closingQuotes\":{\"double\":\"”\",\"single\":\"’\"},\"dashes\":true,\"ellipses\":true,\"openingQuotes\":{\"double\":\"“\",\"single\":\"‘\"},\"quotes\":true}},\"security\":{\"checkOrigin\":true,\"allowedDomains\":[],\"csp\":false,\"actionBodySizeLimit\":1048576,\"serverIslandBodySizeLimit\":1048576},\"env\":{\"schema\":{},\"validateSecrets\":false},\"prerenderConflictBehavior\":\"warn\",\"fonts\":[{\"name\":\"AkkuratMono\",\"cssVariable\":\"--font-akkurat-mono\",\"provider\":{\"name\":\"local\"},\"fallbacks\":[\"monospace\"],\"options\":{\"variants\":[{\"src\":[\"./src/fonts/Akkurat-Mono.woff2\",\"./src/fonts/Akkurat-Mono.woff\"],\"weight\":500,\"style\":\"normal\"},{\"src\":[\"./src/fonts/Akkurat-Mono-Bold.woff\"],\"weight\":700,\"style\":\"normal\"}]}},{\"name\":\"GrtskPeta\",\"cssVariable\":\"--font-grtsk\",\"provider\":{\"name\":\"local\"},\"options\":{\"variants\":[{\"src\":[\"./src/fonts/Grtsk-Peta-Light.woff2\",\"./src/fonts/Grtsk-Peta-Light.woff\"],\"weight\":300,\"style\":\"normal\"},{\"src\":[\"./src/fonts/Grtsk-Peta-Regular.woff2\",\"./src/fonts/Grtsk-Peta-Regular.woff\"],\"weight\":400,\"style\":\"normal\"},{\"src\":[\"./src/fonts/Grtsk-Peta-Medium.woff2\",\"./src/fonts/Grtsk-Peta-Medium.woff\"],\"weight\":500,\"style\":\"normal\"}]}},{\"name\":\"GrtskTera\",\"cssVariable\":\"--font-grtsk-wide\",\"provider\":{\"name\":\"local\"},\"options\":{\"variants\":[{\"src\":[\"./src/fonts/Grtsk-Tera-Medium.woff2\",\"./src/fonts/Grtsk-Tera-Medium.woff\"],\"weight\":500,\"style\":\"normal\"},{\"src\":[\"./src/fonts/Grtsk-Tera-Bold.woff2\",\"./src/fonts/Grtsk-Tera-Bold.woff\"],\"weight\":700,\"style\":\"normal\"}]}}],\"experimental\":{\"clientPrerender\":false,\"contentIntellisense\":false,\"chromeDevtoolsWorkspace\":false,\"svgo\":false,\"rustCompiler\":false,\"queuedRendering\":{\"enabled\":false}},\"legacy\":{\"collectionsBackwardsCompat\":false}}","astro-version","6.1.8","content-config-digest","2603162b967e798a"]
|
package/examples/.yarnrc
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
--install.ignore-engines true
|