diff --git a/package.json b/package.json index 97b3b64..501a757 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "scripts": { "compile": "globstar -- npx handlebars public/**/*.hbs -f public/precompiled.js", - "start": "node server/server.js", + "start": "npm run compile && node server/server.js", "lint": "eslint ./public/**/*.js", "lint:fix": "eslint ./public/**/*.js --fix" }, diff --git a/public/app.js b/public/app.js index ceabfec..e30e29b 100644 --- a/public/app.js +++ b/public/app.js @@ -1,12 +1,22 @@ -'use strict' +'use strict'; import { LoginComponent as Login } from './pages/login/login.js'; import { SignUpComponent as SignUp } from './pages/signup/signup.js'; import { MainPageComponent } from './pages/main/main.js'; + +import LookPin from './pages/addPin/lookPin.js'; +import EditPin from './pages/editPin/editPin.js'; + import { ProfilePageComponent as ProfilePage } from './pages/profile/profile.js'; + import { ROUTES } from './constants/routes.js'; -import { BACKEND_LOGIN_ROUTE, BACKEND_SIGNUP_ROUTE, BACKEND_FEED_ROUTE, BACKEND_LOGOUT_ROUTE } from './constants/api.js'; +import { + BACKEND_LOGIN_ROUTE, + BACKEND_SIGNUP_ROUTE, + BACKEND_FEED_ROUTE, + BACKEND_LOGOUT_ROUTE, +} from './constants/api.js'; import { getMethod } from './modules/network.js'; @@ -49,6 +59,18 @@ export default class App { history.pushState({}, '', ROUTES.signup); this.#renderSignup(); break; + case ROUTES.lookPin: + history.pushState({}, '', ROUTES.lookPin); + this.#renderLookPin(); + break; + case ROUTES.editPin: + history.pushState({}, '', ROUTES.editPin); + this.#renderEditPin(); + break; + case ROUTES.createPin: + history.pushState({}, '', ROUTES.createPin); + this.#renderCreatePin(); + break; case ROUTES.profile: history.pushState({}, '', ROUTES.profile); this.#renderProfile(); @@ -72,9 +94,46 @@ export default class App { /** * Renders login component and saves inputs values if they are typed in. */ + #renderLookPin() { + const curPin = { + PinID: 3, + AuthorName: 'Mary Jane', + AuthorFollowersNumber: 100, + MediaUrl: + 'https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', + BoardID: 1, + }; + const addPin = new LookPin(this.root, curPin); + addPin.renderTemplate(); + } + + #renderEditPin() { + const curPin = { + PinID: 3, + Title: 'Текущее название', + Description: 'Текущее описание', + PinBoard: 'Имя текущей доски', + MediaUrl: + 'https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', + BoardID: 1, + }; + const editPin = new EditPin(this.root, curPin, true); + editPin.renderTemplate(); + } + + #renderCreatePin() { + const editPin = new EditPin(this.root, null, false); + editPin.renderTemplate(); + } + #renderLogin() { const config = this.config.loginConfig; - const login = new Login(this.root, config.inputs, config.button, config.button_form_footer); + const login = new Login( + this.root, + config.inputs, + config.button, + config.button_form_footer + ); login.renderTemplate(); login.addSubmitBtnHandler(BACKEND_LOGIN_ROUTE); @@ -100,7 +159,12 @@ export default class App { */ #renderSignup() { const config = this.config.signupConfig; - const signUp = new SignUp(this.root, config.inputs, config.button, config.button_form_footer); + const signUp = new SignUp( + this.root, + config.inputs, + config.button, + config.button_form_footer + ); signUp.renderTemplate(); signUp.addSubmitBtnHandler(BACKEND_SIGNUP_ROUTE); @@ -130,435 +194,435 @@ export default class App { const pinSet = [ { PinID: 1, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 2, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 3, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 4, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 5, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 6, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 7, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 8, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 9, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 10, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 11, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 12, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 13, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 14, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 15, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 16, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 17, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 18, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 19, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 20, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 21, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 22, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 23, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 24, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 25, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 26, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 27, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 28, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 29, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 30, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 31, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 32, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 33, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 34, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 35, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 36, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 37, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 38, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 39, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 40, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 41, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 42, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 43, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1655635949384-f737c5133dfe?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 44, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1596348158371-d3a25ec4dcf4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NXx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 45, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1580618432485-1e08c5039909?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NHx8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 46, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1593376893114-1aed528d80cf?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8M3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 47, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy", + MediaUrl: + 'https://images.unsplash.com/photo-1680474569854-81216b34417a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8N3x8bmV1cmFsJTIwbmV0d29ya3N8ZW58MHwxfDB8fHwy', BoardID: 1, }, { PinID: 48, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1668395093559-338fa935d929?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 49, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1530388684420-55a62e95ed82?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MjR8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 50, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1587383378486-83d683d9d02d?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDJ8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 51, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1518276780006-c85b06fa3c11?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NDB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 52, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1578259819688-2bf7b20a351a?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTN8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', BoardID: 1, }, { PinID: 53, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1614029655965-2464911905a4?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NTV8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 54, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1603745871918-d756fb3c2c5e?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjB8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 55, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1700075489227-47f36fb2709b?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8NjF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, { PinID: 56, - AuthorName: "Mary Jane", - AuthorAvatar: './assets/imgs/avatar.jpg', + AuthorName: 'Mary Jane', AuthorFollowersNumber: 100, - MediaUrl: "https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D", + MediaUrl: + 'https://images.unsplash.com/photo-1613591876822-846e82526ee7?w=500&auto=format&fit=crop&q=60&ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODF8fG5ldXJhbCUyMG5ldHdvcmtzfGVufDB8MXwwfHx8Mg%3D%3D', }, ]; @@ -584,18 +648,20 @@ export default class App { this.clear(true); - const template = Handlebars.templates['unknown.hbs'] - const renderedTemplate = template() - this.root.insertAdjacentHTML('beforeend', renderedTemplate); + const template = Handlebars.templates['unknown.hbs']; + const renderedTemplate = template(); + this.root.innerHTML += renderedTemplate; - document.querySelector('.tomain__tap-button').addEventListener('click', (event) => { - event.preventDefault(); + document + .querySelector('.tomain__tap-button') + .addEventListener('click', (event) => { + event.preventDefault(); - this.root.innerHTML = ''; - this.renderPage(ROUTES.main); - }); + this.root.innerHTML = ''; + this.renderPage(ROUTES.main); + }); - return renderedTemplate + return renderedTemplate; } #renderProfile() { diff --git a/public/assets/icons/check-photo.svg b/public/assets/icons/check-photo.svg new file mode 100644 index 0000000..ced605b --- /dev/null +++ b/public/assets/icons/check-photo.svg @@ -0,0 +1,2 @@ +
\ No newline at end of file diff --git a/public/assets/icons/upload.svg b/public/assets/icons/upload.svg new file mode 100644 index 0000000..ced605b --- /dev/null +++ b/public/assets/icons/upload.svg @@ -0,0 +1,2 @@ +
\ No newline at end of file diff --git a/public/components/base.js b/public/components/base/base.js similarity index 100% rename from public/components/base.js rename to public/components/base/base.js diff --git a/public/components/boards-list/boards-list.hbs b/public/components/boards-list/boards-list.hbs index 96a2275..359d292 100644 --- a/public/components/boards-list/boards-list.hbs +++ b/public/components/boards-list/boards-list.hbs @@ -2,7 +2,7 @@ {{#if boards}} {{#each boards}}
- +
cover
diff --git a/public/components/boards-list/boards-list.js b/public/components/boards-list/boards-list.js index ffce336..ea1f6d5 100644 --- a/public/components/boards-list/boards-list.js +++ b/public/components/boards-list/boards-list.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from "../base.js"; +import { BaseComponent } from "../base/base.js"; /** * A component that is used to display all boards of currently authorized user. diff --git a/public/components/button/button.js b/public/components/button/button.js index b16b90d..96fa3fc 100644 --- a/public/components/button/button.js +++ b/public/components/button/button.js @@ -1,57 +1,57 @@ 'use strict'; -import { BaseComponent } from '../base.js'; +import { BaseComponent } from '../base/base.js'; export class ButtonComponent extends BaseComponent { - #clickHandler = () => { }; - - /** - * Creates an instance of ButtonComponent. - * @constructor - * @param {HTMLElement} parent - The parent element where the button will be rendered. - * @param {Object} [state] - The initial state of the button component. (optional) - * @param {Function} [changeHandler] - The function that will handle the button events. (optional) - */ - constructor(parent, state, clickHandler) { - super(parent, state); - this.#clickHandler = clickHandler || this.#clickHandler; - } - - /** - * Renders the button component. - * @returns {string} - The rendered HTML template of the button. - */ - renderTemplate() { - const template = Handlebars.templates['button.hbs']; - const renderedTemplate = template(this.State); - - return renderedTemplate; - } - - /** - * Handles the button click event. - * @param {Event} event - The button click event object. - */ - handleButtonClick(event) { - event.stopPropagation(); - if (typeof this.#clickHandler === 'function' && !this.State.disabled) { - this.#clickHandler(event); - } - } - - /** - * Sets the click event handler for the button. - * @param {Function} changeHandler - The function to handle the button click event. - */ - setClickHandler(clickHandler) { - this.#clickHandler = clickHandler; - } - - /** - * Gets the current click event handler for the button. - * @returns {Function} - The current click event handler. - */ - getClickHandler() { - return this.#clickHandler; + #clickHandler = () => {}; + + /** + * Creates an instance of ButtonComponent. + * @constructor + * @param {HTMLElement} parent - The parent element where the button will be rendered. + * @param {Object} [state] - The initial state of the button component. (optional) + * @param {Function} [changeHandler] - The function that will handle the button events. (optional) + */ + constructor(parent, state, clickHandler) { + super(parent, state); + this.#clickHandler = clickHandler || this.#clickHandler; + } + + /** + * Renders the button component. + * @returns {string} - The rendered HTML template of the button. + */ + renderTemplate() { + const template = Handlebars.templates['button.hbs']; + const renderedTemplate = template(this.State); + + return renderedTemplate; + } + + /** + * Handles the button click event. + * @param {Event} event - The button click event object. + */ + handleButtonClick(event) { + event.stopPropagation(); + if (typeof this.#clickHandler === 'function' && !this.State.disabled) { + this.#clickHandler(event); } + } + + /** + * Sets the click event handler for the button. + * @param {Function} changeHandler - The function to handle the button click event. + */ + setClickHandler(clickHandler) { + this.#clickHandler = clickHandler; + } + + /** + * Gets the current click event handler for the button. + * @returns {Function} - The current click event handler. + */ + getClickHandler() { + return this.#clickHandler; + } } diff --git a/public/components/button/icon-button.js b/public/components/button/icon-button.js index fa43d2b..4687fe6 100644 --- a/public/components/button/icon-button.js +++ b/public/components/button/icon-button.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from "../base.js" +import { BaseComponent } from "../base/base.js" /** * Component that is used to display button with icon inside of it. diff --git a/public/components/complex/grid/grid.js b/public/components/complex/grid/grid.js index bc8b907..5e5e1cb 100644 --- a/public/components/complex/grid/grid.js +++ b/public/components/complex/grid/grid.js @@ -1,6 +1,6 @@ 'use strict'; -import { BaseComponent } from '../../base.js'; +import { BaseComponent } from '../../base/base.js'; import { PinComponent } from '../pin/pin.js'; diff --git a/public/components/complex/header/header.js b/public/components/complex/header/header.js index fae3345..d9837be 100644 --- a/public/components/complex/header/header.js +++ b/public/components/complex/header/header.js @@ -1,6 +1,6 @@ 'use strict'; -import { BaseComponent } from '../../base.js'; +import { BaseComponent } from '../../base/base.js'; import { SearchInputComponent as SeachInput } from '../../search-input/search-input.js'; import { ButtonComponent as Button } from '../../button/button.js'; diff --git a/public/components/complex/pin/pin.js b/public/components/complex/pin/pin.js index 2d1d140..d4f7991 100644 --- a/public/components/complex/pin/pin.js +++ b/public/components/complex/pin/pin.js @@ -1,6 +1,6 @@ 'use strict'; -import { BaseComponent } from '../../base.js'; +import { BaseComponent } from '../../base/base.js'; /** * Represents an Image Card Component. diff --git a/public/components/complex/preview/preview.css b/public/components/complex/preview/preview.css index b06cb11..2f1b72a 100644 --- a/public/components/complex/preview/preview.css +++ b/public/components/complex/preview/preview.css @@ -50,6 +50,7 @@ cursor: pointer; } + .preview__author-info { display: flex; flex-direction: column; diff --git a/public/components/complex/preview/preview.js b/public/components/complex/preview/preview.js index bee2bc6..8d9b5f4 100644 --- a/public/components/complex/preview/preview.js +++ b/public/components/complex/preview/preview.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from '../../base.js'; +import { BaseComponent } from '../../base/base.js'; export class PreviewComponent extends BaseComponent { /** diff --git a/public/components/complex/savebox/savebox.css b/public/components/complex/savebox/savebox.css index f5e1061..20b95b2 100644 --- a/public/components/complex/savebox/savebox.css +++ b/public/components/complex/savebox/savebox.css @@ -42,6 +42,20 @@ transition: 0.5s; } +.savebox__choose-board-button { + margin-top: 5px; + width: 100%; + height: 15%; + outline: none; + border: none; + background-color: var(--project-primary-red); + font-size: 18px; + color: var(--pin-create-new-board-button-text-color); + border-radius: 10px; + cursor: pointer; + transition: 0.5s; +} + .savebox__create-board-button:hover { background-color: var(--pin-create-new-board-button-hovered-color); transition: 0.5s; diff --git a/public/components/complex/savebox/savebox.hbs b/public/components/complex/savebox/savebox.hbs index fe4ecf1..05e6fdf 100644 --- a/public/components/complex/savebox/savebox.hbs +++ b/public/components/complex/savebox/savebox.hbs @@ -4,6 +4,7 @@
{{{boardsList}}}
+
diff --git a/public/components/complex/savebox/savebox.js b/public/components/complex/savebox/savebox.js index 5e4a869..eb08c3d 100644 --- a/public/components/complex/savebox/savebox.js +++ b/public/components/complex/savebox/savebox.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from '../../base.js'; +import { BaseComponent } from '../../base/base.js'; import { SearchInputComponent as SearchInput } from '../../search-input/search-input.js'; diff --git a/public/components/details-menu/details-menu.js b/public/components/details-menu/details-menu.js index 313102c..3340edb 100644 --- a/public/components/details-menu/details-menu.js +++ b/public/components/details-menu/details-menu.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from "../base.js" +import { BaseComponent } from "../base/base.js" /** * A component that is used to display options when clicking on 'more' button. diff --git a/public/components/drop-down-menu/drop-down-menu.js b/public/components/drop-down-menu/drop-down-menu.js index 1e034c6..2e37c28 100644 --- a/public/components/drop-down-menu/drop-down-menu.js +++ b/public/components/drop-down-menu/drop-down-menu.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from "../base.js" +import { BaseComponent } from "../base/base.js" /** * Drop down menu component which is used on profile icon hover. diff --git a/public/components/input-text-area/input-text-area.css b/public/components/input-text-area/input-text-area.css new file mode 100644 index 0000000..b262e49 --- /dev/null +++ b/public/components/input-text-area/input-text-area.css @@ -0,0 +1,37 @@ +.input-text-area { + display: flex; + flex-direction: column; +} + +.textarea-container { + display: flex; + align-items: center; +} + +.icon { + display: flex; + align-items: center; + margin-right: 10px; /* Отступ между иконкой и полем */ +} + +.icon img { + width: 20px; /* Размер иконки */ + height: 20px; +} + +.input-area { + flex-grow: 1; /* Заполняет оставшееся пространство */ + min-height: 50px; + resize: none; + padding: 8px; + font-size: 16px; + border: 1px solid var(--input-border-color); + border-radius: 4px; + box-sizing: border-box; +} + + +.input-area::placeholder { + text-align: left; /* Центрирует текст placeholder */ + color: var(--input-label-color); /* Цвет текста для placeholder */ +} diff --git a/public/components/input-text-area/input-text-area.hbs b/public/components/input-text-area/input-text-area.hbs new file mode 100644 index 0000000..97357a9 --- /dev/null +++ b/public/components/input-text-area/input-text-area.hbs @@ -0,0 +1,19 @@ +
+ +
+ {{#if icon}} + + icon + + {{/if}} + +
+
diff --git a/public/components/input-text-area/input-text-area.js b/public/components/input-text-area/input-text-area.js new file mode 100644 index 0000000..b494034 --- /dev/null +++ b/public/components/input-text-area/input-text-area.js @@ -0,0 +1,94 @@ +'use strict'; + +import { BaseComponent } from '../base/base.js'; + +/** + * Represents a Text Area Component. + * @class + */ +export class TextAreaComponent extends BaseComponent { + /** + * The function that will handle the text area input event. + * @type {Function} + */ + #inputHandler = () => {}; + + /** + * Creates an instance of TextAreaComponent. + * @constructor + * @param {HTMLElement} parent - The parent element where the text area will be rendered. + * @param {Object} [state] - The initial state of the text area component. (optional) + * @param {Function} [inputHandler] - The function that will handle the text area input event. (optional) + */ + constructor(parent, state = {}, inputHandler = () => {}) { + super(parent, state); + this.#inputHandler = inputHandler; + } + + /** + * Renders the text area component. + * @returns {string} - The rendered HTML template of the text area. + */ + renderTemplate() { + const template = Handlebars.templates['input-text-area.hbs']; + const renderedTemplate = template(this.State); + + const parent = this.Parent; + if (parent) { + parent.innerHTML += renderedTemplate; + } + + this.attachEvents(); + + return renderedTemplate; + } + + /** + * Attaches events to the rendered text area component. + */ + attachEvents() { + const parent = this.Parent; + if (parent instanceof HTMLElement) { + const textAreaElement = parent.querySelector('.input-area'); + if (textAreaElement) { + textAreaElement.addEventListener('input', (event) => this.handleInput(event)); + + if (this.State.autoExpand) { + textAreaElement.style.overflowY = 'hidden'; + } + } + } + } + + /** + * Handles the input event for the text area. + * Adjusts the height if autoExpand is enabled. + * @param {Event} event - The text area input event object. + */ + handleInput(event) { + if (typeof this.#inputHandler === 'function') { + this.#inputHandler(event.target.value); + } + + if (this.State.autoExpand) { + event.target.style.height = 'auto'; + event.target.style.height = `${event.target.scrollHeight}px`; + } + } + + /** + * Sets the input event handler for the text area. + * @param {Function} inputHandler - The function to handle the text area input event. + */ + setInputHandler(inputHandler) { + this.#inputHandler = inputHandler; + } + + /** + * Gets the current input event handler for the text area. + * @returns {Function} - The current input event handler. + */ + getInputHandler() { + return this.#inputHandler; + } +} diff --git a/public/components/input/input.hbs b/public/components/input/input.hbs index 29d5994..8698a17 100644 --- a/public/components/input/input.hbs +++ b/public/components/input/input.hbs @@ -1,33 +1,32 @@
- {{#if inputLabelText}} - - {{/if}} + {{#if inputLabelText}} + + {{/if}} -
- {{#if inputImageLeft}} - - {{{inputImageLeft}}} - - - {{/if}} +
+ {{#if inputImageLeft}} + + {{{inputImageLeft}}} + + + {{/if}} - + - {{#if inputImageRight}} - - {{{inputImageRight}}} - - - {{/if}} -
+ {{#if inputImageRight}} + + {{{inputImageRight}}} + + + {{/if}} +
- {{#if inputHelperText}} - - - {{/if}} + {{#if inputHelperText}} + + + {{/if}}
diff --git a/public/components/input/input.js b/public/components/input/input.js index d4bbfe4..719c0cd 100644 --- a/public/components/input/input.js +++ b/public/components/input/input.js @@ -1,6 +1,6 @@ 'use strict'; -import { BaseComponent } from '../base.js'; +import { BaseComponent } from '../base/base.js'; /** * Represents an Input Component. @@ -20,7 +20,7 @@ export class InputComponent extends BaseComponent { * @param {Object} [state] - The initial state of the input component. (optional) * @param {Function} [changeHandler] - The function that will handle the input change event. (optional) */ - constructor(parent, state = {}, changeHandler = () => {}) { + constructor(parent, state = {}, changeHandler = () => { }) { super(parent, state); this.#changeHandler = changeHandler; } @@ -32,13 +32,11 @@ export class InputComponent extends BaseComponent { renderTemplate() { const template = Handlebars.templates['input.hbs']; const renderedTemplate = template(this.State); - const parent = this.Parent; if (parent) { parent.innerHTML += renderedTemplate; } - return renderedTemplate; } @@ -67,4 +65,11 @@ export class InputComponent extends BaseComponent { getChangeHandler() { return this.#changeHandler; } + + /** + * Sets a value to input field. + */ + setValue(value) { + this.State.inputValue = value; + } } diff --git a/public/components/search-input/search-input.js b/public/components/search-input/search-input.js index 229b38a..f7fa984 100644 --- a/public/components/search-input/search-input.js +++ b/public/components/search-input/search-input.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from '../base.js' +import { BaseComponent } from '../base/base.js' /** * A component that is used to display search bar. diff --git a/public/constants.css b/public/constants.css index 7bf8077..2cf423d 100644 --- a/public/constants.css +++ b/public/constants.css @@ -5,6 +5,7 @@ --project-primary-grey: grey; --input-label-color: #8f8f8f; + --input-border-color: #ccc; --input-caption-color: #505050; --input-caption-font-size: 12px; @@ -61,4 +62,6 @@ --pinset-delete-button-color: #C20000; --pinset-delete-button-hovered-color: #910000; + + --pinset-create-inputs-placeholder-text-color: #7A7A7A; } diff --git a/public/constants/config.js b/public/constants/config.js index 3248cac..1fbb947 100644 --- a/public/constants/config.js +++ b/public/constants/config.js @@ -106,7 +106,7 @@ export const signupConfig = { disabled: false, hover: false, active: false - } + }, }; export const headerConfig = { diff --git a/public/constants/routes.js b/public/constants/routes.js index 2f0f2d1..414aa26 100644 --- a/public/constants/routes.js +++ b/public/constants/routes.js @@ -7,4 +7,7 @@ export const ROUTES = { signup: '/signup', isAuthorized: '/is_authorized', logOut: '/logout', + lookPin: '/lookpin', + editPin: '/edit_pin', + createPin: '/create_pin', }; diff --git a/public/index.css b/public/index.css index d52de8a..30b6cfc 100644 --- a/public/index.css +++ b/public/index.css @@ -3,17 +3,21 @@ @import url(pages/main/main.css); @import url(pages/login/login.css); @import url(pages/signup/signup.css); +@import url(pages/addPin/lookPin.css); +@import url(pages/editPin/editPin.css); @import url(pages/unknown/unknown.css); @import url(pages/profile/profile.css); @import url(components/complex/header/header.css); @import url(components/complex/grid/grid.css); @import url(components/complex/pin/pin.css); +@import url(pages/main/addPin.css); @import url(components/complex/preview/preview.css); @import url(components/complex/savebox/savebox.css); @import url(components/search-input/search-input.css); @import url(components/boards-list/boards-list.css); @import url(components/details-menu/details-menu.css); @import url(components/drop-down-menu/drop-down-menu.css); +@import url(components/input-text-area/input-text-area.css); @import url(./constants.css); diff --git a/public/pages/addPin/lookPin.css b/public/pages/addPin/lookPin.css new file mode 100644 index 0000000..abebda4 --- /dev/null +++ b/public/pages/addPin/lookPin.css @@ -0,0 +1,123 @@ +html, body { + height: 100%; +} + + +.lookpin-container{ + margin-left: 15rem; + margin-right: 15rem; + width: calc(100% - 30rem); + height: 80%; + background-color: var(--project-primary-white);; + display: flex; + gap: 1rem; +} + +.lookpin__data{ + width: 50%; + padding: 10px; + display: flex; + flex-direction: column; + gap: 0.5rem; + background-color: var(--project-primary-white); + border-radius: 5%; + box-shadow: 0px 0px 10px var(--project-primary-grey); +} + +.lookpin__image{ + width: 45%; +} + +.lookpin__image img { + width: 100%; + height: 100%; + border-radius: 5%; +} + +.lookpin__actions { + display: flex; +} + +.lookpin__info{ + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + color: var(--pin-feed-author-followers-number-color); + font-size: 12px; + font-weight: 300; +} + +.lookpin__header { + font-size: 20px; + font-weight: 600; + max-height: 2.5em; + overflow: hidden; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + text-overflow: ellipsis; +} + +.lookpin__description{ + max-height: 5em; + font-size: 16px; + line-height: 1.2; + overflow-y: auto; + padding-right: 0.2rem; +} + + +.lookpin__actions-account { + display: flex; + gap: 10px; +} + +.lookpin__actions-extra { + display: flex; + justify-content: right; +} + +.lookpin__actions-extra img { + width: 20%; + filter: invert(1); +} + +.lookpin-button{ + background-color: var(--project-primary-white); + color: var(--project-primary-grey); + border: 1px solid var(--project-primary-grey); + padding: 10px; + border-radius: 20px; +} + +.lookpin__comments{ + height: 4em; + display: flex; + flex-direction: column; + gap: 5px; + overflow-y: auto; +} + +.comment { + display: flex; + gap: 10px; + font-size: 14px; +} + +.comment__author-name { + font-weight: 600; +} + +.comment__author-avatar { + width: 35px; + height: 35px; + border-radius: 50%; + object-fit: cover; + clip-path: circle(); + cursor: pointer; +} + +.comment__data { + flex:1; +} diff --git a/public/pages/addPin/lookPin.hbs b/public/pages/addPin/lookPin.hbs new file mode 100644 index 0000000..4141e41 --- /dev/null +++ b/public/pages/addPin/lookPin.hbs @@ -0,0 +1,73 @@ +
+
+ +
+
+
+ +
+ bookmark it + comment + share +
+
+
+
+ +
+

{{{preview.AuthorName}}}

+

{{{preview.AuthorFollowersNumber}}} Followers

+
+
+
+ 1 месяц назад +
+
+ Россия, Москва +
+
+
+ Готовы к будущему ? Красочный киберпанковский головной убор +
+
+ Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, + totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta + sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia + consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, + quia dolor sit amet consectetur adipisci[ng] velit, sed quia non numquam +
+
+ Ссылка на пин +
+
+ 11 комментариев +
+
+
+ +
+
+ Chris Isaak +
+
+ Поздравляем с выдающимися решениями в области ИИ. В корпоративном секторе они создают волны. +
+
+
+
+ +
+
+ Chris Isaak +
+
+ Поздравляем с выдающимися решениями в области ИИ. В корпоративном секторе они создают волны. +
+
+
+
+
+
diff --git a/public/pages/addPin/lookPin.js b/public/pages/addPin/lookPin.js new file mode 100644 index 0000000..3b8e905 --- /dev/null +++ b/public/pages/addPin/lookPin.js @@ -0,0 +1,32 @@ +import { BaseComponent } from '../../components/base/base.js'; +import { PinComponent } from '../../components/complex/pin/pin.js'; +import { ButtonComponent } from '../../components/button/button.js'; + +export default class LookPin extends BaseComponent { + #pin; + constructor(parent, pin) { + super(parent); + this.#pin = pin; + } + + renderTemplate() { + const template = Handlebars.templates['lookPin.hbs']; + const saveButton = new ButtonComponent(this.Parent, { + label: 'Сохранить', + type: 'primary', + disabled: false, + className: 'lookpin-button', + }); + const rewardButton = new ButtonComponent(this.Parent, { + label: 'Наградить', + type: 'primary', + disabled: false, + className: 'lookpin-button', + }); + const renderedTemplate = template({ + saveButton: saveButton.renderTemplate(), + rewardButton: rewardButton.renderTemplate(), + }); + this.Parent.innerHTML += renderedTemplate; + } +} diff --git a/public/pages/editPin/editPin.css b/public/pages/editPin/editPin.css new file mode 100644 index 0000000..a503f2e --- /dev/null +++ b/public/pages/editPin/editPin.css @@ -0,0 +1,111 @@ +html, body { + height: 100%; +} + + +.editpin-container{ + margin-left: 15rem; + margin-right: 15rem; + width: calc(100% - 30rem); + height: 80%; + background-color: var(--project-primary-white);; + display: flex; + gap: 1rem; +} + +.editpin__data{ + width: 50%; + padding: 10px; + display: flex; + flex-direction: column; + gap: 0.7rem; + background-color: var(--project-primary-white); + border-radius: 5%; + box-shadow: 0px 0px 10px rgba(0, 0, 0, 0.5); +} + +.editpin__image{ + width: 45%; +} + +.editpin__image-container{ + height: 100%; + width: 100%; + border-radius: 5%; + display: flex; + flex-direction: column; + justify-content: center; + background-color: var(--project-primary-grey); +} + +.noimage__icon{ + width: 100%; + height: 30%; + display: flex; + justify-content: center; +} + +.noimage__text{ + height: 20%; + color: var(--project-primary-white); + text-align: center; +} + +#editpin__image-input{ + display: none; +} + +.editpin__image img { + width: 100%; + height: 100%; + border-radius: 5%; +} + +.editpin__data > div { + width: 100%; + height: 10%; +} + +.editpin__data .input-container{ + width: 100%; + height: 100%; +} + +.editpin__data .input-icons-wrapper{ + width: 100%; + height: 100%; + border-radius: 10px; + overflow: hidden; +} + +.input-icons-wrapper input { + width: 100%; + height: 100%; + padding-left: 10px; + padding-right: 10px; +} + +.editpin__pinboard { + background-color: var(--header-nav-background-color); + border: 2px solid var(--project-primary-grey); + border-radius: 10px; + display: flex; +} + +.editpin__pinboard-text { + width: 100%; + height: 100%; + display: flex; + justify-content: center; + align-items: center; +} + +.editpin__submit { + display: flex; + justify-content: center; +} + +.editpin__submit button { + height: 100%; + width: 100%; +} diff --git a/public/pages/editPin/editPin.hbs b/public/pages/editPin/editPin.hbs new file mode 100644 index 0000000..43453a1 --- /dev/null +++ b/public/pages/editPin/editPin.hbs @@ -0,0 +1,42 @@ + +
+
+
+ {{#if Image}} + Image + {{else}} +
+ checkphoto +
+
+ выберите файл или перетащите его сюда +
+ {{/if}} +
+ +
+
+
+ {{{TitleInput}}} +
+
+ {{{DescriptionInput}}} +
+ {{!TODO after making boards}} + {{!--
+
Выберите доску
+ {{{BoardsList}}} +
--}} +
+ {{{PublishButton}}} +
+
+
+ + + + + + + + diff --git a/public/pages/editPin/editPin.js b/public/pages/editPin/editPin.js new file mode 100644 index 0000000..6bd9acb --- /dev/null +++ b/public/pages/editPin/editPin.js @@ -0,0 +1,135 @@ +import { BaseComponent } from '../../components/base/base.js'; +import { ButtonComponent as Button } from '../../components/button/button.js'; +import { InputComponent } from '../../components/input/input.js'; +import { SaveBoxComponent } from '../../components/complex/savebox/savebox.js'; + +/** + * Component that is used to create and edit pins. + */ +export default class EditPinComponent extends BaseComponent { + #pin; + #editMode; + + /** + * Creates a EditPinComponent. + * @param {HTMLElement} parent - HTML element of the parent container. + * @param {Object} pin - object of PinComponent class. + */ + constructor(parent, pin, editMode) { + super(parent); + this.#pin = pin; + this.#editMode = editMode; + this.handleImageClick = this.handleImageClick.bind(this); + this.handleImageUpload = this.handleImageUpload.bind(this); + this.uploadPinData = this.uploadPinData.bind(this); + } + + renderTemplate() { + this.Parent.innerHTML = ''; + const template = Handlebars.templates['editPin.hbs']; + + const titleInput = new InputComponent(this.Parent, { + inputPlaceholder: 'Добавьте название *', + typeOfInput: 'text', + }); + const descriptionInput = new InputComponent(this.Parent, { + inputPlaceholder: 'Добавьте описание', + typeOfInput: 'text', + }); + + if (this.#editMode) { + titleInput.setValue(this.#pin.Title); + descriptionInput.setValue(this.#pin.Description); + } + + const publishButton = new Button(this.Parent, { + label: 'Опубликовать', + type: 'submit', + disabled: false, + hover: false, + active: false, + }); + + let renderedTemplate; + renderedTemplate = template({ + TitleInput: titleInput.renderTemplate(), + DescriptionInput: descriptionInput.renderTemplate(), + PublishButton: publishButton.renderTemplate(), + InEditMode: this.#editMode, + PinBoard: this.#pin.PinBoard, + Image: this.#pin.mediaUrl, + MediaUrl: this.#pin.mediaUrl, + BoardsList: boardsList.renderTemplate(), + }); + + this.Parent.insertAdjacentHTML('beforeend', renderedTemplate); + const imageContainer = this.Parent.querySelector( + '.editpin__image-container' + ); + const imageInput = this.Parent.querySelector('#editpin__image-input'); + const submitBtn = this.Parent.querySelector('.editpin__submit button'); + imageContainer.addEventListener('click', this.handleImageClick); + imageInput.addEventListener('change', this.handleImageUpload); + submitBtn.addEventListener('click', this.uploadPinData); + } + + handleImageClick(event) { + event.preventDefault(); + const imageInput = this.Parent.querySelector('#editpin__image-input'); + imageInput.click(); + } + + async handleImageUpload(event) { + event.preventDefault(); + let imageInput = event.target; + + if (imageInput.files && imageInput.files.length > 0) { + const file = imageInput.files[0]; + const formData = new FormData(); + formData.append('file', file); + + const response = await fetch('http://localhost:8080/image/upload', { + method: 'POST', + body: formData, + }); + + const data = await response.json(); + + console.log(data['media-urls'][0]); + + this.#pin.mediaUrl = data['media-urls'][0].replace( + 'http://minio:9000', + 'http://localhost:9000' + ); + + console.log(this.#pin.mediaUrl); + + this.renderTemplate(); + } + } + + async uploadPinData(event) { + event.preventDefault(); + const TitleValue = this.Parent.querySelector('.editpin__title input').value; + const DescriptionValue = this.Parent.querySelector( + '.editpin__description input' + ).value; + const ImageUrl = this.#pin.mediaUrl; + const BoardID = 1; + + const requestBody = JSON.stringify({ + author_id: 1, + board_id: BoardID, + description: DescriptionValue, + title: TitleValue, + media_url: ImageUrl, + }); + console.log(requestBody); + + await fetch('http://localhost:8080/create-pin', { + method: 'POST', + body: requestBody, + }); + console.log('fetch done successfully'); + } +} diff --git a/public/pages/login/login.js b/public/pages/login/login.js index cded03d..9796c7c 100644 --- a/public/pages/login/login.js +++ b/public/pages/login/login.js @@ -1,6 +1,6 @@ 'use strict'; -import { BaseComponent } from '../../components/base.js'; +import { BaseComponent } from '../../components/base/base.js'; import { InputComponent as Input } from '../../components/input/input.js'; import { ButtonComponent as Button } from '../../components/button/button.js'; diff --git a/public/pages/main/main.js b/public/pages/main/main.js index e1e8a70..9dbfc97 100644 --- a/public/pages/main/main.js +++ b/public/pages/main/main.js @@ -9,7 +9,7 @@ import { BACKEND_LOGOUT_ROUTE } from '../../constants/api.js' import { postMethod } from '../../modules/network.js' import { app } from '../../index.js' -import { BaseComponent } from '../../components/base.js' +import { BaseComponent } from '../../components/base/base.js' import { DropDownMenuComponent as DropDownMenu } from '../../components/drop-down-menu/drop-down-menu.js' diff --git a/public/pages/profile/board-grid.js b/public/pages/profile/board-grid.js index 391a029..ca9a1ec 100644 --- a/public/pages/profile/board-grid.js +++ b/public/pages/profile/board-grid.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from "../../components/base.js" +import { BaseComponent } from "../../components/base/base.js" /** * Component that is used to display boards grid on user profile page. diff --git a/public/pages/profile/profile.js b/public/pages/profile/profile.js index 75abdba..6bfd141 100644 --- a/public/pages/profile/profile.js +++ b/public/pages/profile/profile.js @@ -1,6 +1,6 @@ 'use strict' -import { BaseComponent } from "../../components/base.js"; +import { BaseComponent } from "../../components/base/base.js"; import { ButtonComponent as Button } from "../../components/button/button.js"; import { HeaderComponent as Header } from "../../components/complex/header/header.js"; diff --git a/public/pages/signup/signup.js b/public/pages/signup/signup.js index a9e68bc..4483819 100644 --- a/public/pages/signup/signup.js +++ b/public/pages/signup/signup.js @@ -1,6 +1,6 @@ 'use strict'; -import { BaseComponent } from '../../components/base.js'; +import { BaseComponent } from '../../components/base/base.js'; import { InputComponent as Input } from '../../components/input/input.js'; import { ButtonComponent as Button } from '../../components/button/button.js'; diff --git a/public/precompiled.js b/public/precompiled.js index 3ebb21e..938b44a 100644 --- a/public/precompiled.js +++ b/public/precompiled.js @@ -19,23 +19,23 @@ templates['boards-list.hbs'] = template({"1":function(container,depth0,helpers,p return "
\r\n \n \r\n
\r\n \n
\n \"cover\"\r\n
\r\n
\n \r\n" + + "\n" + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"Private") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":16},"end":{"line":12,"column":23}}})) != null ? stack1 : "") - + "
\r\n"; + + " \n"; },"3":function(container,depth0,helpers,partials,data) { - return " \"private\"\r\n"; + return " \"private\"\n"; },"5":function(container,depth0,helpers,partials,data) { - return "

Здесь будут отображены доски

\r\n"; + return "

Здесь будут отображены доски

\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -44,9 +44,9 @@ templates['boards-list.hbs'] = template({"1":function(container,depth0,helpers,p return undefined }; - return "
\r\n" + return "
\n" + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"boards") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(5, data, 0),"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":17,"column":11}}})) != null ? stack1 : "") - + "
\r\n"; + + "
\n"; },"useData":true}); templates['button.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { return "disabled"; @@ -92,13 +92,13 @@ templates['button.hbs'] = template({"1":function(container,depth0,helpers,partia + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"active") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":77},"end":{"line":1,"column":104}}})) != null ? stack1 : "") + "\" " + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"disabled") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":106},"end":{"line":2,"column":26}}})) != null ? stack1 : "") - + ">\r\n " + + ">\n " + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconLeft") : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":1},"end":{"line":3,"column":65}}})) != null ? stack1 : "") - + "\r\n " + + "\n " + alias4(((helper = (helper = lookupProperty(helpers,"label") || (depth0 != null ? lookupProperty(depth0,"label") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"label","hash":{},"data":data,"loc":{"start":{"line":4,"column":1},"end":{"line":4,"column":10}}}) : helper))) - + "\r\n " + + "\n " + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"iconRight") : depth0),{"name":"if","hash":{},"fn":container.program(7, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":5,"column":1},"end":{"line":5,"column":68}}})) != null ? stack1 : "") - + "\r\n\r\n"; + + "\n\n"; },"useData":true}); templates['icon-button.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -110,18 +110,18 @@ templates['icon-button.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":functi return "
\r\n \n \r\n
\r\n"; + + "\">\n\n"; },"useData":true}); templates['grid.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = container.lambda(depth0, depth0)) != null ? stack1 : "") - + "\r\n"; + + "\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -130,9 +130,9 @@ templates['grid.hbs'] = template({"1":function(container,depth0,helpers,partials return undefined }; - return "
\r\n" + return "
\n" + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"pins") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":4,"column":13}}})) != null ? stack1 : "") - + "
\r\n"; + + "
\n"; },"useData":true}); templates['header.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -142,11 +142,11 @@ templates['header.hbs'] = template({"1":function(container,depth0,helpers,partia return undefined }; - return "
\r\n " + return "
\n " + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"header") : depth0)) != null ? lookupProperty(stack1,"createButton") : stack1), depth0)) != null ? stack1 : "") - + "\r\n
\r\n
\r\n \n
\n \r\n
\r\n"; + + "\">\n
\n"; },"3":function(container,depth0,helpers,partials,data) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -155,9 +155,9 @@ templates['header.hbs'] = template({"1":function(container,depth0,helpers,partia return undefined }; - return "
\r\n " + return " \r\n"; + + "\n
\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -166,13 +166,13 @@ templates['header.hbs'] = template({"1":function(container,depth0,helpers,partia return undefined }; - return "
\r\n
\r\n \n
\n \"Pinset\"\r\n
\r\n\r\n
\r\n " + + "\" alt=\"Pinset\" class=\"header__icon\" />\n
\n\n
\n " + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"header") : depth0)) != null ? lookupProperty(stack1,"searchInput") : stack1), depth0)) != null ? stack1 : "") - + "\r\n
\r\n\r\n" + + "\n
\n\n" + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,"header") : depth0)) != null ? lookupProperty(stack1,"isAuthorized") : stack1),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":10,"column":1},"end":{"line":21,"column":8}}})) != null ? stack1 : "") - + "
\r\n"; + + "
\n"; },"useData":true}); templates['pin.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -184,13 +184,13 @@ templates['pin.hbs'] = template({"1":function(container,depth0,helpers,partials, return "
\r\n \n \r\n
\r\n

" + + "\">\n

\n

" + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"pin") : depth0)) != null ? lookupProperty(stack1,"AuthorName") : stack1), depth0)) != null ? stack1 : "") - + "

\r\n

" + + "

\n

" + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"pin") : depth0)) != null ? lookupProperty(stack1,"AuthorFollowersNumber") : stack1), depth0)) != null ? stack1 : "") - + " Followers

\r\n
\r\n
\r\n"; + + " Followers

\n
\n \n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -201,20 +201,20 @@ templates['pin.hbs'] = template({"1":function(container,depth0,helpers,partials, return "
\r\n
\r\n \n
\n \r\n
\n
\r\n \"Preview\"\r\n
\r\n
\r\n" + + "\">\n \"Preview\"\n
\n
\n" + ((stack1 = lookupProperty(helpers,"unless").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,"pin") : depth0)) != null ? lookupProperty(stack1,"imageOnly") : stack1),{"name":"unless","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":1},"end":{"line":16,"column":12}}})) != null ? stack1 : "") - + "
\r\n"; + + "\n"; },"useData":true}); templates['preview.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { - return " \"bookmark\r\n"; + return " \"bookmark\n"; },"3":function(container,depth0,helpers,partials,data) { - return " \"bookmark\r\n"; + return " \"bookmark\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, alias2=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -223,21 +223,21 @@ templates['preview.hbs'] = template({"1":function(container,depth0,helpers,parti return undefined }; - return "
\r\n
\r\n
\r\n \n
\n
\n \r\n
\r\n

" + + "\">\n

\n

" + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"AuthorName") : stack1), depth0)) != null ? stack1 : "") - + "

\r\n

" + + "

\n

" + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"AuthorFollowersNumber") : stack1), depth0)) != null ? stack1 : "") - + " Followers

\r\n
\r\n
\r\n\r\n
\r\n
\r\n

Сохранить

\r\n \"expand\"\r\n
\r\n
\r\n
\r\n\r\n \n
\n
\n\n
\n
\n

Сохранить

\n \"expand\"\n
\n
\n
\n\n \"Preview\"\r\n\r\n
\r\n
\r\n \"more\"\r\n
\r\n" + + "\" alt=\"Preview\">\n\n
\n
\n \"more\"\n
\n" + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"Bookmarked") : stack1),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":25,"column":8},"end":{"line":29,"column":15}}})) != null ? stack1 : "") - + " \"comment\"\r\n \"share\"\r\n
\r\n\r\n
\r\n
\r\n

" + + " \"comment\"\n \"share\"\n

\n\n
\n
\n

" + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"ViewsNumber") : stack1), depth0)) != null ? stack1 : "") - + "

\r\n \"bookmark\"\r\n
\r\n
\r\n

" + + "

\n \"bookmark\"\n
\n
\n

" + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"BookmarksNumber") : stack1), depth0)) != null ? stack1 : "") - + "

\r\n \"bookmark\"\r\n
\r\n
\r\n
\r\n"; + + "

\n \"bookmark\"\n
\n
\n\n"; },"useData":true}); templates['savebox.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -247,11 +247,11 @@ templates['savebox.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(c return undefined }; - return "
\r\n
\r\n " + return "
\n
\n " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"searchInput") || (depth0 != null ? lookupProperty(depth0,"searchInput") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"searchInput","hash":{},"data":data,"loc":{"start":{"line":3,"column":8},"end":{"line":3,"column":25}}}) : helper))) != null ? stack1 : "") - + "\r\n
\r\n " + + "\n
\n " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"boardsList") || (depth0 != null ? lookupProperty(depth0,"boardsList") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"boardsList","hash":{},"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":5,"column":28}}}) : helper))) != null ? stack1 : "") - + "\r\n
\r\n \r\n
\r\n
\r\n"; + + "\n
\n \n \n
\n
\n"; },"useData":true}); templates['details-menu.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -267,7 +267,7 @@ templates['details-menu.hbs'] = template({"1":function(container,depth0,helpers, + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"Download") : depth0),{"name":"if","hash":{},"fn":container.program(2, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":56},"end":{"line":4,"column":135}}})) != null ? stack1 : "") + ">" + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,"Text") : depth0), depth0)) != null ? stack1 : "") - + "\r\n"; + + "\n"; },"2":function(container,depth0,helpers,partials,data) { var lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -287,12 +287,108 @@ templates['details-menu.hbs'] = template({"1":function(container,depth0,helpers, return undefined }; - return "
\r\n
\r\n" + return "
\n
\n" + ((stack1 = lookupProperty(helpers,"each").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"options") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":8},"end":{"line":5,"column":17}}})) != null ? stack1 : "") - + "
\r\n
\r\n"; + + "
\n
\n"; },"useData":true}); templates['drop-down-menu.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - return "
\r\n
\r\n \r\n \"Profile\"\r\n

Профиль

\r\n
\r\n \r\n \"Settings\"\r\n

Настройки

\r\n
\r\n \r\n \"Logout\"\r\n

Выйти

\r\n
\r\n
\r\n
\r\n"; + return "
\n
\n \n \"Profile\"\n

Профиль

\n
\n \n \"Settings\"\n

Настройки

\n
\n \n \"Logout\"\n

Выйти

\n
\n
\n
\n"; +},"useData":true}); +templates['input-text-area.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { + var helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " \n \"icon\"\n \n"; +},"3":function(container,depth0,helpers,partials,data) { + var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " placeholder=\"" + + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"placeHolder") || (depth0 != null ? lookupProperty(depth0,"placeHolder") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"placeHolder","hash":{},"data":data,"loc":{"start":{"line":11,"column":45},"end":{"line":11,"column":60}}}) : helper))) + + "\" "; +},"5":function(container,depth0,helpers,partials,data) { + var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " maxlength=\"" + + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"maxLength") || (depth0 != null ? lookupProperty(depth0,"maxLength") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"maxLength","hash":{},"data":data,"loc":{"start":{"line":12,"column":41},"end":{"line":12,"column":54}}}) : helper))) + + "\" "; +},"7":function(container,depth0,helpers,partials,data) { + var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " style=\"font-size: " + + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"fontSize") || (depth0 != null ? lookupProperty(depth0,"fontSize") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"fontSize","hash":{},"data":data,"loc":{"start":{"line":13,"column":47},"end":{"line":13,"column":59}}}) : helper))) + + ";\" "; +},"9":function(container,depth0,helpers,partials,data) { + var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " style=\"min-height: " + + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"minHeight") || (depth0 != null ? lookupProperty(depth0,"minHeight") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"minHeight","hash":{},"data":data,"loc":{"start":{"line":14,"column":49},"end":{"line":14,"column":62}}}) : helper))) + + ";\" "; +},"11":function(container,depth0,helpers,partials,data) { + var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " style=\"max-height: " + + container.escapeExpression(((helper = (helper = lookupProperty(helpers,"maxHeight") || (depth0 != null ? lookupProperty(depth0,"maxHeight") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"maxHeight","hash":{},"data":data,"loc":{"start":{"line":15,"column":49},"end":{"line":15,"column":62}}}) : helper))) + + ";\" "; +},"13":function(container,depth0,helpers,partials,data) { + return " oninput=\"this.style.height = 'auto'; this.style.height = this.scrollHeight + 'px'\" "; +},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return "
\n \n
\n" + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"icon") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":4,"column":8},"end":{"line":8,"column":15}}})) != null ? stack1 : "") + + " \n
\n
\n"; },"useData":true}); templates['input.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { return "input-error"; @@ -304,9 +400,9 @@ templates['input.hbs'] = template({"1":function(container,depth0,helpers,partial return undefined }; - return " \r\n"; + return " \n"; },"5":function(container,depth0,helpers,partials,data) { var stack1, helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -315,9 +411,9 @@ templates['input.hbs'] = template({"1":function(container,depth0,helpers,partial return undefined }; - return " \r\n " - + ((stack1 = ((helper = (helper = lookupProperty(helpers,"inputImageLeft") || (depth0 != null ? lookupProperty(depth0,"inputImageLeft") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"inputImageLeft","hash":{},"data":data,"loc":{"start":{"line":10,"column":6},"end":{"line":10,"column":26}}}) : helper))) != null ? stack1 : "") - + "\r\n \r\n \r\n"; + return " \n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"inputImageLeft") || (depth0 != null ? lookupProperty(depth0,"inputImageLeft") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"inputImageLeft","hash":{},"data":data,"loc":{"start":{"line":10,"column":3},"end":{"line":10,"column":23}}}) : helper))) != null ? stack1 : "") + + "\n \n \n"; },"7":function(container,depth0,helpers,partials,data) { return " input__text-padding-left "; },"9":function(container,depth0,helpers,partials,data) { @@ -332,11 +428,11 @@ templates['input.hbs'] = template({"1":function(container,depth0,helpers,partial return undefined }; - return " \r\n " - + ((stack1 = ((helper = (helper = lookupProperty(helpers,"inputImageRight") || (depth0 != null ? lookupProperty(depth0,"inputImageRight") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"inputImageRight","hash":{},"data":data,"loc":{"start":{"line":22,"column":6},"end":{"line":22,"column":27}}}) : helper))) != null ? stack1 : "") - + "\r\n \r\n \r\n"; + return " \n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"inputImageRight") || (depth0 != null ? lookupProperty(depth0,"inputImageRight") : depth0)) != null ? helper : container.hooks.helperMissing),(typeof helper === "function" ? helper.call(depth0 != null ? depth0 : (container.nullContext || {}),{"name":"inputImageRight","hash":{},"data":data,"loc":{"start":{"line":21,"column":3},"end":{"line":21,"column":24}}}) : helper))) != null ? stack1 : "") + + "\n \n \n"; },"15":function(container,depth0,helpers,partials,data) { - return "
\r\n
\r\n"; + return "
\n
\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -349,27 +445,27 @@ templates['input.hbs'] = template({"1":function(container,depth0,helpers,partial + alias4(((helper = (helper = lookupProperty(helpers,"inputSize") || (depth0 != null ? lookupProperty(depth0,"inputSize") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"inputSize","hash":{},"data":data,"loc":{"start":{"line":1,"column":28},"end":{"line":1,"column":41}}}) : helper))) + " " + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"Error") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":1,"column":42},"end":{"line":1,"column":73}}})) != null ? stack1 : "") - + "\">\r\n\r\n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputLabelText") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":2},"end":{"line":5,"column":9}}})) != null ? stack1 : "") - + "\r\n
\r\n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputImageLeft") : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":4},"end":{"line":13,"column":11}}})) != null ? stack1 : "") - + "\r\n \n\n" + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputLabelText") : depth0),{"name":"if","hash":{},"fn":container.program(3, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":3,"column":1},"end":{"line":5,"column":8}}})) != null ? stack1 : "") + + "\n
\n" + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputImageLeft") : depth0),{"name":"if","hash":{},"fn":container.program(5, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":8,"column":2},"end":{"line":13,"column":9}}})) != null ? stack1 : "") + + "\n \r\n\r\n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputImageRight") : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":20,"column":4},"end":{"line":25,"column":11}}})) != null ? stack1 : "") - + "
\r\n\r\n" - + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputHelperText") : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":28,"column":2},"end":{"line":31,"column":9}}})) != null ? stack1 : "") - + "\r\n
\r\n"; + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"isDisabled") : depth0),{"name":"if","hash":{},"fn":container.program(11, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":17,"column":61},"end":{"line":17,"column":94}}})) != null ? stack1 : "") + + " />\n\n" + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputImageRight") : depth0),{"name":"if","hash":{},"fn":container.program(13, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":19,"column":2},"end":{"line":24,"column":9}}})) != null ? stack1 : "") + + " \n\n" + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputHelperText") : depth0),{"name":"if","hash":{},"fn":container.program(15, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":27,"column":1},"end":{"line":30,"column":8}}})) != null ? stack1 : "") + + "\n\n"; },"useData":true}); templates['search-input.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -379,16 +475,67 @@ templates['search-input.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":funct return undefined }; - return "
\r\n \"search\"\r\n \n \"search\"\n \r\n \"clear\"\r\n
\r\n"; + + "\" name=\"search-input\">\n \"clear\"\n\n"; +},"useData":true}); +templates['lookPin.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return "
\n
\n \n
\n
\n
\n
\n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"saveButton") || (depth0 != null ? lookupProperty(depth0,"saveButton") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"saveButton","hash":{},"data":data,"loc":{"start":{"line":8,"column":16},"end":{"line":8,"column":32}}}) : helper))) != null ? stack1 : "") + + "\n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"rewardButton") || (depth0 != null ? lookupProperty(depth0,"rewardButton") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"rewardButton","hash":{},"data":data,"loc":{"start":{"line":9,"column":16},"end":{"line":9,"column":34}}}) : helper))) != null ? stack1 : "") + + "\n
\n
\n \"bookmark\n \"comment\"\n \"share\"\n
\n
\n
\n
\n \n
\n

" + + ((stack1 = alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"AuthorName") : stack1), depth0)) != null ? stack1 : "") + + "

\n

" + + ((stack1 = alias4(((stack1 = (depth0 != null ? lookupProperty(depth0,"preview") : depth0)) != null ? lookupProperty(stack1,"AuthorFollowersNumber") : stack1), depth0)) != null ? stack1 : "") + + " Followers

\n
\n
\n
\n 1 месяц назад\n
\n
\n Россия, Москва\n
\n
\n
\n Готовы к будущему ? Красочный киберпанковский головной убор\n
\n
\n Sed ut perspiciatis, unde omnis iste natus error sit voluptatem accusantium doloremque laudantium,\n totam rem aperiam eaque ipsa, quae ab illo inventore veritatis et quasi architecto beatae vitae dicta\n sunt, explicabo. Nemo enim ipsam voluptatem, quia voluptas sit, aspernatur aut odit aut fugit, sed quia\n consequuntur magni dolores eos, qui ratione voluptatem sequi nesciunt, neque porro quisquam est, qui dolorem ipsum, \n quia dolor sit amet consectetur adipisci[ng] velit, sed quia non numquam\n
\n
\n Ссылка на пин\n
\n
\n 11 комментариев\n
\n
\n
\n \n
\n
\n Chris Isaak\n
\n
\n Поздравляем с выдающимися решениями в области ИИ. В корпоративном секторе они создают волны.\n
\n
\n
\n
\n \n
\n
\n Chris Isaak\n
\n
\n Поздравляем с выдающимися решениями в области ИИ. В корпоративном секторе они создают волны.\n
\n
\n
\n
\n
\n
\n"; +},"useData":true}); +templates['editPin.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { + var helper, lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return " \"Image\"\n"; +},"3":function(container,depth0,helpers,partials,data) { + return "
\n \"checkphoto\"\n
\n
\n выберите файл или перетащите его сюда\n
\n"; +},"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { + var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", lookupProperty = container.lookupProperty || function(parent, propertyName) { + if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { + return parent[propertyName]; + } + return undefined + }; + + return "\n
\n
\n
\n" + + ((stack1 = lookupProperty(helpers,"if").call(alias1,(depth0 != null ? lookupProperty(depth0,"Image") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0),"inverse":container.program(3, data, 0),"data":data,"loc":{"start":{"line":5,"column":12},"end":{"line":14,"column":19}}})) != null ? stack1 : "") + + "
\n \n
\n
\n
\n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"TitleInput") || (depth0 != null ? lookupProperty(depth0,"TitleInput") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"TitleInput","hash":{},"data":data,"loc":{"start":{"line":20,"column":12},"end":{"line":20,"column":28}}}) : helper))) != null ? stack1 : "") + + "\n
\n
\n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"DescriptionInput") || (depth0 != null ? lookupProperty(depth0,"DescriptionInput") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"DescriptionInput","hash":{},"data":data,"loc":{"start":{"line":23,"column":12},"end":{"line":23,"column":34}}}) : helper))) != null ? stack1 : "") + + "\n
\n
\n
Выберите доску
\n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"BoardsList") || (depth0 != null ? lookupProperty(depth0,"BoardsList") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"BoardsList","hash":{},"data":data,"loc":{"start":{"line":27,"column":12},"end":{"line":27,"column":28}}}) : helper))) != null ? stack1 : "") + + "\n
\n
\n " + + ((stack1 = ((helper = (helper = lookupProperty(helpers,"PublishButton") || (depth0 != null ? lookupProperty(depth0,"PublishButton") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"PublishButton","hash":{},"data":data,"loc":{"start":{"line":30,"column":12},"end":{"line":30,"column":31}}}) : helper))) != null ? stack1 : "") + + "\n
\n
\n
\n\n\n\n\n\n\n\n\n"; },"useData":true}); templates['login.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = container.lambda(depth0, depth0)) != null ? stack1 : "") - + "\r\n"; + + "\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -397,15 +544,15 @@ templates['login.hbs'] = template({"1":function(container,depth0,helpers,partial return undefined }; - return "
\r\n Главная\r\n
\r\n \r\n
\r\n
\n Главная\n
\n \n
\n \r\n" + + "\">\n" + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputs") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":16},"end":{"line":14,"column":25}}})) != null ? stack1 : "") + " " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"button") || (depth0 != null ? lookupProperty(depth0,"button") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"button","hash":{},"data":data,"loc":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}}}) : helper))) != null ? stack1 : "") - + "\r\n \r\n
\r\n Нет аккаунта? " + + "\n \n
\n Нет аккаунта? " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"button_form_footer") || (depth0 != null ? lookupProperty(depth0,"button_form_footer") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"button_form_footer","hash":{},"data":data,"loc":{"start":{"line":18,"column":36},"end":{"line":18,"column":60}}}) : helper))) != null ? stack1 : "") - + "\r\n
\r\n
\r\n
\r\n
\r\n"; + + "\n
\n
\n
\n\n"; },"useData":true}); templates['main.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -415,11 +562,11 @@ templates['main.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(cont return undefined }; - return "
\r\n " + return "
\n " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"header") || (depth0 != null ? lookupProperty(depth0,"header") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"header","hash":{},"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":16}}}) : helper))) != null ? stack1 : "") - + "\r\n " + + "\n " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"grid") || (depth0 != null ? lookupProperty(depth0,"grid") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"grid","hash":{},"data":data,"loc":{"start":{"line":3,"column":4},"end":{"line":3,"column":14}}}) : helper))) != null ? stack1 : "") - + "\r\n
\r\n"; + + "\n
\n"; },"useData":true}); templates['board-grid.hbs'] = template({"1":function(container,depth0,helpers,partials,data,blockParams,depths) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { @@ -438,23 +585,23 @@ templates['board-grid.hbs'] = template({"1":function(container,depth0,helpers,pa return undefined }; - return "
\r\n \n \""\r\n \"Details\"\r\n
\n \"Details\"\n
\r\n
\r\n

" + + "\">\n

\n

" + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,"title") : depth0), depth0)) != null ? stack1 : "") - + "

\r\n" + + "

\n" + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),((stack1 = (depths[1] != null ? lookupProperty(depths[1],"profile") : depths[1])) != null ? lookupProperty(stack1,"currentUser") : stack1),{"name":"if","hash":{},"fn":container.program(3, data, 0, blockParams, depths),"inverse":container.noop,"data":data,"loc":{"start":{"line":10,"column":24},"end":{"line":14,"column":31}}})) != null ? stack1 : "") - + "
\r\n
\r\n
\r\n
\r\n

" + + "

\n
\n
\n
\n

" + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,"bookmarkedNumber") : depth0), depth0)) != null ? stack1 : "") - + "

\r\n \"Bookmark\"\r\n
\r\n
\r\n

" + + "

\n \"Bookmark\"\n
\n
\n

" + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,"rewardedNumber") : depth0), depth0)) != null ? stack1 : "") - + "

\r\n \"Pinset\"\r\n
\r\n
\r\n
\r\n

" + + "

\n \"Pinset\"\n
\n
\n
\n

" + ((stack1 = alias1((depth0 != null ? lookupProperty(depth0,"lastModifyTime") : depth0), depth0)) != null ? stack1 : "") - + "

\r\n
\r\n
\r\n
\r\n
\r\n"; + + "

\n
\n
\n
\n \n"; },"3":function(container,depth0,helpers,partials,data) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -465,9 +612,9 @@ templates['board-grid.hbs'] = template({"1":function(container,depth0,helpers,pa return ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"private") : depth0),{"name":"if","hash":{},"fn":container.program(4, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":11,"column":28},"end":{"line":13,"column":35}}})) != null ? stack1 : ""); },"4":function(container,depth0,helpers,partials,data) { - return " \"Private\"\r\n"; + return " \"Private\"\n"; },"6":function(container,depth0,helpers,partials,data) { - return "

По вашему запросу ничего не найдено

\r\n"; + return "

По вашему запросу ничего не найдено

\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data,blockParams,depths) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -476,12 +623,12 @@ templates['board-grid.hbs'] = template({"1":function(container,depth0,helpers,pa return undefined }; - return "
\r\n" + return "
\n" + ((stack1 = lookupProperty(helpers,"if").call(depth0 != null ? depth0 : (container.nullContext || {}),(depth0 != null ? lookupProperty(depth0,"boards") : depth0),{"name":"if","hash":{},"fn":container.program(1, data, 0, blockParams, depths),"inverse":container.program(6, data, 0, blockParams, depths),"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":36,"column":11}}})) != null ? stack1 : "") - + "
\r\n"; + + "
\n"; },"useData":true,"useDepths":true}); templates['profile.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { - return "
\r\n \"Settings\"\r\n
\r\n"; + return "
\n \"Settings\"\n
\n"; },"3":function(container,depth0,helpers,partials,data) { var stack1, alias1=container.lambda, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -490,21 +637,21 @@ templates['profile.hbs'] = template({"1":function(container,depth0,helpers,parti return undefined }; - return "
\r\n " + return "
\n " + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"profile") : depth0)) != null ? lookupProperty(stack1,"chatButton") : stack1), depth0)) != null ? stack1 : "") - + "\r\n " + + "\n " + ((stack1 = alias1(((stack1 = (depth0 != null ? lookupProperty(depth0,"profile") : depth0)) != null ? lookupProperty(stack1,"subscribeButton") : stack1), depth0)) != null ? stack1 : "") - + "\r\n
\r\n"; + + "\n
\n"; },"5":function(container,depth0,helpers,partials,data) { - return " \"VK\"\r\n"; + return " \"VK\"\n"; },"7":function(container,depth0,helpers,partials,data) { - return " \"Telegram\"\r\n"; + return " \"Telegram\"\n"; },"9":function(container,depth0,helpers,partials,data) { - return " \"Github\"\r\n"; + return " \"Github\"\n"; },"11":function(container,depth0,helpers,partials,data) { - return " \"Pinterest\"\r\n"; + return " \"Pinterest\"\n"; },"13":function(container,depth0,helpers,partials,data) { - return "
\r\n \r\n Pinset\r\n \r\n \"Navigate\"\r\n \r\n Мой профиль\r\n \r\n
\r\n
\r\n

Мои доски

\r\n \"Create\"\r\n
\r\n"; + return "
\n \n Pinset\n \n \"Navigate\"\n \n Мой профиль\n \n
\n
\n

Мои доски

\n \"Create\"\n
\n"; },"15":function(container,depth0,helpers,partials,data) { var stack1, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -513,9 +660,9 @@ templates['profile.hbs'] = template({"1":function(container,depth0,helpers,parti return undefined }; - return "
\r\n \r\n Pinset\r\n \r\n \"Navigate\"\r\n \r\n @" + return "
\n \n Pinset\n \n \"Navigate\"\n \n @" + ((stack1 = container.lambda(((stack1 = (depth0 != null ? lookupProperty(depth0,"profile") : depth0)) != null ? lookupProperty(stack1,"userNickname") : stack1), depth0)) != null ? stack1 : "") - + "\r\n \r\n
\r\n
\r\n

Доски пользователя

\r\n
\r\n"; + + "\n \n
\n
\n

Доски пользователя

\n
\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", alias4=container.lambda, alias5=container.escapeExpression, lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -524,49 +671,49 @@ templates['profile.hbs'] = template({"1":function(container,depth0,helpers,parti return undefined }; - return "
\r\n " + return "
\n " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"header") || (depth0 != null ? lookupProperty(depth0,"header") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"header","hash":{},"data":data,"loc":{"start":{"line":2,"column":4},"end":{"line":2,"column":16}}}) : helper))) != null ? stack1 : "") - + "\r\n\r\n
\r\n \r\n"; + + "\n
\n
\n\n
\n"; },"useData":true}); templates['signup.hbs'] = template({"1":function(container,depth0,helpers,partials,data) { var stack1; return " " + ((stack1 = container.lambda(depth0, depth0)) != null ? stack1 : "") - + "\r\n"; + + "\n"; },"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { var stack1, helper, alias1=depth0 != null ? depth0 : (container.nullContext || {}), alias2=container.hooks.helperMissing, alias3="function", lookupProperty = container.lookupProperty || function(parent, propertyName) { if (Object.prototype.hasOwnProperty.call(parent, propertyName)) { @@ -575,17 +722,17 @@ templates['signup.hbs'] = template({"1":function(container,depth0,helpers,partia return undefined }; - return "
\r\n Главная\r\n
\r\n \r\n
\r\n
\n Главная\n
\n \n
\n \r\n" + + "\">\n" + ((stack1 = lookupProperty(helpers,"each").call(alias1,(depth0 != null ? lookupProperty(depth0,"inputs") : depth0),{"name":"each","hash":{},"fn":container.program(1, data, 0),"inverse":container.noop,"data":data,"loc":{"start":{"line":12,"column":16},"end":{"line":14,"column":25}}})) != null ? stack1 : "") + " " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"button") || (depth0 != null ? lookupProperty(depth0,"button") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"button","hash":{},"data":data,"loc":{"start":{"line":15,"column":16},"end":{"line":15,"column":28}}}) : helper))) != null ? stack1 : "") - + "\r\n \r\n
\r\n Уже зарегистрированы? " + + "\n \n
\n Уже зарегистрированы? " + ((stack1 = ((helper = (helper = lookupProperty(helpers,"button_form_footer") || (depth0 != null ? lookupProperty(depth0,"button_form_footer") : depth0)) != null ? helper : alias2),(typeof helper === alias3 ? helper.call(alias1,{"name":"button_form_footer","hash":{},"data":data,"loc":{"start":{"line":18,"column":44},"end":{"line":18,"column":68}}}) : helper))) != null ? stack1 : "") - + "\r\n
\r\n
\r\n
\r\n
\r\n"; + + "\n
\n
\n
\n\n"; },"useData":true}); templates['unknown.hbs'] = template({"compiler":[8,">= 4.3.0"],"main":function(container,depth0,helpers,partials,data) { - return "
\r\n Главная\r\n

404 страница не найдена

\r\n
\r\n"; + return "
\n Главная\n

404 страница не найдена

\n
\n"; },"useData":true}); })(); \ No newline at end of file