diff --git a/src/App.js b/src/App.js
index 028be10..4a1f99f 100644
--- a/src/App.js
+++ b/src/App.js
@@ -11,6 +11,9 @@ import touchIcon from "./touch.png";
import model from "./model-stride16.json";
import moment from "moment";
import "moment/locale/zh-cn";
+import images from "./images/coupon/image-helper";
+import Product from "./components/product";
+import "./glow.scss";
moment.locale("zh-cn");
const videoWidth = 600;
@@ -33,8 +36,16 @@ const App = () => {
const [minutes, setMinutes] = useState(0);
const [seconds, setSeconds] = useState(0);
const shop = shops[shopIndex];
+ const {
+ categories,
+ categoryIconMap,
+ categoryProductsMap,
+ categoryIcon1Map,
+ } = shop;
const [itemData, setItem] = useState(null);
const [resetTimer, setResetTimer] = useState(null);
+ const [showMenu, setShowMenu] = useState(false);
+ const [currentTab, setCurrentTab] = useState(null);
useEffect(() => {
if (!posenetModel) {
@@ -75,7 +86,7 @@ const App = () => {
}
}, [video]);
- const initWall = () => {
+ const initWall = async () => {
const { items, imgWidth, imgHeight } = shop;
const wall = new Wall({
items,
@@ -93,7 +104,7 @@ const App = () => {
useEffect(() => {
if (seconds) {
- if (posenetModel && video && !item)
+ if (posenetModel && video && !item && !showMenu)
posenetModel
.estimatePoses(video, {
flipHorizontal: true,
@@ -119,7 +130,7 @@ const App = () => {
if (wall && sphere) {
wall.attachSphere(sphere);
}
- }, [wall]);
+ }, [wall, sphere]);
useEffect(() => {
if (!sphere) {
@@ -131,7 +142,10 @@ const App = () => {
width,
});
setSphere(sphere);
- initWall();
+ } else {
+ initWall().then((wall) => {
+ wall.attachSphere(sphere);
+ });
}
}, [sphere]);
@@ -153,11 +167,13 @@ const App = () => {
item = null;
setItem(item);
sphere.displacement = displacement;
+ if (showMenu) setShowMenu(false);
+ setCurrentTab(null);
};
const startTiming = () => {
if (resetTimer) clearInterval(resetTimer);
- setResetTimer(setInterval(unFocus, 60 * 10 * 1000));
+ setResetTimer(setInterval(unFocus, 60 * 1000));
};
// useEffect(() => {
// if (minutes > 0) {
@@ -196,12 +212,29 @@ const App = () => {
- {list.map(([key, el, i]) => (
+ {list.map(([key, el]) => (
+
+ {Number(key) % 60 === 0 && (
+
+ )}
+ {Number(key) % 60 === 0 &&
}
+
{
className={"mist" + (itemData ? "" : " inactive")}
style={sphere.style}
>
-
+ {!showMenu && (
+
+ )}
{itemData &&
}
- {!itemData &&

}
+ {!itemData && !showMenu && (
+

+ )}
+
+ )}
+ {(itemData || showMenu) && (
+
+
{
+ if (itemData) {
+ setShowMenu(true);
+ setItem(null);
+ } else {
+ unFocus();
+ }
+ }}
+ >
+
+ )}
+ {showMenu && (
+
+
+
+ {[
+ { icon: images["all"], title: "全部商品", name: null },
+ ...categories.map((cat) => ({
+ icon: categoryIconMap[cat],
+ title: cat + "品类",
+ name: cat,
+ })),
+ ].map((tab) => (
+
setCurrentTab(tab.name)}
+ >
+

+
{tab.title}
+
+ ))}
+
+
+
+ {categories
+ .filter((cat) =>
+ currentTab === null ? true : cat === currentTab
+ )
+ .map((name) => {
+ const products = categoryProductsMap[name];
+ const icon = categoryIcon1Map[name];
+ return (
+
+
{name}
+ {products.map((name) => (
+
+ ))}
+
+ );
+ })}
+
)}
diff --git a/src/App.scss b/src/App.scss
index 96ed7bc..6d7fb22 100644
--- a/src/App.scss
+++ b/src/App.scss
@@ -12,6 +12,124 @@
display: flex;
flex-direction: column;
overflow: hidden;
+ .menu {
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ z-index: 99;
+ .side {
+ flex: 0 0 290px;
+ padding: 450px 40px 0 35px;
+ .cats {
+ width: 216px;
+ background: rgba(0, 0, 0, 0.8);
+ border-radius: 10px;
+ padding: 12px;
+ .cat {
+ height: 70px;
+ line-height: 70px;
+ vertical-align: middle;
+ font-size: 18px;
+ font-family: SourceHanSansCN, SourceHanSansCN-Bold;
+ font-weight: 700;
+ color: #fff;
+ &.active {
+ background: #797ae0;
+ border-radius: 6px;
+ }
+ img {
+ width: 20px;
+ height: 20px;
+ margin: auto 37px auto 25px;
+ }
+ }
+ }
+ }
+ .main {
+ flex: 0 0 709px;
+ height: 100vh;
+ overflow-y: scroll;
+ padding-top: 400px;
+ text-align: left;
+ .cat {
+ .cat-name {
+ margin-bottom: 12px;
+ font-size: 36px;
+ font-family: FZLTCHK;
+ text-align: left;
+ color: #fff;
+ line-height: 41px;
+ text-shadow: #3e3a39 0 0 10px;
+ }
+ .prod {
+ margin-right: 16px;
+ margin-bottom: 24px;
+ }
+ }
+ .cat + .cat {
+ margin-top: 56px;
+ }
+
+ &::-webkit-scrollbar {
+ display: none;
+ }
+ }
+ &::before {
+ content: "";
+ position: absolute;
+ top: 0;
+ left: 0;
+ right: 0;
+ height: 700px;
+ z-index: -1;
+ background: linear-gradient(180deg, rgba(0, 0, 0, 0.7), rgba(0, 0, 0, 0));
+ }
+ &::after {
+ content: "";
+ position: absolute;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ height: 700px;
+ z-index: -1;
+ background: linear-gradient(180deg, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.7));
+ }
+ }
+ .sideBar {
+ @keyframes sideBarEnter {
+ from {
+ right: -60px;
+ }
+ to {
+ right: 0;
+ }
+ }
+ animation: 0.25s sideBarEnter ease-in;
+ position: absolute;
+ right: 0;
+ top: 0;
+ width: 80px;
+ height: 100vh;
+ z-index: 100;
+ background-size: cover;
+ background-position: center;
+ &.open {
+ background-image: url(./open.png);
+ }
+ &.close {
+ background-image: url(./close.png);
+ }
+ .click-area {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ left: 0;
+ margin: auto;
+ width: 60px;
+ height: 60px;
+ }
+ }
.header {
position: absolute;
top: 44px;
@@ -67,10 +185,8 @@
}
.block-wrapper {
position: absolute;
- // border: 1px solid rgb(224, 224, 224);
opacity: 1;
- &::before {
- content: "";
+ .wrapper {
position: absolute;
top: -5px;
left: -5px;
diff --git a/src/close.png b/src/close.png
new file mode 100644
index 0000000..6c02131
Binary files /dev/null and b/src/close.png differ
diff --git a/src/components/product.jsx b/src/components/product.jsx
new file mode 100644
index 0000000..9466b9e
--- /dev/null
+++ b/src/components/product.jsx
@@ -0,0 +1,14 @@
+import React from "react";
+import "./product.scss";
+const Product = ({ url, name, meta, icon }) => (
+
+

+
{name}
+
+
{meta}
+
+

+
+
+);
+export default Product;
diff --git a/src/components/product.scss b/src/components/product.scss
new file mode 100644
index 0000000..693d474
--- /dev/null
+++ b/src/components/product.scss
@@ -0,0 +1,34 @@
+.prod {
+ display: inline-block;
+ width: 200px;
+ height: 259px;
+ background: #ffffff;
+ border-radius: 6px;
+ padding: 10px;
+ .avatar {
+ width: 180px;
+ height: 180px;
+ }
+ .name {
+ font-size: 18px;
+ font-family: FZLTHK;
+ text-align: left;
+ color: #3e3a39;
+ line-height: 21px;
+ margin-top: 19px;
+ }
+ .sub {
+ font-size: 24px;
+ font-family: ChaletComprime, ChaletComprime-CologneSixty;
+ font-weight: CologneSixty;
+ text-align: left;
+ color: #7f7673;
+ line-height: 24px;
+ vertical-align: middle;
+ }
+ .icon {
+ margin: auto;
+ width: 20px;
+ height: 20px;
+ }
+}
diff --git a/src/components/shop.scss b/src/components/shop.scss
index 4d2851f..a389ecb 100644
--- a/src/components/shop.scss
+++ b/src/components/shop.scss
@@ -5,16 +5,6 @@
box-sizing: border-box;
padding: 50px;
padding-top: 203px;
- .row {
- display: flex;
- }
- .col {
- display: flex;
- flex-direction: column;
- }
- .fill {
- flex: 1;
- }
@keyframes fadeIn {
from {
opacity: 0;
diff --git a/src/data/Shops.js b/src/data/Shops.js
index ec5df52..6560986 100644
--- a/src/data/Shops.js
+++ b/src/data/Shops.js
@@ -12,6 +12,24 @@ const shops = [
母婴: coupon["c3"],
生鲜: coupon["c4"],
},
+ categoryIconMap: {
+ 零食: coupon["snack"],
+ 饮料: coupon["drink"],
+ 母婴: coupon["nurse"],
+ 生鲜: coupon["fresh"],
+ },
+ categoryIcon1Map: {
+ 零食: coupon["snack1"],
+ 饮料: coupon["drink1"],
+ 母婴: coupon["nurse1"],
+ 生鲜: coupon["fresh1"],
+ },
+ categoryProductsMap: {
+ 零食: ["零食1", "零食2", "零食3", "零食4", "零食5", "零食6"],
+ 饮料: ["饮料1", "饮料2", "饮料3", "饮料4", "饮料5", "饮料6"],
+ 母婴: ["母婴1", "母婴2", "母婴3", "母婴4", "母婴5", "母婴6"],
+ 生鲜: ["生鲜1", "生鲜2", "生鲜3", "生鲜4", "生鲜5", "生鲜6"],
+ },
items: [
{
id: 1,
diff --git a/src/glow.scss b/src/glow.scss
new file mode 100644
index 0000000..ae67bc8
--- /dev/null
+++ b/src/glow.scss
@@ -0,0 +1,146 @@
+.AchievementIconWrapper {
+}
+
+.AchievementIconGlowContainerRoot,
+.AchievementIconGlowContainer,
+.AchievementIconGlow {
+ position: absolute;
+ top: -10px;
+ right: -10px;
+ bottom: -10px;
+ left: -10px;
+}
+
+.AchievementIconGlowContainerRoot {
+ -webkit-mask-image: url(data:image/png;base64,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);
+ -webkit-mask-repeat: no-repeat;
+ -webkit-mask-size: 100% 100%;
+}
+
+.AchievementIconGlowContainer {
+ animation-name: rotate;
+ animation-duration: 18s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+ animation-direction: reverse;
+ -webkit-mask-image: url(data:image/png;base64,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);
+ -webkit-mask-repeat: no-repeat;
+ -webkit-mask-size: 100% 100%;
+}
+
+.AchievementIconGlow {
+ animation-name: rotate;
+ animation-duration: 6s;
+ animation-timing-function: linear;
+ animation-iteration-count: infinite;
+}
+
+.fakeIcon {
+ background: #fff;
+ height: 190px;
+ width: 100px;
+}
+
+/********************************************\
+|* Color Modifiers *|
+\********************************************/
+.AchievementIconWrapper.CommonAchievement .AchievementIconGlow {
+ background: radial-gradient(
+ rgba(193, 193, 193, 0.26) 0%,
+ rgba(193, 193, 193, 0) 6%,
+ rgba(193, 193, 193, 0.26) 10%,
+ #969696 26%,
+ rgba(193, 193, 193, 0.26) 35%,
+ #969696 40%,
+ rgba(193, 193, 193, 0.26) 60%,
+ #969696 82%,
+ rgba(193, 193, 193, 0.26) 100%
+ );
+}
+
+.AchievementIconWrapper.CommonAchievement .fakeIcon {
+ box-shadow: 0px 0px 2px 1px rgba(150, 150, 150, 0.6),
+ 0px 0px 16px 1px rgba(150, 150, 150, 0.4);
+}
+
+.AchievementIconWrapper.UncommonAchievement .AchievementIconGlow {
+ background: radial-gradient(
+ rgba(103, 239, 103, 0.26) 0%,
+ rgba(103, 239, 103, 0) 6%,
+ rgba(103, 239, 103, 0.26) 10%,
+ #45e045 26%,
+ rgba(103, 239, 103, 0.26) 35%,
+ #45e045 40%,
+ rgba(103, 239, 103, 0.26) 60%,
+ #4fff4f 82%,
+ rgba(103, 239, 103, 0.26) 100%
+ );
+}
+
+.AchievementIconWrapper.UncommonAchievement .fakeIcon {
+ box-shadow: 0px 0px 2px 1px rgba(69, 244, 69, 0.6),
+ 0px 0px 16px 1px rgba(69, 244, 69, 0.4);
+}
+
+.AchievementIconWrapper.RareAchievement .AchievementIconGlow {
+ background: radial-gradient(
+ rgba(102, 165, 255, 0.26) 0%,
+ rgba(102, 165, 255, 0) 6%,
+ rgba(102, 165, 255, 0.26) 10%,
+ #4b7af2 26%,
+ rgba(102, 165, 255, 0.26) 35%,
+ #4b7af2 40%,
+ rgba(102, 165, 255, 0.26) 60%,
+ #4b7af2 82%,
+ rgba(102, 165, 255, 0.26) 100%
+ );
+}
+
+.AchievementIconWrapper.RareAchievement .fakeIcon {
+ box-shadow: 0px 0px 2px 1px rgba(75, 122, 242, 0.6),
+ 0px 0px 16px 1px rgba(75, 122, 242, 0.4);
+}
+
+.AchievementIconWrapper.EpicAchievement .AchievementIconGlow {
+ background: radial-gradient(
+ rgba(204, 109, 255, 0.26) 0%,
+ rgba(204, 109, 255, 0) 6%,
+ rgba(204, 109, 255, 0.26) 10%,
+ #c14fff 26%,
+ rgba(204, 109, 255, 0.26) 35%,
+ #c14fff 40%,
+ rgba(204, 109, 255, 0.26) 60%,
+ #c14fff 82%,
+ rgba(204, 109, 255, 0.26) 100%
+ );
+}
+
+.AchievementIconWrapper.EpicAchievement .fakeIcon {
+ box-shadow: 0px 0px 2px 1px rgba(193, 79, 255, 0.6),
+ 0px 0px 16px 1px rgba(193, 79, 255, 0.4);
+}
+
+.AchievementIconWrapper.LegendaryAchievement .AchievementIconGlow {
+ background: radial-gradient(
+ rgba(255, 201, 109, 0.178) 0%,
+ rgba(255, 201, 109, 0) 6%,
+ rgba(255, 201, 109, 0.178) 10%,
+ #ffb84e 26%,
+ rgba(255, 201, 109, 0.178) 35%,
+ #ffb84e 40%,
+ rgba(255, 201, 109, 0.178) 60%,
+ #ffb84e 82%,
+ rgba(255, 201, 109, 0.178) 100%
+ );
+}
+
+.AchievementIconWrapper.LegendaryAchievement .fakeIcon {
+ box-shadow: 0px 0px 2px 1px rgba(255, 184, 78, 0.6),
+ 0px 0px 16px 1px rgba(255, 217, 78, 0.4);
+}
+
+@keyframes rotate {
+ to {
+ transform: rotate(1turn);
+ }
+}
diff --git a/src/images/coupon/all.png b/src/images/coupon/all.png
new file mode 100644
index 0000000..6649c1e
Binary files /dev/null and b/src/images/coupon/all.png differ
diff --git a/src/images/coupon/all1.png b/src/images/coupon/all1.png
new file mode 100644
index 0000000..bd27a9e
Binary files /dev/null and b/src/images/coupon/all1.png differ
diff --git a/src/images/coupon/drink.png b/src/images/coupon/drink.png
new file mode 100644
index 0000000..2be925b
Binary files /dev/null and b/src/images/coupon/drink.png differ
diff --git a/src/images/coupon/drink1.png b/src/images/coupon/drink1.png
new file mode 100644
index 0000000..3e3c63e
Binary files /dev/null and b/src/images/coupon/drink1.png differ
diff --git a/src/images/coupon/fresh.png b/src/images/coupon/fresh.png
new file mode 100644
index 0000000..1d26f94
Binary files /dev/null and b/src/images/coupon/fresh.png differ
diff --git a/src/images/coupon/fresh1.png b/src/images/coupon/fresh1.png
new file mode 100644
index 0000000..a5a1884
Binary files /dev/null and b/src/images/coupon/fresh1.png differ
diff --git a/src/images/coupon/nurse.png b/src/images/coupon/nurse.png
new file mode 100644
index 0000000..d7936f1
Binary files /dev/null and b/src/images/coupon/nurse.png differ
diff --git a/src/images/coupon/nurse1.png b/src/images/coupon/nurse1.png
new file mode 100644
index 0000000..da07786
Binary files /dev/null and b/src/images/coupon/nurse1.png differ
diff --git a/src/images/coupon/snack.png b/src/images/coupon/snack.png
new file mode 100644
index 0000000..9421953
Binary files /dev/null and b/src/images/coupon/snack.png differ
diff --git a/src/images/coupon/snack1.png b/src/images/coupon/snack1.png
new file mode 100644
index 0000000..bf44f0b
Binary files /dev/null and b/src/images/coupon/snack1.png differ
diff --git a/src/images/coupon/母婴1.jpg b/src/images/coupon/母婴1.jpg
new file mode 100644
index 0000000..612445f
Binary files /dev/null and b/src/images/coupon/母婴1.jpg differ
diff --git a/src/images/coupon/母婴2.jpg b/src/images/coupon/母婴2.jpg
new file mode 100644
index 0000000..feff457
Binary files /dev/null and b/src/images/coupon/母婴2.jpg differ
diff --git a/src/images/coupon/母婴3.jpg b/src/images/coupon/母婴3.jpg
new file mode 100644
index 0000000..cc2fa5d
Binary files /dev/null and b/src/images/coupon/母婴3.jpg differ
diff --git a/src/images/coupon/母婴4.jpg b/src/images/coupon/母婴4.jpg
new file mode 100644
index 0000000..7d53825
Binary files /dev/null and b/src/images/coupon/母婴4.jpg differ
diff --git a/src/images/coupon/母婴5.jpg b/src/images/coupon/母婴5.jpg
new file mode 100644
index 0000000..4be449a
Binary files /dev/null and b/src/images/coupon/母婴5.jpg differ
diff --git a/src/images/coupon/母婴6.jpg b/src/images/coupon/母婴6.jpg
new file mode 100644
index 0000000..31403ec
Binary files /dev/null and b/src/images/coupon/母婴6.jpg differ
diff --git a/src/images/coupon/生鲜1.jpg b/src/images/coupon/生鲜1.jpg
new file mode 100644
index 0000000..9fb8306
Binary files /dev/null and b/src/images/coupon/生鲜1.jpg differ
diff --git a/src/images/coupon/生鲜2.jpg b/src/images/coupon/生鲜2.jpg
new file mode 100644
index 0000000..68aa186
Binary files /dev/null and b/src/images/coupon/生鲜2.jpg differ
diff --git a/src/images/coupon/生鲜3.jpg b/src/images/coupon/生鲜3.jpg
new file mode 100644
index 0000000..e26ef00
Binary files /dev/null and b/src/images/coupon/生鲜3.jpg differ
diff --git a/src/images/coupon/生鲜4.jpg b/src/images/coupon/生鲜4.jpg
new file mode 100644
index 0000000..e380061
Binary files /dev/null and b/src/images/coupon/生鲜4.jpg differ
diff --git a/src/images/coupon/生鲜5.jpg b/src/images/coupon/生鲜5.jpg
new file mode 100644
index 0000000..0d6eab0
Binary files /dev/null and b/src/images/coupon/生鲜5.jpg differ
diff --git a/src/images/coupon/生鲜6.jpg b/src/images/coupon/生鲜6.jpg
new file mode 100644
index 0000000..19aaff9
Binary files /dev/null and b/src/images/coupon/生鲜6.jpg differ
diff --git a/src/images/coupon/零食1.jpg b/src/images/coupon/零食1.jpg
new file mode 100644
index 0000000..b66ccd9
Binary files /dev/null and b/src/images/coupon/零食1.jpg differ
diff --git a/src/images/coupon/零食2.jpg b/src/images/coupon/零食2.jpg
new file mode 100644
index 0000000..41ff89c
Binary files /dev/null and b/src/images/coupon/零食2.jpg differ
diff --git a/src/images/coupon/零食3.jpg b/src/images/coupon/零食3.jpg
new file mode 100644
index 0000000..43a5ab9
Binary files /dev/null and b/src/images/coupon/零食3.jpg differ
diff --git a/src/images/coupon/零食4.jpg b/src/images/coupon/零食4.jpg
new file mode 100644
index 0000000..bb9a7bc
Binary files /dev/null and b/src/images/coupon/零食4.jpg differ
diff --git a/src/images/coupon/零食5.jpg b/src/images/coupon/零食5.jpg
new file mode 100644
index 0000000..407e61d
Binary files /dev/null and b/src/images/coupon/零食5.jpg differ
diff --git a/src/images/coupon/零食6.jpg b/src/images/coupon/零食6.jpg
new file mode 100644
index 0000000..633f543
Binary files /dev/null and b/src/images/coupon/零食6.jpg differ
diff --git a/src/images/coupon/饮料1.jpg b/src/images/coupon/饮料1.jpg
new file mode 100644
index 0000000..fbf1acf
Binary files /dev/null and b/src/images/coupon/饮料1.jpg differ
diff --git a/src/images/coupon/饮料2.jpg b/src/images/coupon/饮料2.jpg
new file mode 100644
index 0000000..720ad37
Binary files /dev/null and b/src/images/coupon/饮料2.jpg differ
diff --git a/src/images/coupon/饮料3.jpg b/src/images/coupon/饮料3.jpg
new file mode 100644
index 0000000..03adde9
Binary files /dev/null and b/src/images/coupon/饮料3.jpg differ
diff --git a/src/images/coupon/饮料4.jpg b/src/images/coupon/饮料4.jpg
new file mode 100644
index 0000000..e7b77e4
Binary files /dev/null and b/src/images/coupon/饮料4.jpg differ
diff --git a/src/images/coupon/饮料5.jpg b/src/images/coupon/饮料5.jpg
new file mode 100644
index 0000000..1a46aed
Binary files /dev/null and b/src/images/coupon/饮料5.jpg differ
diff --git a/src/images/coupon/饮料6.jpg b/src/images/coupon/饮料6.jpg
new file mode 100644
index 0000000..18edea8
Binary files /dev/null and b/src/images/coupon/饮料6.jpg differ
diff --git a/src/index.css b/src/index.css
index 1ef25b8..14f16aa 100644
--- a/src/index.css
+++ b/src/index.css
@@ -15,3 +15,13 @@ code {
font-family: "ChaletComprime";
src: url("./Chalet\ Comprime\ Cologne\ Sixty.ttf") format("truetype");
}
+.row {
+ display: flex;
+}
+.col {
+ display: flex;
+ flex-direction: column;
+}
+.fill {
+ flex: 1;
+}
diff --git a/src/models/Wall.js b/src/models/Wall.js
index 5416540..f67c4a8 100644
--- a/src/models/Wall.js
+++ b/src/models/Wall.js
@@ -4,7 +4,7 @@ import Stats from "stats.js";
const stats = new Stats();
stats.showPanel(0);
-document.body.appendChild(stats.dom);
+// document.body.appendChild(stats.dom);
export const easeIn = BezierEasing(0.5, 0.16, 0.74, 0.38);
export const easeOut = BezierEasing(0, 0, 0.58, 1);
@@ -50,7 +50,6 @@ class El {
}
update() {}
}
-
class Row {
q = [];
est;
@@ -183,7 +182,8 @@ export default class Wall {
}
getNext() {
const { items } = this;
- const next = items[this.index];
+ const index = Math.floor(Math.random() * items.length);
+ const next = items[index];
this.index++;
if (this.index === items.length) this.index = 0;
return next;
diff --git a/src/open.png b/src/open.png
new file mode 100644
index 0000000..98990b7
Binary files /dev/null and b/src/open.png differ