Buckets:
| import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js' | |
| import {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js' | |
| import {copy, tokenize} from './Tokenizer.js' | |
| import {serialize} from './Serializer.js' | |
| import {prefix} from './Prefixer.js' | |
| /** | |
| * @param {function[]} collection | |
| * @return {function} | |
| */ | |
| export function middleware (collection) { | |
| var length = sizeof(collection) | |
| return function (element, index, children, callback) { | |
| var output = '' | |
| for (var i = 0; i < length; i++) | |
| output += collection[i](element, index, children, callback) || '' | |
| return output | |
| } | |
| } | |
| /** | |
| * @param {function} callback | |
| * @return {function} | |
| */ | |
| export function rulesheet (callback) { | |
| return function (element) { | |
| if (!element.root) | |
| if (element = element.return) | |
| callback(element) | |
| } | |
| } | |
| /** | |
| * @param {object} element | |
| * @param {number} index | |
| * @param {object[]} children | |
| * @param {function} callback | |
| */ | |
| export function prefixer (element, index, children, callback) { | |
| if (element.length > -1) | |
| if (!element.return) | |
| switch (element.type) { | |
| case DECLARATION: element.return = prefix(element.value, element.length, children) | |
| return | |
| case KEYFRAMES: | |
| return serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback) | |
| case RULESET: | |
| if (element.length) | |
| return combine(element.props, function (value) { | |
| switch (match(value, /(::plac\w+|:read-\w+)/)) { | |
| // :read-(only|write) | |
| case ':read-only': case ':read-write': | |
| return serialize([copy(element, {props: [replace(value, /:(read-\w+)/, ':' + MOZ + '$1')]})], callback) | |
| // :placeholder | |
| case '::placeholder': | |
| return serialize([ | |
| copy(element, {props: [replace(value, /:(plac\w+)/, ':' + WEBKIT + 'input-$1')]}), | |
| copy(element, {props: [replace(value, /:(plac\w+)/, ':' + MOZ + '$1')]}), | |
| copy(element, {props: [replace(value, /:(plac\w+)/, MS + 'input-$1')]}) | |
| ], callback) | |
| } | |
| return '' | |
| }) | |
| } | |
| } | |
| /** | |
| * @param {object} element | |
| * @param {number} index | |
| * @param {object[]} children | |
| */ | |
| export function namespace (element) { | |
| switch (element.type) { | |
| case RULESET: | |
| element.props = element.props.map(function (value) { | |
| return combine(tokenize(value), function (value, index, children) { | |
| switch (charat(value, 0)) { | |
| // \f | |
| case 12: | |
| return substr(value, 1, strlen(value)) | |
| // \0 ( + > ~ | |
| case 0: case 40: case 43: case 62: case 126: | |
| return value | |
| // : | |
| case 58: | |
| if (children[++index] === 'global') | |
| children[index] = '', children[++index] = '\f' + substr(children[index], index = 1, -1) | |
| // \s | |
| case 32: | |
| return index === 1 ? '' : value | |
| default: | |
| switch (index) { | |
| case 0: element = value | |
| return sizeof(children) > 1 ? '' : value | |
| case index = sizeof(children) - 1: case 2: | |
| return index === 2 ? value + element + element : value + element | |
| default: | |
| return value | |
| } | |
| } | |
| }) | |
| }) | |
| } | |
| } | |
Xet Storage Details
- Size:
- 3.11 kB
- Xet hash:
- 4989b3dba4d22b7a74d115029f99c897654f5f985e3055455361b5e089e70a62
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.