ComtyNG-Logo
\ No newline at end of file
diff --git a/.prev/public/logo.svg b/.prev/public/logo.svg
deleted file mode 100644
index afd838cd..00000000
--- a/.prev/public/logo.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/.prev/service-worker.js b/.prev/service-worker.js
deleted file mode 100644
index 54a3962a..00000000
--- a/.prev/service-worker.js
+++ /dev/null
@@ -1,133 +0,0 @@
-// This optional code is used to register a service worker.
-// register() is not called by default.
-
-// This lets the app load faster on subsequent visits in production, and gives
-// it offline capabilities. However, it also means that developers (and users)
-// will only see deployed updates on subsequent visits to a page, after all the
-// existing tabs open on the page have been closed, since previously cached
-// resources are updated in the background.
-
-// To learn more about the benefits of this model and instructions on how to
-// opt-in, read http://bit.ly/CRA-PWA
-
-const isLocalhost = Boolean(
- window.location.hostname === 'localhost' ||
- // [::1] is the IPv6 localhost address.
- window.location.hostname === '[::1]' ||
- // 127.0.0.1/8 is considered localhost for IPv4.
- window.location.hostname.match(
- /^127(?:\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/
- )
-);
-
-export function register(config) {
- if ('serviceWorker' in navigator) {
- console.log("The URL constructor is available in all browsers that support SW")
- const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);
- if (publicUrl.origin !== window.location.origin) {
- console.log("Our service worker won't work if PUBLIC_URL is on a different origin from what our page is served on.")
- return;
- }
-
- window.addEventListener('load', () => {
- const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;
- console.log('Loading event...')
- if (isLocalhost) {
- // This is running on localhost. Let's check if a service worker still exists or not.
- checkValidServiceWorker(swUrl, config);
-
- // Add some additional logging to localhost, pointing developers to the
- // service worker/PWA documentation.
- navigator.serviceWorker.ready.then(() => {
- console.log(
- 'This web app is being served cache-first by a service ' +
- 'worker. To learn more, visit http://bit.ly/CRA-PWA'
- );
- });
- } else {
- // Is not localhost. Just register service worker
- registerValidSW(swUrl, config);
- }
- });
- }
-}
-
-function registerValidSW(swUrl, config) {
- navigator.serviceWorker
- .register(swUrl)
- .then(registration => {
- registration.onupdatefound = () => {
- const installingWorker = registration.installing;
- if (installingWorker == null) {
- return;
- }
- installingWorker.onstatechange = () => {
- if (installingWorker.state === 'installed') {
- if (navigator.serviceWorker.controller) {
- // At this point, the updated precached content has been fetched,
- // but the previous service worker will still serve the older
- // content until all client tabs are closed.
- console.log(
- 'New content is available and will be used when all ' +
- 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'
- );
-
- // Execute callback
- if (config && config.onUpdate) {
- config.onUpdate(registration);
- }
- } else {
- // At this point, everything has been precached.
- // It's the perfect time to display a
- // "Content is cached for offline use." message.
- console.log('Content is cached for offline use.');
-
- // Execute callback
- if (config && config.onSuccess) {
- config.onSuccess(registration);
- }
- }
- }
- };
- };
- })
- .catch(error => {
- console.error('Error during service worker registration:', error);
- });
-}
-
-function checkValidServiceWorker(swUrl, config) {
- // Check if the service worker can be found. If it can't reload the page.
- fetch(swUrl)
- .then(response => {
- // Ensure service worker exists, and that we really are getting a JS file.
- const contentType = response.headers.get('content-type');
- if (
- response.status === 404 ||
- (contentType != null && contentType.indexOf('javascript') === -1)
- ) {
- // No service worker found. Probably a different app. Reload the page.
- navigator.serviceWorker.ready.then(registration => {
- registration.unregister().then(() => {
- window.location.reload();
- });
- });
- } else {
- // Service worker found. Proceed as normal.
- registerValidSW(swUrl, config);
- }
- })
- .catch(() => {
- console.log(
- 'No internet connection found. App is running in offline mode.'
- );
- });
-}
-
-export function unregister() {
- if ('serviceWorker' in navigator) {
- navigator.serviceWorker.ready.then(registration => {
- registration.unregister();
- });
- }
-}
diff --git a/.prev/setupTests.js b/.prev/setupTests.js
deleted file mode 100644
index 330f214a..00000000
--- a/.prev/setupTests.js
+++ /dev/null
@@ -1,6 +0,0 @@
-const Enzyme = require('enzyme');
-// this is where we reference the adapter package we installed
-// earlier
-const EnzymeAdapter = require('enzyme-adapter-react-16');
-// This sets up the adapter to be used by Enzyme
-Enzyme.configure({ adapter: new EnzymeAdapter() });
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs.js b/.prev/src/@ycore/libs.js
deleted file mode 100644
index d405bf00..00000000
--- a/.prev/src/@ycore/libs.js
+++ /dev/null
@@ -1,8 +0,0 @@
-// List of modules used for this app
-export * from './libs/comty_ng/pre.js';
-export * from './libs/ycore_sync/pre.js';
-export * from './libs/yulio_id/pre.js';
-export * from './libs/ycore_styles/pre.js';
-export * from './libs/ycore_sdcp/pre.js';
-export * from './libs/app_functions/pre.js';
-export * from './libs/rs_cloud/pre.js';
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/app_functions/modals.js b/.prev/src/@ycore/libs/app_functions/modals.js
deleted file mode 100644
index 4ee4be38..00000000
--- a/.prev/src/@ycore/libs/app_functions/modals.js
+++ /dev/null
@@ -1,126 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import styles from './modals.less';
-import classnames from 'classnames'
-
-const isMobile = localStorage.getItem('mobile_src')
-
-class __Model_postreport extends React.PureComponent {
- state = {
- step: 1
- }
- end(){
- if(this.props.id){
- const payload = { post_id: this.props.id }
- ycore.comty_post.__report((err, res) => {
- if (err) {
- return false
- }
- ycore.notify.info('This post has been reported successfully, our team will review it and inform you about problem resolution ...')
- ycore.FeedHandler.refresh()
- ycore.FeedHandler.goToElement(this.props.id)
- }, payload)
- }
- setTimeout(() => {
- ycore.SecondarySwap.close()
- }, 500)
-
- }
- next(){
- let a = this.state.step
-
- if(a<3)a++
- this.setState({step: a })
- }
- status(i){
- const a = this.state.step
- if (a==i) return 'process'
- if (a>i) return 'finish'
- if (a
- Report an post
- This tool is intended for the community in a public way to help identify problematic or abusive content and for legitimate purposes.
- To ensure the proper use of this tool, before proceeding, you must understand the following:
- I understand and agree that my complaint may be sent to the party that posted the content in question.
- I understand that the abuse of this tool may have consequences for my account
-
{this.state.term_1 && this.state.term_2? this.next()} >Next : null}
-
- )
- case 2:
- return(
-
-
-
For this report or complaint to be fair, make sure that the reason is for the following reasons:
-
-
- Harmful content or hate speech
-
- Violent or repulsive content
-
- Misleading advertising or spam
-
- Illegal activities
-
- Sexual content
-
- Or any other activity that violates the terms and conditions of use
-
I am sure and understand that the reason for this report is included in the above list.
-
{this.state.term_3?
this.next()} >Next : null}
-
-
- )
- case 3:
- return (
-
-
-
Given the above circumstances, to send this report or report please confirm that you understand and are following that you want to carry out this action
-
I am sure of what I do and I want to send this complaint or report
-
{this.state.term_confirm?
this.end()} >Send report : null}
-
-
- )
- default:
- return null
- }
- }
- validate = {
- term_1: (e) =>{this.setState({ term_1: e.target.checked })},
- term_2: (e) =>{this.setState({ term_2: e.target.checked })},
- term_3: (e) =>{this.setState({ term_3: e.target.checked })},
- confirm: (e) =>{this.setState({ term_confirm: e.target.checked })}
- }
-
- render(){
- return(
-
-
-
- } />
- } />
- } />
-
-
- {this.renderStep()}
-
- )
- }
-}
-
-
-export const app_modals = {
- report_post: (post_id) => {
- antd.Modal.confirm({
- title: 'Report an post',
- icon: ,
- content: 'It seems that you want to report this post, first of all it is necessary that you take into account that this tool is only intended for serious cases and we need you to comply with some questions to be able to report this post and to guarantee the quality of service ...',
- onOk() {
- return ycore.SecondarySwap.openFragment(<__Model_postreport id={post_id} />)
- },
- onCancel() {
- return false
- },
- });
- }
-}
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/app_functions/pre.js b/.prev/src/@ycore/libs/app_functions/pre.js
deleted file mode 100644
index 3e5c5f8d..00000000
--- a/.prev/src/@ycore/libs/app_functions/pre.js
+++ /dev/null
@@ -1,219 +0,0 @@
-import { RenderFeed } from 'components/MainFeed'
-import { transitionToogle } from '../../../pages/login'
-import { SetControls, CloseControls } from '../../../components/Layout/Control'
-import { SwapMode } from '../../../components/Layout/Secondary'
-import umiRouter from 'umi/router'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import React from 'react'
-
-export * from './modals.js'
-
-
-
-export function QueryRuntime() {
- const validBackup = ycore.validate.backup()
-
- if (!validBackup) ycore.make_data.backup()
- ycore.sync.listen((data) => {
-
- })
-
-}
-
-export function SetupApp() {
- // TODO: Default sets
- ycore.notify.success('Authorised, please wait...')
- const resourceLoad = localStorage.getItem('resource_bundle')
- if (!resourceLoad) {
- localStorage.setItem('resource_bundle', 'light_ng')
- }
- setTimeout(() => {
- ycore.router.push('main')
- }, 500)
-}
-
-export const CheckThisApp = {
- desktop_mode: () => {
- const a = localStorage.getItem('desktop_src')
- if (a == 'true') {
- return true
- }
- return false
- },
-}
-
-export const SecondarySwap = {
- close: () => {
- SwapMode.close()
- },
- openPost: e => {
- SwapMode.openPost(e)
- },
- openSearch: e => {
- SwapMode.openSearch(e)
- },
- openFragment: e =>{
- SwapMode.openFragment(e)
- }
-}
-
-export const ControlBar = {
- set: e => {
- SetControls(e)
- },
- close: () => {
- CloseControls()
- },
-}
-
-export const FeedHandler = {
- refresh: () => {
- RenderFeed.RefreshFeed()
- },
- killByID: (post_id) => {
- RenderFeed.killByID(post_id)
- },
- addToRend: (payload) => {
- RenderFeed.addToRend(payload)
- },
- goToElement: post_id => {
- RenderFeed.goToElement(post_id)
- },
- sync: data => {
- RenderFeed.sync(data)
- }
-}
-
-export const LoginPage = {
- transitionToogle: () => {
- transitionToogle()
- },
-}
-
-export const router = {
- go: e => {
- goTo.element('primaryContent')
- umiRouter.push({
- pathname: `/${e}`,
- search: window.location.search,
- })
- },
- push: e => {
- umiRouter.push({
- pathname: `/${e}`,
- search: window.location.search,
- })
- },
- goprofile: () => {
- goTo.element('primaryContent')
- umiRouter.push({
- pathname: `/@${ycore.userData().username}`,
- search: window.location.search,
- })
- }
-}
-
-export const goTo = {
- top: (id)=> {
- const element = document.getElementById(id)
- element.scrollTop = element.scrollHeight + element.clientHeight
- },
- bottom: (id) => {
- const element = document.getElementById(id)
- element.scrollTop = element.scrollHeight - element.clientHeight
- },
- element: (element) => {
- try {
- document.getElementById(element).scrollIntoView()
- } catch (error) {
- return false
- }
- }
-
-}
-
-export function RefreshONCE() {
- window.location = '/'
-}
-
-export const app_session = {
- login: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { EncUsername, EncPassword } = payload
-
- let username = atob(EncUsername)
- let password = atob(EncPassword)
-
- const containerpayload = { username, password }
- ycore.__rscloud.yulio_id.auth((err, res) => {
- if (err) {
- return false
- }
- try {
- var identState = JSON.parse(res)['api_status']
- if (identState == 200) {
- const UserID = JSON.parse(res)['user_id']
- const UserToken = JSON.parse(res)['access_token']
-
- const preframepayload = { user_token: UserToken, user_id: UserID}
- ycore.__rscloud.sdcp_cloud.get(
- (err, res) => {
- if (err) {
- return false
- }
-
- let framepayload = { token: { UserID, UserToken }, sdcp: res }
- ycore.yconsole.log('FRAME ', framepayload)
-
- ycore.__CTID_GEN((err, res) => {
- if (err) {
- ycore.notify.error('Critical error, token declined!')
- return false
- }
- ycore.SetupApp()
- callback(null, '200')
- }, framepayload)
- },
- preframepayload
- )
- }
- if (identState == 400) {
- callback(null, '400')
- }
- } catch (error) {
- console.log(error)
- callback(true, '500')
- ycore.notify.error('Server bad response')
- }
- }, containerpayload)
- },
- logout: () => {
- ycore.__rscloud.yulio_id.logout((err, res) => {
- if (err) {
- return false
- }
- console.log(res)
- const api_state = JSON.parse(res)['api_status']
- ycore.yconsole.log(`Exit with => ${api_state}`)
- if (api_state == '404') {
- antd.notification.open({
- placement: 'topLeft',
- message: 'Unexpectedly failed logout in YulioID™ ',
- description:
- 'It seems that your token has been removed unexpectedly and could not log out from YulioID ',
- icon: ,
- })
- ycore.yconsole.log('Failed logout with YulioID™', res)
- } else {
- ycore.yconsole.log('Successful logout with YulioID™', res)
- }
- // Runtime after dispatch API
- ycore.token_data.remove()
- ycore.router.push('login')
- })
- },
-}
diff --git a/.prev/src/@ycore/libs/comty_ng/comty_get.js b/.prev/src/@ycore/libs/comty_ng/comty_get.js
deleted file mode 100644
index 2e0eb133..00000000
--- a/.prev/src/@ycore/libs/comty_ng/comty_get.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import { API_Call, endpoints, sdcp } from 'ycore'
-
-export const comty_get = {
- sessions: (callback) => {
- let formdata = new FormData()
- formdata.append('type', 'get')
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.all_sessions,
- formdata
- )
- },
- session_id: callback => {
- let formdata = new FormData()
- formdata.append('type', 'get')
-
- API_Call((err,res) => {
- if (err) return false
- try {
- const a = JSON.parse(res)['data']
- return callback(err, a.session_id)
- } catch (error) {
- return callback(err, '0x0000')
- }
- },
- endpoints.comty_endpoints.get_sessions,
- formdata)
- },
- session: (callback) => {
- let formdata = new FormData()
- formdata.append('type', 'get')
-
- API_Call((err,res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.get_sessions,
- formdata)
- },
- general_data: (callback, payload) => {
- let formdata = new FormData();
- let callOptions = { includeUserID: false };
-
- if (!payload) {
- callOptions = { includeUserID: true }
- formdata.append('fetch', 'notifications,friend_requests,pro_users,promoted_pages,trending_hashtag,count_new_messages')
- }
-
- if (payload) {
- payload.user_id? formdata.append('user_id', payload.user_id) : null
- payload.fetch? formdata.append('fetch', payload.fetch) : null
- }
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.get_general_data,
- formdata, callOptions
- )
-
- },
-}
diff --git a/.prev/src/@ycore/libs/comty_ng/comty_post.js b/.prev/src/@ycore/libs/comty_ng/comty_post.js
deleted file mode 100644
index e7f06dc7..00000000
--- a/.prev/src/@ycore/libs/comty_ng/comty_post.js
+++ /dev/null
@@ -1,209 +0,0 @@
-import { API_Call, endpoints, AppSettings, yconsole } from 'ycore'
-
-export const comty_post = {
- getFeed: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { fkey, type, id } = payload
-
- let formdata = new FormData()
- formdata.append('after_post_id', fkey || 0)
- formdata.append('limit', AppSettings.limit_post_catch || 20)
- switch (type) {
- case 'feed':
- formdata.append('type', 'get_news_feed')
- break
- case 'user':
- formdata.append('type', 'get_user_posts')
- formdata.append('id', id)
- break
- default:
- formdata.append('type', 'get_news_feed')
- break
- }
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.get_posts,
- formdata
- )
- },
- get: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id, fetch } = payload
-
- let formdata = new FormData()
- formdata.append('post_id', post_id)
- formdata.append(
- 'fetch',
- fetch || 'post_data,post_comments,post_wondered_users,post_liked_users'
- )
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.get_post_data,
- formdata
- )
- },
- new: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { privacy, text, file } = payload
-
- let formdata = new FormData()
- formdata.append('type', 'new_post')
- formdata.append('postPrivacy', privacy)
- formdata.append('postText', text)
- file ? formdata.append('uploadFile', file) : null
-
- const callOptions = { includeUserID: true }
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.new_post,
- formdata,
- callOptions
- )
- },
- delete: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id } = payload
-
- let formdata = new FormData()
- formdata.append('action', 'delete')
- formdata.append('post_id', post_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.action_post,
- formdata
- )
- },
- save: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id } = payload
-
- let formdata = new FormData()
- formdata.append('action', 'save')
- formdata.append('post_id', post_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.action_post,
- formdata
- )
- },
- like: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id } = payload
-
- let formdata = new FormData()
- formdata.append('action', 'like')
- formdata.append('post_id', post_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.action_post,
- formdata
- )
- },
- getSaved: (callback, payload) => {
- if (!payload) {
- yconsole.log(
- 'Calling api without Payload!!! | Limmit & OffsetKey = default |'
- )
- }
- if (payload) {
- const { limit, fkey } = payload
- }
-
- let formdata = new FormData()
- formdata.append('type', 'saved')
- formdata.append('limit', payload? limit : AppSettings.limit_post_catch || 20)
- formdata.append('after_post_id', payload? fkey : 0)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.get_posts,
- formdata
- )
- },
- edit: (callback, payload) => {},
- __pin: (callback, payload) => {},
- __boost: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id } = payload
-
- let formdata = new FormData()
- formdata.append('action', 'boost')
- formdata.append('post_id', post_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.action_post,
- formdata
- )
- },
- __disableComments: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id } = payload
-
- let formdata = new FormData()
- formdata.append('action', 'disable_comments')
- formdata.append('post_id', post_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.action_post,
- formdata
- )
- },
- __report: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { post_id } = payload
-
- let formdata = new FormData()
- formdata.append('action', 'report')
- formdata.append('post_id', post_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.action_post,
- formdata
- )
- },
-}
diff --git a/.prev/src/@ycore/libs/comty_ng/comty_search.js b/.prev/src/@ycore/libs/comty_ng/comty_search.js
deleted file mode 100644
index fe9da074..00000000
--- a/.prev/src/@ycore/libs/comty_ng/comty_search.js
+++ /dev/null
@@ -1,23 +0,0 @@
-import { API_Call, endpoints } from 'ycore'
-
-export const comty_search = {
- keywords: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { key } = payload
-
- let formdata = new FormData()
- formdata.append('search_key', key)
-
- const callOptions = { timeout: 10000 }
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.search_endpoint,
- formdata,
- callOptions
- )
- },
-}
diff --git a/.prev/src/@ycore/libs/comty_ng/comty_user.js b/.prev/src/@ycore/libs/comty_ng/comty_user.js
deleted file mode 100644
index ac374d98..00000000
--- a/.prev/src/@ycore/libs/comty_ng/comty_user.js
+++ /dev/null
@@ -1,75 +0,0 @@
-import { API_Call, endpoints } from 'ycore'
-import { comty_rsa } from '../rs_cloud/pre'
-
-export const comty_user = {
- setData: () => {},
- follow: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { user_id } = payload
-
- let formdata = new FormData()
- formdata.append('user_id', user_id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.follow_user,
- formdata
- )
- },
- block: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { user_id, block_action } = payload
- let formdata = new FormData()
- formdata.append('user_id', user_id)
- formdata.append('block_action', block_action)
-
- API_Call((err,res)=>{
- return callback(err,res)
- },
- comty_rsa.endpoint('block-user'),
- formdata
- )
- },
- find: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { key } = payload
-
- let formdata = new FormData()
- formdata.append('search_key', key)
-
- const callOptions = { timeout: 10000 }
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.find_user,
- formdata,
- callOptions
- )
- },
- __tags: (callback, payload) => {
- if (!payload) {
- return false
- }
- const { id } = payload
-
- let formdata = new FormData()
- formdata.append('user_id', id)
-
- API_Call(
- (err, res) => {
- return callback(err, res)
- },
- endpoints.comty_endpoints.get_user_tags,
- formdata
- )
- },
-}
diff --git a/.prev/src/@ycore/libs/comty_ng/pre.js b/.prev/src/@ycore/libs/comty_ng/pre.js
deleted file mode 100644
index 273d7117..00000000
--- a/.prev/src/@ycore/libs/comty_ng/pre.js
+++ /dev/null
@@ -1,64 +0,0 @@
-import { token_data } from 'ycore'
-import * as Icons from '@ant-design/icons'
-
-export * from './comty_post.js'
-export * from './comty_user.js'
-export * from './comty_post_comment.js'
-export * from './comty_search.js'
-export * from './comty_get.js'
-
-
-
-export const IsThisPost = {
- owner: (post_uid) => {
- const a = token_data.__id()
- if (post_uid == a) {
- return true
- }
- return false
- },
- boosted: () => {
-
- },
- saved: () => {
-
- },
- pinned: () => {
-
- },
- flagged: () => {
-
- }
-}
-
-export const GetPostPrivacy = {
- bool: (e) => {
- switch (e) {
- case 'any':
- return '0'
- case 'only_followers':
- return '1'
- case 'only_follow':
- return '2'
- case 'private':
- return '3'
- default:
- return '0'
- }
- },
- decorator: (e) => {
- switch (e) {
- case 'any':
- return Share with everyone
- case 'only_follow':
- return Share with people I follow
- case 'only_followers':
- return Share with people follow me
- case 'private':
- return Dont share, only me
- default:
- return Unknown
- }
- },
-
-}
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/rs_cloud/api_call.js b/.prev/src/@ycore/libs/rs_cloud/api_call.js
deleted file mode 100644
index 41844f7a..00000000
--- a/.prev/src/@ycore/libs/rs_cloud/api_call.js
+++ /dev/null
@@ -1,95 +0,0 @@
-import jquery from 'jquery'
-import * as ycore from 'ycore'
-
-export function API_Call(callback, endpoint, payload, options, __token) {
- var prefix = `[API_Call] `
- if (!endpoint) return false
- if (!payload) {
- ycore.yconsole.log(prefix, 'Calling api without Payload!!!')
- }
- let payloadContainer = payload ? payload : new FormData()
- payloadContainer.append('server_key', ycore.__server.getKey())
-
- const autoIncludeToken = endpoint.includes('?access_token=')
-
- const defaultOptions = {
- method: 'POST',
- timeout: 0,
- processData: false,
- includeUserID: false,
- override__token: false,
- disabledToken: autoIncludeToken ? false : true,
- }
-
- let fendpoint
- let method = defaultOptions.method
- let timeout = defaultOptions.timeout
- let processData = defaultOptions.processData
- let includeUserID = defaultOptions.includeUserID
- let override__token = defaultOptions.override__token
- let disabledToken = defaultOptions.disabledToken
-
- if (options) {
- options.method ? (method = options.method) : null
- options.timeout ? (timeout = options.timeout) : null
- options.processData ? (processData = true) : null
- options.includeUserID ? (includeUserID = true) : null
- options.override__token ? (override__token = true) : null
- options.disabledToken ? (disabledToken = true) : null
- }
-
- if (disabledToken) {
- ycore.yconsole.log(`${prefix} Dimmissing the token generation`)
- fendpoint = `${endpoint}`
- }
-
- if (!disabledToken && !override__token) {
- fendpoint = `${endpoint}${ycore.token_data.__token()}`
- }
-
- if (override__token || __token) {
- if (!__token) {
- ycore.yconsole.log(`${prefix} Missing Overriding __token`)
- return
- }
- ycore.yconsole.log(`${prefix} Overriding __token => ${__token}`)
- fendpoint = `${endpoint}${__token}`
- }
-
- if (includeUserID) {
- payloadContainer.append('user_id', ycore.token_data.__id())
- }
-
- const requestOptions = {
- url: fendpoint,
- method: method,
- timeout: timeout,
- data: payloadContainer,
- mimeType: 'multipart/form-data',
- processData: processData,
- contentType: false,
- }
-
- jquery
- .ajax(requestOptions)
- .done(response => {
- try {
- const a = JSON.parse(response)['api_status']
- if (a == '404') {
- ycore.Alive_API.tokenError(response)
- }
- } catch (error) {
- ycore.yconsole.log(
- '[VIOLATION] The status of the request has not been identified!'
- )
- ycore.Alive_API.violation()
- }
- ycore.yconsole.log(response)
- return callback(false, response)
- })
- .fail(error => {
- ycore.yconsole.log(`${prefix} (ERROR) `, error)
- ycore.Alive_API.fail(error)
- return callback(true, error)
- })
-}
diff --git a/.prev/src/@ycore/libs/rs_cloud/pre.js b/.prev/src/@ycore/libs/rs_cloud/pre.js
deleted file mode 100644
index f180f1c7..00000000
--- a/.prev/src/@ycore/libs/rs_cloud/pre.js
+++ /dev/null
@@ -1,101 +0,0 @@
-import * as ycore from 'ycore'
-export * from './api_call.js'
-import keys from '../../../../config/keys.js'
-
-export const Alive_API = {
- fail: a => {
- if (a) {
- ycore.yconsole.log(a)
- ycore.notify.error(a)
- }
- },
- tokenError: a => {
- ycore.notify.expire(
- 'It seems that your token has expired or no longer exists'
- )
- ycore.router.go('login')
- },
- violation: a => {
- ycore.notify.expire(
- 'It seems that there has been a problem with your token, we need you to log in again.'
- )
- ycore.router.go('login')
- },
-}
-export const __server = {
- getKey: () => {
- return keys.server_key
- },
-}
-export const __rscloud = {
- yulio_id: {
- auth: (callback, payload) => {
- if (!payload) return false
- const { username, password } = payload
-
- const formdata = new FormData()
- formdata.append('username', username)
- formdata.append('password', password)
-
- const callOptions = { disabledToken: true }
- ycore.API_Call(
- (err, res) => {
- return callback(err, res)
- },
- ycore.endpoints.comty_endpoints.auth_endpoint,
- formdata,
- callOptions
- )
- },
- logout: callback => {
- const callOptions = { includeUserID: true }
- ycore.API_Call(
- (err, res) => {
- return callback(err, res)
- },
- ycore.endpoints.comty_endpoints.removeToken,
- null,
- callOptions
- )
- },
- verify: (callback, payload) => {},
- sign: (callback, payload) => {},
- },
- sdcp_cloud: {
- get: (callback, payload) => {
- if (!payload) return false
- const { user_token, user_id } = payload
- const formdata = new FormData()
- formdata.append('fetch', 'user_data')
- formdata.append('user_id', user_id)
-
- const optionCall = { override__token: true }
- ycore.API_Call(
- (err, res) => {
- try {
- let cooked = JSON.parse(res)['user_data']
- let Ensamblator = btoa(JSON.stringify(cooked))
- return callback(err, Ensamblator)
- } catch (error) {
- return callback(true, error)
- }
- },
- ycore.endpoints.comty_endpoints.get_userData_endpoint,
- formdata,
- optionCall,
- user_token
- )
- },
- set: () => {},
- },
-}
-
-export const comty_rsa = {
- endpoint: (endpoint, options) => {
- let join_token = true;
- if (options) {
- join_token = options.join_token
- }
- return `${ycore.AppSettings.__global_server_prexif}${endpoint}${join_token? `?access_token=` : ``}`
- }
-}
diff --git a/.prev/src/@ycore/libs/ycore_sdcp/pre.js b/.prev/src/@ycore/libs/ycore_sdcp/pre.js
deleted file mode 100644
index 54191b4a..00000000
--- a/.prev/src/@ycore/libs/ycore_sdcp/pre.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import * as ycore from 'ycore'
-import localforage from 'localforage'
-
-export const sdcp = {
- isset: (value) => {
- if (!value) return false
- ycore.sdcp.localforage.getItem(value)? true : false
- },
- set: (operator) => {
- if (!operator) return false
- try {
- let a;
- let b;
-
- let { callback, model } = operator
- const {key, value} = model
- if (!typeof key === 'string' || ! a instanceof String) return false
-
- a = ycore.sdcp.get(key)
- if (!a.isArray()) return false
-
- b = JSON.parse(a).concat(value)
-
- localforage.setItem(key, b)
-
- } catch (err) {
- console.log(err)
- return false
- }
- },
- get: (key) => {
- try {
- return localforage.getItem(key)
- } catch (err) {
- return false
- }
- },
-
-}
-
-export const cryptSDCP = {
- atob_parse: e => {
- if (e) {
- try {
- atob(e)
- } catch (err) {
- ycore.notify.error(err)
- ycore.router.go('login')
- return false
- }
- try {
- let decodedSDCP = atob(e)
- let parsedSDCP = JSON.parse(decodedSDCP)
- return parsedSDCP
- } catch (err) {
- ycore.notify.error(err)
- ycore.router.go('login')
- return false
- }
- }
- return false
- },
- valid: () => {
- const a = ycore.sdcp.get()
- return a ? true : false
- },
-}
diff --git a/.prev/src/@ycore/libs/ycore_styles/pre.js b/.prev/src/@ycore/libs/ycore_styles/pre.js
deleted file mode 100644
index 16f1f74f..00000000
--- a/.prev/src/@ycore/libs/ycore_styles/pre.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import {AppSettings} from 'ycore'
-
-export function CurrentTheme(){
- try {
- const bundle = localStorage.getItem('resource_bundle') || AppSettings.resource_bundle
- console.log('Loading resource Bundle =>', bundle)
- return bundle
- } catch (error) {
- return null
- }
-}
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/ycore_styles/ycore_style.scss b/.prev/src/@ycore/libs/ycore_styles/ycore_style.scss
deleted file mode 100644
index 5759afe8..00000000
--- a/.prev/src/@ycore/libs/ycore_styles/ycore_style.scss
+++ /dev/null
@@ -1,1488 +0,0 @@
-/* (2.0) YulioID V2 */
-
-@import url('https://cdnjs.cloudflare.com/ajax/libs/simple-line-icons/2.4.1/css/simple-line-icons.min.css');
-@import url('https://fonts.googleapis.com/css?family=Poppins:300,300i,500,500i,700');
-
-
-
-.mainlp {
- --neutralShade0: #f8f8f8;
- --neutralShade1: #f2f2f2;
- --neutralShade2: #e8e9e9;
- --neutralShade3: #d1d3d4;
- --neutralShade4: #babdbf;
- --neutralShade5: #808488;
- --neutralShade6: #666a6d;
- --neutralShade7: #4d5052;
- --neutralShade8: #212122;
- --grayColor: #999;
- --lightGrayColor: #ddd;
- --borderRadius: 6px;
- --boxShadow: 0 2px 5px rgba(#333, 0.2);
-}
-
-/*overall layout*/
-.mainlp {
- width: 90%;
- max-width: 1050px;
- margin: 3em auto 0;
- display: grid;
- grid: repeat(5, fit-content(300px))/100%;
- color: var(--foregroundColor);
- text-align: left;
-}
-
-.mainlp .sectionlp {
- border: 1px solid var(--accentColor);
- position: relative;
- padding: 40px 40px 50px;
-}
-
-.mainlp .sectionlp>h6 {
- color: var(--accentColor);
- background: var(--canvasColor);
- position: absolute;
- top: -10px;
- left: 20px;
- padding: 0 10px;
-}
-
-.mainlp .sectionlp .h6lp.subheader {
- color: var(--grayColor);
- margin-top: 20px;
- margin-bottom: 20px;
- width: 100%;
-}
-
-@media (max-width: 992px) {
- section:not(:last-child) {
- border-width: 0 0 1px;
- }
-
- section:last-child {
- border-width: 0;
- }
-}
-
-@media (min-width: 992px) {
- main {
- grid: repeat(9, auto)/45% 1fr 45%;
- grid-auto-flow: dense;
- }
-
- .media-card-1 {
- grid-column: 1 / 2;
- border-width: 1px 0;
- }
-
- .media-card-2 {
- grid-column: 2 / 4;
- border-width: 1px 0 1px 1px;
- }
-
- .media-card-3 {
- grid-column: 1 / 4;
- border-width: 0;
- }
-
- .filter-section {
- grid-column: 3 / 4;
- grid-row: 1 / 2;
- border-width: 0 0 0 1px;
- }
-
- .well-cta-1 {
- grid-row: 3;
- grid-column: 1 / 3;
- border-width: 1px 1px 0 0;
- }
-
- .well-cta-2 {
- grid-row: 2;
- grid-column: 2 / 4;
- border-width: 1px 0 0;
- }
-
- .tables {
- grid-row: 4;
- grid-column: 1 / -1;
- border-width: 1px 0 0;
- }
-
- .forms {
- grid-column: 1 / 3;
- border-width: 0;
- }
-
- .comments {
- grid-row: 2;
- grid-column: 1 / 2;
- border-width: 1px 1px 0 0;
- padding-top: 60px;
- }
-
- .modals {
- grid-row: 3;
- grid-column: 3 / 4;
- justify-content: center;
- border-width: 1px 0 0;
- }
-}
-
-
-/*checkboxes*/
-input:disabled~* {
- opacity: 0.3;
- user-select: none;
- pointer-events: none;
-}
-
-.checkboxtoggle input {
- display: none;
-}
-
-.checkboxtoggle label {
- outline: 0;
- display: block;
- width: 45px;
- height: 16px;
- background: var(--grayColor);
- position: relative;
- cursor: pointer;
- border-radius: 2em;
- padding: 2px;
- transition: all 0.4s ease;
- margin: 0;
-}
-
-.checkboxtoggle .labellp:after {
- position: relative;
- display: block;
- content: "";
- width: 20px;
- height: 20px;
- border-radius: 50%;
- background: #fff;
- transition: all 0.2s ease;
- border: 1px solid var(--grayColor);
- box-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
- left: -4px;
- top: -5px;
-}
-
-.checkboxtoggle input:checked+.labellp {
- background: var(--accent2Color);
-}
-
-.checkboxtoggle input:checked+.labellp:after {
- left: 52%;
-}
-
-.checkbox {
- position: relative;
- user-select: none;
- margin-bottom: 10px;
-}
-
-.checkbox input {
- display: none;
-}
-
-.checkbox .labellp {
- position: relative;
- vertical-align: middle;
- cursor: pointer;
- font-weight: 500;
- padding-left: 35px;
-}
-
-.checkbox .spanlp.box {
- display: inline-block;
- width: 20px;
- border-radius: var(--borderRadius);
- border: 1px solid var(--grayColor);
- width: 24px;
- height: 24px;
- vertical-align: middle;
- margin-right: 3px;
- transition: 0.3s ease;
- position: absolute;
- left: 0;
-}
-
-.checkbox .spanlp.box:before,
-.checkbox .spanlp.box:after {
- content: "";
- position: absolute;
- width: 4px;
- height: 16px;
- border-radius: 40px;
- background: var(--backgroundColor);
- transition: all 0.3s ease;
-}
-
-.checkbox .spanlp.box:before {
- transform: rotate(45deg) translateY(-5px) translateX(10px) scale(0);
-}
-
-.checkbox .spanlp.box:after {
- height: 8px;
- transform: rotate(-45deg) translateY(10px) translateX(-4px) scale(0);
-}
-
-.checkbox input:checked+.labellp .spanlp.box {
- background: var(--accent2Color);
- border-color: var(--accent2Color);
-}
-
-.checkbox input:checked+.labellp .spanlp.box:before {
- transform: rotate(45deg) translateY(-5px) translateX(10px) scale(1);
-}
-
-.checkbox input:checked+.labellp .spanlp.box:after {
- height: 8px;
- transform: rotate(-45deg) translateY(10px) translateX(-4px) scale(1);
-}
-
-.checkbox input:disabled:checked+.spanlp.box {
- background: var(--grayColor);
- border: var(--grayColor);
-}
-
-.checkbox input:disabled:checked~.labellp:before,
-.checkbox input:disabled:checked~.labellp:after {
- background: black;
-}
-
-/*buttons & links*/
-.links__sec {
- margin: 10px 0 30px;
-}
-
-.links a.link {
- display: inline;
- margin: 10px 30px 5px 0;
- border-bottom: 2px dashed;
- font-weight: 500;
- line-height: 2.5;
- cursor: pointer;
- color: var(--neutralShade5);
-}
-
-.links a.link:hover,
-.links a.link.hover {
- color: var(--neutralShade6);
- border-bottom: 2px solid;
-}
-
-.links a.link.primary {
- color: var(--primaryColor);
-}
-
-.links a.link.primary:hover,
-.links a.link.primary.hover {
- color: var(--primaryShade5);
-}
-
-.links a.link.secondary {
- color: var(--secondaryColor);
-}
-
-.links a.link.secondary:hover,
-.links a.link.secondary.hover {
- color: var(--secondaryShade5);
-}
-
-.buttons {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
-}
-
-.buttons>* {
- flex: 1 1 calc(50% - 20px);
- margin-top: 20px;
-}
-
-.buttons>*:nth-child(odd) {
- margin-right: 20px;
-}
-
-a.buttonlp,
-input.buttonlp,
-.buttonlp {
- outline: none;
- width: 100%;
- text-align: center;
- display: inline-block;
- border: none;
- font: 500 16px/1 "Poppins", sans-serif;
- padding: 20px;
- cursor: pointer;
- border-radius: var(--borderRadius);
- background: var(--primaryColor);
- color: var(--backgroundColor);
- position: relative;
- top: 0;
- transition: 0.2s ease;
-}
-
-a.buttonlp:hover,
-a.buttonlp.hover,
-input.buttonlp:hover,
-input.buttonlp.hover,
-.buttonlp:hover,
-.buttonlp.hover {
- top: -3px;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
-}
-
-a.buttonlp:active,
-a.buttonlp.active,
-input.buttonlp:active,
-.input.buttonlp.active,
-.buttonlp:active,
-.buttonlp.active {
- background: var(--primaryShade4);
- outline: none;
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- top: 0;
-}
-
-a.buttonlp.disabled,
-input.buttonlp.disabled,
-.buttonlp.disabled {
- opacity: 0.4;
- user-select: none;
- pointer-events: none;
-}
-
-a.buttonlp.medium,
-input.buttonlp.medium,
-.buttonlp.medium {
- padding: 15px 18px;
- width: auto;
-}
-
-a.buttonlp.small,
-input.buttonlp.small,
-.buttonlp.small {
- padding: 10px 12px;
- width: auto;
- font-size: 14px;
- font-weight: 500;
-}
-
-a.buttonlp.secondary,
-input.buttonlp.secondary,
-.buttonlp.secondary {
- background: var(--secondaryColor);
-}
-
-a.buttonlp.secondary:active,
-a.buttonlp.secondary:focus,
-a.buttonlp.secondary.active,
-input.buttonlp.secondary:active,
-input.buttonlp.secondary:focus,
-input.buttonlp.secondary.active,
-.buttonlp.secondary:active,
-.buttonlp.secondary:focus,
-.buttonlp.secondary.active {
- background: var(--secondaryShade4);
- outline: none;
-}
-
-a.buttonlp.accent,
-input.buttonlp.accent,
-.buttonlp.accent {
- background: var(--accentColor);
-}
-
-a.buttonlp.accent:active,
-a.buttonlp.accent:focus,
-a.buttonlp.accent.active,
-input.buttonlp.accent:active,
-input.buttonlp.accent:focus,
-input.buttonlp.accent.active,
-.buttonlp.accent:active,
-.buttonlp.accent:focus,
-.buttonlp.accent.active {
- background: var(--accentShade4);
-}
-
-a.buttonlp.accent2,
-input.buttonlp.accent2,
-.buttonlp.accent2 {
- background: var(--accent2Color);
-}
-
-a.buttonlp.accent2:active,
-a.buttonlp.accent2:focus,
-a.buttonlp.accent2.active,
-input.buttonlp.accent2:active,
-input.buttonlp.accent2:focus,
-input.buttonlp.accent2.active,
-.buttonlp.accent2:active,
-.buttonlp.accent2:focus,
-.buttonlp.accent2.active {
- background: var(--accent2Shade4);
-}
-
-a.buttonlp.accent3,
-input.buttonlp.accent3,
-.buttonlp.accent3 {
- background: var(--accent3Color);
-}
-
-a.buttonlp.accent3:active,
-a.buttonlp.accent3:focus,
-a.buttonlp.accent3.active,
-input.buttonlp.accent3:active,
-input.buttonlp.accent3:focus,
-input.buttonlp.accent3.active,
-.buttonlp.accent3:active,
-.buttonlp.accent3:focus,
-.buttonlp.accent3.active {
- background: var(--accent3Shade4);
-}
-
-/*inputs*/
-.input__wrapper {
- margin-bottom: 10px;
-}
-
-
-.labelform {
- font-weight: 500;
- display: block;
- margin-bottom: 5px;
-}
-
-input.inputform,
-select,
-textarea {
- height: 50px;
- font-size: 16px;
- border: 2px solid var(--neutralShade3);
- width: 100%;
- padding: 12px;
- font-family: "Poppins";
- border-radius: var(--borderRadius);
- color: var(--foregroundColor);
- background: var(--backgroundColor);
-}
-
-input.inputform:focus,
-input.inputform.active,
-select:focus,
-select.active,
-textarea:focus,
-textarea.active {
- outline: none;
- border-color: var(--primaryColor);
-}
-
-input.inputform:disabled,
-select:disabled,
-textarea:disabled {
- cursor: not-allowed;
- background: var(--neutralShade1);
- opacity: 0.6;
-}
-
-input.inputform.input {
- height: 56px;
- font-size: 18px;
- padding: 15px;
-}
-
-/*badges*/
-.badge {
- display: inline-block;
- padding: 6px 12px;
- border-radius: 50px;
- font-weight: 500;
- text-transform: uppercase;
- line-height: 1;
-}
-
-.alert {
- margin-bottom: 15px;
- display: block;
- padding: 10px 15px;
- border-radius: var(--borderRadius);
- font-weight: 500;
- position: relative;
- cursor: pointer;
-}
-
-.alert.non-collapsible:before,
-.alert.non-collapsible:after {
- content: none;
-}
-
-.alert:before,
-.alert:after {
- content: "";
- position: absolute;
- width: 4px;
- height: 16px;
- border-radius: 40px;
- right: 30px;
- top: 8px;
-}
-
-.alert:before {
- transform: rotate(45deg) translateY(-5.5px) translateX(13.5px);
-}
-
-.alert:after {
- transform: rotate(-45deg) translateY(13.5px) translateX(5.5px);
-}
-
-.status-primary {
- background: var(--primaryShade1);
- color: var(--primaryShade5);
-}
-
-.status-primary:before,
-.status-primary:after {
- background: var(--primaryShade5);
-}
-
-.status-secondary {
- background: var(--secondaryShade1);
- color: var(--secondaryShade5);
-}
-
-.status-secondary:before,
-.status-secondary:after {
- background: var(--secondaryShade5);
-}
-
-.status-info {
- background: var(--accentShade1);
- color: var(--accentShade5);
-}
-
-.status-info:before,
-.status-info:after {
- background: var(--accentShade5);
-}
-
-.status-success {
- background: var(--accent2Shade1);
- color: var(--accent2Shade5);
-}
-
-.status-success:before,
-.status-success:after {
- background: var(--accent2Shade5);
-}
-
-.status-error {
- background: var(--accent3Shade1);
- color: var(--accent3Shade5);
-}
-
-.status-error:before,
-.status-error:after {
- background: var(--accent3Shade5);
-}
-
-/*tooltips*/
-.tooltip {
- cursor: pointer;
- position: relative;
- display: block;
- width: 100%;
- text-align: center;
- z-index: 10;
-}
-
-.tooltip .spanlp {
- border-bottom: 1px dotted;
-}
-
-.tooltip:after {
- content: attr(data-tooltip);
- background: var(--neutralShade2);
- max-width: 90%;
- width: auto;
- position: absolute;
- left: 0;
- right: 0;
- margin: auto;
- opacity: 0;
- height: auto;
- font-size: 14px;
- padding: 10px;
- border-radius: var(--borderRadius);
- color: var(--foregroundColor);
- text-align: center;
-}
-
-.tooltip.dark:after {
- background: var(--neutralShade7);
- color: var(--backgroundColor);
-}
-
-.tooltip.top:after {
- bottom: 80%;
- transition: opacity 0.3s ease 0.3s, bottom 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.3s;
-}
-
-.tooltip.top:hover:after,
-.tooltip.top.hovered:after {
- bottom: 130%;
- opacity: 1;
-}
-
-.tooltip.bottom:after {
- top: 80%;
- transition: opacity 0.3s ease 0.3s, top 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275) 0.3s;
-}
-
-.tooltip.bottom:hover:after,
-.tooltip.bottom.hovered:after {
- top: 130%;
- opacity: 1;
-}
-
-/*spinner*/
-.spinner+.labellp {
- font-size: 14px;
- font-weight: 500;
- margin-top: 8px;
- display: inline-block;
- text-transform: uppercase;
- color: var(--primaryShade4);
-}
-
-.spinner1 .spinner {
- max-width: 50px;
- margin: auto;
- height: 20px;
- position: relative;
-}
-
-.spinner1 .spinner:after {
- content: "";
- position: absolute;
- width: 20px;
- height: 20px;
- left: -10%;
- background: var(--primaryColor);
- animation: spinnerLeftRight 1s infinite;
-}
-
-.spinner1 .spinner:before {
- content: "";
- position: absolute;
- width: 20px;
- height: 20px;
- left: -10%;
- background: var(--primaryShade2);
- opacity: 1;
- animation: spinnerLeftRight 1s infinite 0.06s;
-}
-
-@keyframes spinnerLeftRight {
- 0% {
- left: 85%;
- }
-
- 50% {
- left: -10%;
- }
-
- 100% {
- left: 85%;
- }
-}
-
-
-#sunset+.labellp {
- background: linear-gradient(to right, #ff9557 50%, #ffcc67 50%);
-}
-
-.mainlp {
- --canvasColor: #f9f9f9;
- --backgroundColor: #fff;
- --foregroundColor: #111;
- --primaryColor: #ff9557;
- --primaryShade1: #ffe2d1;
- --primaryShade2: #ffceb2;
- --primaryShade3: #ffb184;
- --primaryShade4: #e88850;
- --primaryShade5: #d17a48;
- --secondaryColor: #ffcc67;
- --secondaryShade1: #fff1d5;
- --secondaryShade2: #ffde9e;
- --secondaryShade3: #ffd074;
- --secondaryShade4: #e8ba5e;
- --secondaryShade5: #ba954b;
- --accentColor: #4e5166;
- --accentShade1: #cecfd5;
- --accentShade2: #aeafb9;
- --accentShade3: #8e909d;
- --accentShade4: #6e7081;
- --accentShade5: #404354;
- --accent2Color: #588b8b;
- --accent2Shade1: #c2d4d4;
- --accent2Shade2: #a3bfbf;
- --accent2Shade3: #85aaaa;
- --accent2Shade4: #507f7f;
- --accent2Shade5: #497272;
- --accent3Color: #fe5f55;
- --accent3Shade1: #fec4c1;
- --accent3Shade2: #fea7a2;
- --accent3Shade3: #fe7c73;
- --accent3Shade4: #e7574e;
- --accent3Shade5: #b9463e;
-}
-
-
-
-/* PROFILE CARDS */
-.profile {
- position: relative;
- background: var(--backgroundColor);
- color: var(--foregroundColor);
- box-shadow: 0 3px 15px rgba(51, 51, 51, 0.2);
- border-radius: 10px;
- overflow: hidden;
- transition: .2s ease;
- display: grid;
- grid: 200px repeat(5, auto)/100%;
-}
-
-.profile__image img {
- width: 100%;
- height: 100%;
- object-fit: cover;
- border-bottom: 7px solid var(--secondaryColor);
-}
-
-.profile__info {
- padding: 20px 25px 0;
-}
-
-.profile__stats {
- padding: 5px 25px;
-}
-
-.profile__stats__title {
- color: var(--grayColor);
- text-transform: uppercase;
- font-size: 16px;
-}
-
-.profile__cta {
- padding: 0 25px 25px;
-}
-
-.profile a:hover {
- top: 0;
- box-shadow: none;
- background: var(--primaryShade4);
-}
-
-.profile a:active,
-.profile a:focus {
- top: 0;
- box-shadow: none;
- background: var(--primaryShade5);
-}
-
-@media (min-width: 500px) {
- .profile-default {
- min-width: 500px;
- max-width: 450px;
- margin: auto;
- overflow: hidden;
- grid: 340px auto auto/repeat(3, minmax(80px, 1fr));
- grid-gap: 10px;
- }
-
- .profile-default .profile__image {
- grid-column: span 3;
- }
-
- .profile-default .profile__info {
- grid-column: span 3;
- }
-
- .profile-default .profile__stats {
- padding: 5px 25px;
- }
-
- .profile-default .profile__cta {
- grid-column: span 3;
- }
-}
-
-@media (min-width: 768px) {
- .profile-long {
- grid-template-columns: 150px repeat(3, 1fr) auto;
- grid-template-rows: auto auto;
- width: 100%;
- padding-right: 20px;
- }
-
- .profile-long .profile__image {
- grid-column: 1 / 2;
- grid-row: 1 / 3;
- margin-right: 20px;
- }
-
- .profile-long .profile__image img {
- border-radius: 10px 0 0 10px;
- border: none;
- }
-
- .profile-long .profile__info {
- grid-column: 2 / 6;
- grid-row: 1;
- padding: 20px 20px 15px 0;
- }
-
- .profile-long .profile__stats {
- min-width: 100px;
- padding: 15px 0;
- border-top: 0.5px solid var(--grayColor);
- grid-row: 2 / 3;
- }
-
- .profile-long .profile__stats:nth-child(3) {
- grid-column: 2 / 3;
- }
-
- .profile-long .profile__stats:nth-child(4) {
- grid-column: 3 / 4;
- }
-
- .profile-long .profile__stats:nth-child(5) {
- grid-column: 4 / 5;
- }
-
- .profile-long .profile__cta {
- grid-row: 2 / 3;
- grid-column: 5 / 6;
- border-top: 0.5px solid var(--grayColor);
- padding: 15px 0 0;
- }
-}
-
-.profile-imgonly {
- border-radius: 10px;
- overflow: hidden;
- min-width: 250px;
- width: 100%;
- grid: 480px 0px / 100%;
-}
-
-.profile-imgonly:hover {
- grid: 434px 56px / 100%;
-}
-
-.profile-imgonly .profile__image,
-.profile-imgonly .profile__info {
- grid-row: 1 / 2;
- grid-column: 1 / 2;
-}
-
-.profile-imgonly .profile__image {
- position: relative;
-}
-
-.profile-imgonly .profile__image:after {
- content: '';
- position: absolute;
- bottom: 0;
- left: 0;
- width: 100%;
- height: 30%;
- background: linear-gradient(to top, rgba(0, 0, 0, 0.65), rgba(0, 0, 0, 0));
-}
-
-.profile-imgonly .profile__image img {
- border: none;
-}
-
-.profile-imgonly .profile__stats {
- display: none;
-}
-
-.profile-imgonly .profile__info {
- z-index: 5;
- grid-row: 1 / 2;
- align-self: end;
- margin: 0 0 15px;
- color: #fff;
- text-shadow: 0 1px 4px rgba(0, 0, 0, 0.2);
-}
-
-.profile-imgonly .profile__info p {
- display: none;
-}
-
-.profile-imgonly .profile__cta {
- padding: 0;
-}
-
-.profile-imgonly .profile__cta a {
- border-radius: 0;
-}
-
-#dark:checked~.mainlp a.buttonlp,
-#pinkaru:checked~.mainlp a.buttonlp {
- color: var(--foregroundColor);
- text-shadow: 0 1px 2px rgba(0, 0, 0, 0.1);
-}
-
-#dark:checked~.mainlp .buttonlp:hover,
-#pinkaru:checked~.mainlp .buttonlp:hover {
- background: var(--primaryShade2);
-}
-
-#dark:checked~.mainlp .buttonlp:active,
-#pinkaru:checked~.mainlp .buttonlp:active {
- background: var(--primaryShade1);
-}
-
-#dark:checked~.mainlp .profile-default img,
-#pinkaru:checked~.mainlp .profile-default img {
- border-bottom: 7px solid var(--secondaryShade5);
-}
-
-/*FILTERS*/
-.filters__title {
- font-size: 18px;
- color: var(--grayColor);
- margin: 25px 0;
-}
-
-.filters__item {
- display: grid;
- grid-template-columns: 1fr auto;
- align-items: center;
- margin-bottom: 10px;
-}
-
-.filters__item .checkbox {
- position: relative;
- margin: 0;
-}
-
-.filters__item .checkbox .tooltip {
- display: inline-block;
- margin-left: 10px;
- width: auto;
- vertical-align: middle;
-}
-
-.filters__item .checkbox .tooltip .spanlp {
- border: none;
-}
-
-.filters__item .checkbox .tooltip:after {
- min-width: 100px;
- margin-left: -50px;
-}
-
-.filters:not(:first-of-type) {
- border-top: 0.5px solid var(--lightGrayColor);
- margin-top: 25px;
-}
-
-/* WELL CTA */
-.well-cta {
- border-radius: 10px;
- background: var(--secondaryColor);
- color: var(--foregroundColor);
- overflow: hidden;
-}
-
-.well-cta__text {
- padding: 30px;
-}
-
-.well-cta__text p {
- font-size: 18px;
- line-height: 1.5;
-}
-
-.well-cta__text a {
- margin: 25px 0 0;
-}
-
-.well-cta__image {
- padding: 30px 0 0;
-}
-
-.well-cta img {
- width: 100%;
- max-height: 300px;
- object-fit: contain;
- margin-bottom: -7px;
-}
-
-@media (min-width: 768px) {
- .well-cta {
- display: grid;
- grid: auto / 1fr 250px;
- }
-
- .well-cta__image {
- align-self: flex-end;
- padding: 15px 0 0;
- }
-}
-
-#bluepurple:checked~.mainlp .well-cta__text {
- color: var(--backgroundColor);
-}
-
-.well-cta--form {
- display: grid;
- grid-gap: 10px;
- padding: 30px;
- background: var(--primaryShade1);
- border-radius: 10px;
-}
-
-.well-cta--form__text {
- margin-bottom: 10px;
-}
-
-.well-cta--form h3 {
- color: var(--primaryShade5);
-}
-
-@media (min-width: 768px) {
- .well-cta--form {
- grid-template-columns: 1fr auto;
- }
-
- .well-cta--form__text {
- grid-column: span 2;
- }
-}
-
-/*TABLE*/
-.table {
- background: var(--backgroundColor);
- border-radius: 10px;
-}
-
-.table__wrapper {
- width: 100%;
- overflow-y: hidden;
- overflow-x: auto;
- border-radius: 10px;
- box-shadow: 0 3px 15px rgba(51, 51, 51, 0.2);
-}
-
-.table tr {
- display: grid;
- grid: auto/80px 80px repeat(2, minmax(150px, 2fr)) repeat(2, minmax(120px, 1.5fr)) 50px;
- align-items: center;
-}
-
-.table td {
- padding: 15px;
-}
-
-.table__header {
- color: var(--neutralShade5);
- font-weight: 500;
- text-transform: uppercase;
- border-bottom: 0.5px solid var(--lightGrayColor);
-}
-
-.table__body tr:nth-child(even) {
- background: var(--neutralShade0);
-}
-
-#dark:checked~.mainlp .table__body tr:nth-child(even),
-#pinkaru:checked~.mainlp .table__body tr:nth-child(even) {
- background: var(--neutralShade8);
-}
-
-/*FORMS*/
-.formlogin {
- border-radius: 10px;
- padding: 30px;
- box-shadow: 0 3px 15px rgba(51, 51, 51, 0.2);
- background: var(--backgroundColor);
- margin-top: 30px;
- position: relative;
- overflow: hidden;
-}
-
-.formlogin .checkbox {
- margin-bottom: 30px;
-}
-
-.formlogin .spinner__wrapper {
- display: grid;
- place-items: center;
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- background: rgba(255, 255, 255, 0.85);
- opacity: 0;
- z-index: -1;
-}
-
-@media (min-width: 768px) {
- .formlogin {
- display: grid;
- grid: auto / 1fr 40%;
- }
-
- .formlogin .input__wrapper {
- grid-column: span 2;
- }
-
- .formlogin .checkbox {
- align-self: center;
- margin-bottom: 0;
- }
-}
-
-#dark:checked~.mainlp .spinner__wrapper,
-#pinkaru:checked~.mainlp .spinner__wrapper {
- background: rgba(20, 20, 20, 0.85);
-}
-
-/*COMMENT ITEM*/
-.comment {
- display: grid;
- grid: auto / 60px 1fr;
- grid-gap: 12px;
-}
-
-.comment__image {
- grid-row: 1 / 4;
-}
-
-.comment__image img {
- width: 60px;
- height: 60px;
- object-fit: cover;
- border-radius: 50%;
-}
-
-.comment__info h5 {
- margin-bottom: 0;
-}
-
-.comment__info h5 .spanlp {
- vertical-align: middle;
-}
-
-.comment__info h5 .badge {
- margin-left: 8px;
- font-size: 80%;
-}
-
-.comment__info h5 .badge i {
- font-size: 80%;
- margin-right: 6px;
-}
-
-.comment__info__time {
- color: var(--grayColor);
-}
-
-.comment__reaction i {
- margin-right: 8px;
- font-size: 85%;
-}
-
-.comment__reaction__heart {
- cursor: pointer;
- transition: .3s ease;
-}
-
-.comment__reaction__heart.toggled {
- color: var(--accent3Shade5);
- font-weight: 500;
-}
-
-/*PANEL*/
-.panel {
- display: grid;
- grid: 200px auto min-content / 100%;
- border-radius: 10px;
- overflow: hidden;
- background: var(--backgroundColor);
- box-shadow: 0 3px 15px rgba(51, 51, 51, 0.2);
- max-width: 480px;
- margin: auto;
-}
-
-.panel__image img {
- width: 100%;
- height: 100%;
- object-fit: cover;
-}
-
-.panel__info {
- padding: 30px 30px 20px;
-}
-
-.panel__info h1 {
- margin-bottom: 25px;
-}
-
-.panel__info p {
- font-size: 20px;
- margin: 15px 0;
-}
-
-.panel__info .alert {
- font-weight: 300;
- margin-top: 30px;
-}
-
-.panel__cta {
- padding: 0 30px 30px;
- text-align: center;
-}
-
-footer {
- display: grid;
- grid: min-content / 1fr max-content;
- text-align: left;
- width: 90%;
- margin: 1em auto 4em;
- max-width: 1050px;
- align-items: center;
-}
-
-footer a {
- text-decoration: none;
- color: #333;
- padding: 3px 0;
- border-bottom: 1px dashed;
-}
-
-footer a:hover {
- border-bottom: 1px solid;
-}
-
-footer .social a {
- text-decoration: none;
- margin-left: 10px;
-}
-
-footer .social a .icons {
- display: inline-block;
- font-size: 20px;
-}
-
-footer.dark,
-footer.dark a {
- color: #f9f9f9;
-}
-
-
-
-
-/*typography 2*/
-.logoHR {
- color: #000;
-}
-
-.logoh1wp {
- color: #242331;
-
-}
-
-.logoh1wp h1 {
- font: 700 48px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.logoh1wp h2 {
- font: 700 32px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.logoh1wp h3 {
- font: 700 24px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.logoh1wp h4 {
- font: 700 20px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.logoh1wp h5 {
- font: 500 18px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.logoh1wp h6 {
- font: 500 16px/1.2 "Poppins", sans-serif;
- text-transform: uppercase;
-}
-
-
-.stonglp {
- font-weight: 500;
-}
-
-.emlp {
- font-style: italic;
-}
-
-.h1lp {
- font: 700 48px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.h2lp {
- font: 700 32px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.h3lp {
- font: 700 24px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.h4lp {
- font: 700 20px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.h5lp {
- font: 500 18px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.h6lp {
- font: 500 16px/1.2 "Poppins", sans-serif;
- text-transform: uppercase;
-}
-
-.apierrort {
- font: 700 20px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
-}
-
-.apierrort::first-letter {
- text-transform: uppercase;
-}
-
-
-.coverprc img {
- position: absolute;
- left: 0px;
- top: 0px;
- z-index: 1;
-}
-
-.befcoverprc {
- z-index: 2;
-}
-
-.flex {
- /*Flexbox for containers*/
- display: flex;
- justify-content: center;
- align-items: center;
- text-align: center;
-}
-
-.wavesNav {
-
- bottom: 0;
-
-}
-
-.postNavWaves {
- background-color: #F0F2F5;
- height: 100%;
-}
-
-.waves {
- position: relative;
- z-index: 0;
- width: 100%;
- height: 80vh;
- margin-bottom: -7px;
- /*Fix for safari gap*/
- min-height: 100px;
- max-height: 150px;
-}
-
-
-/* Animation */
-
-.parallax>use {
- animation: move-forever 25s cubic-bezier(.55, .5, .45, .5) infinite;
-}
-
-.parallax>use:nth-child(1) {
- animation-delay: -2s;
- animation-duration: 7s;
-}
-
-.parallax>use:nth-child(2) {
- animation-delay: -3s;
- animation-duration: 10s;
-}
-
-.parallax>use:nth-child(3) {
- animation-delay: -4s;
- animation-duration: 13s;
-}
-
-.parallax>use:nth-child(4) {
- animation-delay: -5s;
- animation-duration: 20s;
-}
-
-@keyframes move-forever {
- 0% {
- transform: translate3d(-90px, 0, 0);
- }
-
- 100% {
- transform: translate3d(85px, 0, 0);
- }
-}
-
-/*Shrinking for mobile*/
-@media (max-width: 768px) {
- .waves {
- height: 40px;
- min-height: 40px;
- }
-
- .content {
- height: 30vh;
- }
-
- h1 {
- font-size: 24px;
- }
-}
-
-
-
-.ClockDashboard {
- float: right;
- font: 700 26px/1.2 "Poppins", sans-serif;
- margin-bottom: 10px;
- margin: 12px;
- z-index: 9999;
-}
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/ycore_sync/pre.js b/.prev/src/@ycore/libs/ycore_sync/pre.js
deleted file mode 100644
index 99b1b55d..00000000
--- a/.prev/src/@ycore/libs/ycore_sync/pre.js
+++ /dev/null
@@ -1,50 +0,0 @@
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import io from 'socket.io-client'
-import config from 'config'
-
-var endpoint = config.sync_server;
-
-
-export const sync = {
- listen: (callback) => {
- let conn_overrun_tick = 0;
- const socket = io(endpoint);
-
- socket.on('connect_error', (error) => {
- conn_overrun_tick ++
- ycore.yconsole.log('Overrun tick => ',conn_overrun_tick)
- if (conn_overrun_tick == 1) {
- antd.notification.open({
- onClose: () => conn_overrun_tick = 0,
- duration: 15,
- message: 'Disconected from server!',
- description: 'Attempting to reconnect...',
- icon: ,
- });
- }
- });
-
- socket.on('connect', () => {
- conn_overrun_tick = 0
- antd.message.success('Connected to the server')
- });
-
- socket.on('pull_event', function (data) {
- console.log('SOCKET => ',data)
- callback(data)
- });
-
- },
- FeedListen: (callback) => {
- const socket = io(endpoint);
- socket.on('pull_event', function (data) {
- callback(data)
- });
- },
- emmitPost: (last_id) => {
- const socket = io(endpoint);
- socket.emit('push_event', last_id);
- }
-}
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/yulio_id/pre.js b/.prev/src/@ycore/libs/yulio_id/pre.js
deleted file mode 100644
index d42c9928..00000000
--- a/.prev/src/@ycore/libs/yulio_id/pre.js
+++ /dev/null
@@ -1,59 +0,0 @@
-import * as ycore from 'ycore'
-import Cookies from 'ts-cookies'
-
-// EXPORT PUBLIC WORKERS
-export * from './token_data.js'
-export * from './ctid_gen.js'
-export * from './validate.js'
-
-export function userData() {
- return ycore.token_data.get()
-}
-
-export const make_data = {
- backup: () => {
- localStorage.setItem('last_backup', Cookies.get('cid'))
- },
-}
-
-export const IsThisUser = {
- admin: () => {
- return ycore.booleanFix(ycore.userData().admin) ? true : false
- },
- dev: () => {
- return ycore.booleanFix(ycore.userData().dev) ? true : false
- },
- pro: () => {
- return ycore.booleanFix(ycore.userData().is_pro) ? true : false
- },
- nsfw: () => {
- return ycore.booleanFix(ycore.userData().nsfw) ? true : false
- },
- same: a => {
- if (a == ycore.userData().UserID) {
- return true
- }
- return false
- },
-}
-
-export const get_early = {
- user: (callback, payload)=>{
- if (!payload) {
- return false
- }
- const { username } = payload
- let formdata = new FormData()
- formdata.append('username', username)
-
- const callOptions = { timeout: 10000 }
- ycore.API_Call(
- (err, res) => {
- return callback(err, res)
- },
- ycore.comty_rsa.endpoint('early_user', {join_token: false}),
- formdata,
- callOptions
- )
- }
-}
\ No newline at end of file
diff --git a/.prev/src/@ycore/libs/yulio_id/token_data.js b/.prev/src/@ycore/libs/yulio_id/token_data.js
deleted file mode 100644
index 75b8d216..00000000
--- a/.prev/src/@ycore/libs/yulio_id/token_data.js
+++ /dev/null
@@ -1,45 +0,0 @@
-import * as ycore from 'ycore'
-
-import Cookies from 'ts-cookies'
-import {server_key} from '../../../../config/keys.js'
-var jwt = require('jsonwebtoken')
-
-export const token_data = {
- set: (value, callback) => {
- jwt.sign(value, server_key, (err, token) => {
- err ? null : Cookies.set('cid', token)
- return callback(true)
- })
- },
- getRaw: () => {
- return Cookies.get('cid')
- },
- get: () => {
- let final =
- jwt.decode(Cookies.get('cid')) ||
- jwt.decode(localStorage.getItem('last_backup'))
- const a = jwt.decode(Cookies.get('cid'))
- const b = jwt.decode(localStorage.getItem('last_backup'))
- if (!a && !b) {
- final = false
- return final
- }
- if (!a) {
- final = b
- }
- if (!b) {
- final = a
- }
- ycore.yconsole.debug(final)
- return final
- },
- remove: () => {
- Cookies.remove('cid')
- },
- __token: () => {
- return ycore.token_data.get().UserToken
- },
- __id: () => {
- return ycore.token_data.get().UserID
- },
-}
diff --git a/.prev/src/@ycore/libs/yulio_id/validate.js b/.prev/src/@ycore/libs/yulio_id/validate.js
deleted file mode 100644
index 7d42aabb..00000000
--- a/.prev/src/@ycore/libs/yulio_id/validate.js
+++ /dev/null
@@ -1,55 +0,0 @@
-import * as ycore from 'ycore'
-import Cookies from 'ts-cookies'
-var jwt = require('jsonwebtoken')
-
-export const validate = {
- session: callback => {
- let validtoken = false
- const a = Cookies.get('cid')
- if (a) {
- const modExp = ycore.AppSettings.SignForNotExpire
- const ad = jwt.decode(a)
-
- let notexp = true // Sets if this is expired (Default is not expired)
- let exists = false // Sets if this exist
-
- ad ? (exists = true) : null
-
- const tokenExp = ad.exp * 1000
- const tokenExpLocale = new Date(tokenExp).toLocaleString()
- const now = new Date().getTime()
-
- ycore.yconsole.log(
- `TOKEN EXP => ${tokenExp} ${
- modExp ? '( Infinite )' : `( ${tokenExpLocale} )`
- } || NOW => ${now}`
- )
-
- if (modExp == false) {
- if (tokenExp < now) {
- ycore.yconsole.log('This token is expired !!!')
- notexp = false
- }
- }
- if (notexp && exists) {
- validtoken = true
- }
- }
-
- if (callback) {
- callback(validtoken)
- }
- return validtoken
- },
- backup: () => {
- let ValidBackupToken = false
- let LastestToken = localStorage.getItem('last_backup')
- if (LastestToken) {
- let LastestTokenDC = jwt.decode(LastestToken)
- if (LastestTokenDC) {
- ValidBackupToken = true
- }
- }
- return ValidBackupToken
- },
-}
diff --git a/.prev/src/@ycore/ycore_worker.js b/.prev/src/@ycore/ycore_worker.js
deleted file mode 100644
index 5b8cb159..00000000
--- a/.prev/src/@ycore/ycore_worker.js
+++ /dev/null
@@ -1,333 +0,0 @@
-/**
- * @yCore_Worker
- *
- * @author rStudio© 2020
- * @licensed Pending...
- */
-
-import * as Endpoints from 'globals/endpoints/index.js'
-import io from 'socket.io-client'
-import * as Icons from '@ant-design/icons'
-import localforage from 'localforage'
-import { format } from 'timeago.js'
-import * as antd from 'antd'
-import moment from 'moment'
-import React from 'react'
-
-import config from 'config'
-import './libs.js'
-
-export * from '../../config/app.settings.js'
-export * from './libs.js'
-
-export var endpoints = Endpoints
-
-export const package_json = require('../../package.json')
-
-export const UUAID = `${package_json.name}==${package_json.UUID}`
-
-export const AppInfo = {
- apid: package_json.name,
- stage: package_json.stage,
- name: package_json.title,
- version: package_json.version,
- logo: config.FullLogoPath,
- logo_dark: config.DarkFullLogoPath,
-}
-
-localforage.config({
- name: UUAID,
- version: 1.0,
- size: 4980736,
- storeName: package_json.name,
-})
-
-
-
-/**
- * Convert a base64 string in a Blob according to the data and contentType.
- *
- * @param b64Data {String} Pure base64 string without contentType
- * @param contentType {String} the content type of the file i.e (image/jpeg - image/png - text/plain)
- * @param sliceSize {Int} SliceSize to process the byteCharacters
- * @return Blob
- */
-export function b64toBlob(b64Data, contentType, sliceSize) {
- contentType = contentType || ''
- sliceSize = sliceSize || 512
-
- var byteCharacters = atob(b64Data)
- var byteArrays = []
-
- for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {
- var slice = byteCharacters.slice(offset, offset + sliceSize)
-
- var byteNumbers = new Array(slice.length)
- for (var i = 0; i < slice.length; i++) {
- byteNumbers[i] = slice.charCodeAt(i)
- }
-
- var byteArray = new Uint8Array(byteNumbers)
-
- byteArrays.push(byteArray)
- }
-
- var blob = new Blob(byteArrays, { type: contentType })
- return blob
-}
-
-/**
- * Convert a file in a B64 string according to the file.
- *
- * @param file {object} Raw File object
- * @return b64 {string}
- */
-export function ReadFileAsB64(file, callback) {
- if (file) {
- var reader = new FileReader()
- reader.onload = function(readerEvt) {
- var binaryString = readerEvt.target.result
- const a = `data:image/png;base64, ${btoa(binaryString)}`
- return callback(a)
- }
- reader.readAsBinaryString(file)
- }
-}
-
-/**
- * Handle temporal file uploads
- *
- * @param file {object} Raw File object
- * @return boolean
- */
-export function uploadFile(file) {
- var formData = new FormData()
- formData.append('userfile', file)
- var request = new XMLHttpRequest()
- request.onload = function() {
- if (request.status == 200) {
- return true
- } else {
- alert('Error! Upload failed')
- }
- }
- request.open('POST', '/temp/file')
- request.send(formData)
-}
-
-/**
- * Return the value of an object from array
- *
- * @param payload {object} data: (array) | key: (string for return the value)
- * @return {string} Boolean value
- */
-export function ReturnValueFromMap(payload) {
- if (!payload) return false
- const { data, key } = payload
- try {
- const a = data.map(item => {
- return item.key === key ? item.value : null
- })
- const b = a.filter(Boolean)
- return b.toString()
- } catch (error) {
- return false
- }
-}
-
-/**
- * (HELPER) Convert the localStorage values (AppSettings) parsed
- *
- * @param e {String} String of SettingID for search
- * @return {string} Boolean value
- */
-export function SettingStoragedValue(e) {
- try {
- const fromStorage = JSON.parse(localStorage.getItem('app_settings'))
- const Ite = fromStorage.map(item => {
- return item.SettingID === e ? item.value : null
- })
- const fr = Ite.filter(Boolean)
- return fr.toString()
- } catch (error) {
- return null
- }
-}
-
-/**
- * Return the last object from array
- *
- * @param array {array}
- * @return object
- */
-export function objectLast(array, n) {
- if (array == null) return void 0
- if (n == null) return array[array.length - 1]
- return array.slice(Math.max(array.length - n, 0))
-}
-
-/**
- * Remove an element by id from an array
- *
- * @param array {array}
- * @param value {string}
- * @return object
- */
-export function arrayRemoveByID(arr, value) {
- return arr.filter(function(ele) {
- return ele.id != value
- })
-}
-
-/**
- * Global fix for convert '1, 0' to string boolean 'true, false'
- *
- * @param e {int} Numeric boolean reference
- * @return {bool} Boolean value
- */
-export function booleanFix(e) {
- if (e == 1) return true
- return false
-}
-
-
-/**
- * Handle time basic functions
- *
- */
-export const time = {
- ago: a => {
- const format = moment(a).format('DDMMYYYY')
- const b = new Date(format).toLocaleString()
- return time.relativeToNow(b)
- },
- stmToAgo: a => {
- const b = a * 1000
- return format(b)
- },
- relativeToNow: (a, b) => {
- return moment(a, b || 'DDMMYYYY').fromNow()
- },
-}
-
-
-/**
- * Framework functionality for show with interface an notification
- *
- */
-const {FieldTimeOutlined} = require('@ant-design/icons')
-export const notify = {
- expire: (...res) => {
- antd.notification.error({
- message: 'Hey ',
- icon: ,
- description: res,
- placement: 'bottomLeft',
- })
- },
- info: (...res) => {
- antd.notification.info({
- message: 'Well',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- exception: (...res) => {
- antd.notification.error({
- message: 'WoW!',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- warn: (...res) => {
- antd.notification.warn({
- message: 'Hey!',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- success: (...res) => {
- antd.notification.success({
- message: 'Well',
- description: res.toString(),
- placement: 'bottomLeft',
- })
- },
- error: (...res) => {
- antd.notification.error({
- message: 'Wopss',
- description: (
-
-
An wild error appear! :
-
-
-
- {res.toString()}
-
-
- ),
- placement: 'bottomLeft',
- })
- },
- proccess: (...res) => {
- antd.notification.open({
- icon: ,
- message: 'Please wait',
- description: {res}
,
- placement: 'bottomLeft',
- })
- },
-}
-
-/**
- * User console with setting user permissions
- *
- * @param ... {any} Use for type of console
- */
-export const yconsole = {
- log: (...cont) => {
- SettingStoragedValue('force_showDevLogs') ? console.log(...cont) : null
- return
- },
- debug: (...cont) => {
- SettingStoragedValue('force_showDevLogs') ? console.debug(...cont) : null
- return
- },
- error: (...cont) => {
- SettingStoragedValue('force_showDevLogs') ? console.error(...cont) : null
- return
- },
- warn: (...cont) => {
- SettingStoragedValue('force_showDevLogs') ? console.warn(...cont) : null
- return
- },
-}
-
-/**
- * Request FullScreen mode
- *
- */
-export function requestFullscreen() {
- var elem = document.documentElement
- if (elem.requestFullscreen) {
- elem.requestFullscreen()
- } else if (elem.mozRequestFullScreen) {
- /* Firefox */
- elem.mozRequestFullScreen()
- } else if (elem.webkitRequestFullscreen) {
- /* Chrome, Safari and Opera */
- elem.webkitRequestFullscreen()
- } else if (elem.msRequestFullscreen) {
- /* IE/Edge */
- elem.msRequestFullscreen()
- }
-}
diff --git a/.prev/src/components/App_about/index.js b/.prev/src/components/App_about/index.js
deleted file mode 100644
index e6c4f280..00000000
--- a/.prev/src/components/App_about/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-
-export default class App_About extends React.Component {
- DetectNoNStableBuild() {
- if (ycore.package_json.DevBuild == false) {
- return Stable
- } else {
- return No Stable
- }
- }
- render() {
- return (
-
-

-
- {ycore.AppInfo.name}
- {ycore.UUAID}
-
- v{ycore.AppInfo.version}
- {ycore.AppInfo.stage}
- {this.DetectNoNStableBuild()}
-
-
- )
- }
-}
diff --git a/.prev/src/components/App_about/index.less b/.prev/src/components/App_about/index.less
deleted file mode 100644
index 5dd1b8b1..00000000
--- a/.prev/src/components/App_about/index.less
+++ /dev/null
@@ -1,18 +0,0 @@
-.aboutWrapper {
- margin: auto;
- max-width: 70vw;
- width: 500px;
- vertical-align: middle;
- position: relative;
- background-color: rgba(73, 72, 72, 0.349);
-
- img {
- width: 100%;
- padding: 15px;
- }
-}
-
-.appName {
- font-family: "Poppins", sans-serif;
- font-size: 27px;
-}
\ No newline at end of file
diff --git a/.prev/src/components/CustomIcons/index.js b/.prev/src/components/CustomIcons/index.js
deleted file mode 100644
index 368614d2..00000000
--- a/.prev/src/components/CustomIcons/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-const VerifiedBadge = () => ()
-const CommonThings = () => ()
-const SunSVG = () => ()
-const MoonSVG = () => ()
-const RobotOutlined = () => ()
-const SavedPost = () => ()
-const SavedPostColor = () => ()
-const SavedPostGrey = () => ()
-const TrendBlue = () => ()
-const CustomIcons = {SavedPostGrey, SavedPostColor, VerifiedBadge, CommonThings, SunSVG, MoonSVG, RobotOutlined, SavedPost}
-export default CustomIcons
diff --git a/.prev/src/components/HeaderSearch/index.js b/.prev/src/components/HeaderSearch/index.js
deleted file mode 100644
index d3aa7ccb..00000000
--- a/.prev/src/components/HeaderSearch/index.js
+++ /dev/null
@@ -1,83 +0,0 @@
-import React, { Component } from 'react'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import styles from './index.less'
-import classnames from 'classnames'
-import * as Icons from '@ant-design/icons'
-
-export const SetHeaderSearchType = {
- disable: () => {
- window.HeaderSearchComponent.setState({ searchidden: true })
- },
- enable: () => {
- window.HeaderSearchComponent.setState({ searchidden: false })
- },
- toPrimary: () => {
- window.HeaderSearchComponent.setState({ framelocation: 'primary' })
- },
- toSecondary: () => {
- window.HeaderSearchComponent.setState({ framelocation: 'secondary' })
- },
-}
-export default class HeaderSearch extends Component {
- constructor(props) {
- super(props)
- window.HeaderSearchComponent = this
- this.state = {
- value: '',
- searchidden: false,
- framelocation: 'primary',
- }
- }
-
- openSearcher = () => {
- const { value } = this.state
- ycore.SecondarySwap.openSearch(value);
- }
-
- sendToSearch = () => {
- const { value } = this.state
- ycore.router.go(`s/${value}`)
- }
-
- onChange = e => {
- const { value } = e.target
- this.setState({ value: value })
- if (ycore.AppSettings.auto_search_ontype == 'true') {
- this.autosend()
- }
- }
-
- autosend = () => {
- let timeout = null
- let input = document.getElementById('search_input')
- input.addEventListener('keyup', e => {
- clearTimeout(timeout)
- timeout = setTimeout(() => {
- const { value } = this.state
- ycore.router.go(`s/${value}`)
- }, 500)
- })
- }
-
- render() {
- const { searchidden } = this.state
- return (
-
-
- }
- placeholder=" Search on Comty..."
- onChange={this.onChange}
- onPressEnter={this.openSearcher}
- />
-
-
- )
- }
-}
diff --git a/.prev/src/components/HeaderSearch/index.less b/.prev/src/components/HeaderSearch/index.less
deleted file mode 100644
index 90ab4950..00000000
--- a/.prev/src/components/HeaderSearch/index.less
+++ /dev/null
@@ -1,78 +0,0 @@
-@import '~themes/index.less';
-
-.HeaderSearchWrapper {
- z-index: 20;
- top: 0;
- display: flex;
- margin: auto;
- max-width: 510px;
- min-width: 265px;
- width: auto;
- height: 50px;
-
- &.hidden {
- display: none;
- }
-}
-
-.headerSearch {
- width: 100%;
- height: 100%;
-
- :global {
- .ant-input-affix-wrapper {
- height: 100%;
- width: 100%;
- display: flex;
-
-
- margin: 0;
- padding: 0;
-
- }
-
- .ant-input-affix-wrapper .ant-input-prefix {
- left: 12px;
- }
-
- .ant-input-affix-wrapper {
- background-color: transparent !important;
- border-color: transparent;
- border-radius: 12px;
- }
-
- .ant-input-affix-wrapper>input.ant-input {
- padding: 0 0 0 30px;
- border: inherit;
- outline: inherit;
- }
-
- .ant-input-affix-wrapper .ant-input-prefix,
- .ant-input-affix-wrapper .ant-input-suffix {
- background-color: transparent !important;
- border-color: transparent;
- border-radius: 12px;
- position: absolute;
- top: 50%;
- z-index: 2;
- display: -ms-flexbox;
- display: flex;
- -ms-flex-align: center;
- align-items: center;
- color: rgba(0, 0, 0, .65);
- line-height: 0;
- -ms-transform: translateY(-50%);
- transform: translateY(-50%);
- color: #9d9da7 !important;
- }
-
- .ant-input {
- border-radius: 12px;
- color: #9D9DA7;
- background-color: #FFFFFF;
- border-color: transparent;
- height: 50px;
- width: 510px;
- }
- }
-}
diff --git a/.prev/src/components/Layout/Control.js b/.prev/src/components/Layout/Control.js
deleted file mode 100644
index f32b462a..00000000
--- a/.prev/src/components/Layout/Control.js
+++ /dev/null
@@ -1,67 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import styles from './Control.less'
-
-import Radium, { StyleRoot } from 'radium'
-import { fadeInUp, bounceOutDown } from 'react-animations'
-const animationStyles = {
- fadeInUp: {
- animation: 'x 0.5s',
- animationName: Radium.keyframes(fadeInUp, 'fadeInUp'),
- },
- bounceOutDown: {
- animation: 'x 1s',
- animationName: Radium.keyframes(bounceOutDown, 'bounceOutDown'),
- },
-}
-
-export function SetControls(e) {
- window.ControlComponent.DummySetControls(e)
- return
-}
-export function CloseControls() {
- window.ControlComponent.DummyCloseControls()
- return
-}
-
-class Control extends React.Component {
- constructor(props) {
- super(props)
- window.ControlComponent = this
- this.state = {
- Show: false,
- FadeIN: true,
- }
- }
- DummySetControls = e => {
- ycore.yconsole.log('Controls recived => ', e)
- if (this.state.Show == false) {
- this.setState({ FadeIN: true })
- }
- this.setState({ Show: true, RenderFragment: e })
- }
- DummyCloseControls() {
- ycore.yconsole.log('Closing Control Bar...')
- this.setState({ FadeIN: false })
- setTimeout(() => this.setState({ Show: false, RenderFragment: null }), 1000)
- }
-
- render() {
- const { RenderFragment, Show, FadeIN } = this.state
- return Show ? (
-
-
-
- ) : null
- }
-}
-export default Control
diff --git a/.prev/src/components/Layout/Control.less b/.prev/src/components/Layout/Control.less
deleted file mode 100644
index c5594496..00000000
--- a/.prev/src/components/Layout/Control.less
+++ /dev/null
@@ -1,26 +0,0 @@
-@import '~themes/index.less';
-
-.ControlCard {
- overflow: hidden;
- background-color: rgba(0, 0, 0, 0.1);
- width: auto;
- max-width: 60%;
- padding: 0 5px 0 5px;
- margin: 0 0 0 50%;
- height: auto;
- position: absolute;
- z-index: 10000;
- bottom: 0;
- text-align: center;
-
- :global {
- .ant-card-body {
- padding: 5px;
- }
-
- .ant-btn {
- background-color: rgba(0, 0, 0, 0.1);
- margin: 3px;
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/components/Layout/Secondary/index.js b/.prev/src/components/Layout/Secondary/index.js
deleted file mode 100644
index c618bd17..00000000
--- a/.prev/src/components/Layout/Secondary/index.js
+++ /dev/null
@@ -1,254 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import styles from './index.less'
-import classnames from 'classnames'
-
-import { __priPost, __secComments, __priSearch, __trendings, __pro } from './renders.js'
-
-export const SwapMode = {
- close: () => {
- SecondaryLayoutComponent.Swapper.close()
- },
- openPost: (a, b) => {
- SecondaryLayoutComponent.setState({
- mode: 'post',
- global_raw: a,
- })
- SecondaryLayoutComponent.Swapper.open()
- },
- openSearch: a => {
- SecondaryLayoutComponent.setState({
- mode: 'search',
- pri_raw: a,
- })
- SecondaryLayoutComponent.Swapper.half()
- },
- openFragment: fragment => {
- SecondaryLayoutComponent.setState({
- mode: 'fragment',
- global_raw: fragment,
- })
- SecondaryLayoutComponent.Swapper.unique()
- }
-}
-
-export default class Secondary extends React.PureComponent {
- constructor(props) {
- super(props),
- window.SecondaryLayoutComponent = this,
- this.state = {
- loading: true,
- half: false,
- swap: false,
- mode: '',
- gen_data: '',
- global_raw: '',
- pri_raw: '',
- sec_raw: '',
- }
- }
-
- Swapper = {
- close: () => {
- this.setState({
- swap: false,
- half: false,
- unique: false,
- pri_raw: null,
- sec_raw: null,
- global_raw: null,
- mode: null,
- })
- },
- open: () => {
- this.setState({
- swap: true,
- half: false,
- unique: false,
- })
- },
- half : () => {
- this.setState({
- swap: false,
- half: true,
- unique: false,
- })
- },
- unique: ()=>{
- this.setState({
- swap: false,
- half: false,
- unique: true,
- })
- }
- }
-
- SwapBalanceContent(container) {
- switch (container) {
- case '__pri': {
- return this.__pri()
- }
- case '__sec': {
- return this.__sec()
- }
- default:
- return null
- }
- }
-
- __pri() {
- const dtraw = this.state.pri_raw
- switch (this.state.mode) {
- case 'post': {
- return this.renderPost(this.state.global_raw)
- }
- case 'search': {
- return this.renderSearch(dtraw)
- }
- case 'fragment': {
- return this.renderFragment()
- }
- default:
- return this.renderMain()
- }
- }
- __sec() {
- const dtraw = this.state.sec_raw
- switch (this.state.mode) {
- case 'post': {
- return this.renderComments(this.state.global_raw)
- }
- default:
- return null
- }
- }
-
- renderSearch = key => {
- const payload = { key: key }
- ycore.comty_search.keywords((err, res) => {
- if (err) {
- ycore.notify.error(err)
- }
- ycore.yconsole.log('Founded entries => ', JSON.parse(res))
- this.setState({ global_raw: res, loading: false })
- }, payload)
- return (
-
-
Results of {key || '... nothing ?'}
- <__priSearch payload={this.state.global_raw} />
-
- )
- }
-
- renderPost = payload => {
- const post_data = JSON.parse(payload)['post_data']
- return <__priPost isMobile={this.props.isMobile} payload={post_data} />
- }
-
- renderComments = payload => {
- try {
- const post_comments = JSON.parse(payload)['post_comments']
- const post_data = JSON.parse(payload)['post_data']
- return (
- <__secComments post_id={post_data.post_id} payload={post_comments} />
- )
- } catch (error) {
- return null
- }
- }
- renderMain = payload => {
- try {
- const trending_data = JSON.parse(this.state.gen_data)['trending_hashtag']
- return(
-
-
- {ycore.IsThisUser.pro()? <__pro /> : <__pro /> }
- <__trendings data={trending_data} />
-
-
-
- )
- } catch (error) {
- return null
- }
-
- }
- renderFragment = () => {
- try {
- const fragment = this.state.global_raw
- return {fragment}
- } catch (error) {
- return null
- }
- }
- componentDidMount(){
- ycore.comty_get.general_data((err,res)=> {
- if (err) return false
- const notification_data = JSON.parse(res)['notifications']
- this.setState({ loading: false, gen_data: res, notification_data: notification_data })
-
- })
- }
-
- render() {
- const { userData, isMobile } = this.props
- if (!this.state.loading) return (
- <>
- {isMobile? null : }
-
- {isMobile? null :
-
-
-
{this.state.notification_data.length}
-
-
![]()
ycore.router.go(`@${userData.username}`)}
- src={userData.avatar}
- />
-
}
-
-
-
-
- {this.state.swap || this.state.half || this.state.unique ? (
-
}
- onClick={() => this.Swapper.close()}
- >
- Back
-
- ) : null}
- {this.SwapBalanceContent('__pri')}
-
-
-
-
- {this.SwapBalanceContent('__sec')}
-
-
-
-
- >
- )
- return null
-
- }
-}
diff --git a/.prev/src/components/Layout/Secondary/index.less b/.prev/src/components/Layout/Secondary/index.less
deleted file mode 100644
index 1c1eab8f..00000000
--- a/.prev/src/components/Layout/Secondary/index.less
+++ /dev/null
@@ -1,230 +0,0 @@
-@import '~themes/index.less';
-
-.__secondary_colider{
- position: relative;
- float: right;
- width: @__secondary_colider_width;
- height: 100vh;
- background-color: @__Global_layout_backgroud;
-}
-
-.secondary_wrapper {
- width: @secondary_wrapper_hidden_width;
- height: 100vh;
-
- z-index: 50;
- position: absolute;
- right: 0;
- top: 0;
- overflow-x: hidden;
-
- display: flex;
-
-
-
- &.active {
- width: @secondary_wrapper_showFull_width;
- >.secondary_container_1 {
- padding: @secondary_container_1_padding;
- }
- //@media (min-width: 1000px) {
- // width: 95.4%
- //}
- }
-
- &.mobile {
- width: 100%;
- height: 0;
- bottom: 0;
- opacity: 0;
-
- top: unset;
- overflow: hidden;
- >.secondary_layout_bg{
- border-radius: 12px 12px 0 0;
- flex-direction: column;
- overflow-y: scroll;
- overflow-x: hidden;
- width: 100%;
- }
- .secondary_container_1{
- height: 85vh;
- width: 100%;
- }
- .secondary_container_2{
- width: 100%;
- padding: 10px 10px 60px 10px;
- border-radius: 12px 12px 0 0;
- }
- :global{
- .comments_body {
- padding: 30px 10px 10px 10px;
- }
- }
-
- &.active {
- opacity: 1;
- bottom: 0;
- height: 100%;
- width: 100%;
- }
- &.half{
- opacity: 1;
- bottom: 0;
- height: 60%;
- width: 100%;
- }
- &.unique {
- opacity: 1;
- bottom: 0;
- height: 100%;
- width: 100%;
- >.secondary_layout_bg {
- background-color: #ffffff;
- padding: 0;
- border-radius: 12px 12px 0 0;
- flex-direction: column;
- overflow-y: scroll;
- overflow-x: hidden;
- width: 100%;
- }
- }
- }
-
- &.half {
- width: @secondary_wrapper_showHalf_width;
- }
- &.unique {
- width: @secondary_wrapper_showFull_width;
- >.secondary_layout_bg {
- background-color: #ffffff;
- padding-right: 90px;
- }
- }
- transition: all @__Global_SwapAnimDuration ease-in-out;
-
-}
-
-.secondary_userholder {
- right: 20px;
- top: 25px;
- display: flex;
- position: absolute;
- z-index: 51;
-
- img {
- border-radius: 15px;
- width: 40px;
- transition: all 150ms linear;
- box-shadow: 0px 0px 0 0px rgba(255, 255, 255, 0);
- }
-
- img:hover {
- box-shadow: 0px 0px 10px 0px rgba(255, 255, 255, 0.205);
- transition: all 150ms linear;
- }
-
- transition: all 150ms linear;
-
- .notif_box {
- margin: 0 15px 0 5px;
- width: 40px;
- height: 40px;
- border-radius: 15px;
- background-color: #78CFED;
- h1{
- line-height: 40px;
- font-size: 16px;
- color: #ffffff;
- text-align: center;
- margin: 0;
- }
- }
-}
-
-.secondary_layout_bg {
- width: 100%;
- height: 100%;
-
- right: 0;
- z-index: 50;
- position: absolute;
- display: flex;
- overflow: hidden;
-
- transition: all @__Global_SwapAnimDuration ease-in-out;
- background-color: @secondary_container_bg_background;
-
- border-radius: @__Global_layout_border-rd;
-}
-
-.secondary_container_1 {
- width: 100%;
- height: 100%;
-
- position: relative;
- padding: 30px 30px 30px 35px;
-
- color: @secondary_container_1_color;
-
- :global {
- .ant-btn {
- color: @secondary_container_1_btn_color;
- background-color: @secondary_container_1_btn_backgroud;
- border-color: transparent;
- border-radius: 12px;
- }
-
- .ant-btn:hover {
- box-shadow: @secondary_container_1_btn_shadow;
- transition: all @__Global_Components_transitions_dur linear;
- }
- }
-}
-
-.secondary_container_2 {
- position: relative;
- height: 100vh;
- width: 0;
- right: -500px;
- padding: @secondaty_container_2_padding;
-
- opacity: 0;
- color: @secondary_container_2_color!important;
- background-color: @secondary_container_2_backgroud;
-
- border-radius: 32px 0 0 32px;
-
- &.active {
- width: 400px;
- opacity: 1;
- right: 0;
- @media (min-width: 1000px) {
- width: 600px
- }
- }
-
- transition: all @__Global_SwapAnimDuration ease-in-out;
-
-}
-
-.renderSearch_wrapper {
- height: 87vh;
- overflow: hidden;
- margin: 20px 0 0 0;
- font-family: @__Global_general_font_family;
- h2 {
- color: #ffffff;
- }
-}
-
-
-.secondary_main{
- margin-top: 45px;
- width: 100%;
-}
-
-
-
-
-
diff --git a/.prev/src/components/Layout/Secondary/renders.js b/.prev/src/components/Layout/Secondary/renders.js
deleted file mode 100644
index 790355b2..00000000
--- a/.prev/src/components/Layout/Secondary/renders.js
+++ /dev/null
@@ -1,336 +0,0 @@
-import React from 'react'
-import styles from './renders.less'
-import { SearchCard } from 'components'
-
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-
-import { MediaPlayer, PostCard } from 'components'
-
-const VerifiedBadge = () => (
-
-)
-
-export class __priPost extends React.Component {
- renderContent(payload) {
- const { id, postText, postFile_full, post_time, publisher } = payload
- const {isMobile}= this.props
- if (!postFile_full) {
- return (
-
- {postText ? (
-
-
{' '}
-
- ) : null}
-
- )
- }
- return (
-
- {postFile_full ?
: null}
- {postText ? (
-
-
{' '}
-
- ) : null}
-
- )
- }
-
- render() {
- const {payload} = this.props
- if (!payload) {
- return This post not exists!!!
- }
- const { id, postText, postFile_full, post_time, publisher } = payload
- return (
-
-
-
-
- {publisher.username}{' '}
- {ycore.booleanFix(publisher.verified) ? (
-
- ) : null}
-
-
- {' '}
- {post_time} {ycore.IsThisUser.dev() ? `| #${id}` : null}{' '}
-
-
-
-
- {this.renderContent(payload)}
-
- )
- }
-}
-
-export class __secComments extends React.Component {
- state = {
- comment_data: this.props.payload,
- raw_comment: '',
- loading: false,
- }
- handleDeleteComment(id) {
- ycore.yconsole.log(`Removing Comment with id => ${id}`)
- ycore.comty_post_comment.delete(
- (err, res) => {
- if (err) {
- return false
- }
- return this.reloadComments()
- },
- { comment_id: id }
- )
- }
- handleNewComment() {
- const { raw_comment } = this.state
- const { post_id } = this.props
- if (raw_comment) {
- const payload = { post_id: post_id, raw_text: raw_comment }
- ycore.comty_post_comment.new((err, res) => {
- if (err) {
- ycore.notify.error('This action could not be performed.', err)
- }
- this.setState({ raw_comment: '' })
- return this.reloadComments()
- }, payload)
- }
- return false
- }
-
- renderComment = a => {
- const { id, time, Orginaltext, publisher } = a
- const CommentMenu = (
-
- this.handleDeleteComment(id)}
- >
- Delete
-
-
- )
- return (
-
-
-

-
- @{publisher.username}{' '}
- {ycore.booleanFix(publisher.verified) ? (
-
- ) : null}
-
-
- e.preventDefault()}
- className={styles.comment_user_ago}
- >
- {ycore.time.stmToAgo(time)}
-
-
-
-
-
- )
- }
- HandleCommentInput = e => {
- const { value } = e.target
- this.setState({ raw_comment: value })
- }
- reloadComments() {
- try {
- this.setState({ loading: true })
- const payload = { post_id: this.props.post_id }
- ycore.comty_post.get((err, res) => {
- const post_comments = JSON.parse(res)['post_comments']
- this.setState({ comment_data: post_comments, loading: false })
- }, payload)
- } catch (error) {
- return false
- }
- }
-
- render() {
- const { comment_data, loading } = this.state
-
- return (
-
-
-
Comments ({comment_data.length})
-
-
- {loading ? (
-
- ) : (
-
this.renderComment(item)}
- />
- )}
-
-
-
-
this.handleNewComment()}
- placeholder="Write a comment..."
- allowClear
- onChange={this.HandleCommentInput}
- />
-
-
-
- )
- }
-}
-
-export class __priSearch extends React.Component {
- renderResult = source => {
- try {
- const Empty = (
-
- )
-
- // TO DO: Settings serach & Post Search
- const usersParsed = JSON.parse(source)['users']
- const groupsParsed = JSON.parse(source)['groups']
- const pagesParsed = JSON.parse(source)['pages']
-
- const users = () => {
- if (usersParsed.length >= 1) {
- ycore.yconsole.log('Users => ', usersParsed)
- return this.EntryComponent('Users', usersParsed)
- }
- }
- const groups = () => {
- if (groupsParsed.length >= 1) {
- ycore.yconsole.log('Groups => ', groupsParsed)
- return this.EntryComponent('Groups', groupsParsed)
- }
- }
- const pages = () => {
- if (pagesParsed.length >= 1) {
- ycore.yconsole.log('Pages => ', pagesParsed)
- return this.EntryComponent('Pages', pagesParsed)
- }
- }
-
- if (
- !usersParsed.length >= 1 &&
- !groupsParsed.length >= 1 &&
- !pagesParsed.length >= 1
- ) {
- return Empty
- }
-
- return [users(), groups(), pages()]
- } catch (error) {
- return (
-
- Render Error
-
- )
- }
- }
- EntryComponent = (t, source) => {
- try {
- return (
-
- {ycore.router.go(`@${item.username}`)}}>
-
-

-
- @{item.username}
- {ycore.booleanFix(item.verified) ? (
-
- ) : null}
-
-
-
-
-
- }
- />
-
- )
- } catch (error) {
- return (
-
- Render Error
-
- )
- }
- }
- render(){
- return(
-
- {this.renderResult(this.props.payload)}
-
- )
- }
-}
-
-export class __trendings extends React.PureComponent {
- render(){
- if (!this.props.data) return false
- return(
-
-
Trending now
-
-
(
-
-
#{item.tag}
-
{item.trend_use_num} Posts
-
)}
- />
-
-
- )
- }
-}
-
-export class __pro extends React.PureComponent {
- render(){
- return(
-
-
- Go Pro!
-
-
Sabias que la frase de kintxi, se hace la que no me conoze se hizo mientras estaba borracho
-
Start now
-
- )
- }
-}
\ No newline at end of file
diff --git a/.prev/src/components/Layout/Secondary/renders.less b/.prev/src/components/Layout/Secondary/renders.less
deleted file mode 100644
index 0018d0c5..00000000
--- a/.prev/src/components/Layout/Secondary/renders.less
+++ /dev/null
@@ -1,356 +0,0 @@
-@import '~themes/index.less';
-
-.SecondaryBody {
- width: 100%;
- height: 100%;
-}
-
-.UserContainer {
- display: flex;
- position: relative;
- float: right;
- z-index: 150;
- transform: translate(0, -40px);
-
- .UserContainer_text {
- margin: 0 8px;
-
- h4 {
- text-align: right;
- }
-
- p {
- word-break: break-all;
- text-align: right;
- font-size: 11px;
- color: #eeeeee !important;
- }
- }
-
-
-}
-
-.postAvatar {
- position: absolute;
- left: -8px;
- top: -8px;
- display: flex;
-}
-
-.titleUser {
- display: flex;
- font-family: 'Poppins', sans-serif;
- margin: 0 0 0 50px;
- color: #ffffff !important;
-}
-
-.textAgo {
- display: flex;
- font-size: 10px;
- margin: 0 0 0 53px;
-}
-
-.PostTags {
- float: right;
- width: 100%;
- z-index: 10;
-
- :global {
- .anticon {
- color: rgb(249, 179, 64);
- float: right;
- margin: -0 6px 0 0;
- ;
- font-size: 17px;
- }
-
- .MoreMenu {
- color: #2d2d2d !important;
- }
- }
-}
-
-.titleWrapper {
- display: flex;
-
- h4 {
- cursor: pointer;
- }
-
- color: #ffffff !important;
-
-}
-
-.contentWrapper {
- margin: auto;
- width: 100%;
- padding: 20px;
-}
-
-
-.postContent {
- word-break: break-all;
- position: absolute;
- vertical-align: bottom;
- border-radius: 7px;
- bottom: 0;
- max-width: 50vw;
-
- background-color: #2d2d2d4b;
- padding: 10px;
-
- h3 {
- font-family: "Poppins", sans-serif;
- color: #ffffff;
- font-weight: 400;
- font-size: 15px;
- letter-spacing: -0.3px;
- }
-}
-
-.postContent_OnlyText {
- padding: 25% 0 0 0;
- position: relative;
- vertical-align: middle;
-
-}
-
-
-.likebtn {
- :global {
- svg {
- color: rgba(0, 0, 0, 0.45);
- }
-
- svg:hover {
- color: rgb(233, 35, 68);
- transition: all 0.2s linear;
- }
- }
-}
-
-.comments_body {
- height: 100%;
- font-family: "Poppins", sans-serif;
- padding: 75px 10px 10px 20px;
-
- .comments_body_title {
- font-size: 12px;
-
- h1 {
- font-weight: 550;
- letter-spacing: 0.01px;
- }
- }
-
- .comments_cards_wrapper {
- z-index: 50;
- overflow: scroll;
- height: 84%;
- :global {
- overflow: scroll;
- }
-
- .comment_card {
- position: relative;
- width: 100%;
- background-color: #ffffff;
- word-break: break-all;
-
- .comment_title {
- display: flex;
-
- img {
- float: left;
- width: 30px;
- height: 30px;
- border-radius: 12px;
- }
-
- .comment_user_username {
- margin: 0 5px 0 8px;
- vertical-align: middle;
- height: 100%;
- color: #2d2d2d;
- line-height: 25px;
- }
-
- .comment_user_ago {
- cursor: pointer;
- position: absolute;
- right: 0;
- text-align: right;
- font-size: 9px;
- }
- }
-
- .comment_text {
- margin: 10px 0 0 0;
- }
-
- }
- }
-
- .comment_box {
- width: 100%;
- bottom: 0;
- right: 0;
- position: absolute;
- z-index: 100;
- background-color: #ffffffd7;
- padding-top: 20px;
- padding-bottom: 60px;
- border-radius: 0 0 0 32px;
-
- .comment_box_body {
- border-radius: 5px;
- width: 85%;
- height: 40px;
- margin: auto;
- background-color: #f8f6f8;
-
- :global {
-
- .ant-input-affix-wrapper,
- .ant-input {
- padding: 4px 5px;
- background-color: transparent;
- border: 0;
- }
- }
- }
- }
-
-}
-
-.search_wrapper{
- color: #ffffff;
- height: 100%;
- width: 82%;
- margin: auto;
- :global{
- .ant-result-title{
- color: @secondary_container_1_color!important;
- }
- .ant-result-subtitle{
- color: @secondary_container_1_color!important;
-
- }
- .ant-list-items{
- height: 82vh;
- overflow: scroll;
- }
- }
-}
-
-.search_card {
- position: relative;
- background-color: rgba(255, 255, 255, 0.034);
- margin: 10px 0 10px 0;
- border-radius: 8px;
- padding: 10px;
- word-break: break-all;
- color: #ffffff;
- cursor: pointer;
-
- .search_title {
- display: flex;
-
- img {
- float: left;
- width: 30px;
- height: 30px;
- border-radius: 12px;
- }
-
- .search_user_username {
- margin: 0 5px 0 8px;
- vertical-align: middle;
- height: 100%;
- color: #ffffff;
- line-height: 25px;
- }
- }
-
- .search_text {
- margin: 10px 0 0 0;
- }
-
-}
-
-.secondary_hastags {
- font-family: @__Global_general_font_family;
- color: #ffffff;
- font-size: 12px;
-
-
- .secondary_hastags_title{
- h2{color: #ffffff;}
- }
-
- .secondary_hastags_body{
- margin: 20px 0 0 0;
- background-color: hsl(0, 0%, 21%);
- border-radius: 12px;
- word-break: break-all;
- padding: 5px 5px 5px 10px;
- height: auto;
-
- .hash{
- margin: 5px 0 3px 0;
- cursor: pointer;
- }
-
- p{
- margin: 0;
- color: #2196F3;
- font-size: 12px;
- max-height: 35px;
- text-overflow: ellipsis;
- white-space: nowrap;
- overflow: hidden;
- }
-
- }
-
-}
-
-
-
-
-.secondary_adv_pro{
- border-radius: 12px;
- // background-color: #ff4d4e;
- background: rgb(255,77,78);
- background: linear-gradient(49deg, rgba(255,77,78,1) 15%, rgba(255,87,56,1) 55%, rgba(255,97,36,1) 73%, rgba(255,105,19,1) 82%, rgba(255,114,0,1) 94%);
-
- margin: 70px 0 30px 0;
- padding: 14px;
-
- width: 100%;
- height: 140px;
-
- h1{
- color: #ffffff;
- font-family: "Poppins", sans-serif;
- font-size: 18px;
- margin-bottom: 0;
- }
- p{
- font-size: 9px;
-
- }
-
- :global{
- .ant-btn{
- vertical-align: bottom;
- border: 0;
- background-color: #d24345a2;
- border-radius: 7px;
- height: 27px;
- padding: 2px 7px;
- font-size: 12px;
- font-weight: 600;
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/components/Layout/Sider/default.js b/.prev/src/components/Layout/Sider/default.js
deleted file mode 100644
index e3f6de52..00000000
--- a/.prev/src/components/Layout/Sider/default.js
+++ /dev/null
@@ -1,107 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-
-import { withI18n, Trans } from '@lingui/react'
-import styles from './default.less'
-import * as ycore from 'ycore'
-import CustomIcons from '../../CustomIcons'
-
-@withI18n()
-export default class Sider_Default extends React.PureComponent {
- render() {
- const { handleClickMenu, logo } = this.props
- return (
-
-
-
-
![]()
ycore.router.go('main')}
- src={logo}
- />
-
-
-
-
-
-
-
-
- Explore
-
-
-
-
-
-
- Saves
-
-
-
-
-
-
-
- Marketplace
-
-
-
-
-
-
-
- Events
-
-
-
-
-
-
-
-
-
-
- Settings
-
-
- {ycore.IsThisUser.dev() ? (
-
-
- Debug
-
- ) : (
- undefined
- )}
-
-
-
-
- Logout
-
-
-
-
-
-
-
-
-
- )
- }
-}
diff --git a/.prev/src/components/Layout/Sider/default.less b/.prev/src/components/Layout/Sider/default.less
deleted file mode 100644
index 35b6478c..00000000
--- a/.prev/src/components/Layout/Sider/default.less
+++ /dev/null
@@ -1,137 +0,0 @@
-@import '~themes/index.less';
-
-
-.left_sider_wrapper {
- border-color: transparent;
- font-size: 13px;
- font-family: @__Global_general_font_family;
- height: 100vh;
- z-index: 40;
- float: left;
- position: relative;
-
- :global {
- .ant-layout-sider {
- background-color: @left_sider_backgroud;
-
- .ant-menu {
- vertical-align: middle;
- margin: 0 0 0 5px;
- }
-
- .ant-menu-item {
- color: @left_sider_color;
- }
-
- .anticon {
- font-size: @left_sider_sizeIcons;
- }
-
- .ant-menu-inline-collapsed,
- .antd-menu-vertical-left,
- .ant-menu-vertical {
- :hover {
- background-color: @left_sider_menu__onhover_backgroud;
- color: @left_sider_menu__onhover_color;
- }
-
- border-right: 0 solid transparent;
- }
- }
- }
-}
-
-
-.left_sider_brandholder {
- cursor: pointer;
-
- img {
- display: flex;
- vertical-align: middle;
- padding: 5px;
- margin: 7px auto 15px auto;
- width: 100%;
- max-height: 58px;
- transform: translate(2px, 0);
- }
-}
-
-.something_thats_pulling_me_down {
- margin: 0 0 12px 0;
- :global {
- text-align: center;
- bottom: 0;
- position: absolute;
- width: 100%;
- .anticon{
- font-size: 15px!important;
- }
- .ant-menu-item{
- height: 35px!important;
- line-height: 0px!important;
- padding: 0!important;
- margin: 0!important;
- }
- }
-}
-
-.left_sider_container {
- border-right: transparent;
- height: 100%;
- z-index: 50;
-}
-
-.left_sider_menuContainer {
- height: 100%;
- margin: 18px 0 8px 0;
-
- overflow-x: hidden;
- flex: 1;
-
- :global {
- .ant-layout-sider-children {
- display: flex;
- flex-direction: column;
- justify-content: space-between;
- }
-
- .ant-layout-sider-collapsed {
- .ant-menu-item {
- left: 0;
- margin: 0;
- padding: 0;
- }
-
- .ant-menu-inline-collapsed>.ant-menu-item {
- padding: 0;
- left: 0;
- }
- }
-
- .ant-menu-inline .ant-menu-item {
- font-family: @__Global_general_font_family;
- }
-
- .ant-menu-dark .ant-menu-item a {
- color: rgb(197, 197, 197);
- }
- }
-}
-
-.left_sider_menuItems {
- background-color: transparent;
- margin-bottom: 8px;
- width: 100%;
- font-weight: 500;
-
- animation: fadein 0.5s;
-
- :global {
- .ant-menu-item {
- padding: 0 !important;
- margin: 2px auto 2px auto;
- width: 100%;
- text-align: center;
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/components/Layout/Sider/index.js b/.prev/src/components/Layout/Sider/index.js
deleted file mode 100644
index bd8b1202..00000000
--- a/.prev/src/components/Layout/Sider/index.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import React from 'react'
-import { config } from 'utils'
-import * as ycore from 'ycore'
-
-import Sider_Mobile from './mobile.js'
-import Sider_Default from './default.js'
-
-class Sider extends React.PureComponent {
-
- onClickFunctions = {
- saves: (e) => {
- this.setState({selectedKey: e})
- ycore.router.go('saves')
- },
- events: (e) => {
- this.setState({selectedKey: e})
- ycore.router.go('events')
- },
- marketplace: (e) => {
- this.setState({selectedKey: e})
- ycore.router.go('marketplace')
- },
- explore: (e) => {
- this.setState({selectedKey: e})
- ycore.router.go('main')
- },
- }
-
- handleClickMenu = e => {
- e.key === 'SignOut' && ycore.app_session.logout()
- e.key === 'general_settings' && ycore.router.go('settings')
- e.key === 'profile' && ycore.router.goprofile()
- e.key === 'saves' && this.onClickFunctions.saves(e.key)
- e.key === 'events' && this.onClickFunctions.events(e.key)
- e.key === 'marketplace' && this.onClickFunctions.marketplace(e.key)
- e.key === 'explore' && this.onClickFunctions.explore(e.key)
- e.key === 'debug_area' && ycore.router.go('__m')
- }
-
- render() {
- const { isMobile } = this.props
- const sider_props = {handleClickMenu: this.handleClickMenu ,logo: config.LogoPath, menulist: null, userData: this.props.userData}
-
- if (isMobile) {
- return
- }
- return
- }
-}
-
-export default Sider
diff --git a/.prev/src/components/Layout/Sider/mobile.js b/.prev/src/components/Layout/Sider/mobile.js
deleted file mode 100644
index cf482c2b..00000000
--- a/.prev/src/components/Layout/Sider/mobile.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-
-import { withI18n, Trans } from '@lingui/react'
-import styles from './mobile.less'
-import * as ycore from 'ycore'
-import CustomIcons from '../../CustomIcons'
-
-@withI18n()
-export default class Sider_Mobile extends React.PureComponent {
- render() {
- const { handleClickMenu, userData } = this.props
- return (
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-}
diff --git a/.prev/src/components/Layout/Sider/mobile.less b/.prev/src/components/Layout/Sider/mobile.less
deleted file mode 100644
index fcc8eb2a..00000000
--- a/.prev/src/components/Layout/Sider/mobile.less
+++ /dev/null
@@ -1,50 +0,0 @@
-@import '~themes/index.less';
-
-
-.left_sider_wrapper {
- overflow: hidden!important;
- position: absolute;
- z-index: 500;
- bottom: 0;
- right: 0;
- left: 0;
-
- height: 50px;
- width: 100%;
-
- border-color: transparent;
- font-size: 13px;
- font-family: @__Global_general_font_family;
- padding: 0 27px;
-
- :global {
- .ant-layout-sider {
- background-color: transparent;
- height: 100%;
-
- .ant-menu-item {color: @left_sider_color;}
- .anticon {font-size: @left_sider_sizeIcons;}
- .ant-menu-item{margin: auto; padding: 0;}
-
- .ant-menu {
- background-color: #2d2d2d;
- height: 100%;
- border-radius: 27px 27px 0 0;
- padding: 0 27px;
- display: flex;
- }
-
- .ant-menu-horizontal {
- line-height: 46px;
- white-space: nowrap;
- border: 0;
- border-bottom: 0;
- box-shadow: none;
- }
- }
- }
-
-
-
-}
-
diff --git a/.prev/src/components/Layout/index.js b/.prev/src/components/Layout/index.js
deleted file mode 100644
index 7ad2e67a..00000000
--- a/.prev/src/components/Layout/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import Sider from './Sider/index.js'
-import Control from './Control'
-import Secondary from './Secondary/index.js'
-
-export { Sider, Control, Secondary }
diff --git a/.prev/src/components/Like_button/index.js b/.prev/src/components/Like_button/index.js
deleted file mode 100644
index 018b53c8..00000000
--- a/.prev/src/components/Like_button/index.js
+++ /dev/null
@@ -1,106 +0,0 @@
-import React from 'react'
-import styles from './index.scss'
-import * as ycore from 'ycore'
-import classnames from 'classnames'
-
-class Like_button extends React.PureComponent {
- constructor(props) {
- super(props),
- this.state = {
- liked: this.props.liked,
- likes: this.props.count,
- type: this.props.liked ? 'dislike' : 'like',
- clicked: false,
- }
- }
-
- SumLike() {
- this.setState({
- likes: parseInt(this.state.likes) + 1,
- type: 'dislike',
- })
- setTimeout(() => {
- this.setState({ liked: true })
- }, 500)
- }
- RestLike() {
- this.setState({
- likes: parseInt(this.state.likes) - 1,
- type: 'like',
- })
- setTimeout(() => {
- this.setState({ liked: false })
- }, 500)
- }
-
- dispatchLike(e) {
- const { type } = this.state
- ycore.yconsole.log(`Dispatch ${type} to post id => ${e}`)
- this.setState({ clicked: true })
- setTimeout(() => {
- this.setState({ clicked: false })
- }, 500)
- const payload = { post_id: e }
- ycore.comty_post.like((err, res) => {
- if (err) {
- ycore.notify.error(res)
- return
- }
- if (type == 'like') {
- this.SumLike()
- }
- if (type == 'dislike') {
- this.RestLike()
- }
- }, payload)
- }
- render() {
- const { id } = this.props
- const { likes, liked, clicked } = this.state
- if (!id) {
- ycore.yconsole.error('[LikeBTN] No post id provided!')
- return null
- }
- return (
-
-
-
- {likes}
-
-
- )
- }
-}
-
-export default Like_button
diff --git a/.prev/src/components/Like_button/index.scss b/.prev/src/components/Like_button/index.scss
deleted file mode 100644
index 2f10bdf9..00000000
--- a/.prev/src/components/Like_button/index.scss
+++ /dev/null
@@ -1,205 +0,0 @@
- .like_button,
- .like_button:before,
- .like_button:after {
- position: relative;
- box-sizing: border-box;
- }
-
- .ripple,
- .ripple:before,
- .ripple:after {
- position: relative;
- box-sizing: border-box;
- }
-
- .btnWrapper {
- display: flex;
- }
-
- .likeCounter {
- font-family: "Poppins", sans-serif;
- line-height: 70px;
- margin: 0 0 0 10px;
-
- opacity: 0;
- transform: perspective(100px) translateZ(10px);
- filter: blur(10px);
- letter-spacing: 0.1em;
-
- &.active {
- opacity: 1;
- transform: perspective(100px) translateZ(0px);
- filter: blur(0px);
- letter-spacing: 0.15em;
- transition: opacity 1000ms linear, transform 1000ms linear, filter 400ms linear, letter-spacing 1000ms linear;
- }
-
- &.past {
- opacity: 0;
- transform: perspective(100px) translateZ(-10px);
- filter: blur(10px);
- letter-spacing: 0.2em;
- transition: opacity 1000ms linear, transform 1000ms linear, filter 400ms linear, letter-spacing 1000ms linear;
- }
-
- }
-
- .like_button {
- --color-heart: #EA442B;
- --easing: cubic-bezier(.7, 0, .3, 1);
- --duration: .5s;
-
- font-size: 40px;
- border: none;
- border-radius: 50%;
- background: white;
- width: 1em;
- height: 1em;
- padding: 0;
- margin: 0;
- outline: none;
- z-index: 2;
- transition: transform var(--duration) var(--easing);
- cursor: pointer;
-
- &:before {
- z-index: -1;
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border-radius: inherit;
- transition: inherit;
- }
-
- &:after {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- background-color: #fff;
- border-radius: inherit;
- z-index: -1;
- }
-
-
-
-
- @keyframes depress {
-
- from,
- to {
- transform: none;
- }
-
- 50% {
- transform: translateY(5%) scale(0.9);
- }
- }
-
- @keyframes depress-shadow {
-
- from,
- to {
- transform: none;
- }
-
- 50% {
- transform: scale(0.5);
- }
- }
- }
-
- .like_wrapper {
- display: grid;
- align-items: center;
- justify-content: center;
- z-index: 1;
-
- >* {
- margin: auto;
- grid-area: 1 / 1;
- }
- }
-
- .heart {
- width: .5em;
- height: .5em;
- display: block;
- transform-origin: center 80%;
-
- >path {
- stroke: var(--color-heart);
- stroke-width: 2;
- transition: fill var(--duration) var(--easing);
- fill: var(--color-heart);
- }
-
- &.empty {
- >path {
- stroke: var(--color-heart);
- stroke-width: 2;
- transition: fill var(--duration) var(--easing);
- fill: transparent;
- }
- }
-
- &.clickanim {
- animation: heart-bounce var(--duration) var(--easing);
-
- @keyframes heart-bounce {
- 40% {
- transform: scale(0.7);
- }
-
- 0%,
- 80%,
- 100% {
- transform: scale(1);
- }
- }
- }
-
- animation: none;
- }
-
- .ripple {
- height: 1em;
- width: 1em;
- border-radius: 50%;
- overflow: hidden;
- z-index: 1;
-
- &:before {
- content: '';
- position: absolute;
- top: 0;
- left: 0;
- width: 100%;
- height: 100%;
- border: .4em solid var(--color-heart);
- border-radius: inherit;
- transform: scale(0);
- }
-
- &.clickanim {
- &:before {
- animation: ripple-out var(--duration) var(--easing);
-
- @keyframes ripple-out {
- from {
- transform: scale(0);
- }
-
- to {
- transform: scale(5);
- }
- }
- }
- }
-
- }
diff --git a/.prev/src/components/Loader/Loader.js b/.prev/src/components/Loader/Loader.js
deleted file mode 100644
index 78f4b8da..00000000
--- a/.prev/src/components/Loader/Loader.js
+++ /dev/null
@@ -1,28 +0,0 @@
-import React from 'react'
-import classNames from 'classnames'
-import styles from './Loader.less'
-
-const Loader = (loading) => {
- return (
-
-
- )
-}
-
-
-export default Loader
diff --git a/.prev/src/components/Loader/Loader.less b/.prev/src/components/Loader/Loader.less
deleted file mode 100644
index 87342ddf..00000000
--- a/.prev/src/components/Loader/Loader.less
+++ /dev/null
@@ -1,118 +0,0 @@
-@import '~themes/index.less';
-
-.wrapper {
- font-family: @__Global_general_font_family;
- color: white;
- line-height: 55px;
- span{
- margin: 0 10px 0 auto;
- }
-
- position: absolute;
- z-index: 1000;
- right: 0;
- bottom: 0;
- width: 140px;
- height: 55px;
- display: flex;
- flex-direction: row;
- justify-content: space-around;
- background-color: #2d2d2dc2;
- border-radius: 28px;
- margin: 10px;
-
-
- &.end {
- animation: unshow 0.8s linear;
- .newloader>div {
- animation: loader 0.8s linear;
- }
- opacity: 0;
- display: none;
- }
-
- .newloader {
- transform: translate(21px,27px) scale(0.3);
- width: 0px;
- height: 0px;
- margin: 0 45px 0 0;
- position: relative;
- }
-
- .newloader>div {
- width: 6px;
- height: 20px;
- position: absolute;
- left: -10px;
- bottom: 15px;
- border-radius: 5px;
- transform-origin: 10px 35px;
- transform: rotate(0deg);
- animation: loader 0.8s infinite;
- }
-
- .newloader>div:nth-child(2) {
- transform: rotate(45deg);
- animation-delay: 0.1s;
- }
-
- .newloader>div:nth-child(3) {
- transform: rotate(90deg);
- animation-delay: 0.2s;
- }
-
- .newloader>div:nth-child(4) {
- transform: rotate(135deg);
- animation-delay: 0.3s;
- }
-
- .newloader>div:nth-child(5) {
- transform: rotate(180deg);
- animation-delay: 0.4s;
- }
-
- .newloader>div:nth-child(6) {
- transform: rotate(225deg);
- animation-delay: 0.5s;
- }
-
- .newloader>div:nth-child(7) {
- transform: rotate(270deg);
- animation-delay: 0.6s;
- }
-
- .newloader>div:nth-child(8) {
- transform: rotate(315deg);
- animation-delay: 0.7s;
- }
-}
-
-@keyframes loader {
- 0% {
- background: transparent;
- left: -10px;
- transform-origin: 10px 35px;
- }
-
- 30% {
- background: #fff;
- }
-
- 100% {
- background: transparent;
- left: 10px;
- transform-origin: -10px 35px;
- }
-}
-
-@keyframes unshow {
- 0% {
- opacity: 1;
- display: block;
- }
-
- 100% {
- opacity: 0;
- display: none;
- }
-}
\ No newline at end of file
diff --git a/.prev/src/components/MainFeed/components/index.js b/.prev/src/components/MainFeed/components/index.js
deleted file mode 100644
index 2042fda5..00000000
--- a/.prev/src/components/MainFeed/components/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import ComponentNewAV from './newav'
-import ComponentInvalid from './invalid'
-import renderFeedPosts from './renderFeedPosts'
-
-export { ComponentNewAV, ComponentInvalid, renderFeedPosts }
\ No newline at end of file
diff --git a/.prev/src/components/MainFeed/components/invalid/index.js b/.prev/src/components/MainFeed/components/invalid/index.js
deleted file mode 100644
index 80f65615..00000000
--- a/.prev/src/components/MainFeed/components/invalid/index.js
+++ /dev/null
@@ -1,24 +0,0 @@
-import { Card } from 'antd'
-import { ExclamationCircleOutlined } from '@ant-design/icons'
-
-const ComponentInvalid = fn => {
- return (
-
-
- Invalid Data
-
-
- If this error has occurred several times, try restarting the app
-
-
- )
-}
-
-export default ComponentInvalid
diff --git a/.prev/src/components/MainFeed/components/invalid/invalid.less b/.prev/src/components/MainFeed/components/invalid/invalid.less
deleted file mode 100644
index e69de29b..00000000
diff --git a/.prev/src/components/MainFeed/components/newav/index.js b/.prev/src/components/MainFeed/components/newav/index.js
deleted file mode 100644
index 214c327c..00000000
--- a/.prev/src/components/MainFeed/components/newav/index.js
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Button } from 'antd'
-import styles from './newav.less'
-const ComponentNewAV = fn => {
- return (
-
-
-
- )
-}
-
-export default ComponentNewAV
\ No newline at end of file
diff --git a/.prev/src/components/MainFeed/components/newav/newav.less b/.prev/src/components/MainFeed/components/newav/newav.less
deleted file mode 100644
index 9e5529d8..00000000
--- a/.prev/src/components/MainFeed/components/newav/newav.less
+++ /dev/null
@@ -1,3 +0,0 @@
-.main_feed_newav{
-
-}
\ No newline at end of file
diff --git a/.prev/src/components/MainFeed/components/renderFeedPosts/index.js b/.prev/src/components/MainFeed/components/renderFeedPosts/index.js
deleted file mode 100644
index 9f24b228..00000000
--- a/.prev/src/components/MainFeed/components/renderFeedPosts/index.js
+++ /dev/null
@@ -1,43 +0,0 @@
-import React from 'react'
-import { PostCard } from 'components'
-import { yconsole } from 'ycore'
-import { Button, List } from 'antd'
-import { DownSquareOutlined } from '@ant-design/icons'
-const renderFeedPosts = payload => {
- const { data, loading, isEnd, feedGet } = payload
- const loadMore =
- !isEnd && !loading ? (
-
- }
- onClick={() => feedGet.more()}
- />
-
- ) : null
- try {
- yconsole.log(data)
- return (
- (
-
- )}
- />
- )
- } catch (err) {
- return false
- }
-}
-
-export default renderFeedPosts
diff --git a/.prev/src/components/MainFeed/index.js b/.prev/src/components/MainFeed/index.js
deleted file mode 100644
index e48e13e0..00000000
--- a/.prev/src/components/MainFeed/index.js
+++ /dev/null
@@ -1,186 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import styles from './index.less'
-
-import { ComponentNewAV, ComponentInvalid, renderFeedPosts } from './components/index.js'
-
-export const RenderFeed = {
- RefreshFeed: () => {
- window.MainFeedComponent.feedGet.first()
- return
- },
- killByID: post_id => {
- window.MainFeedComponent.killByID(post_id)
- return
- },
- addToRend: payload => {
- window.MainFeedComponent.addToRend(payload)
- return
- },
- goToElement: post_id => {
- ycore.goTo.element(post_id)
- },
- disableMenu: () => {
- window.MainFeedComponent.setState({
- disableMenu: true,
- })
- },
- sync: (c) => {
- window.MainFeedComponent.syncService(c)
- return
- }
-}
-class MainFeed extends React.PureComponent {
- constructor(props) {
- super(props)
- window.MainFeedComponent = this
- this.state = {
- NewAV: false,
- invalid: false,
- loading: false,
- disableMenu: false,
- data: [],
- fkey: 0,
- }
- }
-
- componentDidMount() {
- this.feedGet.first()
- ycore.sync.FeedListen((data) => {
- this.syncService(data)
- })
- }
-
- toogleLoader() {
- this.setState({ loading: !this.state.loading })
- }
-
- syncService(data){
- if (!data) return false
- const { last_post_id, now } = data
- const first = this.state.data[0]
- if (first){
- const a = first.id
- console.log(` SYNC => ${last_post_id} | LAST => ${a}`)
- if(last_post_id>a){
- this.setState({ NewAV: true })
- }
- }
- }
-
- killByID(post_id) {
- const a = this.state.data
- const b = ycore.arrayRemoveByID(a, post_id)
- this.setState({ data: b })
- }
-
- addToRend(payload) {
- let a = this.state.data
- a.unshift(payload)
- this.setState({ data: a })
- }
-
- feedGet = {
- first: ()=>{
- try {
- const { get, uid, filters } = this.props
- if (this.props.custompayload) {
- this.setState({
- isEnd: true,
- NewAV: false,
- data: this.props.custompayload,
- loading: false,
- })
- return
- }
- if (!get) {
- ycore.yconsole.error('Please, fill params with an catch type...')
- return
- }
- this.toogleLoader()
- const payload = { fkey: 0, type: get, id: uid }
- ycore.comty_post.getFeed((err, res) => {
- if (err) {
- ycore.notify.error('Error when get data from this input')
- return
- }
- if (JSON.parse(res).api_status == '400') {
- this.setState({ invalid: true })
- return
- }
- try {
- const parsed = JSON.parse(res)['data']
- const isEnd =parsed.length < ycore.AppSettings.limit_post_catch ? true : false
- this.setState({ NewAV: false, isEnd: isEnd, data: parsed, loading: false })
- } catch (error) {
- ycore.yconsole.log(error)
- }
- }, payload)
- } catch (err) {
- ycore.notify.error('err')
- }
- },
- more(fkey){
- try {
- const { get, uid, filters } = this.props
- if (!get) {
- ycore.yconsole.error('Please, fill params with an catch type...')
- return
- }
- if (!fkey) {
- ycore.yconsole.warn(
- 'Please, provide a fkey for offset the feed, default using => 0'
- )
- }
- this.toogleLoader()
- const getLastPost = ycore.objectLast(this.state.data)
- ycore.yconsole.log('LAST POST ID =>', getLastPost.id)
-
- const payload = { fkey: getLastPost.id, type: get, id: uid }
- ycore.comty_post.getFeed((err, res) => {
- if (err) {
- return false
- }
- const oldData = this.state.data
- const parsed = JSON.parse(res)['data']
- const mix = oldData.concat(parsed)
- const isEnd =
- parsed.length < ycore.AppSettings.limit_post_catch ? true : false
- this.setState({ isEnd: isEnd, data: mix, loading: false }, () =>
- ycore.goTo.element(getLastPost.id)
- )
- return true
- }, payload)
- } catch (err) {
- ycore.notify.error(err)
- }
- }
- }
-
-
- render() {
- const { data, loading, isEnd, invalid, NewAV } = this.state
- const renderFeedPosts_payload = {data: data, loading: loading, isEnd: isEnd, feedGet: this.feedGet}
-
- if (invalid){
- return ComponentInvalid()
- }
- if (loading) {
- return (
-
-
-
- )
- }
- if (!loading) {
- return (
-
- {NewAV? ComponentNewAV(() => this.feedGet.first()) : null}
- {renderFeedPosts(renderFeedPosts_payload)}
-
- )
- }
- }
-}
-export default MainFeed
diff --git a/.prev/src/components/MainFeed/index.less b/.prev/src/components/MainFeed/index.less
deleted file mode 100644
index 599b9120..00000000
--- a/.prev/src/components/MainFeed/index.less
+++ /dev/null
@@ -1,4 +0,0 @@
-.main_feed_wrapper{
- scroll-behavior: smooth;
-
-}
diff --git a/.prev/src/components/MediaPlayer/index.js b/.prev/src/components/MediaPlayer/index.js
deleted file mode 100644
index 3854396b..00000000
--- a/.prev/src/components/MediaPlayer/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from 'react'
-import classnames from 'classnames'
-import styles from './index.less'
-
-export default class MediaPlayer extends React.PureComponent {
- player() {
- const { file } = this.props
- let type
-
- const ImageExtensions = ['.png', '.jpg', '.jpeg', '.gif']
- const VideoExtensions = ['.mp4', '.mov', '.avi']
- const AudioExtensions = ['.mp3', '.ogg', '.wav']
-
- const FilesAllowed = ImageExtensions.concat(
- VideoExtensions,
- AudioExtensions
- )
-
- for (const prop in FilesAllowed) {
- if (file.includes(`${ImageExtensions[prop]}`)) {
- type = 'image'
- }
- if (file.includes(`${VideoExtensions[prop]}`)) {
- type = 'video'
- }
- if (file.includes(`${AudioExtensions[prop]}`)) {
- type = 'audio'
- }
- }
-
- if (type == 'video') {
- // const payload = {type: 'video', sources: [{src: file,}]}
- // return (
- //
- // )
- return (
-
- )
- }
- if (type == 'audio') {
- return (
-
- )
- }
- if (type == 'image') {
- return
- }
- }
- render() {
- return (
-
- {this.player()}
-
- )
- }
-}
diff --git a/.prev/src/components/MediaPlayer/index.less b/.prev/src/components/MediaPlayer/index.less
deleted file mode 100644
index 6478f35f..00000000
--- a/.prev/src/components/MediaPlayer/index.less
+++ /dev/null
@@ -1,80 +0,0 @@
-.PlayerContainer {
- width: 100%;
-
- img {
- width: 100%;
- overflow: hidden;
- margin: auto;
- }
-
- video {
- max-height: 600px;
- width: 100%;
- overflow: hidden;
- }
-
- audio {
- width: 100%;
- }
-
-
- &.entire {
- max-width: 52vw;
- max-height: 80vh;
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-70%, -50%);
-
- img {
- object-fit: contain;
- height: 100%;
- width: 100%;
- max-width: 52vw;
- max-height: 80vh;
- }
-
- audio {
- height: 100%;
- width: 100%;
- }
-
- video {
- object-fit: contain;
- height: 100%;
- width: 100%;
- max-width: 52vw;
- max-height: 80vh;
- }
- }
-
- &.mobile {
- max-width: 52vw;
- max-height: 80vh;
- position: fixed;
- top: 50%;
- left: 50%;
- transform: translate(-50%, -50%);
-
- img {
- object-fit: contain;
- height: 100%;
- width: 100%;
- max-width: 52vw;
- max-height: 80vh;
- }
-
- audio {
- height: 100%;
- width: 100%;
- }
-
- video {
- object-fit: contain;
- height: 100%;
- width: 100%;
- max-width: 52vw;
- max-height: 80vh;
- }
- }
-}
diff --git a/.prev/src/components/MediaPlayer/plyr.js b/.prev/src/components/MediaPlayer/plyr.js
deleted file mode 100644
index 6a65adfa..00000000
--- a/.prev/src/components/MediaPlayer/plyr.js
+++ /dev/null
@@ -1,134 +0,0 @@
-"use strict";
-
-function e(e) {
- return e && "object" == typeof e && "default" in e ? e.default : e
-}
-Object.defineProperty(exports, "__esModule", {
- value: !0
-});
-var t = e(require("react")),
- n = e(require("plyr"));
-
-function o(e, t) {
- if (!(e instanceof t)) throw new TypeError("Cannot call a class as a function")
-}
-
-function i(e, t) {
- for (var n = 0; n < t.length; n++) {
- var o = t[n];
- o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, o.key, o)
- }
-}
-
-function r(e) {
- return (r = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (e) {
- return typeof e
- } : function (e) {
- return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : typeof e
- })(e)
-}
-
-function c(e) {
- return (c = "function" == typeof Symbol && "symbol" === r(Symbol.iterator) ? function (e) {
- return r(e)
- } : function (e) {
- return e && "function" == typeof Symbol && e.constructor === Symbol && e !== Symbol.prototype ? "symbol" : r(e)
- })(e)
-}
-
-function s(e, t) {
- return !t || "object" !== c(t) && "function" != typeof t ? function (e) {
- if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- return e
- }(e) : t
-}
-
-function a(e) {
- return (a = Object.setPrototypeOf ? Object.getPrototypeOf : function (e) {
- return e.__proto__ || Object.getPrototypeOf(e)
- })(e)
-}
-
-function l(e, t) {
- return (l = Object.setPrototypeOf || function (e, t) {
- return e.__proto__ = t, e
- })(e, t)
-}
-require("plyr/dist/plyr.css");
-! function (e, t) {
- void 0 === t && (t = {});
- var n = t.insertAt;
- if (e && "undefined" != typeof document) {
- var o = document.head || document.getElementsByTagName("head")[0],
- i = document.createElement("style");
- i.type = "text/css", "top" === n && o.firstChild ? o.insertBefore(i, o.firstChild) : o.appendChild(i), i.styleSheet ? i.styleSheet.cssText = e : i.appendChild(document.createTextNode(e))
- }
-}('.yjs-plyr{width: 100%!important;position:relative;background-color:#4caf50;border:none;font-size:28px;color:#fff;padding:20px;width:200px;text-align:center;-webkit-transition-duration:.4s;transition-duration:.4s;text-decoration:none;overflow:hidden;cursor:pointer;box-shadow:0 8px 16px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.PlyrComponent:after{content:"";background:#f1f1f1;display:block;position:absolute;padding-top:300%;padding-left:350%;margin-left:-20px!important;margin-top:-120%;opacity:0;transition:all .8s}.PlyrComponent:active:after{padding:0;margin:0;opacity:1;transition:0s}\n/*# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlcy5jc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFDRSxpQkFBa0IsQ0FDbEIsd0JBQXlCLENBQ3pCLFdBQVksQ0FDWixjQUFlLENBQ2YsVUFBYyxDQUNkLFlBQWEsQ0FDYixXQUFZLENBQ1osaUJBQWtCLENBQ2xCLCtCQUFpQyxDQUNqQyx1QkFBeUIsQ0FDekIsb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLGNBQWUsQ0FDZixtRUFDRixDQUVBLHFCQUNFLFVBQVcsQ0FDWCxrQkFBbUIsQ0FDbkIsYUFBYyxDQUNkLGlCQUFrQixDQUNsQixnQkFBaUIsQ0FDakIsaUJBQWtCLENBQ2xCLDJCQUE2QixDQUM3QixnQkFBaUIsQ0FDakIsU0FBVSxDQUNWLGtCQUNGLENBRUEsNEJBQ0UsU0FBVSxDQUNWLFFBQVMsQ0FDVCxTQUFVLENBQ1YsYUFDRiIsImZpbGUiOiJzdHlsZXMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLlBseXJDb21wb25lbnQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICM0Q0FGNTA7XG4gIGJvcmRlcjogbm9uZTtcbiAgZm9udC1zaXplOiAyOHB4O1xuICBjb2xvcjogI0ZGRkZGRjtcbiAgcGFkZGluZzogMjBweDtcbiAgd2lkdGg6IDIwMHB4O1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIC13ZWJraXQtdHJhbnNpdGlvbi1kdXJhdGlvbjogMC40czsgLyogU2FmYXJpICovXG4gIHRyYW5zaXRpb24tZHVyYXRpb246IDAuNHM7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBib3gtc2hhZG93OiAwIDhweCAxNnB4IDAgcmdiYSgwLDAsMCwwLjIpLCAwIDZweCAyMHB4IDAgcmdiYSgwLDAsMCwwLjE5KTtcbn1cblxuLlBseXJDb21wb25lbnQ6YWZ0ZXIge1xuICBjb250ZW50OiBcIlwiO1xuICBiYWNrZ3JvdW5kOiAjZjFmMWYxO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBwYWRkaW5nLXRvcDogMzAwJTtcbiAgcGFkZGluZy1sZWZ0OiAzNTAlO1xuICBtYXJnaW4tbGVmdDogLTIwcHggIWltcG9ydGFudDtcbiAgbWFyZ2luLXRvcDogLTEyMCU7XG4gIG9wYWNpdHk6IDA7XG4gIHRyYW5zaXRpb246IGFsbCAwLjhzXG59XG5cbi5QbHlyQ29tcG9uZW50OmFjdGl2ZTphZnRlciB7XG4gIHBhZGRpbmc6IDA7XG4gIG1hcmdpbjogMDtcbiAgb3BhY2l0eTogMTtcbiAgdHJhbnNpdGlvbjogMHNcbn1cbiJdfQ== */');
-var u = function (e) {
- function r() {
- return o(this, r), s(this, a(r).apply(this, arguments))
- }
- var c, u, p;
- return function (e, t) {
- if ("function" != typeof t && null !== t) throw new TypeError("Super expression must either be null or a function");
- e.prototype = Object.create(t && t.prototype, {
- constructor: {
- value: e,
- writable: !0,
- configurable: !0
- }
- }), t && l(e, t)
- }(r, t.Component), c = r, (u = [{
- key: "componentDidMount",
- value: function () {
- this.player = new n(".yjs-plyr", this.props.options), this.player.source = this.props.sources
- }
- }, {
- key: "componentWillUnmount",
- value: function () {
- this.player.destroy()
- }
- }, {
- key: "render",
- value: function () {
- return t.createElement("video", {
- className: "yjs-plyr plyr"
- })
- }
- }]) && i(c.prototype, u), p && i(c, p), r
-}();
-u.defaultProps = {
- options: {
- controls: ["rewind", "play", "fast-forward", "progress", "current-time", "duration", "mute", "volume", "settings", "fullscreen"],
- i18n: {
- restart: "Restart",
- rewind: "Rewind {seektime}s",
- play: "Play",
- pause: "Pause",
- fastForward: "Forward {seektime}s",
- seek: "Seek",
- seekLabel: "{currentTime} of {duration}",
- played: "Played",
- buffered: "Buffered",
- currentTime: "Current time",
- duration: "Duration",
- volume: "Volume",
- mute: "Mute",
- unmute: "Unmute",
- enableCaptions: "Enable captions",
- disableCaptions: "Disable captions",
- download: "Download",
- enterFullscreen: "Enter fullscreen",
- exitFullscreen: "Exit fullscreen",
- frameTitle: "Player for {title}",
- captions: "Captions",
- settings: "Settings",
- menuBack: "Go back to previous menu",
- speed: "Speed",
- normal: "Normal",
- quality: "Quality",
- loop: "Loop"
- }
- },
-
-}, exports.PlyrComponent = u;
\ No newline at end of file
diff --git a/.prev/src/components/MobileWarning/index.js b/.prev/src/components/MobileWarning/index.js
deleted file mode 100644
index 880bd85a..00000000
--- a/.prev/src/components/MobileWarning/index.js
+++ /dev/null
@@ -1,48 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import store from 'store'
-import * as antd from 'antd'
-
-export default class MobileWarning extends React.PureComponent {
- state = {
- resbypass: store.get('resbypass') || false,
- }
-
- ResByPassHandler = () => {
- this.setState({ resbypass: true })
- }
-
- render() {
- const { resbypass } = this.state
-
- if (resbypass == false) {
- return (
-
-
-
- This version of the application is not fully compatible with
- the resolution of this screen, a higher resolution is
- recommended for an optimal experience
-
- Please choose an option to continue
-
-
- this.ResByPassHandler()}
- >
- Continue
-
-
- }
- />
-
- )
- }
- return null
- }
-}
diff --git a/.prev/src/components/MobileWarning/index.less b/.prev/src/components/MobileWarning/index.less
deleted file mode 100644
index 62ea91e1..00000000
--- a/.prev/src/components/MobileWarning/index.less
+++ /dev/null
@@ -1,18 +0,0 @@
-.mobilewarning {
- background-color: rgba(0, 0, 0, 0.975);
- color: white;
- width: 100%;
- position: absolute;
- top: 0;
- bottom: 0;
- z-index: 100000;
- display: flex;
- justify-content: center;
- text-align: center;
-
- :global {
- .ant-result-title {
- color: white;
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/components/PageTransition/animations.js b/.prev/src/components/PageTransition/animations.js
deleted file mode 100644
index 236f577c..00000000
--- a/.prev/src/components/PageTransition/animations.js
+++ /dev/null
@@ -1,780 +0,0 @@
-import { keyframes } from 'styled-components'
-
-export default {
- moveToLeft: {
- keyframes: keyframes`
- from { }
- to { transform: translateX(-100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveFromLeft: {
- keyframes: keyframes`
- from { transform: translateX(-100%) };
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveToRight: {
- keyframes: keyframes`
- from { }
- to { transform: translateX(100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveFromRight: {
- keyframes: keyframes`
- from { transform: translateX(100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveToTop: {
- keyframes: keyframes`
- from { }
- to { transform: translateY(-100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveFromTop: {
- keyframes: keyframes`
- from { transform: translateY(-100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveToBottom: {
- keyframes: keyframes`
- from { }
- to { transform: translateY(100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveFromBottom: {
- keyframes: keyframes`
- from { transform: translateY(100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- fade: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveToLeftFade: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateX(-100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- moveFromLeftFade: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateX(-100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- moveToRightFade: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateX(100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- moveFromRightFade: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateX(100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- moveToTopFade: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateY(-100%); }
- `,
- duration: 600,
- timing: 'ease',
- fill: 'both',
- },
- moveFromTopFade: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateY(-100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- moveToBottomFade: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateY(100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- moveFromBottomFade: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateY(100%); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- scaleDown: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: scale(0.8); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- scaleUp: {
- keyframes: keyframes`
- from { opacity: 0; transform: scale(0.8); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- },
- scaleUpDown: {
- keyframes: keyframes`
- from { opacity: 0; transform: scale(1.2); }
- `,
- duration: 500,
- timing: 'ease',
- fill: 'both',
- },
- scaleDownUp: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: scale(1.2); }
- `,
- duration: 500,
- timing: 'ease',
- fill: 'both',
- },
- scaleDownCenter: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: scale(0.7); }
- `,
- duration: 400,
- timing: 'ease',
- fill: 'both',
- },
- scaleUpCenter: {
- keyframes: keyframes`
- from { opacity: 0; transform: scale(0.7); }
- `,
- duration: 400,
- timing: 'ease',
- fill: 'both',
- },
- rotateRightSideFirst: {
- keyframes: keyframes`
- 0% { }
- 40% { transform: rotateY(15deg); opacity: 0.8; animation-timing-function: ease-out; }
- 100% { transform: scale(0.8) translateZ(-200px); opacity:0; }
- `,
- duration: 800,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateLeftSideFirst: {
- keyframes: keyframes`
- 0% { }
- 40% { transform: rotateY(-15deg); opacity: 0.8; animation-timing-function: ease-out; }
- 100% { transform: scale(0.8) translateZ(-200px); opacity:0; }
- `,
- duration: 800,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateTopSideFirst: {
- keyframes: keyframes`
- 0% { }
- 40% { transform: rotateX(15deg); opacity: 0.8; animation-timing-function: ease-out; }
- 100% { transform: scale(0.8) translateZ(-200px); opacity:0; }
- `,
- duration: 800,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateBottomSideFirst: {
- keyframes: keyframes`
- 0% { }
- 40% { transform: rotateX(-15deg); opacity: 0.8; animation-timing-function: ease-out; }
- 100% {transform: scale(0.8) translateZ(-200px); opacity:0; }
- `,
- duration: 800,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 50%',
- },
- flipOutRight: {
- keyframes: keyframes`
- from { }
- to { transform: translateZ(-1000px) rotateY(90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 50%',
- },
- flipInLeft: {
- keyframes: keyframes`
- from { transform: translateZ(-1000px) rotateY(-90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-out',
- fill: 'both',
- origin: '50% 50%',
- },
- flipOutLeft: {
- keyframes: keyframes`
- from { }
- to { transform: translateZ(-1000px) rotateY(-90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 50%',
- },
- flipInRight: {
- keyframes: keyframes`
- from { transform: translateZ(-1000px) rotateY(90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-out',
- fill: 'both',
- origin: '50% 50%',
- },
- flipOutTop: {
- keyframes: keyframes`
- from { }
- to { transform: translateZ(-1000px) rotateX(90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 50%',
- },
- flipInBottom: {
- keyframes: keyframes`
- from { transform: translateZ(-1000px) rotateX(-90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-out',
- fill: 'both',
- origin: '50% 50%',
- },
- flipOutBottom: {
- keyframes: keyframes`
- from { }
- to { transform: translateZ(-1000px) rotateX(-90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 50%',
- },
- flipInTop: {
- keyframes: keyframes`
- from { transform: translateZ(-1000px) rotateX(90deg); opacity: 0.2; }
- `,
- duration: 500,
- timing: 'ease-out',
- fill: 'both',
- origin: '50% 50%',
- },
- rotateFall: {
- keyframes: keyframes`
- 0% { transform: rotateZ(0deg); }
- 20% { transform: rotateZ(10deg); animation-timing-function: ease-out; }
- 40% { transform: rotateZ(17deg); }
- 60% { transform: rotateZ(16deg); }
- 100% { transform: translateY(100%) rotateZ(17deg); }
- `,
- duration: 1000,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 0%',
- },
- rotateOutNewspaper: {
- keyframes: keyframes`
- from { }
- to { transform: translateZ(-3000px) rotateZ(360deg); opacity: 0; }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 50%',
- },
- rotateInNewspaper: {
- keyframes: keyframes`
- from { transform: translateZ(-3000px) rotateZ(-360deg); opacity: 0; }
- `,
- duration: 500,
- timing: 'ease-out',
- fill: 'both',
- origin: '50% 50%',
- },
- rotatePushLeft: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: rotateY(90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotatePushRight: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: rotateY(-90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotatePushTop: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: rotateX(-90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotatePushBottom: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: rotateX(90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotatePullRight: {
- keyframes: keyframes`
- from { opacity: 0; transform: rotateY(-90deg); }
- `,
- duration: 500,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotatePullLeft: {
- keyframes: keyframes`
- from { opacity: 0; transform: rotateY(90deg); }
- `,
- duration: 500,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotatePullTop: {
- keyframes: keyframes`
- from { opacity: 0; transform: rotateX(-90deg); }
- `,
- duration: 500,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotatePullBottom: {
- keyframes: keyframes`
- from { opacity: 0; transform: rotateX(90deg); }
- `,
- duration: 500,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateFoldRight: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: translateX(100%) rotateY(90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateFoldLeft: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: translateX(-100%) rotateY(-90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateFoldTop: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: translateY(-100%) rotateX(90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateFoldBottom: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: translateY(100%) rotateX(-90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateUnfoldLeft: {
- keyframes: keyframes`
- from { opacity: 0; transform: translateX(-100%) rotateY(-90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateUnfoldRight: {
- keyframes: keyframes`
- from { opacity: 0; transform: translateX(100%) rotateY(90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateUnfoldTop: {
- keyframes: keyframes`
- from { opacity: 0; transform: translateY(-100%) rotateX(90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateUnfoldBottom: {
- keyframes: keyframes`
- from { opacity: 0; transform: translateY(100%) rotateX(-90deg); }
- `,
- duration: 700,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateRoomLeftOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateX(-100%) rotateY(90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateRoomLeftIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateX(100%) rotateY(-90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateRoomRightOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateX(100%) rotateY(-90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateRoomRightIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateX(-100%) rotateY(90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateRoomTopOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateY(-100%) rotateX(-90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateRoomTopIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateY(100%) rotateX(90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateRoomBottomOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateY(100%) rotateX(90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateRoomBottomIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateY(-100%) rotateX(-90deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateCubeLeftOut: {
- keyframes: keyframes`
- 0% { }
- 50% { animation-timing-function: ease-out; transform: translateX(-50%) translateZ(-200px) rotateY(-45deg); }
- 100% { opacity: 0.3; transform: translateX(-100%) rotateY(-90deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateCubeLeftIn: {
- keyframes: keyframes`
- 0% { opacity: 0.3; transform: translateX(100%) rotateY(90deg); }
- 50% { animation-timing-function: ease-out; transform: translateX(50%) translateZ(-200px) rotateY(45deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateCubeRightOut: {
- keyframes: keyframes`
- 0% { }
- 50% { animation-timing-function: ease-out; transform: translateX(50%) translateZ(-200px) rotateY(45deg); }
- 100% { opacity: 0.3; transform: translateX(100%) rotateY(90deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateCubeRightIn: {
- keyframes: keyframes`
- 0% { opacity: 0.3; transform: translateX(-100%) rotateY(-90deg); }
- 50% { animation-timing-function: ease-out; transform: translateX(-50%) translateZ(-200px) rotateY(-45deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateCubeTopOut: {
- keyframes: keyframes`
- 0% {}
- 50% { animation-timing-function: ease-out; transform: translateY(-50%) translateZ(-200px) rotateX(45deg); }
- 100% { opacity: 0.3; transform: translateY(-100%) rotateX(90deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateCubeTopIn: {
- keyframes: keyframes`
- 0% { opacity: 0.3; transform: translateY(100%) rotateX(-90deg); }
- 50% { animation-timing-function: ease-out; transform: translateY(50%) translateZ(-200px) rotateX(-45deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateCubeBottomOut: {
- keyframes: keyframes`
- 0% { }
- 50% { animation-timing-function: ease-out; transform: translateY(50%) translateZ(-200px) rotateX(-45deg); }
- 100% { opacity: 0.3; -webkit-transform: translateY(100%) rotateX(-90deg); transform: translateY(100%) rotateX(-90deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateCubeBottomIn: {
- keyframes: keyframes`
- 0% { opacity: 0.3; -webkit-transform: translateY(-100%) rotateX(90deg); transform: translateY(-100%) rotateX(90deg); }
- 50% { animation-timing-function: ease-out; transform: translateY(-50%) translateZ(-200px) rotateX(45deg); }
- `,
- duration: 600,
- timing: 'ease-in',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateCarouselLeftOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateX(-150%) scale(0.4) rotateY(-65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateCarouselLeftIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateX(200%) scale(0.4) rotateY(65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateCarouselRightOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateX(200%) scale(0.4) rotateY(65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '0% 50%',
- },
- rotateCarouselRightIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateX(-200%) scale(0.4) rotateY(-65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '100% 50%',
- },
- rotateCarouselTopOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateY(-200%) scale(0.4) rotateX(65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateCarouselTopIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateY(200%) scale(0.4) rotateX(-65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateCarouselBottomOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0.3; transform: translateY(200%) scale(0.4) rotateX(-65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 0%',
- },
- rotateCarouselBottomIn: {
- keyframes: keyframes`
- from { opacity: 0.3; transform: translateY(-200%) scale(0.4) rotateX(65deg); }
- `,
- duration: 800,
- timing: 'ease',
- fill: 'both',
- origin: '50% 100%',
- },
- rotateSidesOut: {
- keyframes: keyframes`
- from { }
- to { opacity: 0; transform: translateZ(-500px) rotateY(90deg); }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '-50% 50%',
- },
- rotateSidesIn: {
- keyframes: keyframes`
- from { opacity: 0; transform: translateZ(-500px) rotateY(-90deg); }
- `,
- duration: 500,
- timing: 'ease-in',
- fill: 'both',
- origin: '150% 50%',
- },
- rotateSlideOut: {
- keyframes: keyframes`
- 0% { }
- 25% { opacity: 0.5; transform: translateZ(-500px); }
- 75% { opacity: 0.5; transform: translateZ(-500px) translateX(-200%); }
- 100% { opacity: 0.5; transform: translateZ(-500px) translateX(-200%); }
- `,
- duration: 1000,
- timing: 'ease',
- fill: 'both',
- },
- rotateSlideIn: {
- keyframes: keyframes`
- 0%, 25% { opacity: 0.5; transform: translateZ(-500px) translateX(200%); }
- 75% { opacity: 0.5; transform: translateZ(-500px); }
- 100% { opacity: 1; transform: translateZ(0) translateX(0); }
- `,
- duration: 1000,
- timing: 'ease',
- fill: 'both',
- },
-}
diff --git a/.prev/src/components/PageTransition/index.js b/.prev/src/components/PageTransition/index.js
deleted file mode 100644
index 31743946..00000000
--- a/.prev/src/components/PageTransition/index.js
+++ /dev/null
@@ -1,80 +0,0 @@
-import React, { memo } from 'react'
-import { Transition, TransitionGroup } from 'react-transition-group'
-import animations from './animations'
-import presets from './presets'
-import * as Styles from './styles'
-
-function PageTransition({
- children,
- enterAnimation: enterAnimationOverride,
- exitAnimation: exitAnimationOverride,
- preset,
- transitionKey,
- ...rest
-}) {
- const selectEnterAnimation = () => {
- if (enterAnimationOverride) {
- if (typeof enterAnimationOverride === 'string') {
- return animations[enterAnimationOverride]
- }
- return {
- ...animations[enterAnimationOverride.name],
- delay: enterAnimationOverride.delay,
- onTop: enterAnimationOverride.onTop,
- }
- }
- if (preset) {
- return {
- ...animations[presets[preset].enter.name],
- delay: presets[preset].enter.delay,
- onTop: presets[preset].enter.onTop,
- }
- }
- return 'rotateSlideIn'
- }
-
- const selectExitAnimation = () => {
- if (exitAnimationOverride) {
- if (typeof exitAnimationOverride === 'string') {
- return animations[exitAnimationOverride]
- }
- return {
- ...animations[exitAnimationOverride.name],
- delay: exitAnimationOverride.delay,
- onTop: exitAnimationOverride.onTop,
- }
- }
- if (preset) {
- return {
- ...animations[presets[preset].exit.name],
- delay: presets[preset].exit.delay,
- onTop: presets[preset].exit.onTop,
- }
- }
- return 'rotateSlideIn'
- }
-
- const enterAnimation = selectEnterAnimation()
- const exitAnimation = selectExitAnimation()
- const timeout = Math.max(enterAnimation.duration, exitAnimation.duration)
-
- return (
-
-
-
- {state => (
-
- {children}
-
- )}
-
-
-
- )
-}
-
-export default memo(PageTransition)
diff --git a/.prev/src/components/PageTransition/presets.js b/.prev/src/components/PageTransition/presets.js
deleted file mode 100644
index 31711350..00000000
--- a/.prev/src/components/PageTransition/presets.js
+++ /dev/null
@@ -1,552 +0,0 @@
-export default {
- moveToLeftFromRight: {
- exit: {
- name: 'moveToLeft',
- },
- enter: {
- name: 'moveFromRight',
- },
- },
- moveToRightFromLeft: {
- exit: {
- name: 'moveToRight',
- },
- enter: {
- name: 'moveFromLeft',
- },
- },
- moveToTopFromBottom: {
- exit: {
- name: 'moveToTop',
- },
- enter: {
- name: 'moveFromBottom',
- },
- },
- moveToBottomFromTop: {
- exit: {
- name: 'moveToBottom',
- },
- enter: {
- name: 'moveFromTop',
- },
- },
- fadeFromRight: {
- exit: {
- name: 'fade',
- },
- enter: {
- name: 'moveFromRight',
- onTop: true,
- },
- },
- fadeFromLeft: {
- exit: {
- name: 'fade',
- },
- enter: {
- name: 'moveFromLeft',
- onTop: true,
- },
- },
- fadeFromBottom: {
- exit: {
- name: 'fade',
- },
- enter: {
- name: 'moveFromBottom',
- onTop: true,
- },
- },
- fadeFromTop: {
- exit: {
- name: 'fade',
- },
- enter: {
- name: 'moveFromTop',
- onTop: true,
- },
- },
- fadeLeftFadeRight: {
- exit: {
- name: 'moveToLeftFade',
- },
- enter: {
- name: 'moveFromRightFade',
- },
- },
- fadeRightFadeLeft: {
- exit: {
- name: 'moveToRightFade',
- },
- enter: {
- name: 'moveFromLeftFade',
- },
- },
- fadeTopFadeBottom: {
- exit: {
- name: 'moveToTopFade',
- },
- enter: {
- name: 'moveFromBottomFade',
- },
- },
- fadeBottomFadeTop: {
- exit: {
- name: 'moveToBottomFade',
- },
- enter: {
- name: 'moveFromTopFade',
- },
- },
- scaleDownFromRight: {
- exit: {
- name: 'scaleDown',
- },
- enter: {
- name: 'moveFromRight',
- onTop: true,
- },
- },
- scaleDownFromLeft: {
- exit: {
- name: 'scaleDown',
- },
- enter: {
- name: 'moveFromLeft',
- onTop: true,
- },
- },
- scaleDownFromBottom: {
- exit: {
- name: 'scaleDown',
- },
- enter: {
- name: 'moveFromBottom',
- onTop: true,
- },
- },
- scaleDownFromTop: {
- exit: {
- name: 'scaleDown',
- },
- enter: {
- name: 'moveFromTop',
- onTop: true,
- },
- },
- scaleDownScaleDown: {
- exit: {
- name: 'scaleDown',
- },
- enter: {
- name: 'scaleUpDown',
- delay: 300,
- },
- },
- scaleUpScaleUp: {
- exit: {
- name: 'scaleDownUp',
- },
- enter: {
- name: 'scaleUp',
- delay: 300,
- },
- },
- moveToLeftScaleUp: {
- exit: {
- name: 'moveToLeft',
- onTop: true,
- },
- enter: {
- name: 'scaleUp',
- },
- },
- moveToRightScaleUp: {
- exit: {
- name: 'moveToRight',
- onTop: true,
- },
- enter: {
- name: 'scaleUp',
- },
- },
- moveToTopScaleUp: {
- exit: {
- name: 'moveToTop',
- onTop: true,
- },
- enter: {
- name: 'scaleUp',
- },
- },
- moveToBottomScaleUp: {
- exit: {
- name: 'moveToBottom',
- onTop: true,
- },
- enter: {
- name: 'scaleUp',
- },
- },
- scaleDownScaleUp: {
- exit: {
- name: 'scaleDownCenter',
- },
- enter: {
- name: 'scaleUpCenter',
- delay: 400,
- },
- },
- glueLeftFromRight: {
- exit: {
- name: 'rotateRightSideFirst',
- },
- enter: {
- name: 'moveFromRight',
- delay: 200,
- onTop: true,
- },
- },
- glueRightFromLeft: {
- exit: {
- name: 'rotateLeftSideFirst',
- },
- enter: {
- name: 'moveFromLeft',
- delay: 200,
- onTop: true,
- },
- },
- glueBottomFromTop: {
- exit: {
- name: 'rotateTopSideFirst',
- },
- enter: {
- name: 'moveFromTop',
- delay: 200,
- onTop: true,
- },
- },
- glueTopFromBottom: {
- exit: {
- name: 'rotateBottomSideFirst',
- },
- enter: {
- name: 'moveFromBottom',
- delay: 200,
- onTop: true,
- },
- },
- flipRight: {
- exit: {
- name: 'flipOutRight',
- },
- enter: {
- name: 'flipInLeft',
- delay: 500,
- },
- },
- flipLeft: {
- exit: {
- name: 'flipOutLeft',
- },
- enter: {
- name: 'flipInRight',
- delay: 500,
- },
- },
- flipTop: {
- exit: {
- name: 'flipOutTop',
- },
- enter: {
- name: 'flipInBottom',
- delay: 500,
- },
- },
- flipBottom: {
- exit: {
- name: 'flipOutBottom',
- },
- enter: {
- name: 'flipInTop',
- delay: 500,
- },
- },
- fall: {
- exit: {
- name: 'rotateFall',
- onTop: true,
- },
- enter: {
- name: 'scaleUp',
- },
- },
- newspaper: {
- exit: {
- name: 'rotateOutNewspaper',
- },
- enter: {
- name: 'rotateInNewspaper',
- delay: 500,
- },
- },
- pushLeftFromRight: {
- exit: {
- name: 'rotatePushLeft',
- },
- enter: {
- name: 'moveFromRight',
- },
- },
- pushRightFromLeft: {
- exit: {
- name: 'rotatePushRight',
- },
- enter: {
- name: 'moveFromLeft',
- },
- },
- pushTopFromBottom: {
- exit: {
- name: 'rotatePushTop',
- },
- enter: {
- name: 'moveFromBottom',
- },
- },
- pushBottomFromTop: {
- exit: {
- name: 'rotatePushBottom',
- },
- enter: {
- name: 'moveFromTop',
- },
- },
- pushLeftPullRight: {
- exit: {
- name: 'rotatePushLeft',
- },
- enter: {
- name: 'rotatePullRight',
- delay: 180,
- },
- },
- pushRightPullLeft: {
- exit: {
- name: 'rotatePushRight',
- },
- enter: {
- name: 'rotatePullLeft',
- delay: 180,
- },
- },
- pushTopPullBottom: {
- exit: {
- name: 'rotatePushTop',
- },
- enter: {
- name: 'rotatePullBottom',
- delay: 180,
- },
- },
- pushBottomPullTop: {
- exit: {
- name: 'rotatePushBottom',
- },
- enter: {
- name: 'rotatePullTop',
- delay: 180,
- },
- },
- foldLeftFromRight: {
- exit: {
- name: 'rotateFoldLeft',
- },
- enter: {
- name: 'moveFromRightFade',
- },
- },
- foldRightFromLeft: {
- exit: {
- name: 'rotateFoldRight',
- },
- enter: {
- name: 'moveFromLeftFade',
- },
- },
- foldTopFromBottom: {
- exit: {
- name: 'rotateFoldTop',
- },
- enter: {
- name: 'moveFromBottomFade',
- },
- },
- foldBottomFromTop: {
- exit: {
- name: 'rotateFoldBottom',
- },
- enter: {
- name: 'moveFromTopFade',
- },
- },
- moveToRightUnfoldLeft: {
- exit: {
- name: 'moveToRightFade',
- },
- enter: {
- name: 'rotateUnfoldLeft',
- },
- },
- moveToLeftUnfoldRight: {
- exit: {
- name: 'moveToLeftFade',
- },
- enter: {
- name: 'rotateUnfoldRight',
- },
- },
- moveToBottomUnfoldTop: {
- exit: {
- name: 'moveToBottomFade',
- },
- enter: {
- name: 'rotateUnfoldTop',
- },
- },
- moveToTopUnfoldBottom: {
- exit: {
- name: 'moveToTopFade',
- },
- enter: {
- name: 'rotateUnfoldBottom',
- },
- },
- roomToLeft: {
- exit: {
- name: 'rotateRoomLeftOut',
- onTop: true,
- },
- enter: {
- name: 'rotateRoomLeftIn',
- },
- },
- roomToRight: {
- exit: {
- name: 'rotateRoomRightOut',
- onTop: true,
- },
- enter: {
- name: 'rotateRoomRightIn',
- },
- },
- roomToTop: {
- exit: {
- name: 'rotateRoomTopOut',
- onTop: true,
- },
- enter: {
- name: 'rotateRoomTopIn',
- },
- },
- roomToBottom: {
- exit: {
- name: 'rotateRoomBottomOut',
- onTop: true,
- },
- enter: {
- name: 'rotateRoomBottomIn',
- },
- },
- cubeToLeft: {
- exit: {
- name: 'rotateCubeLeftOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCubeLeftIn',
- },
- },
- cubeToRight: {
- exit: {
- name: 'rotateCubeRightOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCubeRightIn',
- },
- },
- cubeToTop: {
- exit: {
- name: 'rotateCubeTopOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCubeTopIn',
- },
- },
- cubeToBottom: {
- exit: {
- name: 'rotateCubeBottomOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCubeBottomIn',
- },
- },
- carouselToLeft: {
- exit: {
- name: 'rotateCarouselLeftOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCarouselLeftIn',
- },
- },
- carouselToRight: {
- exit: {
- name: 'rotateCarouselRightOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCarouselRightIn',
- },
- },
- carouselToTop: {
- exit: {
- name: 'rotateCarouselTopOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCarouselTopIn',
- },
- },
- carouselToBottom: {
- exit: {
- name: 'rotateCarouselBottomOut',
- onTop: true,
- },
- enter: {
- name: 'rotateCarouselBottomIn',
- },
- },
- slides: {
- exit: {
- name: 'rotateSidesOut',
- },
- enter: {
- name: 'rotateSidesIn',
- delay: 200,
- },
- },
- slide: {
- exit: {
- name: 'rotateSlideOut',
- },
- enter: {
- name: 'rotateSlideIn',
- },
- },
-}
diff --git a/.prev/src/components/PageTransition/styles.js b/.prev/src/components/PageTransition/styles.js
deleted file mode 100644
index bb6e4380..00000000
--- a/.prev/src/components/PageTransition/styles.js
+++ /dev/null
@@ -1,54 +0,0 @@
-import styled, { css } from 'styled-components'
-
-const createAnimationStyles = ({
- keyframes,
- delay,
- duration,
- timing,
- fill,
- origin,
- onTop,
-}) => css`
- animation-name: ${keyframes};
- animation-delay: ${delay};
- animation-duration: ${duration}ms;
- animation-timing-function: ${timing};
- animation-fill-mode: ${fill};
- transform-origin: ${origin || '50% 50%'};
- ${onTop &&
- css`
- z-index: 1;
- `}
-`
-
-const stateMap = {
- entering: ({ enterAnimation }) => {
- return css`
- ${createAnimationStyles(enterAnimation)};
- `
- },
- exiting: ({ exitAnimation }) => {
- return css`
- ${createAnimationStyles(exitAnimation)};
- `
- },
-}
-
-export const PageTransitionGroup = styled.div`
- position: relative;
- width: 100%;
- height: 100%;
- perspective: 1200px;
-`
-
-export const PageTransition = styled.div`
- backface-visibility: hidden;
- height: 100%;
- left: 0;
- position: absolute;
- top: 0;
- transform-style: preserve-3d;
- transform: translate3d(0, 0, 0);
- width: 100%;
- ${({ state }) => stateMap[state]};
-`
diff --git a/.prev/src/components/PostCard/index.js b/.prev/src/components/PostCard/index.js
deleted file mode 100644
index ce1428a4..00000000
--- a/.prev/src/components/PostCard/index.js
+++ /dev/null
@@ -1,272 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import styles from './index.less'
-import { CustomIcons, Like_button, MediaPlayer } from 'components'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-import classnames from 'classnames'
-import * as MICON from '@material-ui/icons'
-
-const { Meta } = antd.Card
-
-// Set default by configuration
-const emptyPayload = {
- user: 'Post Empty',
- ago: 'This Post is empty',
- avatar: 'https://zos.alipayobjects.com/rmsportal/ODTLcjxAfvqbxHnVXCYX.png',
- content: 'Empty',
-}
-
-class PostCard extends React.PureComponent {
- constructor(props) {
- super(props),
- this.state = {
- visibleMoreMenu: false,
- postPinned: this.props.payload.is_post_pinned,
- postSaved: this.props.payload.is_post_saved,
- postReported: this.props.payload.is_post_reported,
- postBoosted: this.props.payload.is_post_boosted,
- ReportIgnore: false,
- }
- }
- handleVisibleChange = flag => {
- this.setState({ visibleMoreMenu: flag });
- };
-
- toogleMoreMenu(){
- this.setState({visibleMoreMenu: !this.state.visibleMoreMenu})
- }
-
- goToPost(postID) {
- localStorage.setItem('p_back_uid', postID)
- const payload = { post_id: postID }
- ycore.comty_post.get((err, res) => {
- if (err) {
- return false
- }
- ycore.SecondarySwap.openPost(res)
- }, payload)
- }
-
- render() {
- const { payload, customActions } = this.props
- const ActShowMode = ycore.AppSettings.auto_hide_postbar
- const {
- id,
- post_time,
- postText,
- postFile,
- publisher,
- post_likes,
- is_post_pinned,
- is_liked,
- post_comments,
- } = payload || emptyPayload
- const handlePostActions = {
- delete: post_id => {
- const payload = { post_id: post_id }
- ycore.comty_post.delete((err, res) => {
- if (err) {
- return false
- }
- ycore.FeedHandler.killByID(post_id)
- }, payload)
- },
- save: post_id => {
- const payload = { post_id: post_id }
- ycore.comty_post.save((err, res) => {
- if (err) {
- return false
- }
- if (this.state.postSaved == false) {
- ycore.notify.success('Post Saved')
- this.setState({ postSaved: true })
- return
- } else {
- ycore.notify.info('Removed from Saved')
- this.setState({ postSaved: false })
- }
- }, payload)
- },
- report: post_id => {
- ycore.app_modals.report_post(post_id)
- },
- boost: post_id => {
- const payload = { post_id: post_id }
- ycore.comty_post.__boost((err, res) => {
- if (err) {
- return false
- }
- if (this.state.postBoosted == false) {
- ycore.notify.success('Post Boosted')
- this.setState({ postBoosted: true })
- return
- } else {
- ycore.notify.info('Post Unboosted')
- this.setState({ postBoosted: false })
- }
- }, payload)
- },
- }
- const defaultActions = [
-
-
-
,
- 0 ? true : false}>
- this.goToPost(id)} />
- ,
- ]
- const actions = customActions || defaultActions
-
- const MoreMenu = (
-
- {ycore.IsThisPost.owner(publisher.id) ? (
-
- handlePostActions.delete(id) & this.toogleMoreMenu()}
- okText="Yes"
- cancelText="No"
- >
- Remove post
-
-
-
- ) : null}
- {ycore.IsThisPost.owner(publisher.id) ? (
- ycore.IsThisUser.pro(publisher.id) ? (
- handlePostActions.boost(id) & this.toogleMoreMenu()}
- key="boost_post"
- >
- {' '}
- {this.state.postBoosted ? 'Unboost' : 'Boost'}
-
- ) : null
- ) : null}
- {ycore.IsThisPost.owner(publisher.id) ?
: null}
- handlePostActions.save(id) & this.toogleMoreMenu()}
- key="save_post"
- >
- {' '}
- {this.state.postSaved ? 'Unsave post' : 'Save Post'}
-
- {this.state.postReported? null:
- handlePostActions.report(id) & this.toogleMoreMenu() }
- key="report_post"
- >
- Report post
-
- }
-
- )
-
- return (
-
-
this.goToPost(id)}
- hoverable
- className={ActShowMode ? null : styles.showMode}
- actions={actions}
- >
- {this.state.ReportIgnore ? null : this.state.postReported ? (
-
-
-
It seems that this post has been reported
-
The content may be inappropriate or compromising
-
{
- this.setState({ ReportIgnore: true })
- }}
- >
- Ignore
-
-
- ) : null}
-
- }
- title={
-
-
- ycore.router.go(`@${publisher.username}`)
- }
- className={styles.titleUser}
- >
- @{publisher.username}
- {ycore.booleanFix(publisher.verified) ? (
-
- ) : null}
- {ycore.booleanFix(publisher.nsfw_flag) ? (
-
- NSFW
-
- ) : null}{' '}
-
-
-
- {ycore.booleanFix(is_post_pinned) ? (
-
- ) : null}
-
-
- }
- description={{post_time}}
- bordered="false"
- />
- {postText ? (
-
- {' '}
-
{' '}
-
- ) : null}
- {postFile ? (
-
-
-
- ) : null}
-
-
-
-
-
-
- )
- }
-}
-export default PostCard
diff --git a/.prev/src/components/PostCard/index.less b/.prev/src/components/PostCard/index.less
deleted file mode 100644
index 11ae7bb5..00000000
--- a/.prev/src/components/PostCard/index.less
+++ /dev/null
@@ -1,230 +0,0 @@
-@import '~themes/index.less';
-
-.post_card_flaggedWarning {
- border-radius: @post_card_general_border-rd;
- width: 100%;
- text-align: center;
- position: absolute;
- z-index: 20;
- background: @post_card_flaggedWarning_backgroud;
- font-family: @__Global_general_font_family;
- padding: @post_card_flaggedWarning_padding;
-
- :global {
- .anticon {
- font-size: @post_card_flaggedWarning_iconSize;
- }
- }
-}
-
-.post_card_wrapper {
- box-shadow: @post_card_wrapper_shadow;
- border-radius: @post_card_general_border-rd;
- max-width: 510px;
- min-width: 265px;
- width: auto;
- margin: 23px auto 50px auto;
-
- :global {
- .ant-card-meta-detail>div:not(:last-child) {
- margin: 0
- }
-
- .ant-card {
- border-radius: @post_card_general_border-rd;
- border: 0;
- border-top: 1px solid #4646460c;
- }
-
- .ant-card-body {
- padding: 0;
- }
-
- .ant-card-actions {
- border-top: 0;
- background: @post_card_wrapper_actions_backgroud;
- height: 30px;
- position: relative;
- transition: opacity @__Global_Components_transitions_dur linear, position @__Global_Components_transitions_dur linear, transform @__Global_Components_transitions_dur linear;
- border-radius: 0 0 10px 10px;
- opacity: 0;
-
- &.showMode {
- opacity: 1;
- transform: translate(0, 15px);
- }
- }
-
- .ant-card-actions:hover {
- opacity: 1;
- transform: translate(0, 15px);
- transition: opacity @__Global_Components_transitions_dur linear, position @__Global_Components_transitions_dur linear, transform @__Global_Components_transitions_dur linear;
- }
-
- .ant-card-actions>li>.anticon {
- font-size: 16px;
- line-height: 22px;
- width: 40px;
- height: 40px;
- background: @post_card_wrapper_actions_icon_backgroud;
- border-radius: 23px;
- }
-
- .ant-card-actions>li {
- margin: -20px 0 0 0;
- border-right: 0;
-
- .ant-badge-count {
- width: 20px;
- text-align: left;
-
- span {
- font-size: 12px;
- }
-
- .ant-scroll-number-only>p.ant-scroll-number-only-unit {
- height: 20px;
- width: 20px;
- margin: 0;
- line-height: 20px;
- padding: 0 0 0 1px;
- }
- }
-
- span {
- font-size: 16px;
- line-height: 22px;
- width: 40px;
- height: 40px;
- background: @post_card_wrapper_actions_icon_backgroud;
- border-radius: 23px;
- margin: auto;
- }
-
- svg {
- height: 20px;
- width: 20px;
- height: 100%;
- vertical-align: middle;
- }
- }
- }
-}
-
-.post_include {
- padding: 13px 0 5px 0;
- transition: all 150ms linear;
-
- &.blur {
- filter: blur(10px);
- }
-}
-
-.showMode {
- :global {
- ul {
- opacity: 1 !important;
- transform: translate(0, 15px);
- }
- }
-}
-
-
-.post_card_title {
- display: flex;
-
- h4 {
- cursor: pointer;
- }
-
-}
-
-.postAvatar {
- position: absolute;
- left: -8px;
- top: -8px;
- display: flex;
-}
-
-.titleUser {
- display: flex;
- font-family: @__Global_general_font_family;
- margin: 0 0 0 50px;
-}
-
-.textAgo {
- display: flex;
- font-size: 10px;
- margin: 0 0 0 53px;
-}
-
-.PostTags {
- float: right;
- width: 100%;
- z-index: 10;
-
- :global {
- .anticon {
- color: @post_card_wrapper_tags_color_default;
- float: right;
- margin: -0 6px 0 0;
- font-size: 17px;
- }
-
- }
-}
-
-.post_card_content {
- word-break: break-all;
- display: flex;
- border-radius: 3px;
- margin: 23px 24px 23px 24px;
-
- h3 {
- font-family: @__Global_general_font_family;
- color: @post_card_wrapper_post_content_color;
- font-weight: @post_card_wrapper_post_content_weight;
- font-size: @post_card_wrapper_post_content_fontSize;
- letter-spacing: @post_card_wrapper_post_content_letterSpacing;
- }
-}
-
-.post_card_file {
- display: flex;
- margin: 23px 0 5px 0;
- max-height: 600px;
- overflow: hidden;
-
- h3 {
- color: rgb(85, 85, 85);
- font-weight: 470;
- }
-}
-
-.likebtn {
- :global {
- svg {
- color: rgba(0, 0, 0, 0.45);
- }
-
- svg:hover {
- color: rgb(233, 35, 68);
- transition: all 0.2s linear;
- }
- }
-}
-
-.ellipsisIcon {
- color: rgba(0, 0, 0, 0.45);
- width: 100%;
- position: absolute;
- text-align: center;
- margin: auto;
- font-size: 30px;
- transition: opacity 150ms linear;
-}
-
-.ellipsisIcon:hover {
- opacity: 0;
- transition: opacity 150ms linear;
-}
\ No newline at end of file
diff --git a/.prev/src/components/PostCreator/index.js b/.prev/src/components/PostCreator/index.js
deleted file mode 100644
index adbbc68f..00000000
--- a/.prev/src/components/PostCreator/index.js
+++ /dev/null
@@ -1,407 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import styles from './index.less'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-import $ from 'jquery'
-import * as MICONS from '@material-ui/icons'
-
-import Post_options from './local_components/post_options'
-import { optionBox } from './local_components/post_options'
-
-function getBase64(img, callback) {
- const reader = new FileReader()
- reader.addEventListener('load', () => callback(reader.result))
- reader.readAsDataURL(img)
-}
-
-export function HandleVisibility() {
- window.PostCreatorComponent.ToogleVisibility()
-}
-
-class PostCreator extends React.PureComponent {
- constructor(props) {
- super(props),
- window.PostCreatorComponent = this,
- this.state = {
- visible: true,
- FadeIN: true,
- keys_remaining: ycore.AppSettings.MaxLengthPosts,
- rawtext: '',
- posting: false,
- posting_ok: false,
- shareWith: 'any',
- uploader: false,
- Schedule: false,
- }
- }
-
- renderPostPlayer(payload) {
- const { file, fileURL } = this.state
- const videofilter = file.type.includes('video')
- const imagefilter = file.type.includes('image')
- const audiofilter = file.type.includes('audio')
- if (imagefilter) {
- return (
-
-
-
this.handleDeleteFile()}
- icon={}
- />
-
-
-

-
-
- )
- }
- if (videofilter) {
- return (
-
-
-
this.handleDeleteFile()}
- icon={}
- />
-
-
-
-
-
- )
- }
- if (audiofilter) {
- return (
-
- )
- }
- return null
- }
- ToogleVisibility() {
- this.setState({ visible: !this.state.visible })
- }
- ToogleUpload() {
- this.setState({ uploader: !this.state.uploader })
- }
- handleDeleteFile = () => {
- this.setState({ fileURL: null })
- }
- handleFileUpload = info => {
- if (info.file.status === 'uploading') {
- this.setState({ loading: true })
- return
- }
- if (info.file.status === 'done') {
- this.setState({ file: info.file.originFileObj, uploader: false })
- getBase64(info.file.originFileObj, fileURL => {
- this.setState({ fileURL, loading: false })
- })
- }
- }
-
- beforeUpload = file => {
- const filter =
- file.type === 'image/jpeg' ||
- file.type === 'audio/mp3' ||
- file.type === 'audio/wav' ||
- file.type === 'audio/ogg' ||
- file.type === 'image/png' ||
- file.type === 'image/jpg' ||
- file.type === 'image/gif' ||
- file.type === 'video/mp4'
- if (!filter) {
- antd.message.error(`${file.type} This file is not valid!`)
- }
- const maxsize =
- file.size / 1024 / 1024 < ycore.AppSettings.MaximunAPIPayload
- if (!maxsize) {
- antd.message.error(
- `Image must smaller than ${ycore.AppSettings.MaximunAPIPayload} KB!`
- )
- }
- return filter && maxsize
- }
-
- handleChanges = ({ target: { value } }) => {
- this.setState({
- rawtext: value,
- keys_remaining: ycore.AppSettings.MaxLengthPosts - value.length,
- })
- }
-
- handleKeysProgressBar() {
- const { keys_remaining } = this.state
- if (keys_remaining <= (ycore.AppSettings.MaxLengthPosts / 100) * 30) {
- return 'exception'
- } else return 'active'
- }
-
- FlushPostState() {
- this.setState({
- posting_ok: true,
- posting: false,
- rawtext: '',
- fileURL: '',
- file: '',
- })
- setTimeout(() => {
- this.setState({ posting_ok: false })
- }, 1000)
- ycore.FeedHandler.refresh()
- return true
- }
-
- handlePublishPost = e => {
- const { rawtext, shareWith, file, fileURL} = this.state
- if (!rawtext && !fileURL) {
- return false
- }
- this.setState({
- posting: true,
- keys_remaining: ycore.AppSettings.MaxLengthPosts,
- })
- const post_options = optionBox.get()
-
- const payload = {
- privacy: ycore.GetPostPrivacy.bool(shareWith),
- text: rawtext,
- file: file,
- }
- ycore.comty_post.new((err, res) => {
- if (err) {
- ycore.notify.error(err)
- return false
- }
- const status_temp_error = JSON.parse(res)['data'].error
- status_temp_error? ycore.notify.error('It seems that a processing error has occurred, your publication has not been published.') : null
- const id_temp_parse = JSON.parse(res)['data'].id
-
- const pro_boost_val = ycore.ReturnValueFromMap({ data: post_options, key: 'pro_boost' })
- const allow_comments_val = ycore.ReturnValueFromMap({ data: post_options, key: 'allow_comments' })
- console.log(id_temp_parse)
- ycore.sync.emmitPost(id_temp_parse)
- ycore.yconsole.log(`pro_boost => ${pro_boost_val} | allow_comments => ${allow_comments_val}`)
-
- if (pro_boost_val) {
- ycore.yconsole.log(`Boosting post with ID => ${id_temp_parse}`)
- ycore.comty_post.__boost(
- (err, res) => {
- return true
- },
- { post_id: id_temp_parse }
- )
- }
- if (
- !allow_comments_val
- ) {
- ycore.yconsole.log(`Disabling comments with ID => ${id_temp_parse}`)
- ycore.comty_post.__disableComments(
- (err, res) => {
- return true
- },
- { post_id: id_temp_parse }
- )
- }
- this.FlushPostState()
- // ycore.FeedHandler.addToRend(JSON.parse(res)['data'])
- }, payload)
- }
- dropRef = React.createRef()
-
- handleDragIn = e => {
- e.preventDefault()
- e.stopPropagation()
- if (this.state.uploader == true) {
- return
- }
- this.setState({ uploader: true })
- }
- handleDragOut = e => {
- e.preventDefault()
- e.stopPropagation()
- if (this.state.uploader == false) {
- return
- }
- this.setState({ uploader: false })
- }
-
- componentDidMount() {
- const _this = this
- $('body').bind('paste', function(je) {
- var e = je.originalEvent
- for (var i = 0; i < e.clipboardData.items.length; i++) {
- var item = e.clipboardData.items[i]
- ycore.yconsole.log('Item: ' + item.type)
- if (item.type.indexOf('image') != -1) {
- //item.
- let a;
- a = item.getAsFile()
- _this.setState({ file: a })
- ycore.ReadFileAsB64(a, res => {
- _this.setState({ fileURL: res })
- })
- } else {
- // ignore not images
- ycore.yconsole.log('Discarding not image paste data')
- }
- }
- })
- let div = this.dropRef.current
- div.addEventListener('dragenter', this.handleDragIn)
- div.addEventListener('dragleave', this.handleDragOut)
- }
- componentWillUnmount() {
- let div = this.dropRef.current
- div.removeEventListener('dragenter', this.handleDragIn)
- div.removeEventListener('dragleave', this.handleDragOut)
- }
-
- canPost() {
- const { fileURL, keys_remaining } = this.state
-
- const isTypedSomething = keys_remaining < ycore.AppSettings.MaxLengthPosts
- const isUploadedFile = fileURL ? true : false
-
- return isUploadedFile || isTypedSomething
- }
-
- render() {
- const { userData } = this.props
- const { keys_remaining, visible, fileURL } = this.state
- const percent = (
- (keys_remaining / ycore.AppSettings.MaxLengthPosts) *
- 100
- ).toFixed(2)
- const changeShare = ({ key }) => {
- this.setState({ shareWith: key })
- }
-
- const shareOptionsMenu = (
-
-
- {ycore.GetPostPrivacy.decorator('any')}
-
-
- {ycore.GetPostPrivacy.decorator('only_follow')}
-
-
- {ycore.GetPostPrivacy.decorator('only_followers')}
-
-
- {ycore.GetPostPrivacy.decorator('private')}
-
-
- )
-
- if (visible) {
- return (
-
-
-
- {this.state.uploader ? (
-
-
-
- Drop your file here o click for upload
-
-
- ) : (
- <>
-
-

-
-
-
-
- ) : this.state.posting ? (
-
- ) : (
-
- )
- }
- />
-
- >
- )}
-
-
- {fileURL ? this.renderPostPlayer(this.state.fileURL) : null}
-
-
-
-
- )
- }
- return null
- }
-}
-export default PostCreator
diff --git a/.prev/src/components/PostCreator/index.less b/.prev/src/components/PostCreator/index.less
deleted file mode 100644
index d67fbd61..00000000
--- a/.prev/src/components/PostCreator/index.less
+++ /dev/null
@@ -1,313 +0,0 @@
-@import '~themes/index.less';
-
-.cardWrapper {
- // box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
- border-radius: 7px;
- max-width: 510px;
- min-width: 265px;
- width: auto;
- margin: 7px auto 50px auto;
-
- :global {
- textarea {
- font-weight: 500;
- resize: none;
- }
-
- textarea:focus {
- outline: none !important;
- border: 0 !important;
- }
-
- textarea:hover {
- outline: none !important;
- border: 0 !important;
- }
-
- .ant-card-meta-detail>div:not(:last-child) {
- margin: 0
- }
-
- .ant-card {
- border-radius: 7px;
- border: 0;
- border-top: 1px solid #4646460c;
- }
-
- .ant-card-body {
- padding: 5px 15px 5px 15px;
- }
-
- .ant-card-actions {
- border-top: 0;
- background: #EBEBEB;
- opacity: 0;
- height: 30px;
- position: relative;
- transition: opacity 150ms linear, position 150ms linear, transform 150ms linear;
- border-radius: 0 0 10px 10px;
- }
-
- .ant-card-actions:hover {
- opacity: 1;
- transform: translate(0, 15px);
- transition: opacity 150ms linear, position 150ms linear, transform 150ms linear;
- }
-
- .ant-card-actions>li {
- margin: -20px 0 0 0;
- border-right: 0;
-
- i {
-
- vertical-align: middle;
- height: 40px;
- width: 40px;
- background-color: #fff;
- border-radius: 24px;
- }
-
- svg {
- height: 20px;
- width: 20px;
- height: 100%;
- vertical-align: middle;
- }
- }
- }
-}
-
-.titleAvatar {
- width: 45px;
- height: 45px;
- display: flex;
-
- :global {
- img {
- width: 45px;
- height: 45px;
- border-radius: 12px;
- }
- }
-}
-
-.inputWrapper {
- display: flex;
- z-index: 10;
- position: relative;
- width: 100%;
- padding: 18px 7px 0 7px;
- transition: height 150ms linear;
-
- :global {
- .ant-btn-primary {
- z-index: 10;
- position: relative;
- border-radius: 0 10px 10px 0;
- height: 100%;
- vertical-align: bottom;
- border: none;
- box-shadow: none;
- }
-
- .ant-input {
- z-index: 10;
- position: relative;
- border-color: transparent !important;
- box-shadow: none;
- border-radius: 3px 0 0 0;
- height: 100%;
- padding: 5px 10px 5px 10px;
- transition: height 150ms linear;
- width: 100%;
-
- }
-
- .ant-input:hover {
- border-color: #1890ff;
- }
-
- .ant-input-affix-wrapper {
- height: 100%;
- }
- }
-}
-
-.progressHandler {
- z-index: 10;
- position: relative;
- margin: 0 7px 0 7px;
-
- :global {
- .ant-progress-bg {
- border-radius: 0 0 10px 10px;
- }
-
- .ant-progress-inner {
- border-radius: 0 0 14px 14px;
- width: calc(100% - 32px);
- vertical-align: top;
- }
- }
-}
-
-.postExtra {
- width: 100%;
- height: 100%;
- position: relative;
- margin: 0 0 40px 0;
-
- .shareWith {
- color: rgb(53, 53, 53);
- float: right;
- font-size: 11px;
- line-height: 30px;
- }
-
- :global {
- .MuiSvgIcon-root {
- width: 1em;
- height: 1em;
- display: inline-block;
- font-size: 18px;
- transition: fill 200ms cubic-bezier(0.4, 0, 0.2, 1) 0ms;
- flex-shrink: 0;
- margin: 8px;
- line-height: 1px;
- user-select: none;
- }
-
- .ant-btn .anticon {
- transition: margin-left 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);
- margin: 8px;
- }
-
- .ant-btn {
- width: 35px;
- height: 35px;
- float: left;
- padding: 0;
- border-radius: 11px;
- margin: 0 10px;
- background-color: #eeeeee;
- border-color: transparent;
- }
-
- .ant-btn:hover {
- border-color: transparent;
- }
-
- }
-}
-
-.uploader {
- display: flex;
- position: relative;
- border-radius: 10px;
- z-index: 30;
- width: 100%;
- height: 100%;
-
- span {
- width: 100%;
- }
-
- :global {
- .ant-upload.ant-upload-drag {
- background: #fafafa;
- border: 1px dashed #d9d9d9;
- border-radius: 12px;
- transition: border-color 0.3s;
- }
-
- .anticon svg {
- display: inline-block;
- font-size: 30px;
- }
- }
-}
-
-.imagePreviewWrapper {
- position: relative;
- width: 100%;
- height: 100%;
- // top: -100px;
- margin: 0 0 15px 0;
- background-color: #eeeeee;
-
- .imagePreview {
- z-index: 5;
- position: relative;
- width: 50%;
- margin: auto;
- border-radius: 8px;
- transition: all 150ms linear;
-
- img {
- width: 100%;
- border: 0.5px rgba(56, 56, 56, 0.459) solid;
- }
-
- video {
- width: 100%;
- border: 0.5px rgba(56, 56, 56, 0.459) solid;
- }
-
- transition: all 150ms linear;
-
- }
-
- .imageOverlay {
- z-index: 10;
- position: relative;
- opacity: 0;
- transition: all 150ms linear;
- margin: auto;
- }
-}
-
-.imagePreviewWrapper:hover .imagePreview {
- opacity: 0.5;
- transition: all 150ms linear;
-}
-
-.imagePreviewWrapper:hover .imageOverlay {
- opacity: 1;
- transition: all 150ms linear;
-
-}
-
-.proccessUnset {
- opacity: 0;
- transition: opacity 250ms linear;
- animation: proccessUnset 250ms linear;
-}
-
-.proccessSet {
- transition: opacity 250ms linear;
- animation: proccessSet 250ms linear;
-}
-
-@keyframes proccessSet {
- 0% {
- opacity: 0;
- }
-
- 100% {
- opacity: 1;
- }
-}
-
-@keyframes proccessUnset {
- 0% {
- opacity: 1;
- }
-
- 100% {
- opacity: 0;
- }
-}
-
-.fontct {
- font-family: "Poppins", sans-serif;
-}
\ No newline at end of file
diff --git a/.prev/src/components/PostCreator/local_components/post_options.js b/.prev/src/components/PostCreator/local_components/post_options.js
deleted file mode 100644
index 6064139f..00000000
--- a/.prev/src/components/PostCreator/local_components/post_options.js
+++ /dev/null
@@ -1,151 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-import { Post_Options } from 'globals/post_options.js'
-import styles from './post_options.less'
-
-export const optionBox = {
- toogle: () => {
- window.postoptions_box_class.handleToggleToolbox()
- return true
- },
- get: () => {
- return window.postoptions_box_class.state.options_repo
- },
-}
-
-export default class Post_options extends React.Component {
- constructor(props) {
- super(props),
- window.postoptions_box_class = this,
- this.state = {
- options_repo: Post_Options,
- options_box: false,
- }
- }
-
- onChangeOption(checked, id) {
- ycore.yconsole.log(`${id} to ${checked}`)
- }
-
- handleToggleToolbox = () => {
- this.setState({ options_box: !this.state.options_box })
- }
-
- onChangeSwitch(item) {
- try {
- const to = !item.value
- const updatedValue = [...this.state.options_repo].map(ita =>
- ita === item ? Object.assign(ita, { value: to }) : ita
- )
- this.setState({ options_repo: updatedValue, forSave: true })
- ycore.yconsole.log(`Changing ${item.key} to value ${to}`)
- } catch (err) {
- console.log(err)
- }
- }
-
- require(i) {
- if (i) {
- try {
- switch (i) {
- case 'pro':
- return ycore.IsThisUser.pro() ? false : true
- case 'dev':
- return ycore.IsThisUser.dev() ? false : true
- default:
- break
- }
- } catch (err) {
- ycore.notify.error(err)
- return false
- }
- }
- return false
- }
-
- rendersets = item => {
- let e = item.type
- switch (e) {
- case 'switch':
- return (
- this.onChangeSwitch(item)}
- />
- )
- default:
- break
- }
- }
-
- renderSettings = () => {
- return (
- (
-
- {item.icon}
-
- {this.require(item.require)
- ? `You need ${item.require}`
- : this.rendersets(item)}
-
- )}
- />
- )
- }
- render() {
- return (
-
-
-
- Post Options
-
-
-
-
-
Share Options
- {this.renderSettings()}
-
-
-
Add some Extra
-
}
- disabled={true}
- type="primary"
- >
- {' '}
- Insert an Poll{' '}
-
-
}
- disabled={true}
- type="primary"
- >
- {' '}
- Insert an Background{' '}
-
-
-
-
-
- )
- }
-}
diff --git a/.prev/src/components/PostCreator/local_components/post_options.less b/.prev/src/components/PostCreator/local_components/post_options.less
deleted file mode 100644
index e1fad5e0..00000000
--- a/.prev/src/components/PostCreator/local_components/post_options.less
+++ /dev/null
@@ -1,57 +0,0 @@
-@import '~themes/index.less';
-
-.optionsWrapper {
- font-family: "Poppins", sans-serif;
-
- :global {
- .ant-drawer-body {
- -ms-flex-positive: 1;
- flex-grow: 1;
- padding: 12px;
- overflow: auto;
- font-size: 14px;
- line-height: 1.5715;
- word-wrap: break-word;
- }
-
- h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- margin-top: 0;
- margin-bottom: 0;
- color: rgba(0, 0, 0, 0.85);
- font-weight: 500;
- }
-
- .ant-list-item {
- display: -ms-flexbox;
- display: flex;
- -ms-flex-align: center;
- align-items: center;
- -ms-flex-pack: justify;
- justify-content: space-between;
- padding: 8px 0;
- }
- }
-}
-
-.PostOptionsWrapper {
- margin: 0 10px 0 10px;
- display: grid;
- grid-template-columns: 1fr 1fr;
- grid-column-gap: 20px;
- grid-row-gap: 20px;
- justify-items: stretch;
- align-items: stretch;
-
- .optionItem {
- display: inline;
- }
-}
-
-.optionItemIcon {
- margin: 0 5px 0 0;
-}
\ No newline at end of file
diff --git a/.prev/src/components/ScrollBar/index.js b/.prev/src/components/ScrollBar/index.js
deleted file mode 100644
index ce752b5d..00000000
--- a/.prev/src/components/ScrollBar/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-import ScrollBar from 'react-perfect-scrollbar'
-import 'react-perfect-scrollbar/dist/css/styles.css'
-import './index.less'
-
-export default ScrollBar
diff --git a/.prev/src/components/ScrollBar/index.less b/.prev/src/components/ScrollBar/index.less
deleted file mode 100644
index 124d94be..00000000
--- a/.prev/src/components/ScrollBar/index.less
+++ /dev/null
@@ -1,35 +0,0 @@
-@import '~themes/index.less';
-
-:global {
-
- .ps--active-x>.ps__rail-x,
- .ps--active-y>.ps__rail-y {
- background-color: red;
-
- }
-
- .ps__rail-x:hover>.ps__thumb-x,
- .ps__rail-x:focus>.ps__thumb-x {
- height: 8px;
- }
-
- .ps__rail-y:hover>.ps__thumb-y,
- .ps__rail-y:focus>.ps__thumb-y {
- width: 8px;
- }
-
- .ps__rail-y,
- .ps__rail-x {
- z-index: 9;
- }
-
- .ps__thumb-y {
- width: 4px;
- right: 4px;
- }
-
- .ps__thumb-x {
- height: 4px;
- bottom: 4px;
- }
-}
diff --git a/.prev/src/components/SearchCard/index.js b/.prev/src/components/SearchCard/index.js
deleted file mode 100644
index e93d50f9..00000000
--- a/.prev/src/components/SearchCard/index.js
+++ /dev/null
@@ -1,88 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import styles from './index.less'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-import { CustomIcons } from 'components'
-
-const { Meta } = antd.Card
-
-class SearchCard extends React.PureComponent {
- render() {
- const { source } = this.props
- const { username, avatar, about, id } = source
- const DevInfo = `ID #${id} | Dev ${
- ycore.booleanFix(source.dev) ? 'yes' : 'no'
- } | `
- const AdminInfo = `RID #${source.country_id} | IP ${source.ip_address} | `
-
- const DataStrip = {
- title: e => {
- if (this.props.type == 'Users') {
- return `@${username}`
- }
- if (this.props.type == 'Groups') {
- return `${source.name}`
- }
- return null
- },
- description: e => {
- if (this.props.type == 'Users') {
- return `${DevInfo}${AdminInfo}`
- }
- if (this.props.type == 'Groups') {
- return `GID #${source.group_id} | Created ${source.registered} | CAT ID #${source.category_id} / ${source.category} |`
- }
- return null
- },
- about: e => {
- return about
- },
- }
- return (
-
- }
- title={
-
-
ycore.router.go(`@${username}`)}
- className={styles.titleUser}
- >
- {DataStrip.title()}
-
-
- {ycore.booleanFix(source.verified) ? (
-
- ) : null}{' '}
-
-
- }
- description={
- ycore.IsThisUser.dev() ? (
-
- {DataStrip.description()}
-
- ) : null
- }
- bordered="false"
- />
-
- {' '}
-
{' '}
-
-
-
- )
- }
-}
-export default SearchCard
diff --git a/.prev/src/components/SearchCard/index.less b/.prev/src/components/SearchCard/index.less
deleted file mode 100644
index 2c73e901..00000000
--- a/.prev/src/components/SearchCard/index.less
+++ /dev/null
@@ -1,105 +0,0 @@
-@import '~themes/index.less';
-
-.cardWrapper {
- box-shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
- display: flex;
- border-radius: 7px;
- max-width: 510px;
- min-width: 265px;
- width: auto;
- margin: 23px auto 50px auto;
-
- :global {
- .ant-card-meta-detail>div:not(:last-child) {
- margin: 0
- }
-
- .ant-card {
- border-radius: 7px;
- border: 0;
- border-top: 1px solid #4646460c;
- }
-
- .ant-card-body {
- padding: 13px 0 5px 0;
- }
-
- .ant-card-actions {
- border-top: 0;
- background: #EBEBEB;
- opacity: 0;
- height: 30px;
- position: relative;
- transition: opacity 150ms linear, position 150ms linear, transform 150ms linear;
- border-radius: 0 0 10px 10px;
- }
-
- .ant-card-actions:hover {
- opacity: 1;
- transform: translate(0, 15px);
- transition: opacity 150ms linear, position 150ms linear, transform 150ms linear;
- }
-
- .ant-card-actions>li {
- margin: -20px 0 0 0;
- border-right: 0;
-
- i {
-
- vertical-align: middle;
- height: 40px;
- width: 40px;
- background-color: #fff;
- border-radius: 24px;
- }
-
- svg {
- height: 20px;
- width: 20px;
- height: 100%;
- vertical-align: middle;
- }
- }
- }
-}
-
-.postAvatar {
- position: absolute;
- left: -8px;
- top: -8px;
- display: flex;
-}
-
-.titleUser {
- display: flex;
- font-family: 'Poppins', sans-serif;
- margin: 0 0 0 50px;
-}
-
-.textAgo {
- display: flex;
- font-size: 10px;
- margin: 0 0 0 53px;
-}
-
-.PostTags {
- float: right;
- color: rgb(249, 179, 64);
- width: 100%;
- z-index: 10;
-
- i {
- float: right;
- margin: -0 6px 0 0;
- ;
- font-size: 17px;
- }
-}
-
-.titleWrapper {
- display: flex;
-
- h4 {
- cursor: pointer;
- }
-}
diff --git a/.prev/src/components/UserBadges/index.js b/.prev/src/components/UserBadges/index.js
deleted file mode 100644
index 623f618c..00000000
--- a/.prev/src/components/UserBadges/index.js
+++ /dev/null
@@ -1,29 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-import { BadgesType } from 'globals/badges_list'
-
-export default class UserBadges extends React.Component {
- render() {
- const { values } = this.props
- console.log(BadgesType)
- return (
-
- {ycore.booleanFix(values.nsfw_flag) ? (
-
NSFW
- ) : null}
- {ycore.booleanFix(values.is_pro) ? (
-
- CPRO™
-
- ) : null}
- {ycore.booleanFix(values.dev) ? (
-
- DEVELOPER
-
- ) : null}
-
- )
- }
-}
diff --git a/.prev/src/components/UserBadges/index.less b/.prev/src/components/UserBadges/index.less
deleted file mode 100644
index e69de29b..00000000
diff --git a/.prev/src/components/UserProfile/components/Follow_btn.js b/.prev/src/components/UserProfile/components/Follow_btn.js
deleted file mode 100644
index 84568a66..00000000
--- a/.prev/src/components/UserProfile/components/Follow_btn.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react'
-import styles from './Follow_btn.scss'
-import classnames from 'classnames'
-
-export default class Follow_btn extends React.Component {
- render() {
- return (
-
- {this.props.followed ? 'Following' : 'Follow'}
-
- )
- }
-}
diff --git a/.prev/src/components/UserProfile/components/follow_btn.scss b/.prev/src/components/UserProfile/components/follow_btn.scss
deleted file mode 100644
index 99c9364a..00000000
--- a/.prev/src/components/UserProfile/components/follow_btn.scss
+++ /dev/null
@@ -1,65 +0,0 @@
-$width: 120px;
-$height: 40px;
-$border: 0;
-
-$violet: #6559ae;
-$orange: #ff7159;
-
-$border-radius: 8px;
-
-$deg: 120deg;
-$size: 400%;
-$dur: 15s;
-
-@mixin clip-frame($width, $height, $border) {
- -webkit-clip-path: polygon(0% 100%, $border 100%, $border $border, $width - $border $border, $width - $border $height - $border, $border $height - $border, $border 100%, 100% 100%, 100% 0%, 0% 0%);
-}
-
-.like_btn {
- width: 100px;
- height: 30px;
- line-height: 28px;
- padding: 5px 15px 5px 15px;
- @extend .text-formatting;
-
- &:hover {
- color: #7e7e7e;
- }
-
- &.nofollowed {
- &:hover {
- border: none;
- content: '';
- color: white;
- border-radius: $border-radius;
- background: linear-gradient($deg, $violet, $orange, $violet);
- background-size: $size $size;
- animation: gradient $dur ease-in-out infinite, border 1s forwards ease-in-out reverse;
- }
- }
-}
-
-/* helpers */
-
-.text-formatting {
- text-decoration: none;
- text-align: center;
- vertical-align: middle;
- letter-spacing: 1px;
-}
-
-/* motion */
-
-@keyframes gradient {
- 0% {
- background-position: 14% 0%;
- }
-
- 50% {
- background-position: 87% 100%;
- }
-
- 100% {
- background-position: 14% 0%;
- }
-}
diff --git a/.prev/src/components/UserProfile/index.js b/.prev/src/components/UserProfile/index.js
deleted file mode 100644
index 34f2772c..00000000
--- a/.prev/src/components/UserProfile/index.js
+++ /dev/null
@@ -1,232 +0,0 @@
-import React from 'react'
-import styles from './styles.less'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import { PageHeaderWrapper } from '@ant-design/pro-layout'
-import { CustomIcons, MainFeed, PostCreator } from 'components'
-import { SetHeaderSearchType } from 'components/HeaderSearch'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-import Follow_btn from './components/Follow_btn.js'
-import { BadgesType } from 'globals/badges_list'
-import classnames from 'classnames'
-
-const isMobile = localStorage.getItem('mobile_src')
-
-class UserProfile extends React.PureComponent {
- constructor(props) {
- super(props),
- (this.state = {
- invalid: false,
- UUID: '',
- RenderValue: {},
- loading: true,
- Followed: '',
- UserTags: [],
- })
- }
-
- require(i) {
- if (i) {
- try {
- switch (i) {
- case 'pro':
- return ycore.booleanFix(this.state.RenderValue.is_pro)
- case 'dev':
- return ycore.booleanFix(this.state.RenderValue.dev)
- case 'nsfw':
- return ycore.booleanFix(this.state.RenderValue.nsfw_flag)
- }
- } catch (err) {
- ycore.notify.error(err)
- return false
- }
- }
- return false
- }
-
- handleFollowUser = () => {
- const payload = { user_id: this.state.UUID }
- ycore.comty_user.follow((err, res) => {
- if (err) {
- return false
- }
- this.setState({ Followed: !this.state.Followed })
- return
- }, payload)
- }
-
- componentDidMount() {
- this.initUser(this.props.regx)
- SetHeaderSearchType.disable()
- }
-
- initUser = e => {
- const parsed = e.shift()
- const raw = parsed.toString()
- const string = raw.replace('/@', '')
-
- const payload = { key: string }
- ycore.comty_user.find((err, res) => {
- err ? ycore.notify.error(err) : null
- try {
- const rp = JSON.parse(res)
- ycore.yconsole.log(rp)
- if (!rp['0']) {
- ycore.yconsole.log('Bad response / User not found')
- const val = { id: null, username: 'User not found!' }
- this.setState({ invalid: true, RenderValue: val, loading: false })
- ycore.router.go(`main`)
- antd.message.warning(`Its seams like @${string} not exist`)
- return
- }
- const c1 = rp['0'].username.toLowerCase()
- const c2 = string.toLowerCase()
- if (c1 !== c2) {
- ycore.yconsole.log(`Using aproximate user! => ${c1} / ${c2}`)
- ycore.router.go(`@${c1}`)
- }
-
- this.setState({
- UUID: rp['0'].user_id,
- RenderValue: rp['0'],
- loading: false,
- Followed: ycore.booleanFix(rp['0'].is_following),
- })
-
- ycore.comty_user.__tags(
- (err, res) => {
- if (err) return false
- let fn = []
- const a = JSON.parse(res)['tags']
- const b = Object.entries(Object.assign({}, a[0]))
- const objectArray = b.slice(1, b.length)
-
- objectArray.forEach(([key, value]) => {
- if (value == 'true') {
- BadgesType.map(item => {
- item.id === key ? (item ? fn.push(item) : null) : null
- })
- }
- })
- BadgesType.map(item => {
- this.require(item.require) ? fn.push(item) : null
- })
- this.setState({ UserTags: fn })
- },
- { id: this.state.UUID }
- )
- } catch (err) {
- ycore.notify.error(err)
- }
- }, payload)
- }
-
- render() {
-
-const moreMenu = (
-
- 1st antd.Menu item
- 2nd antd.Menu item
-
-);
-
- const { loading, UUID, invalid, RenderValue } = this.state
- return (
-
- {loading ? (
-
- ) : (
-
- {invalid ? null : (
-
-
-

-
-
-
-
-
-
- {this.state.UserTags.length > 0 ? (
-
(
-
-
- {item.title} {item.icon}
-
-
- )}
- />
- ) : null}
-
- {ycore.IsThisUser.same(RenderValue.id) ? null : (
-
this.handleFollowUser()}
- >
-
-
- )}
-
-
- {RenderValue.username}
-
- {ycore.booleanFix(RenderValue.verified) ? (
-
- ) : null}
-
-
- { ycore.IsThisUser.same(UUID)?
-
-
-
- : null }
-
-
-
-
-
-
- }
- />
-
- )}
- {ycore.IsThisUser.same(UUID) ? (
-
- ) : null}
-
-
- )}
-
- )
- }
-}
-export default UserProfile
diff --git a/.prev/src/components/UserProfile/styles.less b/.prev/src/components/UserProfile/styles.less
deleted file mode 100644
index 727d2b1a..00000000
--- a/.prev/src/components/UserProfile/styles.less
+++ /dev/null
@@ -1,166 +0,0 @@
-@import '~themes/index.less';
-
-.textOverflow() {
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- word-break: break-all;
-}
-
-// mixins for clearfix
-// ------------------------
-.clearfix() {
- zoom: 1;
-
- &::before,
- &::after {
- display: table;
- content: ' ';
- }
-
- &::after {
- clear: both;
- height: 0;
- font-size: 0;
- visibility: hidden;
- }
-}
-
-.userWrapper {
- padding: 0 68px 15px 68px;
- margin: auto;
- &.mobile{
- max-width: 510px;
- min-width: 265px;
- width: auto;
- padding: 0 15px 0 15px;
- }
- :global {
- .ant-page-header-content {
- padding-top: 0;
- overflow: initial !important;
- }
-
- .ant-page-header {
- padding: 20px 0 3px 0;
- }
-
- .ant-pro-page-header-wrap-page-header-warp {
- border-radius: 0 0 20px 20px;
- }
- }
-}
-
-.TagWrappers {
- width: 100%;
- float: right;
- position: relative;
- margin: 0 0 7px 0 !important;
-}
-
-.UserCover {
- border-radius: 15px 15px 0 0;
- position: relative;
- margin: -32px auto auto auto;
- max-height: 400px;
- overflow: hidden;
-
- img {
- width: calc(100% + 30px);
- overflow: hidden;
- margin: auto;
- }
-}
-
-.follow_wrapper {
- margin: 0 7px 0 7px;
- position: relative;
- float: right;
-}
-
-.avatar {
- transform: translate(-25px, -45px);
- max-height: 200px;
- max-width: 120px;
-
- &>span {
- position: relative;
- z-index: 10;
- width: 100%;
- height: 100%;
- }
-
- :global {
- .ant-avatar {
- box-shadow: 13px 13px 17px 4px rgba(69, 69, 69, 0.151);
- border-radius: 7px;
-
- img {
- width: 120px;
- }
- }
- }
-}
-
-.pageHeaderContent {
- vertical-align: top;
- display: flex;
-
- .content {
- font-family: "Poppins", sans-serif;
- color: @text-color-secondary;
- width: 100%;
-
- .contentTitle {
- padding: 0 10px 10px 0;
- color: @heading-color;
- font-weight: 500;
- font-size: 20px;
- line-height: 28px;
- }
- }
-}
-
-.user_more_menu{
- float: right;
- font-size: 18px;
-}
-
-
-@media screen and (max-width: @screen-md) {
- .extraContent {
- margin-left: -16px;
- }
-
- .projectList {
- .projectGrid {
- width: 50%;
- }
- }
-}
-
-@media screen and (max-width: @screen-sm) {
- .pageHeaderContent {
- display: block;
- margin: 10px;
-
- .content {
- margin-left: 0;
- }
- }
-
- .extraContent {
- .statItem {
- float: none;
- }
- }
-}
-
-@media screen and (max-width: @screen-xs) {
- .projectList {
- .projectGrid {
- width: 100%;
- }
- }
-}
-
diff --git a/.prev/src/components/YulioID/index.js b/.prev/src/components/YulioID/index.js
deleted file mode 100644
index 64a5eea3..00000000
--- a/.prev/src/components/YulioID/index.js
+++ /dev/null
@@ -1,240 +0,0 @@
-import React, { Component } from 'react'
-import { connect } from 'dva'
-import { Form, Icon as LegacyIcon } from '@ant-design/compatible'
-
-import { Button, Input, Drawer } from 'antd'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-
-import styles from './index.less'
-
-const FormItem = Form.Item
-
-@connect(({ loading }) => ({ loading }))
-@Form.create()
-class YulioID extends Component {
- constructor(props) {
- super(props)
- this.state = {
- // Drawers Visibility (Default on False)
- MainLoginVisible: true,
- ShowLoading: false,
- Answered: false,
- transition: false,
- }
- }
- // Handlers & others
- handleUsername(text) {
- this.setState({ RawUsername: text.target.value })
- }
- handlePassword(text) {
- this.setState({ RawPassword: text.target.value })
- }
- handleRetry = () => {
- this.setState({ ShowLoading: false, StateException: false, StateIcon: '' })
- }
- handleEnter = e => {
- this.handleLogin()
- }
-
- handleLogin = () => {
- var prefix = '[YID]: '
- const { RawUsername, RawPassword } = this.state
- var EncPassword = btoa(RawPassword)
- var EncUsername = btoa(RawUsername)
-
- if (!EncUsername || !EncPassword) {
- var message = 'Incomplete information!'
- ycore.yconsole.log(prefix, message)
- }
-
- if (EncUsername && EncPassword) {
- this.setState({ ShowLoading: true, StateMessage: 'Wait a sec...' })
- if (ycore.AppSettings.InfiniteLogin == true) {
- ycore.yconsole.log(prefix, 'InfiniteLogin is enabled! Disabled getAuth')
- } else {
- ycore.yconsole.log(prefix, 'Initialising login process...')
- const payload = { EncUsername, EncPassword }
- ycore.app_session.login((err, res) => {
- this.handleResponse(res)
- }, payload)
- }
- }
- }
-
- handleResponse = response => {
- if (response == '200') {
- ycore.LoginPage.transitionToogle()
- this.setState({
- StateIcon: 'login',
- StateMessage: 'Wait a sec...',
- StateException: false,
- })
-
- }
- if (response == '400') {
- this.setState({
- StateIcon: 'exclamation-circle',
- StateMessage: 'Invalid credentials',
- StateException: true,
- })
- }
- if (response == '404') {
- this.setState({
- StateIcon: 'exclamation-circle',
- StateMessage: 'Invalid Data',
- StateException: true,
- })
- }
- if (response == '500') {
- this.setState({
- StateIcon: 'cluster',
- StateMessage: 'Server Error',
- StateException: true,
- })
- }
- }
-
- render() {
- const { visible } = this.props
- const { getFieldDecorator } = this.props.form
- const { ShowLoading, StateIcon, StateMessage, StateException } = this.state
-
- return (
-
-
-
-
-
YulioID™
-
-
-
-
-
-
-
- )
- }
-}
-
-export default YulioID
diff --git a/.prev/src/components/YulioID/index.less b/.prev/src/components/YulioID/index.less
deleted file mode 100644
index 3aa46d12..00000000
--- a/.prev/src/components/YulioID/index.less
+++ /dev/null
@@ -1,485 +0,0 @@
- @import '~themes/index.less';
-
- .loginWrapper {
- :global {
- .ant-drawer-right.ant-drawer-open.no-mask {
- right: 1px;
- -ms-transform: translateX(1px);
- transform: translateX(1px);
- width: 100%;
- }
-
- .ant-drawer-right.ant-drawer-open .ant-drawer-content-wrapper {
- width: 100%;
- border-radius: 20px 0 0 20px;
- }
-
- .ant-drawer-body {
- height: 100%;
- }
-
- .ant-drawer {
- box-shadow: none;
- border-radius: 20px 0 0 20px;
- max-width: 512px;
- width: 100%;
- }
-
- .ant-drawer-content {
- background: #ffffff9f;
- border-radius: 20px 0 0 20px;
- }
- }
- }
-
- .StateIcon {
- font-size: 24px;
- margin: 13px;
- }
-
- .StateIcon_exception {
- font-size: 24px;
- margin: 13px;
- color: red !important;
-
- :global {
- i {
- color: red !important;
-
- }
- }
- }
-
- .mainlp {
- flex-direction: column;
- justify-content: center;
- align-items: center;
- display: flex;
- width: 100%;
- word-break: keep-all;
-
- color: @foregroundColor;
- text-align: left;
- }
-
- .mainlp .sectionlp {
- border: 1px solid @accentColor;
- position: relative;
- padding: 40px 40px 50px;
- }
-
- .mainlp .sectionlp>h6 {
- color: @accentColor;
- background: @canvasColor;
- position: absolute;
- top: -10px;
- left: 20px;
- padding: 0 10px;
- }
-
- .mainlp .sectionlp .h6lp.subheader {
- color: @grayColor;
- margin-top: 20px;
- margin-bottom: 20px;
- width: 100%;
- }
-
- @media (max-width: 992px) {
- section:not(:last-child) {
- border-width: 0 0 1px;
- }
-
- section:last-child {
- border-width: 0;
- }
- }
-
-
-
-
- .buttons {
- display: flex;
- flex-wrap: wrap;
- align-items: center;
- }
-
- .buttons>* {
- flex: 1 1 calc(50% - 20px);
- margin-top: 20px;
- }
-
- .buttons>*:nth-child(odd) {
- margin-right: 20px;
- }
-
- a.buttonlp,
- input.buttonlp,
- .buttonlp {
- outline: none;
- width: 100%;
- text-align: center;
- display: inline-block;
- border: none;
- font: 500 16px/1 "Poppins", sans-serif;
- padding: 20px;
- cursor: pointer;
- border-radius: @borderRadius;
- background: @primaryColor;
- color: @backgroundColor;
- position: relative;
- top: 0;
- transition: 0.2s ease;
- }
-
- a.buttonlp:hover,
- a.buttonlp.hover,
- input.buttonlp:hover,
- input.buttonlp.hover,
- .buttonlp:hover,
- .buttonlp.hover {
- top: -3px;
- box-shadow: 0 2px 5px rgba(0, 0, 0, 0.15);
- }
-
- a.buttonlp:active,
- a.buttonlp.active,
- input.buttonlp:active,
- .input.buttonlp.active,
- .buttonlp:active,
- .buttonlp.active {
- background: @primaryShade4;
- outline: none;
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);
- top: 0;
- }
-
- a.buttonlp.disabled,
- input.buttonlp.disabled,
- .buttonlp.disabled {
- opacity: 0.4;
- user-select: none;
- pointer-events: none;
- }
-
- a.buttonlp.medium,
- input.buttonlp.medium,
- .buttonlp.medium {
- padding: 15px 18px;
- width: auto;
- }
-
- a.buttonlp.small,
- input.buttonlp.small,
- .buttonlp.small {
- padding: 10px 12px;
- width: auto;
- font-size: 14px;
- font-weight: 500;
- }
-
- a.buttonlp.secondary,
- input.buttonlp.secondary,
- .buttonlp.secondary {
- background: @secondaryColor;
- }
-
- a.buttonlp.secondary:active,
- a.buttonlp.secondary:focus,
- a.buttonlp.secondary.active,
- input.buttonlp.secondary:active,
- input.buttonlp.secondary:focus,
- input.buttonlp.secondary.active,
- .buttonlp.secondary:active,
- .buttonlp.secondary:focus,
- .buttonlp.secondary.active {
- background: @secondaryShade4;
- outline: none;
- }
-
- a.buttonlp.accent,
- input.buttonlp.accent,
- .buttonlp.accent {
- background: @accentColor;
- }
-
- a.buttonlp.accent:active,
- a.buttonlp.accent:focus,
- a.buttonlp.accent.active,
- input.buttonlp.accent:active,
- input.buttonlp.accent:focus,
- input.buttonlp.accent.active,
- .buttonlp.accent:active,
- .buttonlp.accent:focus,
- .buttonlp.accent.active {
- background: @accentShade4;
- }
-
- a.buttonlp.accent2,
- input.buttonlp.accent2,
- .buttonlp.accent2 {
- background: @accent2Color;
- }
-
- a.buttonlp.accent2:active,
- a.buttonlp.accent2:focus,
- a.buttonlp.accent2.active,
- input.buttonlp.accent2:active,
- input.buttonlp.accent2:focus,
- input.buttonlp.accent2.active,
- .buttonlp.accent2:active,
- .buttonlp.accent2:focus,
- .buttonlp.accent2.active {
- background: @accent2Shade4;
- }
-
- a.buttonlp.accent3,
- input.buttonlp.accent3,
- .buttonlp.accent3 {
- background: @accent3Color;
- }
-
- a.buttonlp.accent3:active,
- a.buttonlp.accent3:focus,
- a.buttonlp.accent3.active,
- input.buttonlp.accent3:active,
- input.buttonlp.accent3:focus,
- input.buttonlp.accent3.active,
- .buttonlp.accent3:active,
- .buttonlp.accent3:focus,
- .buttonlp.accent3.active {
- background: @accent3Shade4;
- }
-
- /*inputs*/
- .input__wrapper {
- margin-bottom: 10px;
-
- :global {
- .ant-col {
- width: 100%;
- }
- }
- }
-
- .inputRG__wrapper {
- margin-bottom: 0px;
- }
-
- .labelform {
- font-weight: 500;
- display: block;
- margin-bottom: 5px;
- }
-
- .inputform,
- select,
- textarea {
- height: 50px;
- font-size: 16px;
- border: 2px solid @neutralShade3;
- width: 100%;
- padding: 12px;
- font-family: "Poppins";
- border-radius: @borderRadius;
- color: @foregroundColor;
- background: @backgroundColor;
- }
-
- .inputform:focus,
- .inputform.active,
- select:focus,
- select.active,
- textarea:focus,
- textarea.active {
- outline: none;
- border-color: @primaryColor;
- }
-
- .inputform:disabled,
- select:disabled,
- textarea:disabled {
- cursor: not-allowed;
- background: @neutralShade1;
- opacity: 0.6;
- }
-
- Input .inputPasswordform {
- height: 50px;
- font-size: 16px;
- border: 2px solid @neutralShade3;
- width: 100%;
- padding: 12px;
- font-family: "Poppins";
- border-radius: @borderRadius;
- color: @foregroundColor;
- background: @backgroundColor;
- }
-
- Input .inputPasswordform:focus {
- outline: none;
- border-color: @primaryColor;
- }
-
- .inputform.input {
- height: 56px;
- font-size: 18px;
- padding: 15px;
- }
-
-
- /*spinner*/
- .spinner+.labellp {
- font-size: 14px;
- font-weight: 500;
- margin-top: 8px;
- display: inline-block;
- text-transform: uppercase;
- color: @primaryShade4;
- }
-
- .spinner1 .spinner {
- max-width: 50px;
- margin: auto;
- height: 20px;
- position: relative;
- }
-
- .spinner1 .spinner:after {
- content: "";
- position: absolute;
- width: 20px;
- height: 20px;
- left: -10%;
- background: @primaryColor;
- animation: spinnerLeftRight 1s infinite;
- }
-
- .spinner1 .spinner:before {
- content: "";
- position: absolute;
- width: 20px;
- height: 20px;
- left: -10%;
- background: @primaryShade2;
- opacity: 1;
- animation: spinnerLeftRight 1s infinite 0.06s;
- }
-
- @keyframes spinnerLeftRight {
- 0% {
- left: 85%;
- }
-
- 50% {
- left: -10%;
- }
-
- 100% {
- left: 85%;
- }
- }
-
-
-
- .formlogin {
- width: 95%;
- height: auto;
- border-radius: 10px;
- padding: 30px;
- box-shadow: 0 3px 15px rgba(51, 51, 51, 0.2);
- background: #ffffff44;
- margin: 20px 10px 20px 10px;
- position: relative;
- overflow: hidden;
- vertical-align: middle;
- }
-
- .formlogin .checkbox {
- margin-bottom: 30px;
- }
-
- .formlogin .spinner__wrapper {
- place-items: center;
- position: absolute;
- width: 100%;
- height: 100%;
- left: 0;
- top: 0;
- background: rgba(255, 255, 255, 0.85);
-
- }
-
-
- .preheader {
- position: relative;
- top: 0;
-
- h1 {
- font: 700 48px "Nunito", sans-serif;
- text-align: center;
- margin-bottom: 10px;
- }
-
- h6 {
- padding: 3em 0 0 0;
- line-height: 1px;
- display: flex;
- font: 500 16px/1 "Poppins", sans-serif;
- text-transform: uppercase;
-
- img {
- vertical-align: middle;
- height: 17px;
- }
- }
- }
-
- .moreActions {
- display: flex;
- margin: auto;
- align-content: center;
- position: relative;
- width: 100%;
-
- :global {
- .ant-btn {
- margin: auto;
- }
- }
- }
-
- @media (max-width: 472px) {
- .moreActions {
- display: grid;
- align-content: center;
- position: relative;
- width: 100%;
-
- :global {
- .ant-btn {
- margin: 5px;
- }
- }
- }
- }
-
- .resultbox {
- h6 {
- font-family: "Poppins", sans-serif;
- text-align: center;
- font-size: 16px;
- margin: auto;
- vertical-align: middle;
- }
-
- .retryBTN {
- text-align: center;
- width: 100%;
- position: absolute;
- bottom: 0;
- margin: auto;
- vertical-align: bottom;
- }
-
- margin: auto;
- }
\ No newline at end of file
diff --git a/.prev/src/components/index.js b/.prev/src/components/index.js
deleted file mode 100644
index 7583c7a5..00000000
--- a/.prev/src/components/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-// @alias from 'components'
-
-// Helpers & Misc
-import MobileWarning from './MobileWarning'
-import CustomIcons from './CustomIcons'
-import Loader from './Loader/Loader.js'
-import ScrollBar from './ScrollBar'
-import App_about from './App_about'
-
-// App Layout Components
-import * as MyLayout from './Layout/index.js'
-import HeaderSearch from './HeaderSearch'
-import PageTransition from './PageTransition'
-import YulioID from './YulioID'
-
-// User Components
-import UserBadges from './UserBadges'
-import UserProfile from './UserProfile'
-import SearchCard from './SearchCard'
-
-// Post Components
-import MediaPlayer from './MediaPlayer'
-import PostCard from './PostCard'
-import Like_button from './Like_button'
-import MainFeed from './MainFeed'
-import PostCreator from './PostCreator'
-
-// Mix & Export all
-export {
- App_about,
- MediaPlayer,
- UserBadges,
- MobileWarning,
- PageTransition,
- SearchCard,
- HeaderSearch,
- YulioID,
- UserProfile,
- MyLayout,
- Loader,
- ScrollBar,
- PostCard,
- PostCreator,
- CustomIcons,
- Like_button,
- MainFeed,
-}
diff --git a/.prev/src/layouts/BaseLayout.js b/.prev/src/layouts/BaseLayout.js
deleted file mode 100644
index 0e790821..00000000
--- a/.prev/src/layouts/BaseLayout.js
+++ /dev/null
@@ -1,57 +0,0 @@
-import React, { PureComponent, Fragment } from 'react'
-import PropTypes from 'prop-types'
-import { connect } from 'dva'
-import { Helmet } from 'react-helmet'
-import { Loader } from 'components'
-import { queryLayout } from 'utils'
-import NProgress from 'nprogress'
-import config from 'config'
-import withRouter from 'umi/withRouter'
-import {AppSettings} from 'ycore'
-
-import PublicLayout from './PublicLayout'
-import PrimaryLayout from './PrimaryLayout'
-import './BaseLayout.less'
-
-const LayoutMap = {
- primary: PrimaryLayout,
- public: PublicLayout,
-}
-
-@withRouter
-@connect(({ loading }) => ({ loading }))
-class BaseLayout extends PureComponent {
- previousPath = ''
-
- render() {
- const { loading, children, location } = this.props
- const Container = LayoutMap[queryLayout(config.layouts, location.pathname)]
-
- const currentPath = location.pathname + location.search
- if (currentPath !== this.previousPath) {
- NProgress.start()
- }
-
- if (!loading.global) {
- NProgress.done()
- this.previousPath = currentPath
- }
-
- return (
-
-
- {config.siteName}
-
- {Loader( AppSettings.InfiniteLoading? {spinning: true} : loading )}
-
- {children}
-
- )
- }
-}
-
-BaseLayout.propTypes = {
- loading: PropTypes.object,
-}
-
-export default BaseLayout
diff --git a/.prev/src/layouts/BaseLayout.less b/.prev/src/layouts/BaseLayout.less
deleted file mode 100644
index b2d128b5..00000000
--- a/.prev/src/layouts/BaseLayout.less
+++ /dev/null
@@ -1,74 +0,0 @@
-@import '~themes/index.less';
-
-:global {
- #nprogress {
- pointer-events: none;
-
- .bar {
- background: transparent;
- position: fixed;
- z-index: 2048;
- top: 0;
- left: 0;
- right: 0;
- width: 100%;
- height: 2px;
- }
-
- .peg {
- display: block;
- position: absolute;
- right: 0;
- width: 100px;
- height: 100%;
- box-shadow: 0 0 10px @primary-color, 0 0 5px @primary-color;
- opacity: 1;
- transform: rotate(3deg) translate(0, -4px);
- }
-
- .spinner {
- display: block;
- position: fixed;
- z-index: 1031;
- top: 15px;
- right: 15px;
- }
-
- .spinner-icon {
- width: 18px;
- height: 18px;
- box-sizing: border-box;
- border: solid 2px transparent;
- border-top-color: @primary-color;
- border-left-color: @primary-color;
- border-radius: 50%;
-
- :local {
- animation: nprogress-spinner 400ms linear infinite;
- }
- }
- }
-
- .nprogress-custom-parent {
- overflow: hidden;
- position: relative;
-
- #nprogress {
-
- .bar,
- .spinner {
- position: absolute;
- }
- }
- }
-}
-
-@keyframes nprogress-spinner {
- 0% {
- transform: rotate(0deg);
- }
-
- 100% {
- transform: rotate(360deg);
- }
-}
diff --git a/.prev/src/layouts/PrimaryLayout.js b/.prev/src/layouts/PrimaryLayout.js
deleted file mode 100644
index 84d15a0a..00000000
--- a/.prev/src/layouts/PrimaryLayout.js
+++ /dev/null
@@ -1,130 +0,0 @@
-/* global window */
-/* global document */
-import React from 'react'
-import PropTypes from 'prop-types'
-import withRouter from 'umi/withRouter'
-import { connect } from 'dva'
-import {
- MyLayout,
- PageTransition,
- HeaderSearch,
- MobileWarning,
-} from 'components'
-import { enquireScreen, unenquireScreen } from 'enquire-js'
-import store from 'store'
-import classnames from 'classnames'
-
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-
-import styles from './PrimaryLayout.less'
-
-const { Content } = antd.Layout
-const { Sider, Control, Secondary, WindowAppBar } = MyLayout
-
-@withRouter
-@connect(({ app, loading }) => ({ app, loading }))
-class PrimaryLayout extends React.Component {
- constructor(props) {
- super(props)
- window.PrimaryComponent = this
- this.state = {
- collapsed: ycore.AppSettings.default_collapse_sider ? true : false,
- isMobile: false,
- desktop_mode: false,
- userData: '',
- }
- }
-
- componentDidMount() {
- this.setState({
- userData: ycore.userData(),
- })
-
- this.enquireHandler = enquireScreen(mobile => {
- const { isMobile } = this.state
- if (isMobile !== mobile) {
- this.setState({
- isMobile: mobile,
- })
- store.set('mobile_src', mobile)
- }
- })
- }
-
- componentWillUnmount() {
- unenquireScreen(this.enquireHandler)
- }
-
- onCollapseChange = () => {
- const fromStore = store.get('collapsed')
- this.setState({ collapsed: !this.state.collapsed })
- store.set('collapsed', !fromStore)
- }
-
- render() {
- const { app, location, dispatch, children } = this.props
- const { userData, collapsed, isMobile } = this.state
- const { onCollapseChange } = this
- const { theme } = app
-
- const SiderProps = {
- theme,
- userData,
- isMobile,
- collapsed,
- onCollapseChange,
- onThemeChange(theme) {
- dispatch({
- type: 'app/handleThemeChange',
- payload: theme,
- })
- },
- }
-
- const SecondaryProps = {
- userData,
- isMobile,
- }
-
- return (
-
- {/* {isMobile ? : null} */}
-
-
-
-
-
-
-
-
-
-
-
- )
- }
-}
-
-PrimaryLayout.propTypes = {
- children: PropTypes.element.isRequired,
- location: PropTypes.object,
- dispatch: PropTypes.func,
- app: PropTypes.object,
- loading: PropTypes.object,
-}
-
-export default PrimaryLayout
diff --git a/.prev/src/layouts/PrimaryLayout.less b/.prev/src/layouts/PrimaryLayout.less
deleted file mode 100644
index 29d41079..00000000
--- a/.prev/src/layouts/PrimaryLayout.less
+++ /dev/null
@@ -1,51 +0,0 @@
-@import '~themes/index.less';
-
-.__ControlBar {
- width: 100%;
- position: absolute;
- bottom: 0;
- z-index: 30;
-}
-
-.primary_layout {
- overflow: hidden;
- background-color: @primary_layout_backgroud;
- margin: auto;
- &.mobile{
- >.primary_layout_container {
- border-radius: 0;
- margin: 0;
- padding: 0;
- overflow-y: overlay;
- overflow-x: hidden;
- }
- .primary_layout_content{
- padding: 35px 15px 15px 15px;
- }
- }
-}
-
-// PRIMARY LAYOUT
-.primary_layout_container {
- transition: background-color @__Global_layout_transitions-dur linear;
- background-color: @primary_layout_container_backgroud;
- border-radius: @primary_layout_container_border-rd;
-
- overflow-x: hidden;
- margin: 0 0 0 10px;
- width: 100vw;
- height: 100vh;
-
- position: relative;
- bottom: 0;
- align-self: center;
- float: left;
-}
-
-.primary_layout_content {
- vertical-align: middle;
- width: 100%;
- float: right;
- padding: @primary_layout_content_padding;
- transition: all @__Global_layout_transitions-dur ease;
-}
diff --git a/.prev/src/layouts/PublicLayout.js b/.prev/src/layouts/PublicLayout.js
deleted file mode 100644
index caaaf5cc..00000000
--- a/.prev/src/layouts/PublicLayout.js
+++ /dev/null
@@ -1,3 +0,0 @@
-export default ({ children }) => {
- return children
-}
diff --git a/.prev/src/layouts/index.js b/.prev/src/layouts/index.js
deleted file mode 100644
index 6fd7231c..00000000
--- a/.prev/src/layouts/index.js
+++ /dev/null
@@ -1,74 +0,0 @@
-import React, { Component } from 'react'
-import withRouter from 'umi/withRouter'
-import { ConfigProvider } from 'antd'
-import { I18nProvider } from '@lingui/react'
-import { langFromPath, defaultLanguage } from 'utils'
-import en_US from 'antd/lib/locale-provider/en_US'
-import BaseLayout from './BaseLayout'
-
-const languages = {
- en: en_US,
-}
-
-@withRouter
-class Layout extends Component {
- state = {
- catalogs: {},
- }
-
- language = defaultLanguage
-
- componentDidMount() {
- const language = langFromPath(this.props.location.pathname)
- this.language = language
- this.loadCatalog(language)
- }
-
- shouldComponentUpdate(nextProps, nextState) {
- const language = langFromPath(nextProps.location.pathname)
- const preLanguage = this.language
- const { catalogs } = nextState
-
- if (preLanguage !== language && !catalogs[language]) {
- this.loadCatalog(language)
- this.language = language
- return false
- }
- this.language = language
-
- return true
- }
-
- loadCatalog = async language => {
- const catalog = await import(
- /* webpackMode: "lazy", webpackChunkName: "i18n-[index]" */
- `@lingui/loader!../locales/${language}/messages.json`
- )
-
- this.setState(state => ({
- catalogs: {
- ...state.catalogs,
- [language]: catalog,
- },
- }))
- }
-
- render() {
- const { location, children } = this.props
- const { catalogs } = this.state
-
- let language = langFromPath(location.pathname)
- // If the language pack is not loaded or is loading, use the default language
- if (!catalogs[language]) language = defaultLanguage
-
- return (
-
-
- {children}
-
-
- )
- }
-}
-
-export default Layout
diff --git a/.prev/src/locales/en/messages.json b/.prev/src/locales/en/messages.json
deleted file mode 100644
index 4e8253ac..00000000
--- a/.prev/src/locales/en/messages.json
+++ /dev/null
@@ -1,54 +0,0 @@
-{
- "/dashboard": "/dashboard",
- "Add Param": "Add Param",
- "Address": "Address",
- "Age": "Age",
- "Are you sure delete this record?": "Are you sure delete this record?",
- "Author": "Author",
- "Avatar": "Avatar",
- "Categories": "Categories",
- "Clear notifications": "Clear notifications",
- "Comments": "Comments",
- "Create": "Create",
- "Create User": "Create User",
- "CreateTime": "CreateTime",
- "Dark": "Dark",
- "Delete": "Delete",
- "Email": "Email",
- "Female": "Female",
- "Gender": "Gender",
- "Hi,": "Hi,",
- "Image": "Image",
- "Light": "Light",
- "Male": "Male",
- "Name": "Name",
- "NickName": "NickName",
- "Not Found": "Not Found",
- "Operation": "Operation",
- "Params": "Params",
- "Password": "Password",
- "Phone": "Phone",
- "Pick an address": "Pick an address",
- "Please pick an address": "Please pick an address",
- "Publised": "Publised",
- "Publish Date": "Publish Date",
- "Reset": "Reset",
- "Search": "Search",
- "Search Name": "Search Name",
- "Send": "Send",
- "Sign in": "Sign in",
- "Sign out": "Sign out",
- "Switch Theme": "Switch Theme",
- "Tags": "Tags",
- "The input is not valid E-mail!": "The input is not valid E-mail!",
- "The input is not valid phone!": "The input is not valid phone!",
- "Title": "Title",
- "Total {total} Items": "Total {total} Items",
- "Unpublished": "Unpublished",
- "Update": "Update",
- "Update User": "Update User",
- "Username": "Username",
- "Views": "Views",
- "Visibility": "Visibility",
- "You have viewed all notifications.": "You have viewed all notifications."
-}
\ No newline at end of file
diff --git a/.prev/src/models/app.js b/.prev/src/models/app.js
deleted file mode 100644
index 67911895..00000000
--- a/.prev/src/models/app.js
+++ /dev/null
@@ -1,82 +0,0 @@
-/* global window */
-import { router } from 'utils'
-import store from 'store'
-import { pathMatchRegexp } from 'utils'
-import config from 'config'
-import * as ycore from 'ycore'
-
-export default {
- namespace: 'app',
- state: {
- AppSettings: store.get('app_settings') || config.defaultSettings,
- theme: store.get('theme') || 'light',
- locationQuery: {},
- },
- subscriptions: {
- setupHistory({ dispatch, history }) {
- history.listen(location => {
- dispatch({
- type: 'updateState',
- payload: {
- locationPathname: location.pathname,
- locationQuery: location.query,
- },
- })
- })
- },
-
- setupRequestCancel({ history }) {
- history.listen(() => {
- const { cancelRequest = new Map() } = window
- cancelRequest.forEach((value, key) => {
- if (value.pathname !== window.location.pathname) {
- value.cancel('Canceling...')
- cancelRequest.delete(key)
- }
- })
- })
- },
- setup({ dispatch }) {
- dispatch({ type: 'query' })
- },
- },
- effects: {
- *query({ payload }, { call, put, select }) {
- const validBackup = ycore.validate.backup()
- if (ycore.validate.session() == true) {
- if (pathMatchRegexp(['/', '/login'], window.location.pathname)) {
- router.push({ pathname: '/main' })
- }
- ycore.QueryRuntime()
-
- return true
- } else if (!pathMatchRegexp(['', '/login'], window.location.pathname)) {
- if (validBackup == true) {
- ycore.app_session.logout()
- } else {
- router.push({ pathname: '/login' })
- }
- }
- if (pathMatchRegexp([''], window.location.pathname)) {
- router.push({ pathname: '/login' })
- }
- },
- },
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- }
- },
-
- handleThemeChange(state, { payload }) {
- store.set('theme', payload)
- state.theme = payload
- },
-
- allNotificationsRead(state) {
- state.notifications = []
- },
- },
-}
diff --git a/.prev/src/pages/$page/index.js b/.prev/src/pages/$page/index.js
deleted file mode 100644
index 37a3c3fc..00000000
--- a/.prev/src/pages/$page/index.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import React, { PureComponent } from 'react'
-import { UserProfile } from 'components'
-import __m from '../__m/index.js'
-import { pathMatchRegexp } from 'utils'
-import Error404 from '../404.js'
-import * as ycore from 'ycore'
-
-class PageIndexer extends PureComponent {
- render() {
- const { location } = this.props
- const matchUser = pathMatchRegexp('/@:id', location.pathname)
- const matchMaster = pathMatchRegexp('/__m', location.pathname)
-
- if (matchUser) {
- ycore.yconsole.log(`User matched! ${location.pathname}`)
- return (
-
-
-
- )
- }
- if (matchMaster) {
- return ycore.IsThisUser.dev() || ycore.IsThisUser.admin() ? (
- <__m />
- ) : (
-
- )
- }
- // By default return Error 404
- return (
-
-
-
- )
- }
-}
-
-export default PageIndexer
diff --git a/.prev/src/pages/$page/index.less b/.prev/src/pages/$page/index.less
deleted file mode 100644
index cc1b09bf..00000000
--- a/.prev/src/pages/$page/index.less
+++ /dev/null
@@ -1,14 +0,0 @@
-.content {
- line-height: 2.4;
- font-size: 13px;
-
- .item {
- display: flex;
-
- &>div {
- &:first-child {
- width: 100px;
- }
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/404.js b/.prev/src/pages/404.js
deleted file mode 100644
index ddc21062..00000000
--- a/.prev/src/pages/404.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import React from 'react'
-import { Icon as LegacyIcon } from '@ant-design/compatible'
-import { Page } from 'components'
-import styles from './404.less'
-
-const Error404 = () => (
-
-
-
OBA BLYAT
-
- ERROR 404
-
-
-)
-
-export default Error404
diff --git a/.prev/src/pages/404.less b/.prev/src/pages/404.less
deleted file mode 100644
index ac10f8cc..00000000
--- a/.prev/src/pages/404.less
+++ /dev/null
@@ -1,55 +0,0 @@
-/* devanagari */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v6/pxiEyp8kv8JHgFVrJJbecmNE.woff2) format('woff2');
- unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
-}
-
-/* latin-ext */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v6/pxiEyp8kv8JHgFVrJJnecmNE.woff2) format('woff2');
- unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
-}
-
-/* latin */
-@font-face {
- font-family: 'Poppins';
- font-style: normal;
- font-weight: 400;
- font-display: swap;
- src: local('Poppins Regular'), local('Poppins-Regular'), url(https://fonts.gstatic.com/s/poppins/v6/pxiEyp8kv8JHgFVrJJfecg.woff2) format('woff2');
- unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
-}
-
-.error {
- background-color: transparent;
- color: black;
- text-align: center;
- position: absolute;
- top: 30%;
- margin-top: -50px;
- left: 50%;
- margin-left: -100px;
- width: 200px;
-
- :global .anticon {
- font-size: 48px;
- margin-bottom: 16px;
- }
-
- h1 {
- font-family: 'Poppins', sans-serif;
-
- }
-
- p {
- font-family: 'Poppins', sans-serif;
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/__m/index.js b/.prev/src/pages/__m/index.js
deleted file mode 100644
index a8bd4faf..00000000
--- a/.prev/src/pages/__m/index.js
+++ /dev/null
@@ -1,232 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import jwt from 'jsonwebtoken'
-
-import styles from './style.less'
-import MainFeed from '../../components/MainFeed'
-
-const UserData = ycore.userData()
-
-export default class __m extends React.Component {
- constructor(props) {
- super(props),
- (this.state = {
- s_id: '',
- coninfo: 'Getting info...',
- s_token: '',
- s_ses: '',
- })
- }
-
- componentDidMount() {
- this.handleSID()
- this.handleToken()
- }
-
- handleSID() {
- ycore.comty_get.session_id((err, response) => {
- if (err) {
- return ycore.notify.error(err)
- }
- this.setState({ s_id: response })
- })
- }
- handleToken() {
- const a = ycore.token_data.getRaw()
- const b = jwt.decode(a)
- this.setState({ s_token: b })
- {
- ycore.validate.session(res => {
- this.setState({ s_ses: res })
- })
- }
- }
- handleDesktop() {
- const a = localStorage.getItem('desktop_src')
- let to
- if ( a == 'false') {
- to = true
- } else {
- to = false
- }
- ycore.notify.proccess('Switching to ', to ? 'Desktop Mode' : 'Normal Mode')
- localStorage.setItem('desktop_src', to)
- setTimeout(() => ycore.RefreshONCE(), 2000)
- }
- DescompileSDCP() {
- let result = {}
- for (var i = 0; i < UserData.length; i++) {
- result[UserData[i].key] = UserData[i].value
- }
- console.log([result])
- }
-
- render() {
- const arrayOfSDCP = Object.entries(UserData).map(e => ({ [e[0]]: e[1] }))
- const { UserID, UserToken, expiresIn } = this.state.s_token
- const { ValidSDCP, ValidCookiesToken, final } = this.state.s_ses
-
- const AddDummy = {
- id: '3',
- publisher: { id: '1' },
- post_id: '1',
- user_id: '48',
- recipient_id: '0',
- postText: 'New by ID Dummy Payload',
- }
-
- return (
-
-
-
- yCore™ Server
-
-
-
-
-
- Server UID
-
- {ycore.__server.getKey()}
-
-
-
- Your SID
-
- {this.state.s_id}
-
-
-
- Current Session
-
- Raw => {JSON.stringify(this.state.s_token)}
- UID => {UserID}
- Session Token => {UserToken}
- expiresIn => {expiresIn}
-
- ValidSDCP => {JSON.stringify(ValidSDCP)}
- ValidCookiesToken => {JSON.stringify(ValidCookiesToken)}
- Valid? => {JSON.stringify(final)}
-
-
-
- {' '}
- Using v{ycore.AppInfo.version} | User @{UserData.username}#
- {UserData.id} |{' '}
-
-
-
-
-
-
- Test yCore™{' '}
-
-
-
-
ycore.notify.error('Yep, its not empty, jeje funny')}
- >
- {' '}
- Send empty notify.error(){' '}
-
-
- ycore.notify.error(`
- ycore.GetPosts(uid, get, '0', (err, result) => {
- const parsed = JSON.parse(result)['data']
- const isEnd = parsed.length < ycore.AppSettings.limit_post_catch? true : false
- this.setState({ isEnd: isEnd, data: parsed, loading: false })
- })`)
- }
- >
- {' '}
- Send mock notify.error(){' '}
-
-
-
ycore.notify.error('Error Mock 1')}>
- {' '}
- notify.error{' '}
-
-
ycore.notify.proccess('Proccess Mock 1')}>
- {' '}
- notify.proccess{' '}
-
-
this.handleDesktop()}>
- {' '}
- Switch to Desktop_mode{' '}
-
-
-
ycore.app_modals.report_post()}>
- Open report_post modal
-
-
-
ycore.sync.emmitPost()}>
- Emmit Post feed
-
-
-
-
-
- SDCP™
-
-
-
-
-
- UserData
-
-
-
- {JSON.stringify(arrayOfSDCP)}
-
-
-
-
-
-
-
- MainFeed | ENV Test
-
-
-
-
- ycore.FeedHandler.addToRend(AddDummy)}>
- {' '}
- ADD DUMMY{' '}
-
- ycore.FeedHandler.killByID(3)}>
- {' '}
- KillByID (3){' '}
-
-
-
-
-
-
- )
- }
-}
diff --git a/.prev/src/pages/__m/style.less b/.prev/src/pages/__m/style.less
deleted file mode 100644
index ad2d7dc7..00000000
--- a/.prev/src/pages/__m/style.less
+++ /dev/null
@@ -1,31 +0,0 @@
-@import '~themes/index.less';
-
-.Wrapper {
- padding: 10px;
-}
-
-.titleHeader {
- position: relative;
- width: 100%;
- height: 40px;
- background-color: #fff;
- border-radius: 8px;
- line-height: 40px;
- padding: 0 30px 0 15px;
-
- h1 {
- font-family: "Poppins", sans-serif;
- font-size: 14px;
- color: #1890ff;
- }
-
-}
-
-.sectionWrapper {
- word-break: break-all;
- max-width: 100%;
- text-overflow: clip;
- margin: 15px auto 15px 0;
- padding: 15px;
- background-color: rgb(236, 236, 236);
-}
\ No newline at end of file
diff --git a/.prev/src/pages/about/index.js b/.prev/src/pages/about/index.js
deleted file mode 100644
index 928dcb1b..00000000
--- a/.prev/src/pages/about/index.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react'
-import { App_about } from 'components'
-
-class AppAbout extends React.Component {
- render() {
- return
- }
-}
-export default AppAbout
diff --git a/.prev/src/pages/about/index.less b/.prev/src/pages/about/index.less
deleted file mode 100644
index 5dd1b8b1..00000000
--- a/.prev/src/pages/about/index.less
+++ /dev/null
@@ -1,18 +0,0 @@
-.aboutWrapper {
- margin: auto;
- max-width: 70vw;
- width: 500px;
- vertical-align: middle;
- position: relative;
- background-color: rgba(73, 72, 72, 0.349);
-
- img {
- width: 100%;
- padding: 15px;
- }
-}
-
-.appName {
- font-family: "Poppins", sans-serif;
- font-size: 27px;
-}
\ No newline at end of file
diff --git a/.prev/src/pages/events/index.js b/.prev/src/pages/events/index.js
deleted file mode 100644
index a8c63e65..00000000
--- a/.prev/src/pages/events/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-
-export default class Events extends React.PureComponent{
- render(){
- return(
-
- )
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/events/index.less b/.prev/src/pages/events/index.less
deleted file mode 100644
index f7661901..00000000
--- a/.prev/src/pages/events/index.less
+++ /dev/null
@@ -1 +0,0 @@
-@import '~themes/index.less';
\ No newline at end of file
diff --git a/.prev/src/pages/g/$group/index.js b/.prev/src/pages/g/$group/index.js
deleted file mode 100644
index 3d774581..00000000
--- a/.prev/src/pages/g/$group/index.js
+++ /dev/null
@@ -1,99 +0,0 @@
-import React, { PureComponent } from 'react'
-import { pathMatchRegexp } from 'utils'
-import { SearchCard } from 'components'
-import styles from './styles.less'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-
-class GroupIndexer extends PureComponent {
- constructor(props) {
- super(props),
- (this.state = {
- SearchResult: '',
- loading: true,
- })
- }
- toogleLoading() {
- this.setState({ loading: !this.state.loading })
- }
- componentDidMount() {
- try {
- const { location } = this.props
- const matchSearch = pathMatchRegexp('/s/:id', location.pathname)
- const parsed = matchSearch.shift()
- const raw = parsed.toString()
- const string = raw.replace('/s/', '')
- } catch (err) {
- ycore.notify.error(err)
- }
- }
-
- EntryComponent = (t, source) => {
- try {
- return (
-
- )
- } catch (error) {
- return (
-
- Render Error
-
- )
- }
- }
-
- render() {
- const { location } = this.props
- const matchSearch = pathMatchRegexp('/g/:id', location.pathname)
-
- const parsed = matchSearch.shift()
- const raw = parsed.toString()
- const string = raw.replace('/g/', '')
-
- if (matchSearch) {
- return (
-
-
- Results of {string}{' '}
-
-
-
- {this.state.loading
- ? null
- : this.renderResult(this.state.SearchResult)}
-
-
-
- )
- }
-
- return (
-
-
Render Error
-
- )
- }
-}
-
-export default GroupIndexer
diff --git a/.prev/src/pages/g/$group/styles.less b/.prev/src/pages/g/$group/styles.less
deleted file mode 100644
index 6ced630f..00000000
--- a/.prev/src/pages/g/$group/styles.less
+++ /dev/null
@@ -1,20 +0,0 @@
-@import '~themes/index.less';
-
-.searchHeader {
- font-family: "Nunito", sans-serif;
- font-size: 40px;
- text-align: center;
- margin-top: 7px;
-}
-
-.results {
- padding: 10px;
-}
-
-.searchEntry {
- :global {
- .antd-card {
- margin: auto;
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/index.js b/.prev/src/pages/index.js
deleted file mode 100644
index 183c0a9e..00000000
--- a/.prev/src/pages/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import React, { PureComponent } from 'react'
-import * as ycore from 'ycore'
-
-class Index extends PureComponent {
- render() {
- ycore.router.go(`login`)
- }
-}
-
-export default Index
diff --git a/.prev/src/pages/login/index.js b/.prev/src/pages/login/index.js
deleted file mode 100644
index 6832aa16..00000000
--- a/.prev/src/pages/login/index.js
+++ /dev/null
@@ -1,132 +0,0 @@
-import React from 'react'
-import { AppInfo } from 'ycore'
-import styles from './index.less'
-import classnames from 'classnames'
-
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-
-import { RegistrationForm } from './register.js'
-import { NormalLoginForm } from './login.js'
-
-import { siteName } from 'config'
-
-export function transitionToogle() {
- window.LoginComponent.setState({
- transition: !window.LoginComponent.state.transition,
- })
- window.LoginComponent.toogleYulioID()
-}
-
-class Login extends React.PureComponent {
- constructor(props) {
- super(props)
- window.LoginComponent = this
- this.state = {
- transition: false,
- using: 1,
- }
- }
- switchType = {
- f: a => {
- this.setState({ using: a })
- },
- login: () => {
- this.switchType.f(1)
- },
- register: () => {
- this.switchType.f(2)
- },
- forgot: () => {
- this.switchType.f(3)
- },
- }
-
- renderType(t) {
- const a = this.state.using
- if (t) {
- switch (a) {
- case 1:
- return `Sign in ${siteName}`
- case 2:
- return 'Register'
- case 3:
- return 'Forgot'
- default:
- return 'Auth'
- }
- } else {
- switch (a) {
- case 1:
- return
- case 2:
- return
- case 3:
- return null
- default:
- return
- }
- }
- }
-
- renderHelperButtons = () => {
- if (this.state.using == 1) {
- return (
-
-
this.switchType.forgot()}>
- Forgotten password
-
-
this.switchType.register()}>
- Create an account
-
-
- )
- }
- if (this.state.using == 2 || 3) {
- return (
-
-
this.switchType.login()}>
- Login
-
-
- )
- }
- }
-
- render() {
- return (
-
-
- ⚠ Using v{AppInfo.version} {AppInfo.stage}
-
-
-
-
-
-
-
YulioID™
-
-
{this.renderType(true)}
-
-
- {this.renderType()}
- {this.renderHelperButtons()}
-
-
-
-
- )
- }
-}
-export default Login
diff --git a/.prev/src/pages/login/index.less b/.prev/src/pages/login/index.less
deleted file mode 100644
index ef8e2646..00000000
--- a/.prev/src/pages/login/index.less
+++ /dev/null
@@ -1,235 +0,0 @@
-@import '~themes/index.less';
-
-
-.login_wrapper{
- width: 100%;
- height: 100%;
- font-family: "Poppins", sans-serif!important;
- h1,h2,h3,h4,h5,h6{color: #333;}
- position: absolute;
- top: 0;
- left: 0;
- display: flex;
- display: flex;
- align-items: center;
- justify-content: center;
- font-size: 20px;
- margin: auto;
-
- overflow-y: scroll;
- overflow-x: hidden;
- &.goOut{
- .auth_box{
- -webkit-animation-name: fadeOutLeft;
- animation-name: fadeOutLeft;
- }
- }
- transition: all 300ms ease-in-out;
-}
-
-
-.auth_box{
- display: flex;
- transition: all 300ms ease-in-out;
-
- .yid_logo {
- vertical-align: middle;
- height: 17px;
- }
- :global{
- input:-webkit-autofill,
- input:-webkit-autofill:hover,
- input:-webkit-autofill:focus,
- textarea:-webkit-autofill,
- textarea:-webkit-autofill:hover,
- textarea:-webkit-autofill:focus,
- select:-webkit-autofill,
- select:-webkit-autofill:hover,
- select:-webkit-autofill:focus {
- border: 0;
- -webkit-text-fill-color: #333;
- -webkit-box-shadow: 0 0 0px 1000px #ffffff98 inset;
- box-shadow: #fff 0px 0px 0px 1000px inset;
- transition: background-color 5000s ease-in-out 0s;
- }
-
- .ant-input-affix-wrapper {
- width: 100%;
- height: 40px;
- padding: 4px 11px;
- color: #333;
- font-size: 14px;
- line-height: 1.5715;
- background-color: #fff; //rgba(255, 255, 255, 0.596);
- border: 1.5px #2F66DF solid;
- border-radius: 7px;
- }
- }
-}
-
-.centering_wrapper{
- width: 100%;
- text-align: center;
-}
-
-.left_body{
- z-index: 50;
- transform: translate(12px,0);
- float: left;
- width: 30%;
- color: #333;
- background-color: #fff;
- padding: 20px;
- border-radius: 12px 0 0 12px;
- box-shadow: 0px 10px 20px 0px rgba(51,51,51,0.52);
- transition: all 300ms ease-in-out;
-
-}
-.right_body{
- z-index: 51;
- float: right;
- width: 70%;
- max-height: -webkit-fill-available;
- height: 150px;
- padding: 20px 50px 20px 50px;
- color: #333;
- background-color: #fff;
- border-radius: 12px;
- box-shadow: 0px 10px 20px 0px rgba(51,51,51,0.52);
- transition: all 300ms ease-in-out;
-}
-
-
-
-.helper_login_btn{
- transform: translate(-20px, -14px);
-}
-
-
-.login_helper_footer{
- width: 100%;
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- display: flex;
- margin: auto;
- :global{
- .ant-btn{
- margin: auto;
- padding: 0 5px 0 5px;
- }
- }
-
- transform: translate(0, -10px);
-
-}
-
-
-@keyframes go-out {
- 0% {
- filter: blur(0px)
- }
-
- 100% {
- filter: blur(15px)
- }
-}
-
-// // Full format
-// @media (min-width: 486px){
-// .login_wrapper {
-// min-height: 580px;
-// }
-// .auth_box {
-// width: 784px;
-// }
-// }
-
-// Medium format max-width: 830px
-@media (min-width: 486px){
- .auth_box {
- padding: 0 16px 40px;
- width: 500px;
- min-height: 500px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- }
- .left_body{
- width: 100%;
- float: none;
- border-radius: 12px 12px 0 0;
- padding: 20px 20px 20px 20px;
- transform: translate(0, 22px);
- }
- .right_body{
- width: 100%;
- float: none;
- padding: 20px 60px 20px 60px;
- }
-}
-
-// Mobile format
-@media (max-width: 485px){
- .auth_box {
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
- padding: 70px 16px 40px;
- width: 100%;
- height: 100%;
- min-height: 500px;
- display: flex;
- flex-direction: column;
- justify-content: center;
- align-items: center;
- border-radius: 0;
- }
- .left_body{
- box-shadow: none;
- width: 100%;
- float: none;
- position: absolute;
- top: 0;
- margin-top: 30px;
- transform: translate(0, 0);
- }
- .right_body{
- box-shadow: none;
- width: 100%;
- float: none;
- padding: 20px 20px 20px 20px;
- }
-}
-
-.register_form{
-
-}
-
-@-webkit-keyframes fadeOutLeft {
- from {
- opacity: 1;
- }
-
- to {
- opacity: 0;
- -webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0);
- }
-}
-
-@keyframes fadeOutLeft {
- from {
- opacity: 1;
- }
-
- to {
- opacity: 0;
- -webkit-transform: translate3d(-100%, 0, 0);
- transform: translate3d(-100%, 0, 0);
- }
-}
diff --git a/.prev/src/pages/login/login.js b/.prev/src/pages/login/login.js
deleted file mode 100644
index 231bd947..00000000
--- a/.prev/src/pages/login/login.js
+++ /dev/null
@@ -1,221 +0,0 @@
-import React from 'react'
-import styles from './index.less'
-
-import Fade from 'react-reveal/Fade'
-import HeadShake from 'react-reveal/HeadShake';
-
-import * as antd from 'antd'
-import * as ycore from 'ycore'
-
-import { Form, Input, Button, Checkbox } from 'antd'
-import {
- UserOutlined,
- LockOutlined,
- BulbOutlined,
- SwapLeftOutlined
-} from '@ant-design/icons'
-
-export class NormalLoginForm extends React.PureComponent {
- state = {
- step: 1,
- validating: false,
- error_count: 0,
- step_error: false,
- step_show: true,
- swpass: false,
- }
-
- next = values => {
- let a = this.state.step
- const b = btoa(Object.values(values).toString())
- switch (a) {
- case 1:
- const payload = { username: Object.values(values).toString() }
- ycore.get_early.user((err, res) => {
- if (err || !res) return false
- try {
- const res_data = JSON.parse(res)
-
- if (res_data.api_status == 200) {
- a++
- this.anim_transition(300)
- this.setState({
- step_error: false,
- early_data: res_data.data,
- form_rawd_1: b,
- step: a,
- })
- }
- if (res_data.api_status == 400) {
- this.anim_error()
- }
- } catch (error) {
- return false
- }
- }, payload)
-
- return true
- case 2:
- this.setState({ form_rawd_2: b, step: a })
- this.auth()
- return true
- default:
- return false
- }
- }
-
- back() {
- let a = this.state.step
- if (a > 1) {
- a--
- this.anim_transition(150)
- }
-
- this.setState({ step: a })
- }
-
- anim_transition(duration) {
- this.setState({ step_show: false })
- setTimeout(() => {
- this.setState({ step_show: true })
- }, duration || 1000)
- }
- anim_error() {
- this.setState({ step_error: true, error_count: (this.state.error_count + 1) })
- }
-
- auth() {
- const { form_rawd_1, form_rawd_2 } = this.state
- if (!form_rawd_1 || !form_rawd_2) return false
- const frame = { EncUsername: form_rawd_1, EncPassword: form_rawd_2 }
-
- this.setState({ step_error: false, validating: true })
- ycore.app_session.login((err, res) => {
- switch (res) {
- case '200': {
- this.anim_transition(300)
- ycore.LoginPage.transitionToogle()
- return
- }
- case '400': {
- console.log('Credentials error')
- this.setState({ validating: false })
- this.anim_error()
- return
- }
- case '500': {
- console.log('Server error')
- this.setState({ validating: false })
- this.back()
- return
- }
- default:
- this.back()
- this.setState({ validating: false })
- return false
- }
- }, frame)
- }
-
- renderState = () => {
- switch (this.state.step) {
- case 1:
- return (
-
- )
- case 2:
- return (
-
- )
- case 3: {
- return Wait a sec...
- }
- default:
- return null
- }
- }
-
- render() {
- return (
-
-
- {this.renderState()}
-
-
- )
- }
-}
diff --git a/.prev/src/pages/login/register.js b/.prev/src/pages/login/register.js
deleted file mode 100644
index c74a5b49..00000000
--- a/.prev/src/pages/login/register.js
+++ /dev/null
@@ -1,162 +0,0 @@
-import React, { useState } from 'react'
-import {
- MailOutlined,
- TagOutlined,
- LockOutlined,
-} from '@ant-design/icons'
-
-import styles from './index.less'
-import {
- Form,
- Input,
- Tooltip,
- Cascader,
- Select,
- Row,
- Col,
- Checkbox,
- Button,
- AutoComplete,
-} from 'antd'
-import { QuestionCircleOutlined } from '@ant-design/icons'
-import ReCAPTCHA from 'react-google-recaptcha'
-import { g_recaptcha_key } from 'config'
-
-function capchaOnChange(value) {
- console.log('Captcha value:', value)
-}
-
-
-
-export const RegistrationForm = () => {
-
- const onFinish = values => {
- console.log('Received values of form: ', values)
- }
-
- return (
-
-
- }
- placeholder="ramdomuser"/>
-
-
- }
- placeholder="example@no-real.com"
- />
-
-
-
- }
- placeholder="example@no-real.com"/>
-
-
-
({
- validator(rule, value) {
- if (!value || getFieldValue('password') === value) {
- return Promise.resolve()
- }
-
- return Promise.reject(
- 'The two passwords that you entered do not match!'
- )
- },
- }),
- ]}
- >
- }
- placeholder="example@no-real.com"/>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- value
- ? Promise.resolve()
- : Promise.reject('Should accept agreement'),
- },
- ]}
- >
-
- I have read the agreement
-
-
-
-
-
-
-
- )
-}
diff --git a/.prev/src/pages/main/index.js b/.prev/src/pages/main/index.js
deleted file mode 100644
index 5f1e604a..00000000
--- a/.prev/src/pages/main/index.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import { PostCreator, MainFeed } from 'components'
-import styles from './index.less'
-
-export default class Main extends React.Component {
- render() {
- return (
-
- )
- }
-}
diff --git a/.prev/src/pages/main/index.less b/.prev/src/pages/main/index.less
deleted file mode 100644
index 7c81e1c2..00000000
--- a/.prev/src/pages/main/index.less
+++ /dev/null
@@ -1,6 +0,0 @@
-@import '~themes/index.less';
-
-.mainWrapper {
- position: relative;
- padding: 20px;
-}
diff --git a/.prev/src/pages/marketplace/index.js b/.prev/src/pages/marketplace/index.js
deleted file mode 100644
index 269da609..00000000
--- a/.prev/src/pages/marketplace/index.js
+++ /dev/null
@@ -1,10 +0,0 @@
-import React from 'react'
-import * as antd from 'antd'
-
-export default class Marketplace extends React.PureComponent{
- render(){
- return(
-
- )
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/marketplace/index.less b/.prev/src/pages/marketplace/index.less
deleted file mode 100644
index f7661901..00000000
--- a/.prev/src/pages/marketplace/index.less
+++ /dev/null
@@ -1 +0,0 @@
-@import '~themes/index.less';
\ No newline at end of file
diff --git a/.prev/src/pages/p/$post/index.js b/.prev/src/pages/p/$post/index.js
deleted file mode 100644
index e4f70dda..00000000
--- a/.prev/src/pages/p/$post/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import React from 'react'
-import { pathMatchRegexp } from 'utils'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-
-export default class Indexer_Post extends React.Component {
- constructor(props) {
- super(props),
- (this.state = {
- loading: true,
- swaped: false,
- UUID: '',
- })
- }
-
- toSwap(id) {
- const payload = { post_id: id }
- ycore.comty_post.get((err, res) => {
- if (err) {
- return false
- }
- ycore.SecondarySwap.openPost(res)
- }, payload)
- }
-
- componentDidMount() {
- try {
- const { location } = this.props
- const regexp = pathMatchRegexp('/p/:id', location.pathname)
- const match = regexp.shift().toString()
-
- const string = match.replace('/p/', '')
- this.setState({ UUID: string })
- if (string) {
- this.toSwap(string)
- }
- } catch (err) {
- ycore.notify.error(err)
- }
- }
-
- render() {
- ycore.router.go('main')
- return null
- }
-}
diff --git a/.prev/src/pages/pro/index.js b/.prev/src/pages/pro/index.js
deleted file mode 100644
index 0b681393..00000000
--- a/.prev/src/pages/pro/index.js
+++ /dev/null
@@ -1,7 +0,0 @@
-import React from 'react'
-
-export default class Go_Pro extends React.Component {
- render() {
- return Your PRO
- }
-}
diff --git a/.prev/src/pages/s/$search/index.js b/.prev/src/pages/s/$search/index.js
deleted file mode 100644
index 75ce960d..00000000
--- a/.prev/src/pages/s/$search/index.js
+++ /dev/null
@@ -1,163 +0,0 @@
-import React, { PureComponent } from 'react'
-import { pathMatchRegexp } from 'utils'
-import { SearchCard } from 'components'
-import styles from './styles.less'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-
-class SearchPageIndexer extends PureComponent {
- constructor(props) {
- super(props),
- (this.state = {
- SearchResult: '',
- loading: true,
- })
- }
- toogleLoading() {
- this.setState({ loading: !this.state.loading })
- }
- componentDidMount() {
- try {
- const { location } = this.props
- const matchSearch = pathMatchRegexp('/s/:id', location.pathname)
- const parsed = matchSearch.shift()
- const raw = parsed.toString()
- const string = raw.replace('/s/', '')
-
- const payload = { key: string }
- ycore.comty_search.keywords((err, res) => {
- if (err) {
- ycore.notify.error(err)
- }
- ycore.yconsole.log('Founded entries => ', JSON.parse(res))
- this.setState({ SearchResult: res })
- this.toogleLoading()
- }, payload)
- } catch (err) {
- ycore.notify.error(err)
- }
- }
-
- renderResult = source => {
- try {
- const Empty = (
-
- )
-
- // TO DO: Settings serach & Post Search
- const usersParsed = JSON.parse(source)['users']
- const groupsParsed = JSON.parse(source)['groups']
- const pagesParsed = JSON.parse(source)['pages']
-
- const users = () => {
- if (usersParsed.length >= 1) {
- ycore.yconsole.log('Users => ', usersParsed)
- return this.EntryComponent('Users', usersParsed)
- }
- }
- const groups = () => {
- if (groupsParsed.length >= 1) {
- ycore.yconsole.log('Groups => ', groupsParsed)
- return this.EntryComponent('Groups', groupsParsed)
- }
- }
- const pages = () => {
- if (pagesParsed.length >= 1) {
- ycore.yconsole.log('Pages => ', pagesParsed)
- return this.EntryComponent('Pages', pagesParsed)
- }
- }
-
- if (
- !usersParsed.length >= 1 &&
- !groupsParsed.length >= 1 &&
- !pagesParsed.length >= 1
- ) {
- return Empty
- }
-
- return [users(), groups(), pages()]
- } catch (error) {
- return (
-
- Render Error
-
- )
- }
- }
- EntryComponent = (t, source) => {
- try {
- return (
-
- )
- } catch (error) {
- return (
-
- Render Error
-
- )
- }
- }
-
- render() {
- const { location } = this.props
- const matchSearch = pathMatchRegexp('/s/:id', location.pathname)
-
- const parsed = matchSearch.shift()
- const raw = parsed.toString()
- const string = raw.replace('/s/', '')
-
- if (matchSearch) {
- ycore.yconsole.log(`Search matched! ${location.pathname}`)
- return (
-
-
- Results of {string}{' '}
-
-
-
- {this.state.loading
- ? null
- : this.renderResult(this.state.SearchResult)}
-
-
-
- )
- }
-
- return (
-
-
Render Error
-
- )
- }
-}
-
-export default SearchPageIndexer
diff --git a/.prev/src/pages/s/$search/styles.less b/.prev/src/pages/s/$search/styles.less
deleted file mode 100644
index 6ced630f..00000000
--- a/.prev/src/pages/s/$search/styles.less
+++ /dev/null
@@ -1,20 +0,0 @@
-@import '~themes/index.less';
-
-.searchHeader {
- font-family: "Nunito", sans-serif;
- font-size: 40px;
- text-align: center;
- margin-top: 7px;
-}
-
-.results {
- padding: 10px;
-}
-
-.searchEntry {
- :global {
- .antd-card {
- margin: auto;
- }
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/saves/index.js b/.prev/src/pages/saves/index.js
deleted file mode 100644
index 6b12a01c..00000000
--- a/.prev/src/pages/saves/index.js
+++ /dev/null
@@ -1,47 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-import { MainFeed } from 'components'
-import styles from './index.less'
-
-export default class PostSaved extends React.PureComponent{
- state = {
- loading: true,
- data: null,
- }
- componentDidMount(){
- ycore.comty_post.getSaved((err,res) => {
- if (err) return false
- try {
- const a = JSON.parse(res)['data']
- this.setState({ data: a, loading: false })
- } catch (error) {
- ycore.notify.exception('Error cathing saved posts... ', error)
- }
- })
- }
- renderSavedPost(){
- const { data } = this.state
- try {
- if (data.length < 1) {
- return
- }
- return
- } catch (err) {
-
- }
- }
- render(){
- return(
-
-
-
Saved Post
-
-
- {this.renderSavedPost()}
-
-
- )
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/saves/index.less b/.prev/src/pages/saves/index.less
deleted file mode 100644
index bb96e995..00000000
--- a/.prev/src/pages/saves/index.less
+++ /dev/null
@@ -1,14 +0,0 @@
-@import '~themes/index.less';
-
-.saved_post_wrapper{
-
-}
-.saved_post_title{
- font-family: @__Global_general_font_family;
-}
-.saved_post_content{
- margin-top: 10px;
- padding: 10px;
- background-color: #ffffff8e;
- border-radius: 12px;
-}
\ No newline at end of file
diff --git a/.prev/src/pages/settings/components/about.js b/.prev/src/pages/settings/components/about.js
deleted file mode 100644
index 34a9abff..00000000
--- a/.prev/src/pages/settings/components/about.js
+++ /dev/null
@@ -1,9 +0,0 @@
-import React from 'react'
-import { App_about } from 'components'
-
-export default class AppAbout extends React.Component {
- render() {
- return
- }
-}
-
diff --git a/.prev/src/pages/settings/components/base.js b/.prev/src/pages/settings/components/base.js
deleted file mode 100644
index f7374d3a..00000000
--- a/.prev/src/pages/settings/components/base.js
+++ /dev/null
@@ -1,146 +0,0 @@
-import React, { Component, Fragment } from 'react'
-import { List, Switch, Button, notification, InputNumber } from 'antd'
-import { ListSettings } from '../../../../globals/settings.js'
-import { ControlBar } from 'ycore'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-import Icon from '@ant-design/icons'
-import { CustomIcons } from 'components'
-
-class Base extends Component {
- constructor(props) {
- super(props),
- (this.state = {
- SettingRepo: ListSettings,
- forSave: false,
- })
- }
-
- componentDidMount() {
- if (!localStorage.getItem('app_settings')) {
- ycore.yconsole.warn(
- 'The settings for this app in your Account isnt set yet, Using stock settings...'
- )
- }
- }
-
- rendersets = item => {
- let e = item.type
- switch (e) {
- case 'switch':
- return (
- this.onChangeSwitch(item)}
- />
- )
- case 'numeric':
- return (
- this.onChangeNumeric(item, value)}
- />
- )
- default:
- break
- }
- }
-
- SettingRender = data => {
- try {
- return (
-
- (
-
-
- {this.rendersets(item)}
-
- )}
- />
-
- )
- } catch (err) {
- return ycore.yconsole.log(err)
- }
- }
- handleControlBar() {
- const ListControls = [
-
- }
- onClick={() => this.saveChanges()}
- >
- Save
-
-
,
- ]
- ControlBar.set(ListControls)
- }
-
- saveChanges() {
- localStorage.setItem('app_settings', JSON.stringify(this.state.SettingRepo))
- this.setState({ forSave: false })
- notification.success({
- message: 'Settings saved',
- description:
- 'The configuration has been saved, it may for some configuration to make changes you need to reload the application',
- })
- setTimeout(ycore.RefreshONCE(), 1000)
- ControlBar.close()
- }
-
- onChangeSwitch(item) {
- try {
- this.handleControlBar()
- const to = !item.value
- const updatedValue = [...this.state.SettingRepo].map(ita =>
- ita === item ? Object.assign(ita, { value: to }) : ita
- )
- this.setState({ SettingRepo: updatedValue, forSave: true })
- ycore.yconsole.log(`Changing ${item.SettingID} to value ${to}`)
- } catch (err) {
- console.log(err)
- }
- }
- onChangeNumeric(value, item) {
- this.HandleChangeNumeric(value)
- }
- HandleChangeNumeric(item, value) {
- try {
- this.handleControlBar()
- console.log(item.SettingID, value)
- const updatedValue = [...this.state.SettingRepo].map(ita =>
- ita === item ? Object.assign(ita, { value: value }) : ita
- )
- this.setState({ SettingRepo: updatedValue, forSave: true })
- ycore.yconsole.log(`Changing ${item.SettingID} to value ${to}`)
- } catch (err) {
- console.log(err)
- }
- }
- render() {
- return (
-
-
-
- Behaviors
-
- {this.SettingRender(this.state.SettingRepo)}
-
-
- )
- }
-}
-
-export default Base
diff --git a/.prev/src/pages/settings/components/earnings/index.js b/.prev/src/pages/settings/components/earnings/index.js
deleted file mode 100644
index db1aa206..00000000
--- a/.prev/src/pages/settings/components/earnings/index.js
+++ /dev/null
@@ -1,16 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-import * as Icons from '@ant-design/icons'
-
-export default class Earnings extends React.Component {
- render() {
- return (
-
-
- Redeem an Code
-
-
- )
- }
-}
diff --git a/.prev/src/pages/settings/components/notification/index.js b/.prev/src/pages/settings/components/notification/index.js
deleted file mode 100644
index 3edd9135..00000000
--- a/.prev/src/pages/settings/components/notification/index.js
+++ /dev/null
@@ -1,17 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-import styles from './index.less'
-
-export default class NotificationView extends React.Component {
- render() {
- return (
-
-
- Notifications
-
-
- )
- }
-}
-
diff --git a/.prev/src/pages/settings/components/notification/index.less b/.prev/src/pages/settings/components/notification/index.less
deleted file mode 100644
index 6cc5b5c2..00000000
--- a/.prev/src/pages/settings/components/notification/index.less
+++ /dev/null
@@ -1,17 +0,0 @@
-@import '~themes/index.less';
-
-.main {
-
- :global {
- h2 {
- font-weight: 500;
- }
-
- .anticon {
- color: #2d2d2d;
-
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/settings/components/security/index.js b/.prev/src/pages/settings/components/security/index.js
deleted file mode 100644
index 496a31a2..00000000
--- a/.prev/src/pages/settings/components/security/index.js
+++ /dev/null
@@ -1,65 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as Icons from '@ant-design/icons'
-import * as antd from 'antd'
-import styles from './index.less'
-
-import Sessions_Manager from './sessions.js'
-
-const { Menu } = antd
-export default class SecurityView extends React.Component {
- state = {
- current: 'privacy',
- }
-
- handleClick = e => {
- this.setState({
- current: e.key,
- })
- }
-
- renderChildren = () => {
- const { current } = this.state
- switch (current) {
- case 'privacy':
- return null
- case 'credentials':
- return null
- case 'sessions':
- return
- default:
- break
- }
- return null
- }
-
- render() {
- return (
-
-
- Your Security & Privacy
-
-
{this.renderChildren()}
-
-
- )
- }
-}
-
diff --git a/.prev/src/pages/settings/components/security/index.less b/.prev/src/pages/settings/components/security/index.less
deleted file mode 100644
index 6cc5b5c2..00000000
--- a/.prev/src/pages/settings/components/security/index.less
+++ /dev/null
@@ -1,17 +0,0 @@
-@import '~themes/index.less';
-
-.main {
-
- :global {
- h2 {
- font-weight: 500;
- }
-
- .anticon {
- color: #2d2d2d;
-
- }
-
-
- }
-}
\ No newline at end of file
diff --git a/.prev/src/pages/settings/components/security/sessions.js b/.prev/src/pages/settings/components/security/sessions.js
deleted file mode 100644
index 01c168c1..00000000
--- a/.prev/src/pages/settings/components/security/sessions.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import React from 'react'
-import * as ycore from 'ycore'
-import * as antd from 'antd'
-
-export default class Sessions_Manager extends React.Component {
- state = {
- sessions_data: '',
- }
- componentDidMount() {
- ycore.comty_get.session_id((err, res) => {
- this.setState({ sid: res })
- })
- ycore.comty_get.sessions((err, res) => {
- const a = JSON.parse(res)['data']
- this.setState({ sessions_data: a })
- })
- }
- render() {
- return (
-
-
(
-
-
- Session #{item.id}
- {this.state.sid == item.session_id ? 'This Session' : null}
-
- {item.platform}
- {item.ip_address}
- {item.time}
-
-
- )}
- />
-
- )
- }
-}
diff --git a/.prev/src/pages/settings/index.js b/.prev/src/pages/settings/index.js
deleted file mode 100644
index d64a2207..00000000
--- a/.prev/src/pages/settings/index.js
+++ /dev/null
@@ -1,108 +0,0 @@
-import React from 'react'
-import { Menu } from 'antd'
-import * as Icons from '@ant-design/icons'
-import styles from './style.less'
-
-import NotificationView from './components/notification/index.js'
-import SecurityView from './components/security/index.js'
-import Earnings from './components/earnings/index.js'
-
-import Base from './components/base.js'
-import AppAbout from './components/about.js'
-
-const { Item } = Menu
-const menuMap = {
- base: (
-
- General
-
- ),
- sync: (
-
- Sync™
-
- ),
- security: (
-
- Security & Privacity
-
- ),
- notification: (
-
- Notification
-
- ),
- earnings: (
-
- Earnings
-
- ),
- about: (
-
- About
-
- ),
-}
-
-class GeneralSettings extends React.Component {
- constructor(props) {
- super(props)
- this.state = {
- selectKey: 'base',
- }
- }
-
- getMenu = () => {
- return Object.keys(menuMap).map(item => (
- - {menuMap[item]}
- ))
- }
-
- selectKey = key => {
- this.setState({
- selectKey: key,
- })
- }
-
- renderChildren = () => {
- const { selectKey } = this.state
- switch (selectKey) {
- case 'base':
- return
- case 'security':
- return
- case 'notification':
- return
- case 'about':
- return
- case 'earnings':
- return
- default:
- break
- }
- return null
- }
-
- render() {
- const { selectKey } = this.state
- return (
-
-
-
- Settings{' '}
-
-
-
-
{this.renderChildren()}
-
- )
- }
-}
-
-export default GeneralSettings
diff --git a/.prev/src/pages/settings/style.less b/.prev/src/pages/settings/style.less
deleted file mode 100644
index 178377a6..00000000
--- a/.prev/src/pages/settings/style.less
+++ /dev/null
@@ -1,77 +0,0 @@
-@import '~themes/index.less';
-
-.main {
- font-family: "Nunito", sans-serif;
- margin: 20px 0 0 0;
- display: flex;
- width: 100%;
- height: 100%;
- overflow: auto;
- color: @__Global_layout_color;
- background-color: #ffffff;
- padding: 15px;
- border-radius: 10px;
-
- .leftMenu {
- width: 224px;
-
- :global {
- .ant-menu-inline {
- color: @__Global_layout_color;
- background-color: transparent;
- border: none;
- }
-
- .ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected {
- font-weight: bold;
- }
- }
- }
-
- .right {
- flex: 1;
- padding-top: 8px;
- padding-right: 40px;
- padding-bottom: 8px;
- padding-left: 40px;
-
- .title {
- margin-bottom: 12px;
- color: @__Global_layout_color;
- font-weight: 500;
- font-size: 20px;
- line-height: 28px;
- }
- }
-
- :global {
- .ant-list-item {
- padding-top: 7px;
- padding-bottom: 7px;
- }
-
- .ant-list-split .ant-list-item {
- border-bottom: 0;
- }
-
- .ant-list-item-meta-title {
- color: rgba(0, 0, 0, 0.733);
- font-size: 14px;
- }
- }
-}
-
-@media screen and (max-width: @screen-md) {
- .main {
- flex-direction: column;
-
- .leftMenu {
- width: 100%;
- border: none;
- }
-
- .right {
- padding: 40px;
- }
- }
-}
diff --git a/.prev/src/themes/antd-design.less b/.prev/src/themes/antd-design.less
deleted file mode 100644
index 370b40aa..00000000
--- a/.prev/src/themes/antd-design.less
+++ /dev/null
@@ -1,839 +0,0 @@
-/* stylelint-disable at-rule-empty-line-before,at-rule-name-space-after,at-rule-no-unknown */
-@import '../../node_modules/antd/lib/style/themes/default.less';
-
-// -------- Colors -----------
-@primary-color: @blue-6;
-@info-color: @blue-6;
-@success-color: @green-6;
-@processing-color: @blue-6;
-@error-color: @red-6;
-@highlight-color: @red-6;
-@warning-color: @gold-6;
-@normal-color: #d9d9d9;
-@white: #fff;
-@black: #000;
-
-// Color used by default to control hover and active backgrounds and for
-// alert info backgrounds.
-@primary-1: color(~`colorPalette('@{primary-color}', 1) `); // replace tint(@primary-color, 90%)
-@primary-2: color(~`colorPalette('@{primary-color}', 2) `); // replace tint(@primary-color, 80%)
-@primary-3: color(~`colorPalette('@{primary-color}', 3) `); // unused
-@primary-4: color(~`colorPalette('@{primary-color}', 4) `); // unused
-@primary-5: color(~`colorPalette('@{primary-color}', 5) `); // color used to control the text color in many active and hover states, replace tint(@primary-color, 20%)
-@primary-6: @primary-color; // color used to control the text color of active buttons, don't use, use @primary-color
-@primary-7: color(~`colorPalette('@{primary-color}', 7) `); // replace shade(@primary-color, 5%)
-@primary-8: color(~`colorPalette('@{primary-color}', 8) `); // unused
-@primary-9: color(~`colorPalette('@{primary-color}', 9) `); // unused
-@primary-10: color(~`colorPalette('@{primary-color}', 10) `); // unused
-
-// Base Scaffolding Variables
-// ---
-
-// Background color for ``
-@body-background: rgb(249, 249, 249);
-// Base background color for most components
-@component-background: #fff;
-@font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB',
- 'Microsoft YaHei', 'Helvetica Neue', Helvetica, Arial, sans-serif, 'Apple Color Emoji',
- 'Segoe UI Emoji', 'Segoe UI Symbol';
-@code-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, Courier, monospace;
-@text-color: fade(@black, 65%);
-@text-color-secondary: fade(@black, 45%);
-@text-color-inverse: @white;
-@icon-color: inherit;
-@icon-color-hover: fade(@black, 75%);
-@heading-color: fade(#000, 85%);
-@heading-color-dark: fade(@white, 100%);
-@text-color-dark: fade(@white, 85%);
-@text-color-secondary-dark: fade(@white, 65%);
-@text-selection-bg: @primary-color;
-@font-variant-base: tabular-nums;
-@font-feature-settings-base: 'tnum';
-@font-size-base: 14px;
-@font-size-lg: @font-size-base + 2px;
-@font-size-sm: 12px;
-@heading-1-size: ceil(@font-size-base * 2.71);
-@heading-2-size: ceil(@font-size-base * 2.14);
-@heading-3-size: ceil(@font-size-base * 1.71);
-@heading-4-size: ceil(@font-size-base * 1.42);
-@line-height-base: 1.5;
-@border-radius-base: 4px;
-@border-radius-sm: 2px;
-
-// vertical paddings
-@padding-lg: 24px; // containers
-@padding-md: 16px; // small containers and buttons
-@padding-sm: 12px; // Form controls and items
-@padding-xs: 8px; // small items
-
-// vertical padding for all form controls
-@control-padding-horizontal: @padding-sm;
-@control-padding-horizontal-sm: @padding-xs;
-
-// The background colors for active and hover states for things like
-// list items or table cells.
-@item-active-bg: @primary-1;
-@item-hover-bg: @primary-1;
-
-// ICONFONT
-@iconfont-css-prefix: anticon;
-
-// LINK
-@link-color: @primary-color;
-@link-hover-color: color(~`colorPalette('@{link-color}', 5) `);
-@link-active-color: color(~`colorPalette('@{link-color}', 7) `);
-@link-decoration: none;
-@link-hover-decoration: none;
-
-// Animation
-@ease-base-out: cubic-bezier(0.7, 0.3, 0.1, 1);
-@ease-base-in: cubic-bezier(0.9, 0, 0.3, 0.7);
-@ease-out: cubic-bezier(0.215, 0.61, 0.355, 1);
-@ease-in: cubic-bezier(0.55, 0.055, 0.675, 0.19);
-@ease-in-out: cubic-bezier(0.645, 0.045, 0.355, 1);
-@ease-out-back: cubic-bezier(0.12, 0.4, 0.29, 1.46);
-@ease-in-back: cubic-bezier(0.71, -0.46, 0.88, 0.6);
-@ease-in-out-back: cubic-bezier(0.71, -0.46, 0.29, 1.46);
-@ease-out-circ: cubic-bezier(0.08, 0.82, 0.17, 1);
-@ease-in-circ: cubic-bezier(0.6, 0.04, 0.98, 0.34);
-@ease-in-out-circ: cubic-bezier(0.78, 0.14, 0.15, 0.86);
-@ease-out-quint: cubic-bezier(0.23, 1, 0.32, 1);
-@ease-in-quint: cubic-bezier(0.755, 0.05, 0.855, 0.06);
-@ease-in-out-quint: cubic-bezier(0.86, 0, 0.07, 1);
-
-// Border color
-@border-color-base: hsv(0, 0, 85%); // base border outline a component
-@border-color-split: hsv(0, 0, 91%); // split border inside a component
-@border-color-inverse: @white;
-@border-width-base: 1px; // width of the border for a component
-@border-style-base: solid; // style of a components border
-
-// Outline
-@outline-blur-size: 0;
-@outline-width: 2px;
-@outline-color: @primary-color;
-
-@background-color-light: hsv(0, 0, 98%); // background of header and selected item
-@background-color-base: hsv(0, 0, 96%); // Default grey background color
-
-// Disabled states
-@disabled-color: fade(#000, 25%);
-@disabled-bg: @background-color-base;
-@disabled-color-dark: fade(#fff, 35%);
-
-// Shadow
-@shadow-color: rgba(0, 0, 0, 0.15);
-@shadow-color-inverse: @component-background;
-@box-shadow-base: @shadow-1-down;
-@shadow-1-up: 0 -2px 8px @shadow-color;
-@shadow-1-down: 0 2px 8px @shadow-color;
-@shadow-1-left: -2px 0 8px @shadow-color;
-@shadow-1-right: 2px 0 8px @shadow-color;
-@shadow-2: 0 4px 12px @shadow-color;
-
-// Buttons
-@btn-font-weight: 400;
-@btn-border-radius-base: @border-radius-base;
-@btn-border-radius-sm: @border-radius-base;
-@btn-border-width: @border-width-base;
-@btn-border-style: @border-style-base;
-@btn-shadow: 0 2px 0 rgba(0, 0, 0, 0.015);
-@btn-primary-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);
-@btn-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);
-
-@btn-primary-color: #fff;
-@btn-primary-bg: @primary-color;
-
-@btn-default-color: @text-color;
-@btn-default-bg: @component-background;
-@btn-default-border: @border-color-base;
-
-@btn-danger-color: #fff;
-@btn-danger-bg: color(~`colorPalette('@{error-color}', 5) `);
-@btn-danger-border: color(~`colorPalette('@{error-color}', 5) `);
-
-@btn-disable-color: @disabled-color;
-@btn-disable-bg: @disabled-bg;
-@btn-disable-border: @border-color-base;
-
-@btn-padding-base: 0 @padding-md - 1px;
-@btn-font-size-lg: @font-size-lg;
-@btn-font-size-sm: @font-size-base;
-@btn-padding-lg: @btn-padding-base;
-@btn-padding-sm: 0 @padding-xs - 1px;
-
-@btn-height-base: 32px;
-@btn-height-lg: 40px;
-@btn-height-sm: 24px;
-
-@btn-circle-size: @btn-height-base;
-@btn-circle-size-lg: @btn-height-lg;
-@btn-circle-size-sm: @btn-height-sm;
-
-@btn-square-size: @btn-height-base;
-@btn-square-size-lg: @btn-height-lg;
-@btn-square-size-sm: @btn-height-sm;
-
-@btn-group-border: @primary-5;
-
-// Checkbox
-@checkbox-size: 16px;
-@checkbox-color: @primary-color;
-@checkbox-check-color: #fff;
-@checkbox-border-width: @border-width-base;
-
-// Descriptions
-@descriptions-bg: #fafafa;
-
-// Dropdown
-@dropdown-selected-color: @primary-color;
-
-// Empty
-@empty-font-size: @font-size-base;
-
-// Radio
-@radio-size: 16px;
-@radio-dot-color: @primary-color;
-
-// Radio buttons
-@radio-button-bg: @btn-default-bg;
-@radio-button-checked-bg: @btn-default-bg;
-@radio-button-color: @btn-default-color;
-@radio-button-hover-color: @primary-5;
-@radio-button-active-color: @primary-7;
-
-// Media queries breakpoints
-// Extra small screen / phone
-@screen-xs: 480px;
-@screen-xs-min: @screen-xs;
-
-// Small screen / tablet
-@screen-sm: 576px;
-@screen-sm-min: @screen-sm;
-
-// Medium screen / desktop
-@screen-md: 768px;
-@screen-md-min: @screen-md;
-
-// Large screen / wide desktop
-@screen-lg: 992px;
-@screen-lg-min: @screen-lg;
-
-// Extra large screen / full hd
-@screen-xl: 1200px;
-@screen-xl-min: @screen-xl;
-
-// Extra extra large screen / large desktop
-@screen-xxl: 1600px;
-@screen-xxl-min: @screen-xxl;
-
-// provide a maximum
-@screen-xs-max: (@screen-sm-min - 1px);
-@screen-sm-max: (@screen-md-min - 1px);
-@screen-md-max: (@screen-lg-min - 1px);
-@screen-lg-max: (@screen-xl-min - 1px);
-@screen-xl-max: (@screen-xxl-min - 1px);
-
-// Grid system
-@grid-columns: 24;
-@grid-gutter-width: 0;
-
-// Layout
-@layout-body-background: #f0f2f5;
-@layout-header-background: #424242;
-@layout-footer-background: @layout-body-background;
-@layout-header-height: 64px;
-@layout-header-padding: 0 50px;
-@layout-footer-padding: 24px 50px;
-@layout-sider-background: @layout-header-background;
-@layout-trigger-height: 48px;
-@layout-trigger-background: #2d2d2d;
-@layout-trigger-color: #fff;
-@layout-zero-trigger-width: 36px;
-@layout-zero-trigger-height: 42px;
-// Layout light theme
-@layout-sider-background-light: #fff;
-@layout-trigger-background-light: #fff;
-@layout-trigger-color-light: @text-color;
-
-// z-index list, order by `z-index`
-@zindex-table-fixed: auto;
-@zindex-affix: 10;
-@zindex-back-top: 10;
-@zindex-badge: 10;
-@zindex-picker-panel: 10;
-@zindex-popup-close: 10;
-@zindex-modal: 1000;
-@zindex-modal-mask: 1000;
-@zindex-message: 1010;
-@zindex-notification: 1010;
-@zindex-popover: 1030;
-@zindex-dropdown: 1050;
-@zindex-picker: 1050;
-@zindex-tooltip: 1060;
-
-// Animation
-@animation-duration-slow: 0.3s; // Modal
-@animation-duration-base: 0.2s;
-@animation-duration-fast: 0.1s; // Tooltip
-
-//CollapsePanel
-@collapse-panel-border-radius: @border-radius-base;
-
-//Dropdown
-@dropdown-vertical-padding: 5px;
-@dropdown-font-size: @font-size-base;
-@dropdown-line-height: 22px;
-
-// Form
-// ---
-@label-required-color: @highlight-color;
-@label-color: @heading-color;
-@form-warning-input-bg: @input-bg;
-@form-item-margin-bottom: 24px;
-@form-item-trailing-colon: true;
-@form-vertical-label-padding: 0 0 8px;
-@form-vertical-label-margin: 0;
-@form-item-label-colon-margin-right: 8px;
-@form-item-label-colon-margin-left: 2px;
-@form-error-input-bg: @input-bg;
-
-// Input
-// ---
-@input-height-base: 32px;
-@input-height-lg: 40px;
-@input-height-sm: 24px;
-@input-padding-horizontal: @control-padding-horizontal - 1px;
-@input-padding-horizontal-base: @input-padding-horizontal;
-@input-padding-horizontal-sm: @control-padding-horizontal-sm - 1px;
-@input-padding-horizontal-lg: @input-padding-horizontal;
-@input-padding-vertical-base: 4px;
-@input-padding-vertical-sm: 1px;
-@input-padding-vertical-lg: 6px;
-@input-placeholder-color: hsv(0, 0, 75%);
-@input-color: @text-color;
-@input-border-color: @border-color-base;
-@input-bg: @component-background;
-@input-number-handler-active-bg: #f4f4f4;
-@input-number-handler-hover-bg: @primary-5;
-@input-number-handler-bg: @component-background;
-@input-number-handler-border-color: @border-color-base;
-@input-addon-bg: @background-color-light;
-@input-hover-border-color: @primary-5;
-@input-disabled-bg: @disabled-bg;
-@input-outline-offset: 0 0;
-
-// Select
-// ---
-@select-border-color: @border-color-base;
-@select-item-selected-font-weight: 600;
-@select-dropdown-bg: @component-background;
-@select-item-selected-bg: @background-color-light;
-@select-item-active-bg: @item-active-bg;
-
-// Anchor
-// ---
-@anchor-border-color: @border-color-split;
-
-// Tooltip
-// ---
-// Tooltip max width
-@tooltip-max-width: 250px;
-// Tooltip text color
-@tooltip-color: #fff;
-// Tooltip background color
-@tooltip-bg: rgba(0, 0, 0, 0.75);
-// Tooltip arrow width
-@tooltip-arrow-width: 5px;
-// Tooltip distance with trigger
-@tooltip-distance: @tooltip-arrow-width - 1px + 4px;
-// Tooltip arrow color
-@tooltip-arrow-color: @tooltip-bg;
-
-// Popover
-// ---
-// Popover body background color
-@popover-bg: @component-background;
-// Popover text color
-@popover-color: @text-color;
-// Popover maximum width
-@popover-min-width: 177px;
-// Popover arrow width
-@popover-arrow-width: 6px;
-// Popover arrow color
-@popover-arrow-color: @popover-bg;
-// Popover outer arrow width
-// Popover outer arrow color
-@popover-arrow-outer-color: @popover-bg;
-// Popover distance with trigger
-@popover-distance: @popover-arrow-width + 4px;
-
-// Modal
-// --
-@modal-body-padding: 24px;
-@modal-header-bg: @component-background;
-@modal-footer-bg: transparent;
-@modal-footer-border-color-split: @border-color-split;
-@modal-mask-bg: fade(@black, 45%);
-
-// Progress
-// --
-@progress-default-color: @processing-color;
-@progress-remaining-color: @background-color-base;
-@progress-text-color: @text-color;
-@progress-radius: 100px;
-
-// Menu
-// ---
-@menu-inline-toplevel-item-height: 40px;
-@menu-item-height: 40px;
-@menu-collapsed-width: 80px;
-@menu-bg: @component-background;
-@menu-popup-bg: @component-background;
-@menu-item-color: @text-color;
-@menu-highlight-color: @primary-color;
-@menu-item-active-bg: @item-active-bg;
-@menu-item-active-border-width: 3px;
-@menu-item-group-title-color: @text-color-secondary;
-@menu-icon-size: @font-size-base;
-@menu-icon-size-lg: @font-size-lg;
-
-@menu-item-vertical-margin: 4px;
-@menu-item-font-size: @font-size-base;
-@menu-item-boundary-margin: 8px;
-@menu-icon-size: @font-size-base;
-@menu-icon-size-lg: @font-size-lg;
-@menu-dark-selected-item-icon-color: @white;
-@menu-dark-selected-item-text-color: @white;
-@dark-menu-item-hover-bg: transparent;
-
-// dark theme
-@menu-dark-color: @text-color-secondary-dark;
-@menu-dark-bg: #2d2d2d;
-@menu-dark-arrow-color: #fff;
-@menu-dark-submenu-bg: #2d2d2d;
-@menu-dark-highlight-color: #fff;
-@menu-dark-item-active-bg: @primary-color;
-@menu-dark-selected-item-icon-color: @white;
-@menu-dark-selected-item-text-color: @white;
-@menu-dark-item-hover-bg: transparent;
-// Spin
-// ---
-@spin-dot-size-sm: 14px;
-@spin-dot-size: 20px;
-@spin-dot-size-lg: 32px;
-
-// Table
-// --
-@table-header-bg: @background-color-light;
-@table-header-color: @heading-color;
-@table-header-sort-bg: @background-color-base;
-@table-body-sort-bg: rgba(0, 0, 0, 0.01);
-@table-row-hover-bg: @primary-1;
-@table-selected-row-color: inherit;
-@table-selected-row-bg: #fafafa;
-@table-body-selected-sort-bg: @table-selected-row-bg;
-@table-selected-row-hover-bg: @table-selected-row-bg;
-@table-expanded-row-bg: #fbfbfb;
-@table-padding-vertical: 16px;
-@table-padding-horizontal: 16px;
-@table-border-radius-base: @border-radius-base;
-@table-footer-bg: @background-color-light;
-@table-footer-color: @heading-color;
-
-// Tag
-// --
-@tag-default-bg: @background-color-light;
-@tag-default-color: @text-color;
-@tag-font-size: @font-size-sm;
-
-// TimePicker
-// ---
-@time-picker-panel-column-width: 56px;
-@time-picker-panel-width: @time-picker-panel-column-width * 3;
-@time-picker-selected-bg: @background-color-base;
-
-// Carousel
-// ---
-@carousel-dot-width: 16px;
-@carousel-dot-height: 3px;
-@carousel-dot-active-width: 24px;
-
-// Badge
-// ---
-@badge-height: 20px;
-@badge-dot-size: 6px;
-@badge-font-size: @font-size-sm;
-@badge-font-weight: normal;
-@badge-status-size: 6px;
-@badge-text-color: @component-background;
-
-// Rate
-// ---
-@rate-star-color: @yellow-6;
-@rate-star-bg: @border-color-split;
-
-// Card
-// ---
-@card-head-color: @heading-color;
-@card-head-background: transparent;
-@card-head-padding: 16px;
-@card-inner-head-padding: 12px;
-@card-padding-base: 24px;
-@card-actions-background: @background-color-light;
-@card-skeleton-bg: #cfd8dc;
-@card-background: @component-background;
-@card-shadow: 0 2px 8px rgba(0, 0, 0, 0.09);
-@card-radius: @border-radius-sm;
-
-// Comment
-// ---
-@comment-padding-base: 16px 0;
-@comment-nest-indent: 44px;
-@comment-font-size-base: @font-size-base;
-@comment-font-size-sm: @font-size-sm;
-@comment-author-name-color: @text-color-secondary;
-@comment-author-time-color: #ccc;
-@comment-action-color: @text-color-secondary;
-@comment-action-hover-color: #595959;
-
-// Tabs
-// ---
-@tabs-card-head-background: @background-color-light;
-@tabs-card-height: 40px;
-@tabs-card-active-color: @primary-color;
-@tabs-title-font-size: @font-size-base;
-@tabs-title-font-size-lg: @font-size-lg;
-@tabs-title-font-size-sm: @font-size-base;
-@tabs-ink-bar-color: @primary-color;
-@tabs-bar-margin: 0 0 16px 0;
-@tabs-horizontal-margin: 0 32px 0 0;
-@tabs-horizontal-padding: 12px 16px;
-@tabs-horizontal-padding-lg: 16px;
-@tabs-horizontal-padding-sm: 8px 16px;
-@tabs-vertical-padding: 8px 24px;
-@tabs-vertical-margin: 0 0 16px 0;
-@tabs-scrolling-size: 32px;
-@tabs-highlight-color: @primary-color;
-@tabs-hover-color: @primary-5;
-@tabs-active-color: @primary-7;
-@tabs-card-gutter: 2px;
-@tabs-card-tab-active-border-top: 2px solid transparent;
-
-// BackTop
-// ---
-@back-top-color: #fff;
-@back-top-bg: @text-color-secondary;
-@back-top-hover-bg: @text-color;
-
-// Avatar
-// ---
-@avatar-size-base: 32px;
-@avatar-size-lg: 40px;
-@avatar-size-sm: 24px;
-@avatar-font-size-base: 18px;
-@avatar-font-size-lg: 24px;
-@avatar-font-size-sm: 14px;
-@avatar-bg: #ccc;
-@avatar-color: #fff;
-@avatar-border-radius: @border-radius-base;
-
-// Switch
-// ---
-@switch-height: 22px;
-@switch-sm-height: 16px;
-@switch-sm-checked-margin-left: -(@switch-sm-height - 3px);
-@switch-disabled-opacity: 0.4;
-@switch-color: @primary-color;
-@switch-shadow-color: fade(#00230b, 20%);
-
-// Pagination
-// ---
-@pagination-item-size: 32px;
-@pagination-item-size-sm: 24px;
-@pagination-font-family: Arial;
-@pagination-font-weight-active: 500;
-@pagination-item-bg-active: @component-background;
-
-// PageHeader
-// ---
-@page-header-padding: 24px;
-@page-header-padding-vertical: 16px;
-@page-header-padding-breadcrumb: 12px;
-@page-header-back-color: #000;
-
-// Breadcrumb
-// ---
-@breadcrumb-base-color: @text-color-secondary;
-@breadcrumb-last-item-color: @text-color;
-@breadcrumb-font-size: @font-size-base;
-@breadcrumb-icon-font-size: @font-size-base;
-@breadcrumb-link-color: @text-color-secondary;
-@breadcrumb-link-color-hover: @primary-5;
-@breadcrumb-separator-color: @text-color-secondary;
-@breadcrumb-separator-margin: 0 @padding-xs;
-
-// Slider
-// ---
-@slider-margin: 14px 6px 10px;
-@slider-rail-background-color: @background-color-base;
-@slider-rail-background-color-hover: #e1e1e1;
-@slider-track-background-color: @primary-3;
-@slider-track-background-color-hover: @primary-4;
-@slider-handle-border-width: 2px;
-@slider-handle-background-color: @component-background;
-@slider-handle-color: @primary-3;
-@slider-handle-color-hover: @primary-4;
-@slider-handle-color-focus: tint(@primary-color, 20%);
-@slider-handle-color-focus-shadow: fade(@primary-color, 20%);
-@slider-handle-color-tooltip-open: @primary-color;
-@slider-handle-shadow: 0;
-@slider-dot-border-color: @border-color-split;
-@slider-dot-border-color-active: tint(@primary-color, 50%);
-@slider-disabled-color: @disabled-color;
-@slider-disabled-background-color: @component-background;
-
-// Tree
-// ---
-@tree-title-height: 24px;
-@tree-child-padding: 18px;
-@tree-directory-selected-color: #fff;
-@tree-directory-selected-bg: @primary-color;
-@tree-node-hover-bg: @item-hover-bg;
-@tree-node-selected-bg: @primary-2;
-
-// Collapse
-// ---
-@collapse-header-padding: 12px 16px;
-@collapse-header-padding-extra: 40px;
-@collapse-header-bg: @background-color-light;
-@collapse-content-padding: @padding-md;
-@collapse-content-bg: @component-background;
-
-// Skeleton
-// ---
-@skeleton-color: #f2f2f2;
-
-// Transfer
-// ---
-@transfer-header-height: 40px;
-@transfer-disabled-bg: @disabled-bg;
-@transfer-list-height: 200px;
-
-// Message
-// ---
-@message-notice-content-padding: 10px 16px;
-
-// Motion
-// ---
-@wave-animation-width: 6px;
-
-// Alert
-// ---
-@alert-success-border-color: ~`colorPalette('@{success-color}', 3) `;
-@alert-success-bg-color: ~`colorPalette('@{success-color}', 1) `;
-@alert-success-icon-color: @success-color;
-@alert-info-border-color: ~`colorPalette('@{info-color}', 3) `;
-@alert-info-bg-color: ~`colorPalette('@{info-color}', 1) `;
-@alert-info-icon-color: @info-color;
-@alert-warning-border-color: ~`colorPalette('@{warning-color}', 3) `;
-@alert-warning-bg-color: ~`colorPalette('@{warning-color}', 1) `;
-@alert-warning-icon-color: @warning-color;
-@alert-error-border-color: ~`colorPalette('@{error-color}', 3) `;
-@alert-error-bg-color: ~`colorPalette('@{error-color}', 1) `;
-@alert-error-icon-color: @error-color;
-
-// List
-// ---
-@list-header-background: transparent;
-@list-footer-background: transparent;
-@list-empty-text-padding: @padding-md;
-@list-item-padding: @padding-sm 0;
-@list-item-meta-margin-bottom: @padding-md;
-@list-item-meta-avatar-margin-right: @padding-md;
-@list-item-meta-title-margin-bottom: @padding-sm;
-
-// Statistic
-// ---
-@statistic-title-font-size: @font-size-base;
-@statistic-content-font-size: 24px;
-@statistic-unit-font-size: 16px;
-@statistic-font-family: @font-family;
-
-// Drawer
-// ---
-@drawer-header-padding: 16px 24px;
-@drawer-body-padding: 24px;
-
-// Timeline
-// ---
-@timeline-width: 2px;
-@timeline-color: @border-color-split;
-@timeline-dot-border-width: 2px;
-@timeline-dot-color: @primary-color;
-@timeline-dot-bg: @component-background;
-
-// Typography
-// ---
-@typography-title-font-weight: 600;
-@typography-title-margin-top: 1.2em;
-@typography-title-margin-bottom: 0.5em;
-
-// color palettes
-@blue-1: color(~`colorPalette('@{blue-6}', 1) `);
-@blue-2: color(~`colorPalette('@{blue-6}', 2) `);
-@blue-3: color(~`colorPalette('@{blue-6}', 3) `);
-@blue-4: color(~`colorPalette('@{blue-6}', 4) `);
-@blue-5: color(~`colorPalette('@{blue-6}', 5) `);
-@blue-6: #1890ff;
-@blue-7: color(~`colorPalette('@{blue-6}', 7) `);
-@blue-8: color(~`colorPalette('@{blue-6}', 8) `);
-@blue-9: color(~`colorPalette('@{blue-6}', 9) `);
-@blue-10: color(~`colorPalette('@{blue-6}', 10) `);
-
-@purple-1: color(~`colorPalette('@{purple-6}', 1) `);
-@purple-2: color(~`colorPalette('@{purple-6}', 2) `);
-@purple-3: color(~`colorPalette('@{purple-6}', 3) `);
-@purple-4: color(~`colorPalette('@{purple-6}', 4) `);
-@purple-5: color(~`colorPalette('@{purple-6}', 5) `);
-@purple-6: #722ed1;
-@purple-7: color(~`colorPalette('@{purple-6}', 7) `);
-@purple-8: color(~`colorPalette('@{purple-6}', 8) `);
-@purple-9: color(~`colorPalette('@{purple-6}', 9) `);
-@purple-10: color(~`colorPalette('@{purple-6}', 10) `);
-
-@cyan-1: color(~`colorPalette('@{cyan-6}', 1) `);
-@cyan-2: color(~`colorPalette('@{cyan-6}', 2) `);
-@cyan-3: color(~`colorPalette('@{cyan-6}', 3) `);
-@cyan-4: color(~`colorPalette('@{cyan-6}', 4) `);
-@cyan-5: color(~`colorPalette('@{cyan-6}', 5) `);
-@cyan-6: #13c2c2;
-@cyan-7: color(~`colorPalette('@{cyan-6}', 7) `);
-@cyan-8: color(~`colorPalette('@{cyan-6}', 8) `);
-@cyan-9: color(~`colorPalette('@{cyan-6}', 9) `);
-@cyan-10: color(~`colorPalette('@{cyan-6}', 10) `);
-
-@green-1: color(~`colorPalette('@{green-6}', 1) `);
-@green-2: color(~`colorPalette('@{green-6}', 2) `);
-@green-3: color(~`colorPalette('@{green-6}', 3) `);
-@green-4: color(~`colorPalette('@{green-6}', 4) `);
-@green-5: color(~`colorPalette('@{green-6}', 5) `);
-@green-6: #52c41a;
-@green-7: color(~`colorPalette('@{green-6}', 7) `);
-@green-8: color(~`colorPalette('@{green-6}', 8) `);
-@green-9: color(~`colorPalette('@{green-6}', 9) `);
-@green-10: color(~`colorPalette('@{green-6}', 10) `);
-
-@magenta-1: color(~`colorPalette('@{magenta-6}', 1) `);
-@magenta-2: color(~`colorPalette('@{magenta-6}', 2) `);
-@magenta-3: color(~`colorPalette('@{magenta-6}', 3) `);
-@magenta-4: color(~`colorPalette('@{magenta-6}', 4) `);
-@magenta-5: color(~`colorPalette('@{magenta-6}', 5) `);
-@magenta-6: #eb2f96;
-@magenta-7: color(~`colorPalette('@{magenta-6}', 7) `);
-@magenta-8: color(~`colorPalette('@{magenta-6}', 8) `);
-@magenta-9: color(~`colorPalette('@{magenta-6}', 9) `);
-@magenta-10: color(~`colorPalette('@{magenta-6}', 10) `);
-
-// alias of magenta
-@pink-1: color(~`colorPalette('@{pink-6}', 1) `);
-@pink-2: color(~`colorPalette('@{pink-6}', 2) `);
-@pink-3: color(~`colorPalette('@{pink-6}', 3) `);
-@pink-4: color(~`colorPalette('@{pink-6}', 4) `);
-@pink-5: color(~`colorPalette('@{pink-6}', 5) `);
-@pink-6: #eb2f96;
-@pink-7: color(~`colorPalette('@{pink-6}', 7) `);
-@pink-8: color(~`colorPalette('@{pink-6}', 8) `);
-@pink-9: color(~`colorPalette('@{pink-6}', 9) `);
-@pink-10: color(~`colorPalette('@{pink-6}', 10) `);
-
-@red-1: color(~`colorPalette('@{red-6}', 1) `);
-@red-2: color(~`colorPalette('@{red-6}', 2) `);
-@red-3: color(~`colorPalette('@{red-6}', 3) `);
-@red-4: color(~`colorPalette('@{red-6}', 4) `);
-@red-5: color(~`colorPalette('@{red-6}', 5) `);
-@red-6: #f5222d;
-@red-7: color(~`colorPalette('@{red-6}', 7) `);
-@red-8: color(~`colorPalette('@{red-6}', 8) `);
-@red-9: color(~`colorPalette('@{red-6}', 9) `);
-@red-10: color(~`colorPalette('@{red-6}', 10) `);
-
-@orange-1: color(~`colorPalette('@{orange-6}', 1) `);
-@orange-2: color(~`colorPalette('@{orange-6}', 2) `);
-@orange-3: color(~`colorPalette('@{orange-6}', 3) `);
-@orange-4: color(~`colorPalette('@{orange-6}', 4) `);
-@orange-5: color(~`colorPalette('@{orange-6}', 5) `);
-@orange-6: #fa8c16;
-@orange-7: color(~`colorPalette('@{orange-6}', 7) `);
-@orange-8: color(~`colorPalette('@{orange-6}', 8) `);
-@orange-9: color(~`colorPalette('@{orange-6}', 9) `);
-@orange-10: color(~`colorPalette('@{orange-6}', 10) `);
-
-@yellow-1: color(~`colorPalette('@{yellow-6}', 1) `);
-@yellow-2: color(~`colorPalette('@{yellow-6}', 2) `);
-@yellow-3: color(~`colorPalette('@{yellow-6}', 3) `);
-@yellow-4: color(~`colorPalette('@{yellow-6}', 4) `);
-@yellow-5: color(~`colorPalette('@{yellow-6}', 5) `);
-@yellow-6: #fadb14;
-@yellow-7: color(~`colorPalette('@{yellow-6}', 7) `);
-@yellow-8: color(~`colorPalette('@{yellow-6}', 8) `);
-@yellow-9: color(~`colorPalette('@{yellow-6}', 9) `);
-@yellow-10: color(~`colorPalette('@{yellow-6}', 10) `);
-
-@volcano-1: color(~`colorPalette('@{volcano-6}', 1) `);
-@volcano-2: color(~`colorPalette('@{volcano-6}', 2) `);
-@volcano-3: color(~`colorPalette('@{volcano-6}', 3) `);
-@volcano-4: color(~`colorPalette('@{volcano-6}', 4) `);
-@volcano-5: color(~`colorPalette('@{volcano-6}', 5) `);
-@volcano-6: #fa541c;
-@volcano-7: color(~`colorPalette('@{volcano-6}', 7) `);
-@volcano-8: color(~`colorPalette('@{volcano-6}', 8) `);
-@volcano-9: color(~`colorPalette('@{volcano-6}', 9) `);
-@volcano-10: color(~`colorPalette('@{volcano-6}', 10) `);
-
-@geekblue-1: color(~`colorPalette('@{geekblue-6}', 1) `);
-@geekblue-2: color(~`colorPalette('@{geekblue-6}', 2) `);
-@geekblue-3: color(~`colorPalette('@{geekblue-6}', 3) `);
-@geekblue-4: color(~`colorPalette('@{geekblue-6}', 4) `);
-@geekblue-5: color(~`colorPalette('@{geekblue-6}', 5) `);
-@geekblue-6: #2f54eb;
-@geekblue-7: color(~`colorPalette('@{geekblue-6}', 7) `);
-@geekblue-8: color(~`colorPalette('@{geekblue-6}', 8) `);
-@geekblue-9: color(~`colorPalette('@{geekblue-6}', 9) `);
-@geekblue-10: color(~`colorPalette('@{geekblue-6}', 10) `);
-
-@lime-1: color(~`colorPalette('@{lime-6}', 1) `);
-@lime-2: color(~`colorPalette('@{lime-6}', 2) `);
-@lime-3: color(~`colorPalette('@{lime-6}', 3) `);
-@lime-4: color(~`colorPalette('@{lime-6}', 4) `);
-@lime-5: color(~`colorPalette('@{lime-6}', 5) `);
-@lime-6: #a0d911;
-@lime-7: color(~`colorPalette('@{lime-6}', 7) `);
-@lime-8: color(~`colorPalette('@{lime-6}', 8) `);
-@lime-9: color(~`colorPalette('@{lime-6}', 9) `);
-@lime-10: color(~`colorPalette('@{lime-6}', 10) `);
-
-@gold-1: color(~`colorPalette('@{gold-6}', 1) `);
-@gold-2: color(~`colorPalette('@{gold-6}', 2) `);
-@gold-3: color(~`colorPalette('@{gold-6}', 3) `);
-@gold-4: color(~`colorPalette('@{gold-6}', 4) `);
-@gold-5: color(~`colorPalette('@{gold-6}', 5) `);
-@gold-6: #faad14;
-@gold-7: color(~`colorPalette('@{gold-6}', 7) `);
-@gold-8: color(~`colorPalette('@{gold-6}', 8) `);
-@gold-9: color(~`colorPalette('@{gold-6}', 9) `);
-@gold-10: color(~`colorPalette('@{gold-6}', 10) `);
-
-@preset-colors: pink, magenta, red, volcano, orange, yellow, gold, cyan, lime, green, blue, geekblue,
- purple;
-
-
-@border-radius-base: 3px;
-@border-radius-sm: 2px;
-@shadow-color: rgba(0, 0, 0, 0.05);
-@shadow-1-down: 4px 4px 40px @shadow-color;
-@border-color-split: #f4f4f4;
-@border-color-base: #e5e5e5;
-@font-size-base: 13px;
-@text-color: #666;
-@hover-color: #f9f9fc;
diff --git a/.prev/src/themes/base/index.less b/.prev/src/themes/base/index.less
deleted file mode 100644
index 09ea46ff..00000000
--- a/.prev/src/themes/base/index.less
+++ /dev/null
@@ -1,222 +0,0 @@
-@import './resolutions.less';
-
-// FOR LAYOUTS
-@__Global_general_font_family: "Poppins", sans-serif;
-@__Global_layout_backgroud: #F8F6F8;
-@__Global_layout_color: #2d2d2d;
-@__Global_layout_border-rd: 27px 0 0 0;
-@__Global_layout_transitions-dur: 200ms;
-@__Global_Components_transitions_dur: 150ms;
-
-@mamamia: #85858570;
-// FOR SECONDARY
-@__Global_SwapAnimDuration: 170ms;
-
-@transition-ease-in: all 0.3s ease-out;
-@transition-ease-out: all 0.3s ease-out;
-@ease-in: ease-in;
-
-::-webkit-scrollbar {
- position: absolute;
- width: 14px;
- height: 18px;
- }
-::-webkit-scrollbar-thumb {
- height: 6px;
- border: 4px solid rgba(0, 0, 0, 0);
- background-clip: padding-box;
- margin: 0 10px 0 0;
- -webkit-border-radius: 7px;
- background-color: rgba(0, 0, 0, 0.15);
- -webkit-box-shadow: inset -1px -1px 0px rgba(0, 0, 0, 0.05), inset 1px 1px 0px rgba(0, 0, 0, 0.05);
-}
-::-webkit-scrollbar-button {
- width: 0;
- height: 0;
- display: none;
-}
-::-webkit-scrollbar-corner {
- background-color: transparent;
-}
-
-// Global Documents
-body {
- scroll-behavior: smooth;
- height: 100%;
- // min-width: 430px;
- background-color: transparent;
-
- overflow: hidden;
-
- font-size: @base-font-size;
- line-height: @base-line-height;
-
-}
-
-#root {
- overflow: hidden;
-}
-
-@media (min-width: @bp-medium) {
-
-}
-
-@media (min-width: @bp-large) {
-
-}
-
-@media (min-width: @bp-xlarge) {
- body{
- zoom: 1.4;
- }
-}
-
-@media (min-width: @bp-xxlarge) {
- body{
- zoom: 1.6;
- }
-}
-
-
-// @media (min-width: 770px){
-// >#secondary_layout{
-// width: 0px!important;
-// }
-// }
-// @media (min-width: 1600px) {
-// :global {
-// .ant-col-xl-48 {
-// width: 20%;
-// }
-
-// .ant-col-xl-96 {
-// width: 40%;
-// }
-// }
-// }
-
-// @media (max-width: 767px) {
-// :global {
-// .ant-card {
-// .ant-card-head {
-// padding: 0 12px;
-// }
-
-// .ant-card-body {
-// padding: 12px;
-// }
-// }
-// }
-// }
-
-// // PrimaryLayout
-// @media (max-width: 767px) {
-// .primary_layout_content {
-// padding: 12px;
-// }
-
-// .primary_layout {
-// height: 100vh;
-// flex: 1;
-// }
-// }
-
-// .primary_layout_*
-@primary_layout_backgroud: #2d2d2d;
-
-@primary_layout_container_backgroud: @__Global_layout_backgroud;
-@primary_layout_container_border-rd: @__Global_layout_border-rd;
-
-@primary_layout_content_padding: 35px 25px 15px 40px;
-
-// .secondary_*
-@__secondary_colider_width: 31.2vw;
-@secondary_wrapper_hidden_width: 22vw;
-@secondary_wrapper_showFull_width: 94.2vw;
-@secondary_wrapper_showHalf_width: 35vw;
-@secondary_container_bg_background: #201F23;
-@secondary_container_1_color: #fff;
-@secondary_container_2_color: #201F23;
-@secondary_container_2_backgroud: #fff;
-@secondary_container_1_btn_backgroud: #4c4c4c;
-@secondary_container_1_btn_color: #fff;
-@secondary_container_1_btn_shadow: 0px 0px 10px 0px rgba(255, 255, 255, 0.205);
-
-@secondary_container_1_padding: 30px 70px 30px 75px;
-@secondaty_container_2_padding: 20px 15px 15px 15px;
-
-// .left_sider*
-@left_sider_backgroud: #2d2d2d;
-@left_sider_color: #fff;
-@left_sider_sizeIcons: 19px;
-@left_sider_menu__onhover_backgroud: rgb(80, 80, 80);
-@left_sider_menu__onhover_color: #fff;
-
-// .post_card*
-@post_card_general_border-rd: 7px;
-@post_card_wrapper_shadow: 0 1px 3px rgba(0, 0, 0, 0.15);
-@post_card_wrapper_actions_backgroud: rgba(235, 235, 235, 0.815);
-@post_card_wrapper_actions_icon_backgroud: #fff;
-
-@post_card_wrapper_tags_color_default: rgb(249, 179, 64);
-@post_card_wrapper_tags_color_nsfw: #111;
-@post_card_wrapper_tags_color_flag: #111;
-
-@post_card_wrapper_post_content_color: #555555;
-@post_card_wrapper_post_content_weight: 400;
-@post_card_wrapper_post_content_fontSize: 15px;
-@post_card_wrapper_post_content_letterSpacing: -0.3px;
-
-@post_card_flaggedWarning_backgroud: #ffffff60;
-@post_card_flaggedWarning_padding: 20px 15px 25px 15px;
-@post_card_flaggedWarning_iconSize: 40px;
-
-// YulioID
-@canvasColor: #f9f9f9;
-@backgroundColor: #fff;
-@foregroundColor: #111;
-@primaryColor: #373F51;
-@primaryShade1: #ffe2d1;
-@primaryShade2: #ffceb2;
-@primaryShade3: #ffb184;
-@primaryShade4: #e88850;
-@primaryShade5: #d17a48;
-@secondaryColor: #ffcc67;
-@secondaryShade1: #fff1d5;
-@secondaryShade2: #ffde9e;
-@secondaryShade3: #ffd074;
-@secondaryShade4: #e8ba5e;
-@secondaryShade5: #ba954b;
-@accentColor: #4e5166;
-@accentShade1: #cecfd5;
-@accentShade2: #aeafb9;
-@accentShade3: #8e909d;
-@accentShade4: #6e7081;
-@accentShade5: #404354;
-@accent2Color: #588b8b;
-@accent2Shade1: #c2d4d4;
-@accent2Shade2: #a3bfbf;
-@accent2Shade3: #85aaaa;
-@accent2Shade4: #507f7f;
-@accent2Shade5: #497272;
-@accent3Color: #fe5f55;
-@accent3Shade1: #fec4c1;
-@accent3Shade2: #fea7a2;
-@accent3Shade3: #fe7c73;
-@accent3Shade4: #e7574e;
-@accent3Shade5: #b9463e;
-
-@neutralShade0: #f8f8f8;
-@neutralShade1: #f2f2f2;
-@neutralShade2: #e8e9e9;
-@neutralShade3: #d1d3d4;
-@neutralShade4: #babdbf;
-@neutralShade5: #808488;
-@neutralShade6: #666a6d;
-@neutralShade7: #4d5052;
-@neutralShade8: #212122;
-@grayColor: #999;
-@lightGrayColor: #ddd;
-@borderRadius: 6px;
-@boxShadow: 0 2px 5px rgba(#333, 0.2);
-
diff --git a/.prev/src/themes/base/resolutions.less b/.prev/src/themes/base/resolutions.less
deleted file mode 100644
index 4cfa2036..00000000
--- a/.prev/src/themes/base/resolutions.less
+++ /dev/null
@@ -1,20 +0,0 @@
-@bp-small: 48em; // 768px
-@bp-medium: 64em; // 1024px
-@bp-large: 85.375em; // 1366px
-@bp-xlarge: 120em; // 1920px
-@bp-xxlarge: 160em; // 2560px
-
-// Media Queries
-@mq-small: "min-width: @bp-small";
-@mq-medium: "(min-width: @bp-medium)";
-@mq-large: "(min-width: @bp-large)";
-@mq-xlarge: "(min-width: @bp-xlarge)";
-@mq-xxlarge: "(min-width: @bp-xxlarge)";
-@mq-retina: "(-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi)";
-
-// Font-Size
-@base-font-size: 1em;
-
-// Line-Height
-@base-line-height: 1.5;
-@header-line-height: 1.25;
\ No newline at end of file
diff --git a/.prev/src/themes/fonts-imports.css b/.prev/src/themes/fonts-imports.css
deleted file mode 100644
index e41bc2c2..00000000
--- a/.prev/src/themes/fonts-imports.css
+++ /dev/null
@@ -1,5 +0,0 @@
-@import url('https://fonts.googleapis.com/css?family=Alata&display=swap');
-@import url('https://fonts.googleapis.com/css?family=Poppins:300,300i,500,500i,700');
-@import url('https://fonts.googleapis.com/css?family=Source+Sans+Pro&display=swap');
-@import url('https://fonts.googleapis.com/css?family=Kulim+Park&display=swap');
-@import url('https://fonts.googleapis.com/css?family=Nunito&display=swap');
diff --git a/.prev/src/themes/index.less b/.prev/src/themes/index.less
deleted file mode 100644
index dc6be614..00000000
--- a/.prev/src/themes/index.less
+++ /dev/null
@@ -1,3 +0,0 @@
-@import '~themes/antd-design.less';
-@import '~themes/base/index.less';
-@import (inline) './fonts-imports.css';
\ No newline at end of file
diff --git a/.prev/src/utils/index.js b/.prev/src/utils/index.js
deleted file mode 100644
index fab1069e..00000000
--- a/.prev/src/utils/index.js
+++ /dev/null
@@ -1,247 +0,0 @@
-import { cloneDeep, isString, flow, curry } from 'lodash'
-import umiRouter from 'umi/router'
-import pathToRegexp from 'path-to-regexp'
-import { i18n } from 'config'
-
-export classnames from 'classnames'
-export config from 'config'
-export request from './request'
-export { Color } from './theme'
-
-export const { defaultLanguage } = i18n
-export const languages = i18n.languages.map(item => item.key)
-
-/**
- * Query objects that specify keys and values in an array where all values are objects.
- * @param {array} array An array where all values are objects, like [{key:1},{key:2}].
- * @param {string} key The key of the object that needs to be queried.
- * @param {string} value The value of the object that needs to be queried.
- * @return {object|undefined} Return frist object when query success.
- */
-export function queryArray(array, key, value) {
- if (!Array.isArray(array)) {
- return
- }
- return array.find(_ => _[key] === value)
-}
-
-/**
- * Convert an array to a tree-structured array.
- * @param {array} array The Array need to Converted.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} children The alias of children of the object in the array.
- * @return {array} Return a tree-structured array.
- */
-export function arrayToTree(
- array,
- id = 'id',
- parentId = 'pid',
- children = 'children'
-) {
- const result = []
- const hash = {}
- const data = cloneDeep(array)
-
- data.forEach((item, index) => {
- hash[data[index][id]] = data[index]
- })
-
- data.forEach(item => {
- const hashParent = hash[item[parentId]]
- if (hashParent) {
- !hashParent[children] && (hashParent[children] = [])
- hashParent[children].push(item)
- } else {
- result.push(item)
- }
- })
- return result
-}
-
-export const langFromPath = curry(
- /**
- * Query language from pathname.
- * @param {array} languages Specify which languages are currently available.
- * @param {string} defaultLanguage Specify the default language.
- * @param {string} pathname Pathname to be queried.
- * @return {string} Return the queryed language.
- */
- (languages, defaultLanguage, pathname) => {
- for (const item of languages) {
- if (pathname.startsWith(`/${item}/`)) {
- return item
- }
- }
- return defaultLanguage
- }
-)(languages)(defaultLanguage)
-
-export const deLangPrefix = curry(
- /**
- * Remove the language prefix in pathname.
- * @param {array} languages Specify which languages are currently available.
- * @param {string} pathname Remove the language prefix in the pathname.
- * @return {string} Return the pathname after removing the language prefix.
- */
- (languages, pathname) => {
- if (!pathname) {
- return
- }
- for (const item of languages) {
- if (pathname.startsWith(`/${item}/`)) {
- return pathname.replace(`/${item}/`, '/')
- }
- }
-
- return pathname
- }
-)(languages)
-
-/**
- * Add the language prefix in pathname.
- * @param {string} pathname Add the language prefix in the pathname.
- * @return {string} Return the pathname after adding the language prefix.
- */
-export function addLangPrefix(pathname) {
- const prefix = langFromPath(window.location.pathname)
- return `/${prefix}${deLangPrefix(pathname)}`
-}
-
-const routerAddLangPrefix = params => {
- if (isString(params)) {
- params = addLangPrefix(params)
- } else {
- params.pathname = addLangPrefix(params.pathname)
- }
- return params
-}
-
-/**
- * Adjust the router to automatically add the current language prefix before the pathname in push and replace.
- */
-const myRouter = { ...umiRouter }
-
-myRouter.push = flow(routerAddLangPrefix, umiRouter.push)
-
-myRouter.replace = flow(routerAddLangPrefix, myRouter.replace)
-
-export const router = myRouter
-
-/**
- * Whether the path matches the regexp if the language prefix is ignored, https://github.com/pillarjs/path-to-regexp.
- * @param {string|regexp|array} regexp Specify a string, array of strings, or a regular expression.
- * @param {string} pathname Specify the pathname to match.
- * @return {array|null} Return the result of the match or null.
- */
-export function pathMatchRegexp(regexp, pathname) {
- return pathToRegexp(regexp).exec(deLangPrefix(pathname))
-}
-
-/**
- * In an array object, traverse all parent IDs based on the value of an object.
- * @param {array} array The Array need to Converted.
- * @param {string} current Specify the value of the object that needs to be queried.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @return {array} Return a key array.
- */
-export function queryPathKeys(array, current, parentId, id = 'id') {
- const result = [current]
- const hashMap = new Map()
- array.forEach(item => hashMap.set(item[id], item))
-
- const getPath = current => {
- const currentParentId = hashMap.get(current)[parentId]
- if (currentParentId) {
- result.push(currentParentId)
- getPath(currentParentId)
- }
- }
-
- getPath(current)
- return result
-}
-
-/**
- * In an array of objects, specify an object that traverses the objects whose parent ID matches.
- * @param {array} array The Array need to Converted.
- * @param {string} current Specify the object that needs to be queried.
- * @param {string} parentId The alias of the parent ID of the object in the array.
- * @param {string} id The alias of the unique ID of the object in the array.
- * @return {array} Return a key array.
- */
-export function queryAncestors(array, current, parentId, id = 'id') {
- const result = [current]
- const hashMap = new Map()
- array.forEach(item => hashMap.set(item[id], item))
-
- const getPath = current => {
- const currentParentId = hashMap.get(current[id])[parentId]
- if (currentParentId) {
- result.push(hashMap.get(currentParentId))
- getPath(hashMap.get(currentParentId))
- }
- }
-
- getPath(current)
- return result
-}
-
-/**
- * Query which layout should be used for the current path based on the configuration.
- * @param {layouts} layouts Layout configuration.
- * @param {pathname} pathname Path name to be queried.
- * @return {string} Return frist object when query success.
- */
-export function queryLayout(layouts, pathname) {
- let result = 'public'
-
- const isMatch = regepx => {
- return regepx instanceof RegExp
- ? regepx.test(pathname)
- : pathMatchRegexp(regepx, pathname)
- }
-
- for (const item of layouts) {
- let include = false
- let exclude = false
- if (item.include) {
- for (const regepx of item.include) {
- if (isMatch(regepx)) {
- include = true
- break
- }
- }
- }
-
- if (include && item.exclude) {
- for (const regepx of item.exclude) {
- if (isMatch(regepx)) {
- exclude = true
- break
- }
- }
- }
-
- if (include && !exclude) {
- result = item.name
- break
- }
- }
-
- return result
-}
-
-export function getLocale() {
- return langFromPath(window.location.pathname)
-}
-
-export function setLocale(language) {
- if (getLocale() !== language) {
- umiRouter.push({
- pathname: `/${language}${deLangPrefix(window.location.pathname)}`,
- search: window.location.search,
- })
- }
-}
diff --git a/.prev/src/utils/model.js b/.prev/src/utils/model.js
deleted file mode 100644
index 6bc8b9ba..00000000
--- a/.prev/src/utils/model.js
+++ /dev/null
@@ -1,39 +0,0 @@
-import modelExtend from 'dva-model-extend'
-
-export const model = {
- reducers: {
- updateState(state, { payload }) {
- return {
- ...state,
- ...payload,
- }
- },
- },
-}
-
-export const pageModel = modelExtend(model, {
- state: {
- list: [],
- pagination: {
- showSizeChanger: true,
- showQuickJumper: true,
- current: 1,
- total: 0,
- pageSize: 10,
- },
- },
-
- reducers: {
- querySuccess(state, { payload }) {
- const { list, pagination } = payload
- return {
- ...state,
- list,
- pagination: {
- ...state.pagination,
- ...pagination,
- },
- }
- },
- },
-})
diff --git a/.prev/src/utils/request.js b/.prev/src/utils/request.js
deleted file mode 100644
index bad2dac5..00000000
--- a/.prev/src/utils/request.js
+++ /dev/null
@@ -1,96 +0,0 @@
-import axios from 'axios'
-import { cloneDeep, isEmpty } from 'lodash'
-import pathToRegexp from 'path-to-regexp'
-import { message } from 'antd'
-import qs from 'qs'
-
-const { CancelToken } = axios
-window.cancelRequest = new Map()
-
-export default function request(options) {
- let { data, url, method = 'get' } = options
- const cloneData = cloneDeep(data)
-
- try {
- let domain = ''
- const urlMatch = url.match(/[a-zA-z]+:\/\/[^/]*/)
- if (urlMatch) {
- ;[domain] = urlMatch
- url = url.slice(domain.length)
- }
-
- const match = pathToRegexp.parse(url)
- url = pathToRegexp.compile(url)(data)
-
- for (const item of match) {
- if (item instanceof Object && item.name in cloneData) {
- delete cloneData[item.name]
- }
- }
- url = domain + url
- } catch (e) {
- message.error(e.message)
- }
-
- options.url =
- method.toLocaleLowerCase() === 'get'
- ? `${url}${isEmpty(cloneData) ? '' : '?'}${qs.stringify(cloneData)}`
- : url
-
- options.cancelToken = new CancelToken(cancel => {
- window.cancelRequest.set(Symbol(Date.now()), {
- pathname: window.location.pathname,
- cancel,
- })
- })
-
- return axios(options)
- .then(response => {
- const { statusText, status, data } = response
-
- let result = {}
- if (typeof data === 'object') {
- result = data
- if (Array.isArray(data)) {
- result.list = data
- }
- } else {
- result.data = data
- }
-
- return Promise.resolve({
- success: true,
- message: statusText,
- statusCode: status,
- ...result,
- })
- })
- .catch(error => {
- const { response, message } = error
-
- if (String(message) === 'Canceling...') {
- return {
- success: false,
- }
- }
-
- let msg
- let statusCode
-
- if (response && response instanceof Object) {
- const { data, statusText } = response
- statusCode = response.status
- msg = data.message || statusText
- } else {
- statusCode = 600
- msg = error.message || 'Network Error'
- }
-
- /* eslint-disable */
- return Promise.reject({
- success: false,
- statusCode,
- message: msg,
- })
- })
-}
diff --git a/.prev/src/utils/theme.js b/.prev/src/utils/theme.js
deleted file mode 100644
index 0a610df4..00000000
--- a/.prev/src/utils/theme.js
+++ /dev/null
@@ -1,14 +0,0 @@
-module.exports = {
- Color: {
- green: '#64ea91',
- blue: '#8fc9fb',
- purple: '#d897eb',
- red: '#f69899',
- yellow: '#f8c82e',
- peach: '#f797d6',
- borderBase: '#e5e5e5',
- borderSplit: '#f4f4f4',
- grass: '#d6fbb5',
- sky: '#c1e0fc',
- },
-}
diff --git a/.umirc.js b/.umirc.js
index e081b1e4..bd7ec135 100755
--- a/.umirc.js
+++ b/.umirc.js
@@ -64,7 +64,7 @@ export default {
theme: './config/theme.config.js',
// Webpack Configuration
alias: {
- ycore: resolve(__dirname, './src/@ycore/ycore_worker.js'),
+ app: resolve(__dirname, './src/@app/app.js'),
globals: resolve(__dirname, './globals'),
components: resolve(__dirname, './src/components'),
config: resolve(__dirname, './config/ycore.config.js'),
diff --git a/.ycorerc.js b/.ycorerc.js
new file mode 100644
index 00000000..e3059c50
--- /dev/null
+++ b/.ycorerc.js
@@ -0,0 +1,3 @@
+module.exports = {
+ nigga: 'JeJe So FUny'
+}
\ No newline at end of file
diff --git a/dist.zip b/dist.zip
deleted file mode 100644
index 50300f36d991e049aaf596e2b7e1b88292feddb4..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 1030217
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