@tollbrothers/tollbrothers-ui 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +35 -0
- package/dist/index.css +63 -0
- package/dist/index.js +98 -0
- package/dist/index.js.map +1 -0
- package/dist/index.modern.js +95 -0
- package/dist/index.modern.js.map +1 -0
- package/package.json +64 -0
package/README.md
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# tollbrothers-ui package
|
|
2
|
+
# Release 01
|
|
3
|
+
|
|
4
|
+
## How was this package created?
|
|
5
|
+
1. Created the `tollbrothers-ui` project on Github as an empty repo for the `tollbros` Github org.
|
|
6
|
+
2. Locally created a `packages` directory.
|
|
7
|
+
3. Checked out the `tollbrothers-ui` repo in the `packages` directory.
|
|
8
|
+
4. Within the `packages/tollbrothers-ui` directory, run `npm init --scope=tollbrothers` and chose all the defaults.
|
|
9
|
+
5. Run `npx create-react-library tollbrothers-ui` in the directory and modify the `package.json` file in the created directory to include what's in the root directory.
|
|
10
|
+
6. Move all files from created directory into the root.
|
|
11
|
+
7. Run `npm install next` and `npm install sass` to add NextJS and SASS to the project.
|
|
12
|
+
8. Change `dependencies` to `peerDependencies` in the `package.json` file.
|
|
13
|
+
|
|
14
|
+
## How was this package tested locally?
|
|
15
|
+
1. Within the `packages/tollbrothers-ui` directory, run `npm link`. This created the `package-lock.json` file.
|
|
16
|
+
2. Went back to the `packages` directory and run `npx create-next-app tollbrothers-ui-test`
|
|
17
|
+
3. Within the `packages/tollbrothers-ui-test` directory, run `npm link @tollbrothers/tollbrothers-ui`. This linked the `tollbrothers-ui` package to the test script.
|
|
18
|
+
4. Add `import '@tollbrothers/tollbrothers-ui/dist/index.css` in `packages/tollbrothers-ui-test/pages/_app.js`.
|
|
19
|
+
5. Add `import { HeroComponent } from '@tollbrothers/tollbrothers-ui'` in `packages/tollbrothers-ui-test/pages/index.js`.
|
|
20
|
+
6. Create a `heroSlides` array of objects that contain an `image`, `title`, and `URL` parameter for each slide.
|
|
21
|
+
7. Add `<HeroComponent>` to return statement and pass in `slides={heroSlides}` and `darkness={true or false}` to component. It will resize to fit whatever container it is in.
|
|
22
|
+
8. Verify that the component shows on the page via `npm run dev`.
|
|
23
|
+
|
|
24
|
+
## How do we publish changes?
|
|
25
|
+
1. Publishing has been automated by the Semantic Release Workflow.
|
|
26
|
+
|
|
27
|
+
## Semantic Release Workflow
|
|
28
|
+
Basically, follow the commit message format below. Then when the commit is posted on the `main` branch semantic-release will do its thing and publish a new version on `merge to main` or a direct commit to `main`.
|
|
29
|
+
* [Commit message format](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#type)
|
|
30
|
+
* [How does it work?](https://github.com/angular/angular/blob/main/CONTRIBUTING.md#type)
|
|
31
|
+
|
|
32
|
+
## Things to consider
|
|
33
|
+
- You can publish code without commiting it. Not sure why you would but there are no guards to prevent you from doing so.
|
|
34
|
+
- On github, the org is `tollbros`
|
|
35
|
+
- On npm, the org is `tollbrothers`
|
package/dist/index.css
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/* add css module styles here (optional) */
|
|
2
|
+
._3wJe6 {
|
|
3
|
+
margin: 2em;
|
|
4
|
+
padding: 0.5em;
|
|
5
|
+
border: 2px solid #000;
|
|
6
|
+
font-size: 2em;
|
|
7
|
+
text-align: center;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
._iZwr_ {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
position: relative;
|
|
15
|
+
}
|
|
16
|
+
._iZwr_ ._1bGxA {
|
|
17
|
+
width: 100%;
|
|
18
|
+
height: 100%;
|
|
19
|
+
position: relative;
|
|
20
|
+
}
|
|
21
|
+
._iZwr_ ._1bGxA ._3GCKU {
|
|
22
|
+
width: 100%;
|
|
23
|
+
height: 100%;
|
|
24
|
+
display: block;
|
|
25
|
+
background-color: rgba(0, 0, 0, 0.5);
|
|
26
|
+
position: absolute;
|
|
27
|
+
z-index: 0;
|
|
28
|
+
}
|
|
29
|
+
._iZwr_ ._1bGxA img {
|
|
30
|
+
width: 100%;
|
|
31
|
+
height: 100%;
|
|
32
|
+
-o-object-fit: cover;
|
|
33
|
+
object-fit: cover;
|
|
34
|
+
}
|
|
35
|
+
._iZwr_ ._1bGxA ._2S0hq {
|
|
36
|
+
position: relative;
|
|
37
|
+
display: block;
|
|
38
|
+
height: 100%;
|
|
39
|
+
top: 0;
|
|
40
|
+
left: 0;
|
|
41
|
+
z-index: -3;
|
|
42
|
+
opacity: 1;
|
|
43
|
+
transition: opacity 1s ease-out;
|
|
44
|
+
}
|
|
45
|
+
._iZwr_ ._1bGxA ._2S0hq._2wBtF {
|
|
46
|
+
opacity: 0;
|
|
47
|
+
}
|
|
48
|
+
._iZwr_ ._1bGxA ._29vM6 {
|
|
49
|
+
position: absolute;
|
|
50
|
+
top: 0;
|
|
51
|
+
left: 0;
|
|
52
|
+
z-index: -4;
|
|
53
|
+
}
|
|
54
|
+
._iZwr_ ._1OS_c {
|
|
55
|
+
position: absolute;
|
|
56
|
+
left: 24px;
|
|
57
|
+
bottom: 14px;
|
|
58
|
+
z-index: 0;
|
|
59
|
+
color: white;
|
|
60
|
+
font-size: 0.74em;
|
|
61
|
+
text-shadow: 0 1px 1px #000;
|
|
62
|
+
width: 125px;
|
|
63
|
+
}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
|
|
2
|
+
|
|
3
|
+
var React = require('react');
|
|
4
|
+
var React__default = _interopDefault(React);
|
|
5
|
+
var Link = _interopDefault(require('next/dist/client/link'));
|
|
6
|
+
|
|
7
|
+
var styles = {"test":"_3wJe6","heroContainer":"_iZwr_","imageHolder":"_1bGxA","darkness":"_3GCKU","currentImage":"_2S0hq","fadeIn":"_2wBtF","nextImage":"_29vM6","caption":"_1OS_c"};
|
|
8
|
+
|
|
9
|
+
var HeroComponent = function HeroComponent(_ref) {
|
|
10
|
+
var slides = _ref.slides,
|
|
11
|
+
darkness = _ref.darkness;
|
|
12
|
+
var _useState = React.useState(0),
|
|
13
|
+
setCurrentSlideIndex = _useState[1];
|
|
14
|
+
var _useState2 = React.useState(slides[0]),
|
|
15
|
+
currentSlide = _useState2[0],
|
|
16
|
+
setCurrentSlide = _useState2[1];
|
|
17
|
+
var _useState3 = React.useState(1),
|
|
18
|
+
nextSlideIndex = _useState3[0],
|
|
19
|
+
setNextSlideIndex = _useState3[1];
|
|
20
|
+
var _useState4 = React.useState(),
|
|
21
|
+
nextSlide = _useState4[0],
|
|
22
|
+
setNextSlide = _useState4[1];
|
|
23
|
+
var changeSlides = function changeSlides() {
|
|
24
|
+
if (slides.length > 1 && nextSlide) {
|
|
25
|
+
setCurrentSlide(nextSlide);
|
|
26
|
+
setCurrentSlideIndex(nextSlideIndex);
|
|
27
|
+
var timer = setTimeout(function () {
|
|
28
|
+
if (nextSlideIndex == slides.length - 1) {
|
|
29
|
+
setNextSlide(slides[0]);
|
|
30
|
+
setNextSlideIndex(0);
|
|
31
|
+
} else {
|
|
32
|
+
setNextSlide(slides[nextSlideIndex + 1]);
|
|
33
|
+
setNextSlideIndex(nextSlideIndex + 1);
|
|
34
|
+
}
|
|
35
|
+
}, 1000);
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
React.useEffect(function () {
|
|
39
|
+
if (slides.length > 1) {
|
|
40
|
+
var randomStartIndex = Math.floor(Math.random() * slides.length);
|
|
41
|
+
setCurrentSlideIndex(randomStartIndex);
|
|
42
|
+
setCurrentSlide(slides[randomStartIndex]);
|
|
43
|
+
if (randomStartIndex == slides.length - 1) {
|
|
44
|
+
setNextSlideIndex(0);
|
|
45
|
+
setNextSlide(slides[0]);
|
|
46
|
+
} else {
|
|
47
|
+
setNextSlideIndex(randomStartIndex + 1);
|
|
48
|
+
setNextSlide(slides[randomStartIndex + 1]);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}, []);
|
|
52
|
+
React.useEffect(function () {
|
|
53
|
+
if (slides.length > 1) {
|
|
54
|
+
var fader = document.getElementById("frontImage");
|
|
55
|
+
var interval = setInterval(function () {
|
|
56
|
+
fader.classList.add(styles.fadeIn);
|
|
57
|
+
var timer = setTimeout(function () {
|
|
58
|
+
changeSlides();
|
|
59
|
+
fader.classList.remove(styles.fadeIn);
|
|
60
|
+
}, 1000);
|
|
61
|
+
}, 10000);
|
|
62
|
+
return function () {
|
|
63
|
+
return clearInterval(interval);
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}, [changeSlides]);
|
|
67
|
+
return /*#__PURE__*/React__default.createElement("div", {
|
|
68
|
+
className: styles.heroContainer
|
|
69
|
+
}, /*#__PURE__*/React__default.createElement("div", {
|
|
70
|
+
className: styles.imageHolder
|
|
71
|
+
}, darkness ? /*#__PURE__*/React__default.createElement("div", {
|
|
72
|
+
className: styles.darkness
|
|
73
|
+
}) : null, slides.length == 1 ? /*#__PURE__*/React__default.createElement("img", {
|
|
74
|
+
src: currentSlide.image,
|
|
75
|
+
alt: currentSlide.title ? currentSlide.title : "",
|
|
76
|
+
loading: "lazy"
|
|
77
|
+
}) : slides.length > 1 ? /*#__PURE__*/React__default.createElement(React.Fragment, null, currentSlide && /*#__PURE__*/React__default.createElement("img", {
|
|
78
|
+
src: currentSlide.image,
|
|
79
|
+
alt: currentSlide.title ? currentSlide.title : "",
|
|
80
|
+
loading: "lazy",
|
|
81
|
+
id: "frontImage",
|
|
82
|
+
className: styles.currentImage
|
|
83
|
+
}), nextSlide && /*#__PURE__*/React__default.createElement("img", {
|
|
84
|
+
src: nextSlide.image,
|
|
85
|
+
alt: nextSlide.title ? nextSlide.title : "",
|
|
86
|
+
loading: "lazy",
|
|
87
|
+
id: "backImage",
|
|
88
|
+
className: styles.nextImage
|
|
89
|
+
})) : null), slides.length > 0 && currentSlide.URL && currentSlide.title ? /*#__PURE__*/React__default.createElement(Link, {
|
|
90
|
+
href: currentSlide.URL
|
|
91
|
+
}, /*#__PURE__*/React__default.createElement("a", {
|
|
92
|
+
className: styles.caption,
|
|
93
|
+
title: currentSlide.title
|
|
94
|
+
}, currentSlide.title)) : null);
|
|
95
|
+
};
|
|
96
|
+
|
|
97
|
+
exports.HeroComponent = HeroComponent;
|
|
98
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.js"],"sourcesContent":["import React, { useState, useEffect, useRef, Fragment } from \"react\";\nimport styles from './styles.module.scss';\nimport Link from \"next/dist/client/link\";\n\nexport const HeroComponent = ({ children, slides, darkness }) => {\n\n const [currentSlideIndex, setCurrentSlideIndex] = useState(0);\n const [currentSlide, setCurrentSlide] = useState(slides[0]);\n const [nextSlideIndex, setNextSlideIndex] = useState(1);\n const [nextSlide, setNextSlide] = useState();\n\n const changeSlides = () => {\n if (slides.length > 1 && nextSlide) {\n\n setCurrentSlide(nextSlide);\n setCurrentSlideIndex(nextSlideIndex);\n\n const timer = setTimeout(() => {\n if (nextSlideIndex == (slides.length - 1)) {\n setNextSlide(slides[0]);\n setNextSlideIndex(0);\n } else {\n setNextSlide(slides[nextSlideIndex + 1]);\n setNextSlideIndex(nextSlideIndex + 1);\n }\n }, 1000);\n\n }\n }\n\n useEffect(() => { // Handles Random Start Index\n if (slides.length > 1) {\n\n let randomStartIndex = Math.floor(Math.random() * slides.length)\n\n setCurrentSlideIndex(randomStartIndex);\n setCurrentSlide(slides[randomStartIndex]);\n\n if (randomStartIndex == (slides.length - 1)) {\n setNextSlideIndex(0);\n setNextSlide(slides[0]);\n } else {\n setNextSlideIndex(randomStartIndex + 1);\n setNextSlide(slides[randomStartIndex + 1]);\n }\n\n }\n }, []);\n\n useEffect(() => { // Handles Slideshow Timer\n if (slides.length > 1) {\n\n let fader = document.getElementById(\"frontImage\");\n const interval = setInterval(() => {\n \n fader.classList.add(styles.fadeIn);\n\n const timer = setTimeout(() => {\n changeSlides();\n fader.classList.remove(styles.fadeIn);\n }, 1000);\n \n }, 10000);\n return () => clearInterval(interval);\n\n }\n }, [changeSlides]);\n\n return (\n <div className={styles.heroContainer}>\n <div className={styles.imageHolder}>\n\n {\n darkness ?\n <div className={styles.darkness}></div>\n :\n null\n }\n\n {\n slides.length == 1 ?\n <img src={currentSlide.image} alt={currentSlide.title ? currentSlide.title : \"\"} loading=\"lazy\" />\n : slides.length > 1 ?\n <>\n \n {\n currentSlide && <img src={currentSlide.image} alt={currentSlide.title ? currentSlide.title : \"\"} loading=\"lazy\" id=\"frontImage\" className={styles.currentImage} />\n }\n\n {\n nextSlide && <img src={nextSlide.image} alt={nextSlide.title ? nextSlide.title : \"\"} loading=\"lazy\" id=\"backImage\" className={styles.nextImage} />\n }\n\n </>\n :\n null\n }\n\n </div>\n\n {\n slides.length > 0 && currentSlide.URL && currentSlide.title ?\n <Link href={currentSlide.URL}>\n <a className={styles.caption} title={currentSlide.title}>\n {currentSlide.title}\n </a>\n </Link>\n :\n null\n }\n\n </div>\n )\n}\n\n// Using this tutorial to make components:\n// https://triveniglobalsoft.com/how-to-publish-a-custom-react-component-to-npm-using-create-react-library/"],"names":["HeroComponent","slides","darkness","useState","currentSlideIndex","setCurrentSlideIndex","currentSlide","setCurrentSlide","nextSlideIndex","setNextSlideIndex","nextSlide","setNextSlide","changeSlides","length","timer","setTimeout","useEffect","randomStartIndex","Math","floor","random","fader","document","getElementById","interval","setInterval","classList","add","styles","fadeIn","remove","clearInterval","React","heroContainer","imageHolder","image","title","currentImage","nextImage","URL","caption"],"mappings":";;;;;;;;IAIaA,aAAa,GAAG,SAAhBA,aAAa,OAAuC;EAAA,IAAvBC,MAAM,QAANA,MAAM;IAAEC,QAAQ,QAARA,QAAQ;EAExD,gBAAkDC,cAAQ,CAAC,CAAC,CAAC;IAAtDC,AAAmBC,oBAAoB;EAC9C,iBAAwCF,cAAQ,CAACF,MAAM,CAAC,CAAC,CAAC,CAAC;IAApDK,YAAY;IAAEC,eAAe;EACpC,iBAA4CJ,cAAQ,CAAC,CAAC,CAAC;IAAhDK,cAAc;IAAEC,iBAAiB;EACxC,iBAAkCN,cAAQ,EAAE;IAArCO,SAAS;IAAEC,YAAY;EAE9B,IAAMC,YAAY,GAAG,SAAfA,YAAY,GAAS;IACzB,IAAIX,MAAM,CAACY,MAAM,GAAG,CAAC,IAAIH,SAAS,EAAE;MAElCH,eAAe,CAACG,SAAS,CAAC;MAC1BL,oBAAoB,CAACG,cAAc,CAAC;MAEpC,IAAMM,KAAK,GAAGC,UAAU,CAAC,YAAM;QAC7B,IAAIP,cAAc,IAAKP,MAAM,CAACY,MAAM,GAAG,CAAE,EAAE;UACzCF,YAAY,CAACV,MAAM,CAAC,CAAC,CAAC,CAAC;UACvBQ,iBAAiB,CAAC,CAAC,CAAC;SACrB,MAAM;UACLE,YAAY,CAACV,MAAM,CAACO,cAAc,GAAG,CAAC,CAAC,CAAC;UACxCC,iBAAiB,CAACD,cAAc,GAAG,CAAC,CAAC;;OAExC,EAAE,IAAI,CAAC;;GAGX;EAEDQ,eAAS,CAAC,YAAM;IACd,IAAIf,MAAM,CAACY,MAAM,GAAG,CAAC,EAAE;MAErB,IAAII,gBAAgB,GAAGC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,MAAM,EAAE,GAAGnB,MAAM,CAACY,MAAM,CAAC;MAEhER,oBAAoB,CAACY,gBAAgB,CAAC;MACtCV,eAAe,CAACN,MAAM,CAACgB,gBAAgB,CAAC,CAAC;MAEzC,IAAIA,gBAAgB,IAAKhB,MAAM,CAACY,MAAM,GAAG,CAAE,EAAE;QAC3CJ,iBAAiB,CAAC,CAAC,CAAC;QACpBE,YAAY,CAACV,MAAM,CAAC,CAAC,CAAC,CAAC;OACxB,MAAM;QACLQ,iBAAiB,CAACQ,gBAAgB,GAAG,CAAC,CAAC;QACvCN,YAAY,CAACV,MAAM,CAACgB,gBAAgB,GAAG,CAAC,CAAC,CAAC;;;GAI/C,EAAE,EAAE,CAAC;EAEND,eAAS,CAAC,YAAM;IACd,IAAIf,MAAM,CAACY,MAAM,GAAG,CAAC,EAAE;MAErB,IAAIQ,KAAK,GAAGC,QAAQ,CAACC,cAAc,CAAC,YAAY,CAAC;MACjD,IAAMC,QAAQ,GAAGC,WAAW,CAAC,YAAM;QAEjCJ,KAAK,CAACK,SAAS,CAACC,GAAG,CAACC,MAAM,CAACC,MAAM,CAAC;QAElC,IAAMf,KAAK,GAAGC,UAAU,CAAC,YAAM;UAC7BH,YAAY,EAAE;UACdS,KAAK,CAACK,SAAS,CAACI,MAAM,CAACF,MAAM,CAACC,MAAM,CAAC;SACtC,EAAE,IAAI,CAAC;OAET,EAAE,KAAK,CAAC;MACT,OAAO;QAAA,OAAME,aAAa,CAACP,QAAQ,CAAC;;;GAGvC,EAAE,CAACZ,YAAY,CAAC,CAAC;EAElB,oBACEoB;IAAK,SAAS,EAAEJ,MAAM,CAACK;kBACrBD;IAAK,SAAS,EAAEJ,MAAM,CAACM;KAGnBhC,QAAQ,gBACN8B;IAAK,SAAS,EAAEJ,MAAM,CAAC1B;IAAgB,GAEvC,IAAI,EAIND,MAAM,CAACY,MAAM,IAAI,CAAC,gBAChBmB;IAAK,GAAG,EAAE1B,YAAY,CAAC6B,KAAM;IAAC,GAAG,EAAE7B,YAAY,CAAC8B,KAAK,GAAG9B,YAAY,CAAC8B,KAAK,GAAG,EAAG;IAAC,OAAO,EAAC;IAAS,GAClGnC,MAAM,CAACY,MAAM,GAAG,CAAC,gBACjBmB,mDAGI1B,YAAY,iBAAI0B;IAAK,GAAG,EAAE1B,YAAY,CAAC6B,KAAM;IAAC,GAAG,EAAE7B,YAAY,CAAC8B,KAAK,GAAG9B,YAAY,CAAC8B,KAAK,GAAG,EAAG;IAAC,OAAO,EAAC,MAAM;IAAC,EAAE,EAAC,YAAY;IAAC,SAAS,EAAER,MAAM,CAACS;IAAgB,EAIlK3B,SAAS,iBAAIsB;IAAK,GAAG,EAAEtB,SAAS,CAACyB,KAAM;IAAC,GAAG,EAAEzB,SAAS,CAAC0B,KAAK,GAAG1B,SAAS,CAAC0B,KAAK,GAAG,EAAG;IAAC,OAAO,EAAC,MAAM;IAAC,EAAE,EAAC,WAAW;IAAC,SAAS,EAAER,MAAM,CAACU;IAAa,CAGnJ,GAEH,IAAI,CAGJ,EAGJrC,MAAM,CAACY,MAAM,GAAG,CAAC,IAAIP,YAAY,CAACiC,GAAG,IAAIjC,YAAY,CAAC8B,KAAK,gBACzDJ,6BAAC,IAAI;IAAC,IAAI,EAAE1B,YAAY,CAACiC;kBACvBP;IAAG,SAAS,EAAEJ,MAAM,CAACY,OAAQ;IAAC,KAAK,EAAElC,YAAY,CAAC8B;KAC/C9B,YAAY,CAAC8B,KAAK,CACjB,CACC,GAEP,IAAI,CAGJ;AAEV,CAAC;;;;"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import React, { useState, useEffect, Fragment } from 'react';
|
|
2
|
+
import Link from 'next/dist/client/link';
|
|
3
|
+
|
|
4
|
+
var styles = {"test":"_3wJe6","heroContainer":"_iZwr_","imageHolder":"_1bGxA","darkness":"_3GCKU","currentImage":"_2S0hq","fadeIn":"_2wBtF","nextImage":"_29vM6","caption":"_1OS_c"};
|
|
5
|
+
|
|
6
|
+
var HeroComponent = function HeroComponent(_ref) {
|
|
7
|
+
var slides = _ref.slides,
|
|
8
|
+
darkness = _ref.darkness;
|
|
9
|
+
var _useState = useState(0),
|
|
10
|
+
setCurrentSlideIndex = _useState[1];
|
|
11
|
+
var _useState2 = useState(slides[0]),
|
|
12
|
+
currentSlide = _useState2[0],
|
|
13
|
+
setCurrentSlide = _useState2[1];
|
|
14
|
+
var _useState3 = useState(1),
|
|
15
|
+
nextSlideIndex = _useState3[0],
|
|
16
|
+
setNextSlideIndex = _useState3[1];
|
|
17
|
+
var _useState4 = useState(),
|
|
18
|
+
nextSlide = _useState4[0],
|
|
19
|
+
setNextSlide = _useState4[1];
|
|
20
|
+
var changeSlides = function changeSlides() {
|
|
21
|
+
if (slides.length > 1 && nextSlide) {
|
|
22
|
+
setCurrentSlide(nextSlide);
|
|
23
|
+
setCurrentSlideIndex(nextSlideIndex);
|
|
24
|
+
var timer = setTimeout(function () {
|
|
25
|
+
if (nextSlideIndex == slides.length - 1) {
|
|
26
|
+
setNextSlide(slides[0]);
|
|
27
|
+
setNextSlideIndex(0);
|
|
28
|
+
} else {
|
|
29
|
+
setNextSlide(slides[nextSlideIndex + 1]);
|
|
30
|
+
setNextSlideIndex(nextSlideIndex + 1);
|
|
31
|
+
}
|
|
32
|
+
}, 1000);
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
useEffect(function () {
|
|
36
|
+
if (slides.length > 1) {
|
|
37
|
+
var randomStartIndex = Math.floor(Math.random() * slides.length);
|
|
38
|
+
setCurrentSlideIndex(randomStartIndex);
|
|
39
|
+
setCurrentSlide(slides[randomStartIndex]);
|
|
40
|
+
if (randomStartIndex == slides.length - 1) {
|
|
41
|
+
setNextSlideIndex(0);
|
|
42
|
+
setNextSlide(slides[0]);
|
|
43
|
+
} else {
|
|
44
|
+
setNextSlideIndex(randomStartIndex + 1);
|
|
45
|
+
setNextSlide(slides[randomStartIndex + 1]);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}, []);
|
|
49
|
+
useEffect(function () {
|
|
50
|
+
if (slides.length > 1) {
|
|
51
|
+
var fader = document.getElementById("frontImage");
|
|
52
|
+
var interval = setInterval(function () {
|
|
53
|
+
fader.classList.add(styles.fadeIn);
|
|
54
|
+
var timer = setTimeout(function () {
|
|
55
|
+
changeSlides();
|
|
56
|
+
fader.classList.remove(styles.fadeIn);
|
|
57
|
+
}, 1000);
|
|
58
|
+
}, 10000);
|
|
59
|
+
return function () {
|
|
60
|
+
return clearInterval(interval);
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
}, [changeSlides]);
|
|
64
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
65
|
+
className: styles.heroContainer
|
|
66
|
+
}, /*#__PURE__*/React.createElement("div", {
|
|
67
|
+
className: styles.imageHolder
|
|
68
|
+
}, darkness ? /*#__PURE__*/React.createElement("div", {
|
|
69
|
+
className: styles.darkness
|
|
70
|
+
}) : null, slides.length == 1 ? /*#__PURE__*/React.createElement("img", {
|
|
71
|
+
src: currentSlide.image,
|
|
72
|
+
alt: currentSlide.title ? currentSlide.title : "",
|
|
73
|
+
loading: "lazy"
|
|
74
|
+
}) : slides.length > 1 ? /*#__PURE__*/React.createElement(Fragment, null, currentSlide && /*#__PURE__*/React.createElement("img", {
|
|
75
|
+
src: currentSlide.image,
|
|
76
|
+
alt: currentSlide.title ? currentSlide.title : "",
|
|
77
|
+
loading: "lazy",
|
|
78
|
+
id: "frontImage",
|
|
79
|
+
className: styles.currentImage
|
|
80
|
+
}), nextSlide && /*#__PURE__*/React.createElement("img", {
|
|
81
|
+
src: nextSlide.image,
|
|
82
|
+
alt: nextSlide.title ? nextSlide.title : "",
|
|
83
|
+
loading: "lazy",
|
|
84
|
+
id: "backImage",
|
|
85
|
+
className: styles.nextImage
|
|
86
|
+
})) : null), slides.length > 0 && currentSlide.URL && currentSlide.title ? /*#__PURE__*/React.createElement(Link, {
|
|
87
|
+
href: currentSlide.URL
|
|
88
|
+
}, /*#__PURE__*/React.createElement("a", {
|
|
89
|
+
className: styles.caption,
|
|
90
|
+
title: currentSlide.title
|
|
91
|
+
}, currentSlide.title)) : null);
|
|
92
|
+
};
|
|
93
|
+
|
|
94
|
+
export { HeroComponent };
|
|
95
|
+
//# sourceMappingURL=index.modern.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.modern.js","sources":["../src/index.js"],"sourcesContent":["import React, { useState, useEffect, useRef, Fragment } from \"react\";\nimport styles from './styles.module.scss';\nimport Link from \"next/dist/client/link\";\n\nexport const HeroComponent = ({ children, slides, darkness }) => {\n\n const [currentSlideIndex, setCurrentSlideIndex] = useState(0);\n const [currentSlide, setCurrentSlide] = useState(slides[0]);\n const [nextSlideIndex, setNextSlideIndex] = useState(1);\n const [nextSlide, setNextSlide] = useState();\n\n const changeSlides = () => {\n if (slides.length > 1 && nextSlide) {\n\n setCurrentSlide(nextSlide);\n setCurrentSlideIndex(nextSlideIndex);\n\n const timer = setTimeout(() => {\n if (nextSlideIndex == (slides.length - 1)) {\n setNextSlide(slides[0]);\n setNextSlideIndex(0);\n } else {\n setNextSlide(slides[nextSlideIndex + 1]);\n setNextSlideIndex(nextSlideIndex + 1);\n }\n }, 1000);\n\n }\n }\n\n useEffect(() => { // Handles Random Start Index\n if (slides.length > 1) {\n\n let randomStartIndex = Math.floor(Math.random() * slides.length)\n\n setCurrentSlideIndex(randomStartIndex);\n setCurrentSlide(slides[randomStartIndex]);\n\n if (randomStartIndex == (slides.length - 1)) {\n setNextSlideIndex(0);\n setNextSlide(slides[0]);\n } else {\n setNextSlideIndex(randomStartIndex + 1);\n setNextSlide(slides[randomStartIndex + 1]);\n }\n\n }\n }, []);\n\n useEffect(() => { // Handles Slideshow Timer\n if (slides.length > 1) {\n\n let fader = document.getElementById(\"frontImage\");\n const interval = setInterval(() => {\n \n fader.classList.add(styles.fadeIn);\n\n const timer = setTimeout(() => {\n changeSlides();\n fader.classList.remove(styles.fadeIn);\n }, 1000);\n \n }, 10000);\n return () => clearInterval(interval);\n\n }\n }, [changeSlides]);\n\n return (\n <div className={styles.heroContainer}>\n <div className={styles.imageHolder}>\n\n {\n darkness ?\n <div className={styles.darkness}></div>\n :\n null\n }\n\n {\n slides.length == 1 ?\n <img src={currentSlide.image} alt={currentSlide.title ? currentSlide.title : \"\"} loading=\"lazy\" />\n : slides.length > 1 ?\n <>\n \n {\n currentSlide && <img src={currentSlide.image} alt={currentSlide.title ? currentSlide.title : \"\"} loading=\"lazy\" id=\"frontImage\" className={styles.currentImage} />\n }\n\n {\n nextSlide && <img src={nextSlide.image} alt={nextSlide.title ? nextSlide.title : \"\"} loading=\"lazy\" id=\"backImage\" className={styles.nextImage} />\n }\n\n </>\n :\n null\n }\n\n </div>\n\n {\n slides.length > 0 && currentSlide.URL && currentSlide.title ?\n <Link href={currentSlide.URL}>\n <a className={styles.caption} title={currentSlide.title}>\n {currentSlide.title}\n </a>\n </Link>\n :\n null\n }\n\n </div>\n )\n}\n\n// Using this tutorial to make components:\n// https://triveniglobalsoft.com/how-to-publish-a-custom-react-component-to-npm-using-create-react-library/"],"names":["HeroComponent","slides","darkness","useState","currentSlideIndex","setCurrentSlideIndex","currentSlide","setCurrentSlide","nextSlideIndex","setNextSlideIndex","nextSlide","setNextSlide","changeSlides","length","timer","setTimeout","useEffect","randomStartIndex","Math","floor","random","fader","document","getElementById","interval","setInterval","classList","add","styles","fadeIn","remove","clearInterval","heroContainer","imageHolder","image","title","currentImage","nextImage","URL","caption"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@tollbrothers/tollbrothers-ui",
|
|
3
|
+
"version": "1.7.0",
|
|
4
|
+
"description": "Import UI components into a React project",
|
|
5
|
+
"author": "",
|
|
6
|
+
"license": "ISC",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/tollbros/tollbrothers-ui.git"
|
|
10
|
+
},
|
|
11
|
+
"main": "dist/index.js",
|
|
12
|
+
"module": "dist/index.modern.js",
|
|
13
|
+
"source": "src/index.js",
|
|
14
|
+
"engines": {
|
|
15
|
+
"node": ">=10"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "microbundle-crl --no-compress --format modern,cjs",
|
|
19
|
+
"start": "microbundle-crl watch --no-compress --format modern,cjs",
|
|
20
|
+
"prepare": "run-s build",
|
|
21
|
+
"test": "run-s test:unit test:lint test:build",
|
|
22
|
+
"test:build": "run-s build",
|
|
23
|
+
"test:lint": "eslint .",
|
|
24
|
+
"test:unit": "cross-env CI=1 react-scripts test --env=jsdom",
|
|
25
|
+
"test:watch": "react-scripts test --env=jsdom",
|
|
26
|
+
"predeploy": "cd example && npm install && npm run build",
|
|
27
|
+
"deploy": "gh-pages -d example/build"
|
|
28
|
+
},
|
|
29
|
+
"bugs": {
|
|
30
|
+
"url": "https://github.com/tollbros/tollbrothers-ui/issues"
|
|
31
|
+
},
|
|
32
|
+
"homepage": "https://github.com/tollbros/tollbrothers-ui#readme",
|
|
33
|
+
"peerDependencies": {
|
|
34
|
+
"react": "^17.0.2",
|
|
35
|
+
"sass": "^1.56.1",
|
|
36
|
+
"next": "^12.0.7"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"babel-eslint": "^10.0.3",
|
|
40
|
+
"cross-env": "^7.0.2",
|
|
41
|
+
"eslint": "^6.8.0",
|
|
42
|
+
"eslint-config-prettier": "^6.7.0",
|
|
43
|
+
"eslint-config-standard": "^14.1.0",
|
|
44
|
+
"eslint-config-standard-react": "^9.2.0",
|
|
45
|
+
"eslint-plugin-import": "^2.18.2",
|
|
46
|
+
"eslint-plugin-node": "^11.0.0",
|
|
47
|
+
"eslint-plugin-prettier": "^3.1.1",
|
|
48
|
+
"eslint-plugin-promise": "^4.2.1",
|
|
49
|
+
"eslint-plugin-react": "^7.17.0",
|
|
50
|
+
"eslint-plugin-standard": "^4.0.1",
|
|
51
|
+
"gh-pages": "^2.2.0",
|
|
52
|
+
"microbundle-crl": "^0.13.10",
|
|
53
|
+
"npm-run-all": "^4.1.5",
|
|
54
|
+
"prettier": "^2.0.4",
|
|
55
|
+
"react": "^17.0.2",
|
|
56
|
+
"react-dom": "^17.0.2",
|
|
57
|
+
"react-scripts": "^3.4.1",
|
|
58
|
+
"sass": "^1.56.1",
|
|
59
|
+
"semantic-release": "^19.0.5"
|
|
60
|
+
},
|
|
61
|
+
"files": [
|
|
62
|
+
"dist"
|
|
63
|
+
]
|
|
64
|
+
}
|