Skip to content

Instantly share code, notes, and snippets.

View quarrant's full-sized avatar
🇷🇺
😈😈😈

Dmitry Alekseev quarrant

🇷🇺
😈😈😈
View GitHub Profile
@quarrant
quarrant / .swift
Last active July 10, 2020 09:25
TabViewWrapper.swift
//
// TabView+TabBarHidden.swift
// Burnout
//
// Created by user on 09.07.2020.
// Copyright © 2020 quarrant. All rights reserved.
//
import SwiftUI
@quarrant
quarrant / react-native-generate-imagesets.js
Last active December 8, 2019 20:04
react-native-generate-imagesets.js
const path = require('path');
const fs = require('fs');
const appJson = require('../app.json');
const rootDirectory = process.cwd();
const resourcesImagesPath = path.resolve(rootDirectory, 'resources/images');
const imagesXcassetsPath = path.resolve(rootDirectory, 'ios', appJson.name, 'Images.xcassets');
const androidResPath = path.resolve(rootDirectory, 'android/app/src/main/res');
@quarrant
quarrant / StickyHeaders.tsx
Created October 17, 2019 13:19
StickyHeaders.tsx
import React from 'react';
import { View, Animated, Text, StyleSheet, LayoutChangeEvent, LayoutRectangle } from 'react-native';
interface Props {
sections: any[];
}
interface State {
sectionsLayouts: LayoutRectangle[];
sectionHeaderNodes: {
@quarrant
quarrant / MonthYearPicker.tsx
Created October 10, 2019 09:48
Простая реализация Picker из 2 колонок с разными данными
import React from 'react';
import { View, StyleSheet, Picker } from 'react-native';
class ColumnPicker extends React.Component<{ data: string[] }> {
state = { selectedValue: undefined };
private renderItem = (item: string) => {
return <Picker.Item key={item} label={item} value={item} />;
};
import { observable, action, computed } from 'mobx';
import { Platform, NativeModules } from 'react-native';
import replace from 'lodash/replace';
enum Locales {
ru = 'ru',
en = 'en'
}
type TLocale = keyof typeof Locales;
interface Props {
text: string | undefined;
lines: number;
onCollapse?: () => void;
showMoreButton?: boolean;
isActive?: boolean;
}
const FONT_SIZE = 13;
import React from 'react';
import Interactable, { IDragEvent, INativeDragEvent } from 'react-native-interactable';
import { StyleSheet, TouchableOpacity, View, FlatList, GestureResponderEvent } from 'react-native';
export type InteractableListItemRefType = React.Component<Interactable.IInteractableView, {}, any> | null | undefined;
export interface ICommonProps {
onPress?: (event: GestureResponderEvent) => void | null,
rightButtons: Array<React.ReactElement<any>>,
leftButtons: Array<React.ReactElement<any>>,
import { AsyncStorage } from 'react-native';
import _ from 'lodash';
loadFromCache(model, limit = 0) {
return new Promise((resolve, reject) => {
_getModelFromAsyncStorage(model)
.then(results => {
if (!results) resolve([]);
if (_.isArray(results) && limit > 0 && results.length > limit) {
results = results.slice(Math.max(results.length - limit, 1));