diff --git a/src/css/main.css b/src/css/main.css index c65138c..c6684d6 100644 --- a/src/css/main.css +++ b/src/css/main.css @@ -744,6 +744,53 @@ li.social-link a { line-height: 20px; margin: 0 0 15px 0; } } +.cookie-popup { + margin: 0 auto; + position: relative; } + +.cookie-popup__inner { + display: block; + right: 20px; + top: 20px; + position: fixed; + border-radius: 8px; + background-color: white; + box-shadow: 0px 4px 18px 0px rgba(189, 208, 223, 0.26); + border-radius: 8px; + padding: 30px; + z-index: 999; + opacity: 0; + transform: translate3d(20px, 0, 0) scale(0.5); + transition: transform 0.4s cubic-bezier(0.175, 0.885, 0.135, 1.425), opacity 0.2s ease; + transition-delay: 1.5s; } + +.cookie-popup-text { + display: block; + width: 220px; + font-size: 16px; + padding: 0 0 10px 0; } + +.cookie-popup-button { + display: inline-block; + margin: 10px 0 0 0; + font-family: "PostGrotesk-Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; + text-transform: uppercase; + line-height: 15px; + padding: 14px 25px 14px; + font-size: 13px; + letter-spacing: 1px; + color: #6370CA; + background-color: rgba(99, 112, 202, 0.1); + border-radius: 10px; } + +.shown .cookie-popup__inner { + opacity: 1; + transform: translate3d(0, 0, 0) scale(1); } + +@media (max-width: 767px) { + .cookie-popup__inner { + display: none; } } + .container { max-width: 1280px; margin: 0 auto; @@ -854,7 +901,7 @@ li.social-link a { margin: 0 0 5px 0; opacity: 0; transform: translate3d(0, 20px, 0); - transition: transform .6s ease,opacity .6s ease; + transition: transform .6s ease, opacity .6s ease; transition-delay: .1s; } .shown .tagline__title { @@ -1085,15 +1132,7 @@ input.email-form__input--email:disabled { padding: 20px 80px; background: white; box-shadow: 0px -2px 18px 0px rgba(72, 89, 102, 0.25); - border-radius: 10px; - opacity: 0; - transform: translate3d(0, 40px, 0); - transition: transform .6s ease, opacity .6s ease; - transition-delay: .8s; } - -.shown .features { - opacity: 1; - transform: translate3d(0, 0, 0); } + border-radius: 10px; } .more-button { font-family: "PostGrotesk-Medium", -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif; diff --git a/src/index.html b/src/index.html index 075a681..6c42a18 100755 --- a/src/index.html +++ b/src/index.html @@ -32,6 +32,13 @@ + +
diff --git a/src/js/app.js b/src/js/app.js index 1db4bc4..3018bda 100644 --- a/src/js/app.js +++ b/src/js/app.js @@ -1863,7 +1863,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol Object.defineProperty(exports, '__esModule', { value: true }); }); }, {}], 6: [function (require, module, exports) { - // https://d3js.org/d3-interpolate/ Version 1.1.2. Copyright 2016 Mike Bostock. + // https://d3js.org/d3-interpolate/ Version 1.1.3. Copyright 2017 Mike Bostock. (function (global, factory) { (typeof exports === "undefined" ? "undefined" : _typeof(exports)) === 'object' && typeof module !== 'undefined' ? factory(exports, require('d3-color')) : typeof define === 'function' && define.amd ? define(['exports', 'd3-color'], factory) : factory(global.d3 = global.d3 || {}, global.d3); })(this, function (exports, d3Color) { @@ -1940,7 +1940,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol var r = color$$1((start = d3Color.rgb(start)).r, (end = d3Color.rgb(end)).r), g = color$$1(start.g, end.g), b = color$$1(start.b, end.b), - opacity = color$$1(start.opacity, end.opacity); + opacity = nogamma(start.opacity, end.opacity); return function (t) { start.r = r(t); start.g = g(t); @@ -7758,9 +7758,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol }, {}], 14: [function (require, module, exports) { (function (global) { /** - * lodash (Custom Build) + * Lodash (Custom Build) * Build: `lodash modularize exports="npm" -o ./` - * Copyright jQuery Foundation and other contributors + * Copyright JS Foundation and other contributors * Released under MIT license * Based on Underscore.js 1.8.3 * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors @@ -7772,9 +7772,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /** Used to stand-in for `undefined` hash values. */ var HASH_UNDEFINED = '__lodash_hash_undefined__'; - /** Used to compose bitmasks for comparison styles. */ - var UNORDERED_COMPARE_FLAG = 1, - PARTIAL_COMPARE_FLAG = 2; + /** Used to compose bitmasks for value comparisons. */ + var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; /** Used as references for various `Number` constants. */ var MAX_SAFE_INTEGER = 9007199254740991; @@ -7782,6 +7782,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /** `Object#toString` result references. */ var argsTag = '[object Arguments]', arrayTag = '[object Array]', + asyncTag = '[object AsyncFunction]', boolTag = '[object Boolean]', dateTag = '[object Date]', errorTag = '[object Error]', @@ -7789,12 +7790,15 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol genTag = '[object GeneratorFunction]', mapTag = '[object Map]', numberTag = '[object Number]', + nullTag = '[object Null]', objectTag = '[object Object]', promiseTag = '[object Promise]', + proxyTag = '[object Proxy]', regexpTag = '[object RegExp]', setTag = '[object Set]', stringTag = '[object String]', symbolTag = '[object Symbol]', + undefinedTag = '[object Undefined]', weakMapTag = '[object WeakMap]'; var arrayBufferTag = '[object ArrayBuffer]', @@ -7850,13 +7854,56 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /** Used to access faster Node.js helpers. */ var nodeUtil = function () { try { - return freeProcess && freeProcess.binding('util'); + return freeProcess && freeProcess.binding && freeProcess.binding('util'); } catch (e) {} }(); /* Node.js helper references. */ var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray; + /** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ + function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; + } + + /** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ + function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; + } + /** * A specialized version of `_.some` for arrays without support for iteratee * shorthands. @@ -7869,7 +7916,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function arraySome(array, predicate) { var index = -1, - length = array ? array.length : 0; + length = array == null ? 0 : array.length; while (++index < length) { if (predicate(array[index], index, array)) { @@ -7911,6 +7958,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol }; } + /** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ + function cacheHas(cache, key) { + return cache.has(key); + } + /** * Gets the value at `key` of `object`. * @@ -7923,25 +7982,6 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol return object == null ? undefined : object[key]; } - /** - * Checks if `value` is a host object in IE < 9. - * - * @private - * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is a host object, else `false`. - */ - function isHostObject(value) { - // Many host objects are `Object` objects that can coerce to strings - // despite having improperly defined `toString` methods. - var result = false; - if (value != null && typeof value.toString != 'function') { - try { - result = !!(value + ''); - } catch (e) {} - } - return result; - } - /** * Converts `map` to its key-value pairs. * @@ -7998,36 +8038,40 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol /** Used to detect overreaching core-js shims. */ var coreJsData = root['__core-js_shared__']; - /** Used to detect methods masquerading as native. */ - var maskSrcKey = function () { - var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); - return uid ? 'Symbol(src)_1.' + uid : ''; - }(); - /** Used to resolve the decompiled source of functions. */ var funcToString = funcProto.toString; /** Used to check objects for own properties. */ var hasOwnProperty = objectProto.hasOwnProperty; + /** Used to detect methods masquerading as native. */ + var maskSrcKey = function () { + var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || ''); + return uid ? 'Symbol(src)_1.' + uid : ''; + }(); + /** * Used to resolve the * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring) * of values. */ - var objectToString = objectProto.toString; + var nativeObjectToString = objectProto.toString; /** Used to detect if a method is native. */ var reIsNative = RegExp('^' + funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\$&').replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g, '$1.*?') + '$'); /** Built-in value references. */ - var _Symbol2 = root.Symbol, + var Buffer = moduleExports ? root.Buffer : undefined, + _Symbol2 = root.Symbol, Uint8Array = root.Uint8Array, propertyIsEnumerable = objectProto.propertyIsEnumerable, - splice = arrayProto.splice; + splice = arrayProto.splice, + symToStringTag = _Symbol2 ? _Symbol2.toStringTag : undefined; /* Built-in method references for those with the same name as other `lodash` methods. */ - var nativeKeys = overArg(Object.keys, Object); + var nativeGetSymbols = Object.getOwnPropertySymbols, + nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined, + nativeKeys = overArg(Object.keys, Object); /* Built-in method references that are verified to be native. */ var DataView = getNative(root, 'DataView'), @@ -8057,7 +8101,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function Hash(entries) { var index = -1, - length = entries ? entries.length : 0; + length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { @@ -8075,6 +8119,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function hashClear() { this.__data__ = nativeCreate ? nativeCreate(null) : {}; + this.size = 0; } /** @@ -8088,7 +8133,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function hashDelete(key) { - return this.has(key) && delete this.__data__[key]; + var result = this.has(key) && delete this.__data__[key]; + this.size -= result ? 1 : 0; + return result; } /** @@ -8135,6 +8182,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function hashSet(key, value) { var data = this.__data__; + this.size += this.has(key) ? 0 : 1; data[key] = nativeCreate && value === undefined ? HASH_UNDEFINED : value; return this; } @@ -8155,7 +8203,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function ListCache(entries) { var index = -1, - length = entries ? entries.length : 0; + length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { @@ -8173,6 +8221,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function listCacheClear() { this.__data__ = []; + this.size = 0; } /** @@ -8197,6 +8246,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol } else { splice.call(data, index, 1); } + --this.size; return true; } @@ -8244,6 +8294,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol index = assocIndexOf(data, key); if (index < 0) { + ++this.size; data.push([key, value]); } else { data[index][1] = value; @@ -8267,7 +8318,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function MapCache(entries) { var index = -1, - length = entries ? entries.length : 0; + length = entries == null ? 0 : entries.length; this.clear(); while (++index < length) { @@ -8284,6 +8335,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @memberOf MapCache */ function mapCacheClear() { + this.size = 0; this.__data__ = { 'hash': new Hash(), 'map': new (Map || ListCache)(), @@ -8301,7 +8353,9 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function mapCacheDelete(key) { - return getMapData(this, key)['delete'](key); + var result = getMapData(this, key)['delete'](key); + this.size -= result ? 1 : 0; + return result; } /** @@ -8341,7 +8395,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {Object} Returns the map cache instance. */ function mapCacheSet(key, value) { - getMapData(this, key).set(key, value); + var data = getMapData(this, key), + size = data.size; + + data.set(key, value); + this.size += data.size == size ? 0 : 1; return this; } @@ -8362,7 +8420,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function SetCache(values) { var index = -1, - length = values ? values.length : 0; + length = values == null ? 0 : values.length; this.__data__ = new MapCache(); while (++index < length) { @@ -8410,7 +8468,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @param {Array} [entries] The key-value pairs to cache. */ function Stack(entries) { - this.__data__ = new ListCache(entries); + var data = this.__data__ = new ListCache(entries); + this.size = data.size; } /** @@ -8422,6 +8481,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function stackClear() { this.__data__ = new ListCache(); + this.size = 0; } /** @@ -8434,7 +8494,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {boolean} Returns `true` if the entry was removed, else `false`. */ function stackDelete(key) { - return this.__data__['delete'](key); + var data = this.__data__, + result = data['delete'](key); + + this.size = data.size; + return result; } /** @@ -8474,16 +8538,18 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {Object} Returns the stack cache instance. */ function stackSet(key, value) { - var cache = this.__data__; - if (cache instanceof ListCache) { - var pairs = cache.__data__; + var data = this.__data__; + if (data instanceof ListCache) { + var pairs = data.__data__; if (!Map || pairs.length < LARGE_ARRAY_SIZE - 1) { pairs.push([key, value]); + this.size = ++data.size; return this; } - cache = this.__data__ = new MapCache(pairs); + data = this.__data__ = new MapCache(pairs); } - cache.set(key, value); + data.set(key, value); + this.size = data.size; return this; } @@ -8503,15 +8569,24 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {Array} Returns the array of property names. */ function arrayLikeKeys(value, inherited) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - // Safari 9 makes `arguments.length` enumerable in strict mode. - var result = isArray(value) || isArguments(value) ? baseTimes(value.length, String) : []; - - var length = result.length, - skipIndexes = !!length; + var isArr = isArray(value), + isArg = !isArr && isArguments(value), + isBuff = !isArr && !isArg && isBuffer(value), + isType = !isArr && !isArg && !isBuff && isTypedArray(value), + skipIndexes = isArr || isArg || isBuff || isType, + result = skipIndexes ? baseTimes(value.length, String) : [], + length = result.length; for (var key in value) { - if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && (key == 'length' || isIndex(key, length)))) { + if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && ( + // Safari 9 has enumerable `arguments.length` in strict mode. + key == 'length' || + // Node.js 0.10 has enumerable non-index properties on buffers. + isBuff && (key == 'offset' || key == 'parent') || + // PhantomJS 2 has enumerable non-index properties on typed arrays. + isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset') || + // Skip index properties. + isIndex(key, length)))) { result.push(key); } } @@ -8537,14 +8612,44 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol } /** - * The base implementation of `getTag`. + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ + function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return isArray(object) ? result : arrayPush(result, symbolsFunc(object)); + } + + /** + * The base implementation of `getTag` without fallbacks for buggy environments. * * @private * @param {*} value The value to query. * @returns {string} Returns the `toStringTag`. */ function baseGetTag(value) { - return objectToString.call(value); + if (value == null) { + return value === undefined ? undefinedTag : nullTag; + } + return symToStringTag && symToStringTag in Object(value) ? getRawTag(value) : objectToString(value); + } + + /** + * The base implementation of `_.isArguments`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is an `arguments` object, + */ + function baseIsArguments(value) { + return isObjectLike(value) && baseGetTag(value) == argsTag; } /** @@ -8554,22 +8659,21 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @private * @param {*} value The value to compare. * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison * @param {Function} [customizer] The function to customize comparisons. - * @param {boolean} [bitmask] The bitmask of comparison flags. - * The bitmask may be composed of the following flags: - * 1 - Unordered comparison - * 2 - Partial comparison * @param {Object} [stack] Tracks traversed `value` and `other` objects. * @returns {boolean} Returns `true` if the values are equivalent, else `false`. */ - function baseIsEqual(value, other, customizer, bitmask, stack) { + function baseIsEqual(value, other, bitmask, customizer, stack) { if (value === other) { return true; } - if (value == null || other == null || !isObject(value) && !isObjectLike(other)) { + if (value == null || other == null || !isObjectLike(value) && !isObjectLike(other)) { return value !== value && other !== other; } - return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack); + return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); } /** @@ -8580,36 +8684,37 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. * @param {Function} equalFunc The function to determine equivalents of values. - * @param {Function} [customizer] The function to customize comparisons. - * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual` - * for more details. * @param {Object} [stack] Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) { + function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { var objIsArr = isArray(object), othIsArr = isArray(other), - objTag = arrayTag, - othTag = arrayTag; + objTag = objIsArr ? arrayTag : getTag(object), + othTag = othIsArr ? arrayTag : getTag(other); - if (!objIsArr) { - objTag = getTag(object); - objTag = objTag == argsTag ? objectTag : objTag; - } - if (!othIsArr) { - othTag = getTag(other); - othTag = othTag == argsTag ? objectTag : othTag; - } - var objIsObj = objTag == objectTag && !isHostObject(object), - othIsObj = othTag == objectTag && !isHostObject(other), + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, isSameTag = objTag == othTag; + if (isSameTag && isBuffer(object)) { + if (!isBuffer(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } if (isSameTag && !objIsObj) { stack || (stack = new Stack()); - return objIsArr || isTypedArray(object) ? equalArrays(object, other, equalFunc, customizer, bitmask, stack) : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack); + return objIsArr || isTypedArray(object) ? equalArrays(object, other, bitmask, customizer, equalFunc, stack) : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); } - if (!(bitmask & PARTIAL_COMPARE_FLAG)) { + if (!(bitmask & COMPARE_PARTIAL_FLAG)) { var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'), othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__'); @@ -8618,14 +8723,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol othUnwrapped = othIsWrapped ? other.value() : other; stack || (stack = new Stack()); - return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); } } if (!isSameTag) { return false; } stack || (stack = new Stack()); - return equalObjects(object, other, equalFunc, customizer, bitmask, stack); + return equalObjects(object, other, bitmask, customizer, equalFunc, stack); } /** @@ -8640,7 +8745,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol if (!isObject(value) || isMasked(value)) { return false; } - var pattern = isFunction(value) || isHostObject(value) ? reIsNative : reIsHostCtor; + var pattern = isFunction(value) ? reIsNative : reIsHostCtor; return pattern.test(toSource(value)); } @@ -8652,7 +8757,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @returns {boolean} Returns `true` if `value` is a typed array, else `false`. */ function baseIsTypedArray(value) { - return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[objectToString.call(value)]; + return isObjectLike(value) && isLength(value.length) && !!typedArrayTags[baseGetTag(value)]; } /** @@ -8682,15 +8787,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @private * @param {Array} array The array to compare. * @param {Array} other The other array to compare. - * @param {Function} equalFunc The function to determine equivalents of values. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. + * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} stack Tracks traversed `array` and `other` objects. * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. */ - function equalArrays(array, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, + function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, arrLength = array.length, othLength = other.length; @@ -8704,7 +8808,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol } var index = -1, result = true, - seen = bitmask & UNORDERED_COMPARE_FLAG ? new SetCache() : undefined; + seen = bitmask & COMPARE_UNORDERED_FLAG ? new SetCache() : undefined; stack.set(array, other); stack.set(other, array); @@ -8727,14 +8831,14 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol // Recursively compare arrays (susceptible to call stack limits). if (seen) { if (!arraySome(other, function (othValue, othIndex) { - if (!seen.has(othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { - return seen.add(othIndex); + if (!cacheHas(seen, othIndex) && (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); } })) { result = false; break; } - } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) { + } else if (!(arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { result = false; break; } @@ -8755,14 +8859,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @param {Object} object The object to compare. * @param {Object} other The other object to compare. * @param {string} tag The `toStringTag` of the objects to compare. - * @param {Function} equalFunc The function to determine equivalents of values. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. + * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} stack Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) { + function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { switch (tag) { case dataViewTag: if (object.byteLength != other.byteLength || object.byteOffset != other.byteOffset) { @@ -8798,7 +8901,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol var convert = mapToArray; case setTag: - var isPartial = bitmask & PARTIAL_COMPARE_FLAG; + var isPartial = bitmask & COMPARE_PARTIAL_FLAG; convert || (convert = setToArray); if (object.size != other.size && !isPartial) { @@ -8809,11 +8912,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol if (stacked) { return stacked == other; } - bitmask |= UNORDERED_COMPARE_FLAG; + bitmask |= COMPARE_UNORDERED_FLAG; // Recursively compare objects (susceptible to call stack limits). stack.set(object, other); - var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack); + var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); stack['delete'](object); return result; @@ -8832,18 +8935,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * @private * @param {Object} object The object to compare. * @param {Object} other The other object to compare. - * @param {Function} equalFunc The function to determine equivalents of values. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. * @param {Function} customizer The function to customize comparisons. - * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual` - * for more details. + * @param {Function} equalFunc The function to determine equivalents of values. * @param {Object} stack Tracks traversed `object` and `other` objects. * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. */ - function equalObjects(object, other, equalFunc, customizer, bitmask, stack) { - var isPartial = bitmask & PARTIAL_COMPARE_FLAG, - objProps = keys(object), + function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + objProps = getAllKeys(object), objLength = objProps.length, - othProps = keys(other), + othProps = getAllKeys(other), othLength = othProps.length; if (objLength != othLength && !isPartial) { @@ -8875,7 +8977,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol var compared = isPartial ? customizer(othValue, objValue, key, other, object, stack) : customizer(objValue, othValue, key, object, other, stack); } // Recursively compare objects (susceptible to call stack limits). - if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack) : compared)) { + if (!(compared === undefined ? objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack) : compared)) { result = false; break; } @@ -8895,6 +8997,17 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol return result; } + /** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ + function getAllKeys(object) { + return baseGetAllKeys(object, keys, getSymbols); + } + /** * Gets the data for `map`. * @@ -8921,6 +9034,50 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol return baseIsNative(value) ? value : undefined; } + /** + * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values. + * + * @private + * @param {*} value The value to query. + * @returns {string} Returns the raw `toStringTag`. + */ + function getRawTag(value) { + var isOwn = hasOwnProperty.call(value, symToStringTag), + tag = value[symToStringTag]; + + try { + value[symToStringTag] = undefined; + var unmasked = true; + } catch (e) {} + + var result = nativeObjectToString.call(value); + if (unmasked) { + if (isOwn) { + value[symToStringTag] = tag; + } else { + delete value[symToStringTag]; + } + } + return result; + } + + /** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ + var getSymbols = !nativeGetSymbols ? stubArray : function (object) { + if (object == null) { + return []; + } + object = Object(object); + return arrayFilter(nativeGetSymbols(object), function (symbol) { + return propertyIsEnumerable.call(object, symbol); + }); + }; + /** * Gets the `toStringTag` of `value`. * @@ -8930,13 +9087,12 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ var getTag = baseGetTag; - // Fallback for data views, maps, sets, and weak maps in IE 11, - // for data views in Edge < 14, and promises in Node.js. + // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6. if (DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag || Map && getTag(new Map()) != mapTag || Promise && getTag(Promise.resolve()) != promiseTag || Set && getTag(new Set()) != setTag || WeakMap && getTag(new WeakMap()) != weakMapTag) { getTag = function getTag(value) { - var result = objectToString.call(value), + var result = baseGetTag(value), Ctor = result == objectTag ? value.constructor : undefined, - ctorString = Ctor ? toSource(Ctor) : undefined; + ctorString = Ctor ? toSource(Ctor) : ''; if (ctorString) { switch (ctorString) { @@ -9006,11 +9162,22 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol return value === proto; } + /** + * Converts `value` to a string using `Object.prototype.toString`. + * + * @private + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + */ + function objectToString(value) { + return nativeObjectToString.call(value); + } + /** * Converts `func` to its source code. * * @private - * @param {Function} func The function to process. + * @param {Function} func The function to convert. * @returns {string} Returns the source code. */ function toSource(func) { @@ -9079,10 +9246,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * _.isArguments([1, 2, 3]); * // => false */ - function isArguments(value) { - // Safari 8.1 makes `arguments.callee` enumerable in strict mode. - return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') && (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag); - } + var isArguments = baseIsArguments(function () { + return arguments; + }()) ? baseIsArguments : function (value) { + return isObjectLike(value) && hasOwnProperty.call(value, 'callee') && !propertyIsEnumerable.call(value, 'callee'); + }; /** * Checks if `value` is classified as an `Array` object. @@ -9139,33 +9307,23 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol } /** - * This method is like `_.isArrayLike` except that it also checks if `value` - * is an object. + * Checks if `value` is a buffer. * * @static * @memberOf _ - * @since 4.0.0 + * @since 4.3.0 * @category Lang * @param {*} value The value to check. - * @returns {boolean} Returns `true` if `value` is an array-like object, - * else `false`. + * @returns {boolean} Returns `true` if `value` is a buffer, else `false`. * @example * - * _.isArrayLikeObject([1, 2, 3]); + * _.isBuffer(new Buffer(2)); * // => true * - * _.isArrayLikeObject(document.body.children); - * // => true - * - * _.isArrayLikeObject('abc'); - * // => false - * - * _.isArrayLikeObject(_.noop); + * _.isBuffer(new Uint8Array(2)); * // => false */ - function isArrayLikeObject(value) { - return isObjectLike(value) && isArrayLike(value); - } + var isBuffer = nativeIsBuffer || stubFalse; /** * Performs a deep comparison between two values to determine if they are @@ -9175,7 +9333,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * date objects, error objects, maps, numbers, `Object` objects, regexes, * sets, strings, symbols, and typed arrays. `Object` objects are compared * by their own, not inherited, enumerable properties. Functions and DOM - * nodes are **not** supported. + * nodes are compared by strict equality, i.e. `===`. * * @static * @memberOf _ @@ -9217,10 +9375,13 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * // => false */ function isFunction(value) { + if (!isObject(value)) { + return false; + } // The use of `Object#toString` avoids issues with the `typeof` operator - // in Safari 8-9 which returns 'object' for typed array and other constructors. - var tag = isObject(value) ? objectToString.call(value) : ''; - return tag == funcTag || tag == genTag; + // in Safari 9 which returns 'object' for typed arrays and other constructors. + var tag = baseGetTag(value); + return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag; } /** @@ -9280,7 +9441,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol */ function isObject(value) { var type = typeof value === "undefined" ? "undefined" : _typeof(value); - return !!value && (type == 'object' || type == 'function'); + return value != null && (type == 'object' || type == 'function'); } /** @@ -9308,7 +9469,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol * // => false */ function isObjectLike(value) { - return !!value && (typeof value === "undefined" ? "undefined" : _typeof(value)) == 'object'; + return value != null && (typeof value === "undefined" ? "undefined" : _typeof(value)) == 'object'; } /** @@ -9362,6 +9523,45 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object); } + /** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ + function stubArray() { + return []; + } + + /** + * This method returns `false`. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {boolean} Returns `false`. + * @example + * + * _.times(2, _.stubFalse); + * // => [false, false] + */ + function stubFalse() { + return false; + } + module.exports = isEqual; }).call(this, typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : {}); }, {}], 15: [function (require, module, exports) { @@ -9758,7 +9958,8 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol android = document.querySelectorAll(".phone-wrap--android")[0], features = document.querySelectorAll(".features-wrap")[0], slideTwo = document.querySelectorAll(".slide--two")[0], - slideThree = document.querySelectorAll(".slide--three")[0]; + slideThree = document.querySelectorAll(".slide--three")[0], + cookieButton = document.querySelectorAll(".cookie-popup-button")[0]; setTimeout(function () { return body.classList.add("shown"); @@ -9779,6 +9980,11 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol event.preventDefault(); }); + cookieButton.addEventListener('click', function (event) { + document.querySelectorAll(".cookie-popup__inner")[0].style.display = "none"; + event.preventDefault(); + }); + document.querySelectorAll(".button--scroll-top")[0].addEventListener('click', function (event) { animateScroll(body, 600, "easeInOutCubic", 0); setTimeout(function () { diff --git a/src/js/main.js b/src/js/main.js index d79bdaa..eb04094 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -8,11 +8,11 @@ let iphone = document.querySelectorAll(".phone-wrap--iphone")[0], android = document.querySelectorAll(".phone-wrap--android")[0], features = document.querySelectorAll(".features-wrap")[0], slideTwo = document.querySelectorAll(".slide--two")[0], - slideThree = document.querySelectorAll(".slide--three")[0] + slideThree = document.querySelectorAll(".slide--three")[0], + cookieButton = document.querySelectorAll(".cookie-popup-button")[0] setTimeout(() => body.classList.add("shown"), 400) - document.querySelectorAll(".more-button")[0].addEventListener('click', function(event){ animateScroll(slideTwo, 600, "easeInOutCubic", 0) event.preventDefault() @@ -28,6 +28,11 @@ document.querySelectorAll(".nav__item--about")[0].addEventListener('click', func event.preventDefault() }) +cookieButton.addEventListener('click', function(event){ + document.querySelectorAll(".cookie-popup__inner")[0].style.display = "none" + event.preventDefault() +}) + document.querySelectorAll(".button--scroll-top")[0].addEventListener('click', function(event){ animateScroll(body, 600, "easeInOutCubic", 0) setTimeout(function(){ diff --git a/src/scss/common.scss b/src/scss/common.scss index 500be59..2697384 100644 --- a/src/scss/common.scss +++ b/src/scss/common.scss @@ -14,7 +14,6 @@ body { -webkit-font-smoothing: antialiased; } - a { color: $colorDark; text-decoration: none; @@ -55,5 +54,4 @@ a { .button.button--disabled { color: rgba(255, 255, 255, .5); cursor: default; - } diff --git a/src/scss/cookies.scss b/src/scss/cookies.scss new file mode 100644 index 0000000..ae62565 --- /dev/null +++ b/src/scss/cookies.scss @@ -0,0 +1,56 @@ +.cookie-popup { + margin: 0 auto; + position: relative; +} + +.cookie-popup__inner { + display: block; + right: 20px; + top: 20px; + position: fixed; + border-radius: 8px; + background-color: $colorWhite; + box-shadow: 0px 4px 18px 0px rgba(189,208,223,0.26); + border-radius: 8px; + padding: 30px; + z-index: 999; + + opacity: 0; + transform: translate3d(20px, 0, 0) scale(.5); + transition: transform .4s cubic-bezier(0.175, 0.885, 0.135, 1.425), opacity .2s ease; + transition-delay: 1.5s +} + +.cookie-popup-text { + display: block; + width: 220px; + font-size: 16px; + padding: 0 0 10px 0; +} + +.cookie-popup-button { + display: inline-block; + margin: 10px 0 0 0; + font-family: $PostGroteskMedium; + text-transform: uppercase; + line-height: 15px; + padding: 14px 25px 14px; + font-size: 13px; + letter-spacing: 1px; + color: #6370CA; + background-color: rgba(99, 112, 202, .1); + border-radius: 10px; +} + +.shown .cookie-popup__inner { + opacity: 1; + transform: translate3d(0, 0, 0) scale(1); +} + +@media (max-width: 767px) { + + .cookie-popup__inner { + display: none; + } + +} diff --git a/src/scss/main.scss b/src/scss/main.scss index 25af5aa..96ed50b 100644 --- a/src/scss/main.scss +++ b/src/scss/main.scss @@ -5,6 +5,7 @@ @import "phones"; @import "popup"; @import "page"; +@import "cookies"; @import "slides"; @import "slide--one"; diff --git a/src/scss/slide--one.scss b/src/scss/slide--one.scss index b96212a..a4352a3 100644 --- a/src/scss/slide--one.scss +++ b/src/scss/slide--one.scss @@ -30,7 +30,7 @@ opacity: 0; transform: translate3d(0, 20px, 0); - transition: transform .6s ease,opacity .6s ease; + transition: transform .6s ease, opacity .6s ease; transition-delay: .1s; } @@ -302,16 +302,16 @@ input.email-form__input--email:disabled { box-shadow: 0px -2px 18px 0px rgba(72,89,102,0.25); border-radius: 10px; - opacity: 0; - transform: translate3d(0, 40px, 0); - transition: transform .6s ease, opacity .6s ease; - transition-delay: .8s; -} - -.shown .features { - opacity: 1; - transform: translate3d(0, 0, 0); + // opacity: 0; + // transform: translate3d(0, 40px, 0); + // transition: transform .6s ease, opacity .6s ease; + // transition-delay: .8s; } +// +// .shown .features { +// opacity: 1; +// transform: translate3d(0, 0, 0); +// } .more-button { font-family:$PostGroteskMedium;