UNPKG

423 kBSource Map (JSON)View Raw
1{"version":3,"file":"bin.js","sources":["clean.js","add-to-map-set.js","morph/fonts.js","morph/react-dom/morph-font.js","morph/react-native/morph-fonts.js","relativise.js","ensure-dir.js","fonts.js","match-files.js","get-files.js","ensure-file.js","ensure-data.js","get-view-relative-to-view.js","ensure-flow.js","ensure-is-before.js","ensure-is-hovered.js","ensure-is-media.js","ensure-tools.js","make-get-system-import.js","morph/react/block-add-test-id-prop.js","morph/react/block-add-view-path.js","morph/get-unit.js","morph/react/wrap.js","morph/react/safe.js","morph/utils.js","morph/react-dom/block-capture.js","morph/react/property-rest.js","morph/react/block-column.js","morph/react/block-explicit-children.js","morph/react-dom/block-go-to.js","morph/react/block-group.js","morph/react/block-in-list.js","morph/react/block-list.js","morph/react/block-maybe-skip.js","morph/react/block-name.js","morph/react/block-name-handle-table.js","morph/react-dom/get-block-name.js","morph/react-dom/block-name.js","morph/react/block-off-when.js","morph/react-dom/properties-class-name.js","morph/react-dom/properties-image.js","morph/react/properties-style.js","morph/react-dom/properties-style.js","morph/react/property-format.js","morph/react-dom/property-onclick-user-select.js","morph/react/property-ref.js","morph/react/property-style.js","morph/react/property-text.js","morph/react/property-view-path.js","morph/react-dom/is-valid-property-for-block.js","morph/react-dom/block-properties.js","morph/react/block-set-test-id.js","morph/react/block-table.js","morph/react-dom/block.js","morph/react-dom/get-style-for-property.js","morph/react-dom/get-styles.js","morph/react-dom/get-value-for-property.js","morph/react/make-get-import.js","morph/react/restricted-names.js","morph/react/get-body.js","morph/react/get-default-props.js","morph/react/svg.js","morph/react/get-dependencies.js","morph/react/get-flatlist.js","morph/react/get-formatters.js","morph/react/get-locals.js","morph/react/to-component.js","morph/walk.js","morph/react-dom.js","morph/react-native/block-background-image.js","morph/react-native/block-capture.js","morph/react-native/get-block-name.js","morph/react-native/block-name.js","morph/react-native/properties-style.js","morph/react-native/is-valid-property-for-block.js","morph/react-native/block-properties.js","morph/react-native/block-svg.js","morph/react-native/block-wrap.js","morph/react-native/block.js","morph/react-native/get-style-for-property.js","morph/react-native/get-styles.js","morph/react-native/get-value-for-property.js","morph/react-native/maybe-uses-style-sheet.js","morph/react-native.js","morph/react-pdf.js","morphers.js","maybe-morph.js","morph-all-views.js","maybe-print-warnings.js","parse/prop-is-style.js","parse/did-you-mean.js","parse/prop-is-number.js","parse/helpers.js","parse/get-loc.js","parse/get-tags.js","parse/index.js","sort-sets-in-map.js","parse-views.js","get-view-id-from-file.js","process-view-custom-files.js","process-view-files.js","make-morpher.js","get-points-of-use.js","watch-files.js","watch.js","cli.js"],"sourcesContent":["import { promises as fs } from 'fs'\nimport deleteEmpty from 'delete-empty'\nimport glob from 'fast-glob'\nimport path from 'path'\n\nexport default async function clean(src, verbose) {\n let morphed = await glob(\n [\n '**/*.view.js',\n `Fonts/*.js`,\n 'useFlow.js',\n 'useIsMedia.js',\n 'useIsBefore.js',\n 'useTools.js',\n ],\n {\n bashNative: ['linux'],\n cwd: src,\n ignore: ['*node_modules*'],\n }\n )\n\n await Promise.all(\n morphed.map(f => {\n verbose && console.log(`x ${f}`)\n return fs.unlink(path.join(src, f))\n })\n )\n\n let deleted = await deleteEmpty(src)\n if (verbose) {\n deleted.forEach(d => console.log(`x ${d}`))\n }\n}\n","export default function addToMapSet(map, key, value) {\n if (!map.has(key)) {\n map.set(key, new Set())\n }\n map.get(key).add(value)\n}\n","import list from 'google-fonts-complete/api-response.json'\n\nlet getWeights = variants =>\n variants\n .filter(v => !v.includes('italic'))\n .map(v => (v === 'regular' ? 400 : v))\n\nlet all = list.map(font => ({\n category: font.category,\n value: font.family,\n weights: getWeights(font.variants),\n}))\n\nlet byName = {}\nall.forEach(f => (byName[f.value] = f))\n\nexport let fontFamily = all.map(f => f.value)\n\nexport let isGoogleFont = family => !!byName[family]\n\nexport let maybeAddFallbackFont = f => {\n let font = byName[f]\n\n return font && font.category ? `${f}, ${font.category}` : f\n}\n","import { isGoogleFont } from '../fonts.js'\n\nexport default (font, sources) => {\n let body\n\n if (isGoogleFont(font.family)) {\n body = `injectGlobal(\"@import url('https://fonts.googleapis.com/css?family=${font.family.replace(\n /\\s/g,\n '+'\n )}:${font.weight}${font.style === 'italic' ? 'i' : ''}');body{}\")`\n } else {\n body = `${sources\n .map(src => `import ${src.type} from '${src.file}'`)\n .join('\\n')}\n\ninjectGlobal(\\`@font-face {\n font-family: '${font.family}';\n font-style: ${font.style};\n font-weight: ${font.weight};\n src: ${sources\n .map(src => `url(\\${${src.type}}) format('${src.type}')`)\n .join(', ')};\n}\\`)`\n }\n\n return `import { injectGlobal } from 'emotion'\\n${body}`\n}\n","export default (font, sources) => {\n // TODO implement\n return `export default \"${font.id}\"`\n\n // let body = `export default {\\n`\n // fonts.forEach(font => {\n // body += `${sources\n // .map(src => `'${font.id}': require('./${src.file}'),\\n`)\n // .join(',')}`\n // })\n // return `${body}}`\n}\n","import path from 'path'\n\nexport default function relativise(from, to) {\n let r = path.relative(from, to).replace(/\\\\/g, '/')\n return r.substr(r.startsWith('../..') ? 3 : 1)\n}\n","import { promises as fs } from 'fs'\n\nexport default async function ensureDir(dir) {\n try {\n await fs.mkdir(dir, { recursive: true })\n } catch (error) {}\n}\n","import addToMapSet from './add-to-map-set.js'\nimport morphFontAsReactDom from './morph/react-dom/morph-font.js'\nimport morphFontAsReactNative from './morph/react-native/morph-fonts.js'\nimport path from 'path'\nimport sort from 'bubblesort'\nimport relativise from './relativise.js'\nimport ensureDir from './ensure-dir.js'\n\nlet morphFont = {\n 'react-dom': morphFontAsReactDom,\n 'react-native': morphFontAsReactNative,\n 'react-pdf': morphFontAsReactNative,\n}\n\nexport async function ensureFontsDirectory(src) {\n await ensureDir(path.join(src, 'DesignSystem', 'Fonts'))\n}\n\nexport let getFontId = file => path.basename(file, path.extname(file))\n\nlet fontsOrder = ['eot', 'woff2', 'woff', 'ttf', 'svg', 'otf']\n\nlet sortFonts = fonts => {\n return new Set(\n sort(\n [...fonts],\n (a, b) => fontsOrder.indexOf(b.type) - fontsOrder.indexOf(a.type)\n )\n )\n}\n\nexport function processCustomFonts({ customFonts, filesFontCustom }) {\n for (let file of filesFontCustom) {\n addToMapSet(customFonts, getFontId(file), file)\n }\n for (let [id, fonts] of customFonts) {\n customFonts.set(id, sortFonts(fonts))\n }\n}\n\nexport function morphAllFonts({\n as,\n customFonts,\n filesView,\n src,\n viewsToFiles,\n}) {\n let fontsDirectory = path.join(src, 'DesignSystem', 'Fonts')\n let fontsInUse = new Set()\n\n let mapCustomFont = file => ({\n type: FONT_TYPES[path.extname(file)],\n file: file.replace(fontsDirectory, '.'),\n })\n\n for (let file of filesView) {\n let view = viewsToFiles.get(file)\n\n if (view.custom) continue\n\n view.parsed.fonts.forEach(font => {\n fontsInUse.add(font.id)\n })\n }\n\n return [...fontsInUse].map(font => {\n let [family, weight, style = 'normal'] = font.split('-')\n\n let customFontSources = []\n if (customFonts.has(font)) {\n customFontSources = [...customFonts.get(font)].map(mapCustomFont)\n }\n\n return {\n file: path.join(src, 'DesignSystem', 'Fonts', `${font}.js`),\n content: morphFont[as](\n {\n id: font,\n family,\n style,\n weight,\n },\n customFontSources\n ),\n }\n })\n}\n\n// let removeFont = file => {\n// let id = getFontId(file)\n// instance.customFonts = instance.customFonts.filter(font => font.id !== id)\n// }\n\nlet FONT_TYPES = {\n '.otf': 'opentype',\n '.eot': 'eot',\n '.svg': 'svg',\n '.ttf': 'truetype',\n '.woff': 'woff',\n '.woff2': 'woff2',\n}\n\nexport let makeGetFontImport = src => (font, view) =>\n `import \"${relativise(\n view.file,\n path.join(src, 'DesignSystem', 'Fonts', `${font}.js`)\n )}\"`\n\n// let isFont = f => Object.keys(FONT_TYPES).includes(path.extname(f))\n","import mm from 'micromatch'\n\nexport let PATTERNS = {\n filesView: {\n match: ['**/view.blocks'],\n },\n filesViewLogic: {\n match: ['**/logic.js'],\n },\n filesViewCustom: {\n match: ['**/react.js'],\n },\n filesFontCustom: {\n match: [\n '**/DesignSystem/Fonts/*.eot',\n '**/DesignSystem/Fonts/*.otf',\n '**/DesignSystem/Fonts/*.ttf',\n '**/DesignSystem/Fonts/*.svg',\n '**/DesignSystem/Fonts/*.woff',\n '**/DesignSystem/Fonts/*.woff2',\n ],\n },\n}\n\n// @ts-ignore\nexport let isViewFile = async file => mm.isMatch(file, PATTERNS.filesView.match)\nexport let isViewLogicFile = async file =>\n // @ts-ignore\n mm.isMatch(file, PATTERNS.filesViewLogic.match)\nexport let isViewCustomFile = async file =>\n // @ts-ignore\n mm.isMatch(file, PATTERNS.filesViewCustom.match)\nexport let isFontCustomFile = async file =>\n // @ts-ignore\n mm.isMatch(file, PATTERNS.filesFontCustom.match)\n\nexport let MATCH = Object.values(PATTERNS)\n .map(item => item.match)\n .flat()\n\nexport async function getMatchesPerPattern(files) {\n // @ts-ignore\n return Object.fromEntries(\n await Promise.all(\n Object.entries(PATTERNS).map(async ([key, { filter, match, ignore }]) => {\n let matches = mm(files, match, { ignore })\n if (typeof filter === 'function') {\n matches = await filter(matches)\n }\n return [key, new Set(matches)]\n })\n )\n )\n}\n","import { getMatchesPerPattern, MATCH } from './match-files.js'\nimport glob from 'fast-glob'\n\nexport default async function getFiles(src) {\n let files = await glob(MATCH, {\n absolute: true,\n cwd: src,\n ignore: ['**/node_modules/**', '**/view.js'],\n })\n\n return await getMatchesPerPattern(files)\n}\n","import ensureDir from './ensure-dir.js'\nimport path from 'path'\nimport prettier from 'prettier'\n\nexport default async function ensureFile({ file, content }) {\n await ensureDir(path.dirname(file))\n\n return {\n file,\n content: prettier.format(content, {\n parser: 'babel',\n singleQuote: true,\n trailingComma: 'es5',\n }),\n }\n}\n","import ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet DATA = `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-data.js\nimport * as fromValidate from './validate.js'\nimport * as fromFormat from './format.js'\n// import get from 'dlv';\nimport get from 'lodash/get'\nimport produce from 'immer'\n// import set from 'dset';\nimport set from 'lodash/set'\nimport React, {\n useContext,\n useEffect,\n useMemo,\n useReducer,\n useRef,\n} from 'react'\n\nlet SET = 'data/SET'\nlet SET_FN = 'data/SET_FN'\nlet RESET = 'data/RESET'\nlet FORCE_REQUIRED = 'data/FORCE_REQUIRED'\nlet reducer = produce((draft, action) => {\n switch (action.type) {\n case SET: {\n set(draft, action.path, action.value)\n break\n }\n\n case SET_FN: {\n action.fn(draft, set, get)\n break\n }\n\n case RESET: {\n return action.value\n }\n\n case FORCE_REQUIRED: {\n draft._forceRequired = true\n break\n }\n\n default: {\n throw new Error(\n \\`Unknown action type \"\\${action.type}\" in useData reducer.\\`\n )\n }\n }\n})\n\nlet DataContexts = {\n default: React.createContext([]),\n}\nexport function DataProvider(props) {\n if (!props.context) {\n throw new Error(\n \\`You're missing the context value in DataProvider. Eg: <DataProvider context=\"namespace\" ...\\`\n )\n }\n if (!(props.context in DataContexts)) {\n DataContexts[props.context] = React.createContext([])\n }\n let Context = DataContexts[props.context]\n\n let [state, dispatch] = useReducer(reducer, props.value)\n let isSubmitting = useRef(false)\n let shouldCallOnChange = useRef(false)\n\n useEffect(() => {\n if (isSubmitting.current) return\n\n shouldCallOnChange.current = false\n dispatch({ type: RESET, value: props.value })\n }, [props.value]) // eslint-disable-line\n // ignore dispatch\n\n let value = useMemo(() => {\n async function onSubmit(args) {\n if (isSubmitting.current) return\n isSubmitting.current = true\n\n try {\n let res = await props.onSubmit(state, args)\n isSubmitting.current = false\n\n if (!res) return\n } catch (error) {\n isSubmitting.current = false\n }\n\n dispatch({ type: FORCE_REQUIRED })\n }\n\n return [state, dispatch, onSubmit]\n }, [state, props.onSubmit]) // eslint-disable-line\n // the linter says we need props when props.onSubmit is already there\n\n // keep track of props.onChange outside of the following effect to\n // prevent loops. Making the function useCallback didn't work\n let onChange = useRef(props.onChange)\n useEffect(() => {\n onChange.current = props.onChange\n }, [props.onChange])\n\n useEffect(() => {\n if (!shouldCallOnChange.current) {\n shouldCallOnChange.current = true\n return\n }\n\n onChange.current(state, fn => dispatch({ type: SET_FN, fn }))\n }, [state])\n\n return <Context.Provider value={value}>{props.children}</Context.Provider>\n}\nDataProvider.defaultProps = {\n context: 'default',\n onChange: () => {},\n onSubmit: () => {},\n}\n\nexport function useData({\n path = null,\n context = 'default',\n formatIn = null,\n formatOut = null,\n validate = null,\n validateRequired = false,\n} = {}) {\n if (process.env.NODE_ENV === 'development') {\n if (!(context in DataContexts)) {\n throw new Error(\n \\`\"\\${context}\" isn't a valid Data context. Check that you have <DataProvider context=\"\\${context}\" value={data}> in the component that defines the context for this story.\\`\n )\n }\n\n if (formatIn && !(formatIn in fromFormat)) {\n throw new Error(\n \\`\"\\${formatIn}\" function doesn't exist or is not exported in Data/format.js\\`\n )\n }\n\n if (formatOut && !(formatOut in fromFormat)) {\n throw new Error(\n \\`\"\\${formatOut}\" function doesn't exist or is not exported in Data/format.js\\`\n )\n }\n\n if (validate && !(validate in fromValidate)) {\n throw new Error(\n \\`\"\\${validate}\" function doesn't exist or is not exported in Data/validators.js\\`\n )\n }\n }\n\n let contextValue = useContext(DataContexts[context])\n let touched = useRef(false)\n\n return useMemo(() => {\n let [data, dispatch, onSubmit] = contextValue\n\n if (!data) {\n if (process.env.NODE_ENV === 'development') {\n console.error(\n 'Check that you have <DataProvider value={data}> in the component that defines the data for this story.',\n {\n path,\n formatIn,\n formatOut,\n validate,\n validateRequired,\n data,\n }\n )\n }\n return {}\n }\n\n let rawValue = path ? get(data, path) : data\n let value = rawValue\n if (path && formatIn) {\n value = fromFormat[formatIn](rawValue, data)\n }\n\n let isValidInitial = true\n if (validate) {\n isValidInitial = fromValidate[validate](rawValue, value, data)\n }\n let isValid = touched.current || (validateRequired && data._forceRequired)? isValidInitial : true\n\n function onChange(value, changePath = path) {\n touched.current = !!value\n\n if (typeof value === 'function') {\n dispatch({ type: SET_FN, fn: value })\n } else if (!changePath) {\n dispatch({ type: RESET, value })\n } else {\n dispatch({\n type: SET,\n path: changePath,\n value: formatOut ? fromFormat[formatOut](value, data) : value,\n })\n }\n }\n\n return {\n onChange,\n onSubmit,\n value,\n isValid,\n isValidInitial,\n isInvalid: !isValid,\n isInvalidInitial: !isValidInitial,\n }\n }, [contextValue, path, formatIn, formatOut, validateRequired, validate])\n}\n`\n\nexport default function ensureData({ src }) {\n return ensureFile({\n file: path.join(src, 'Data', 'ViewsData.js'),\n content: DATA,\n })\n}\n","import path from 'path'\n\nexport default function getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n}) {\n let importCandidates = viewsById.get(id)\n if (!importCandidates) {\n // TODO add better error message\n console.log('No import candidates for ', id, 'from', view.file)\n importCandidates = new Set()\n }\n let importViewFile = [...importCandidates][0]\n if (importCandidates.size > 1) {\n let pathToView = path.dirname(view.file)\n\n let maybeFileViewInside = path\n .join(pathToView, id, 'view.blocks')\n .replace(/\\\\/g, '/')\n let maybeFileViewCustomInside = path\n .join(pathToView, id, 'react.js')\n .replace(/\\\\/g, '/')\n if (importCandidates.has(maybeFileViewInside)) {\n importViewFile = maybeFileViewInside\n } else if (importCandidates.has(maybeFileViewCustomInside)) {\n importViewFile = maybeFileViewCustomInside\n }\n }\n\n return viewsToFiles.get(importViewFile)\n}\n","import ensureFile from './ensure-file.js'\nimport getViewRelativeToView from './get-view-relative-to-view.js'\nimport path from 'path'\n\nfunction ensureFirstStoryIsOn(flow, key, stories) {\n if (!stories.has(key)) return\n\n let story = flow.get(key)\n if (story && story.stories.size > 0) {\n let index = 0\n for (let id of story.stories) {\n if (index === 0 || !story.isSeparate) {\n stories.add(id)\n }\n index++\n ensureFirstStoryIsOn(flow, id, stories)\n }\n }\n}\n\nlet makeFlow = ({ tools, viewsById, viewsToFiles }) => {\n let flowMap = new Map()\n let flowMapStr = []\n\n for (let view of viewsToFiles.values()) {\n if (!view || view.custom || !view.parsed.view.isStory) continue\n\n let states = []\n for (let id of view.parsed.view.views) {\n let viewInView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n\n if (viewInView && !viewInView.custom && viewInView.parsed.view.isStory) {\n states.push(viewInView.parsed.view.viewPath) // `${pathToViewId}/${id}`)\n }\n }\n\n let isSeparate = view.parsed.view.flow === 'separate'\n let parent = view.parsed.view.viewPathParent\n\n flowMapStr.push(\n `[\"${view.parsed.view.viewPath}\", {\n parent: \"${parent === '/' ? '' : parent}\",\n isSeparate: ${isSeparate},\n stories: new Set(${states.length > 0 ? JSON.stringify(states) : ''})\n }]`\n )\n flowMap.set(view.parsed.view.viewPath, {\n parent,\n isSeparate,\n stories: new Set(states),\n })\n }\n\n let topStory = '/App'\n let initialState = new Set([topStory])\n ensureFirstStoryIsOn(flowMap, topStory, initialState)\n\n return `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-flow.js\n\nimport React, { useCallback, useContext, useEffect, useReducer } from 'react'\n${tools ? \"import ViewsTools from './ViewsTools.js'\" : ''}\n\nexport let flow = new Map([${flowMapStr.join(', ')}])\n\nlet TOP_STORY = \"${topStory}\"\n\nfunction ensureFirstStoryIsOn(key, stories) {\n if (!stories.has(key)) return\n\n let story = flow.get(key)\n if (story.stories.size > 0) {\n let index = 0\n let canAdd = intersection(stories, story.stories).size === 0\n for (let id of story.stories) {\n if ((canAdd && index === 0) || !story.isSeparate) {\n stories.add(id)\n }\n index++\n ensureFirstStoryIsOn(id, stories)\n }\n }\n}\n\nfunction ensureParents(key, stories) {\n let story = flow.get(key)\n if (!story) {\n console.error(\\`View \"\\${key}\" is missing its parent\\`)\n return\n }\n if (!story.parent) {\n return\n }\n\n stories.add(story.parent)\n ensureParents(story.parent, stories)\n}\n\nfunction getAllChildrenOf(key, children) {\n if (!flow.has(key)) return\n\n let story = flow.get(key)\n for (let id of story.stories) {\n children.add(id)\n getAllChildrenOf(id, children)\n }\n}\n\n\nlet intersection = (a, b) => new Set([...a].filter(ai => b.has(ai)))\nlet difference = (a, b) => new Set([...a].filter(ai => !b.has(ai)))\n\nfunction getNextFlow(key, state) {\n if (state.has(key)) return state\n\n let next = new Set([key])\n\n ensureFirstStoryIsOn(key, next)\n ensureParents(key, next)\n\n let diffIn = difference(next, state)\n let diffOut = new Set()\n\n difference(state, next).forEach(id => {\n let story = flow.get(id)\n if (!story) {\n console.debug({ type: 'views/flow/missing-story', id })\n diffOut.add(id)\n return\n }\n\n if (state.has(story.parent)) {\n let parent = flow.get(story.parent)\n if (intersection(parent.stories, diffIn).size > 0) {\n diffOut.add(id)\n let children = new Set()\n getAllChildrenOf(id, children)\n children.forEach(cid => diffOut.add(cid))\n }\n }\n })\n\n let nextState = new Set([...difference(state, diffOut), ...diffIn])\n ensureFirstStoryIsOn(TOP_STORY, nextState)\n return new Set([...nextState].sort())\n}\n\nlet MAX_ACTIONS = 10000\nlet SYNC = 'flow/SYNC'\nlet SET = 'flow/SET'\n\nlet Context = React.createContext([{ actions: [], flow: new Set() }, () => {}])\nexport let useFlowState = () => useContext(Context)[0]\nexport let useFlow = () => useFlowState().flow\nexport let useSetFlowTo = () => {\n let [, dispatch] = useContext(Context)\n return useCallback(id => dispatch({ type: SET, id }), []) // eslint-disable-line\n // ignore dispatch\n}\n\nfunction getNextActions(state, id) {\n return [id, ...state.actions].slice(0, MAX_ACTIONS)\n}\n\nfunction reducer(state, action) {\n switch (action.type) {\n ${\n tools\n ? `case SYNC: {\n return {\n flow: new Set(action.flow),\n actions: getNextActions(state, action.id)\n }\n }`\n : ''\n }\n\n case SET: {\n if (process.env.NODE_ENV === 'development') {\n console.debug({ type: 'views/flow/set', id: action.id })\n\n if (!flow.has(action.id)) {\n console.debug({ type: 'views/flow/invalid-story', id: action.id, availableStories: flow })\n throw new Error(\n \\`Story \"$\\{action.id}\" doesn't exist. See the valid stories logged above this error.\\`\n )\n }\n }\n\n if (state.actions[0] === action.id) {\n if (process.env.NODE_ENV === 'development') {\n console.debug({ type: 'views/flow/already-set-as-last-action-ignoring', id: action.id, actions: state.actions })\n }\n return state\n }\n\n return {\n flow: getNextFlow(action.id, state.flow),\n actions: getNextActions(state, action.id)\n }\n }\n\n default: {\n throw new Error(\\`Unknown action \"\\${action.type}\" in Flow\\`)\n }\n }\n}\n\nexport function ViewsFlow(props) {\n let context = useReducer(reducer, { actions: [], flow: props.initialState })\n let [state] = context\n\n useEffect(() => {\n if (typeof props.onChange === 'function') {\n props.onChange(state)\n }\n }, [state]) // eslint-disable-line\n // ignore props.onChange\n\n return (\n <Context.Provider value={context}>\n ${\n tools\n ? '<ViewsTools flow={context}>{props.children}</ViewsTools>'\n : '{props.children}'\n }\n </Context.Provider>\n )\n}\n\nViewsFlow.defaultProps = {\n initialState: new Set(${JSON.stringify([...initialState], null, ' ')})\n}\n\nexport function normalizePath(viewPath, relativePath) {\n let url = new URL(\\`file://\\${viewPath}/../\\${relativePath}\\`)\n return url.pathname\n}`\n}\n\nexport default function ensureFlow({ src, tools, viewsById, viewsToFiles }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'ViewsFlow.js'),\n content: makeFlow({ tools, viewsById, viewsToFiles }),\n })\n}\n","import ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet USE_IS_BEFORE = `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-is-before.js\nimport { useEffect, useState } from 'react'\n\nexport default function useIsBefore() {\n let [isBefore, setIsBefore] = useState(true)\n\n useEffect(function() {\n let cancel = false\n requestAnimationFrame(function() {\n if (cancel) return\n setIsBefore(false)\n })\n return () => cancel = true\n }, [])\n\n return isBefore\n}`\n\nexport default function ensureIsBefore({ src }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'useIsBefore.js'),\n content: USE_IS_BEFORE,\n })\n}\n","import ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet USE_IS_HOVERED = `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-is-hovered.js\nimport { useEffect, useMemo, useState } from 'react'\n\n// TODO replace with something more performant like:\n// https://github.com/therealparmesh/use-hovering/blob/master/src/index.js\n// or useTooltip from Reach UI\n// https://github.com/reach/reach-ui/blob/master/packages/tooltip/src/index.tsx\nexport default function useIsHovered({ isDisabled, isSelected, onMouseEnter, onMouseLeave }) {\n let [isHovered, setIsHovered] = useState(false)\n\n let isHoveredBind = useMemo(() => {\n return {\n onMouseEnter: event => {\n setIsHovered(true)\n\n if (typeof onMouseEnter === 'function') {\n onMouseEnter(event)\n }\n },\n onMouseLeave: event => {\n setIsHovered(false)\n\n if (typeof onMouseLeave === 'function') {\n onMouseLeave(event)\n }\n },\n }\n }, [onMouseEnter, onMouseLeave])\n\n useEffect(() => {\n if (!isDisabled) return\n\n setIsHovered(false)\n }, [isDisabled])\n\n return [isHovered, isHovered && isSelected, isHoveredBind]\n}`\n\nexport default function ensureIsHovered({ src }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'useIsHovered.js'),\n content: USE_IS_HOVERED,\n })\n}\n","import { promises as fs } from 'fs'\nimport ensureFile from './ensure-file.js'\nimport path from 'path'\n\nlet makeUseIsMedia = media => `// This file is automatically generated by Views and will be overwritten\n// when the morpher runs. If you want to contribute to how it's generated, eg,\n// improving the algorithms inside, etc, see this:\n// https://github.com/viewstools/morph/blob/master/ensure-is-media.js\n\nimport { useMedia } from 'use-media';\n\nlet useIsMedia = () => ({\n ${media\n .map(({ name, minWidth, maxWidth }) => {\n let ret = [`\"${name}\": useMedia({ minWidth: ${minWidth}`]\n if (maxWidth) {\n ret.push(`, maxWidth: ${maxWidth}`)\n }\n ret.push('})')\n return ret.join('')\n })\n .join(',')}\n})\nexport default useIsMedia`\n\nasync function getMediaConfig(src) {\n let media = {\n mobile: {\n width: 414,\n },\n tablet: {\n width: 1024,\n },\n laptop: {\n width: 1280,\n },\n }\n try {\n media = JSON.parse(\n await fs.readFile(\n path.resolve(path.join(src, '..', 'app.viewstools')),\n 'utf8'\n )\n ).media\n delete media.base\n } catch (error) {}\n\n return Object.entries(media)\n .sort((a, b) => a[1].width - b[1].width)\n .map(([name, item], index, list) => ({\n name,\n minWidth: index === 0 ? 0 : list[index - 1][1].width + 1,\n maxWidth:\n index === 0\n ? item.width\n : index === list.length - 1\n ? null\n : item.width,\n }))\n}\n\nexport default async function ensureIsMedia({ src }) {\n return ensureFile({\n file: path.join(src, 'Logic', 'useIsMedia.js'),\n content: makeUseIsMedia(await getMediaConfig(src)),\n })\n}\n","import ensureFile from './ensure-file.js'\nimport fsExtra from 'fs-extra'\nimport path from 'path'\n\nlet TOOLS_FILE = `import { useEffect } from 'react'\n\nexport default function ViewsTools(props) {\n useEffect(() => {\n console.log(\\`\n\n\n\n 😱😱😱😱😱😱😱😱😱😱😱\n\n\n\n 🚨 You're missing out!!!\n\n 🚀 Views Tools can help you find product market fit before you run out of money.\n\n ✨ Find out how 👉 https://views.tools\n\n\n\n\n \\`)\n }, [])\n\n return props.children\n}`\n\nexport default async function ensureTools({ src }) {\n let file = path.join(src, 'Logic', 'ViewsTools.js')\n\n if ((await fsExtra.exists(file)) && process.env.REACT_APP_VIEWS_TOOLS)\n return null\n\n return ensureFile({ file, content: TOOLS_FILE })\n}\n","import relativise from './relativise.js'\nimport path from 'path'\n\nlet FILE_USE_IS_BEFORE = path.join('Logic', 'useIsBefore.js')\nlet FILE_USE_IS_HOVERED = path.join('Logic', 'useIsHovered.js')\nlet FILE_USE_IS_MEDIA = path.join('Logic', 'useIsMedia.js')\nlet FILE_USE_DATA = path.join('Data', 'ViewsData.js')\nlet FILE_USE_FLOW = path.join('Logic', 'ViewsFlow.js')\nlet FILE_LOCAL_CONTAINER = 'LocalContainer.js'\nlet FILE_TRACK_CONTEXT = 'TrackContext.js'\n\nexport default function makeGetSystemImport(src) {\n return function getSystemImport(id, file) {\n switch (id) {\n case 'Column':\n // Column is imported from react-virtualized\n break\n\n case 'ViewsUseIsMedia':\n return `import useIsMedia from '${relativise(\n file,\n path.join(src, FILE_USE_IS_MEDIA)\n )}'`\n\n case 'ViewsUseIsBefore':\n return `import useIsBefore from '${relativise(\n file,\n path.join(src, FILE_USE_IS_BEFORE)\n )}'`\n\n case 'ViewsUseIsHovered':\n return `import useIsHovered from '${relativise(\n file,\n path.join(src, FILE_USE_IS_HOVERED)\n )}'`\n\n case 'ViewsUseData':\n return `import * as fromData from '${relativise(\n file,\n path.join(src, FILE_USE_DATA)\n )}'`\n\n case 'ViewsUseFlow':\n return `import * as fromFlow from '${relativise(\n file,\n path.join(src, FILE_USE_FLOW)\n )}'`\n\n case 'LocalContainer':\n return `import LocalContainer from '${relativise(\n file,\n path.join(src, FILE_LOCAL_CONTAINER)\n )}'`\n\n case 'TrackContext':\n return `import { TrackContext } from '${relativise(\n file,\n path.join(src, FILE_TRACK_CONTEXT)\n )}'`\n\n default:\n return false\n }\n }\n}\n","export let enter = (node, parent, state) => {\n if (node.isFragment) return\n\n let value\n if (parent) {\n value = `\"${state.name}.${node.testId}\"`\n } else {\n value = `{\\`\\${props['${state.testIdKey}'] || '${node.testId}'}\\`}`\n }\n\n state.render.push(` ${state.testIdKey}=${value}`)\n}\n","export let enter = (node, parent, state) => {\n if (node.isFragment || !process.env.REACT_APP_VIEWS_TOOLS) return\n\n if (state.viewPath) {\n state.render.push(` ${state.viewPathKey}=\"${state.viewPath}\"`)\n } else {\n state.render.push(` ${state.viewPathKey}={props[\"${state.viewPathKey}\"]}`)\n }\n}\n","let IS_INT = /^([0-9]+)(.*)$/\nlet IS_FLOAT = /^([0-9]+\\.[0-9]+)(.*)$/\n\nlet MULTIPLE_BY_FONT_SIZE = 'x font size'\nlet PIXEL = 'px'\nlet PERCENTAGE = '%'\nlet EM = 'em'\nlet REM = 'rem'\nlet VW = 'vw'\nlet VH = 'vh'\n\nlet DEGREES = 'deg'\nlet GRADIANS = 'grad'\nlet RADIANS = 'rad'\nlet TURN = 'turn'\n\nlet getUnit = node => {\n let units = getUnits(node.name)\n\n if (typeof node.value === 'number') return units[0] || ''\n\n let match = node.value.match(IS_INT.test(node.value) ? IS_INT : IS_FLOAT)\n return (match && units.find(u => u === match[2])) || units[0] || ''\n}\nexport default getUnit\n\nlet LENGTH = [PIXEL, PERCENTAGE, EM, REM, VW, VH]\nlet PERCENTAGE_FIRST_LENGTH = [PERCENTAGE, PIXEL, EM, REM, VW, VH]\nlet MULTIPLE_BY_FONT_SIZE_LENGTH = [\n MULTIPLE_BY_FONT_SIZE,\n PIXEL,\n PERCENTAGE,\n EM,\n REM,\n VW,\n VH,\n]\nlet ANGLE = [DEGREES, GRADIANS, RADIANS, TURN]\nlet UNITLESS = []\n\nlet UNITS = {\n blurRadius: LENGTH,\n borderBottomLeftRadius: LENGTH,\n borderBottomRightRadius: LENGTH,\n borderBottomWidth: LENGTH,\n borderLeftWidth: LENGTH,\n borderRadius: LENGTH,\n borderRightWidth: LENGTH,\n borderTopLeftRadius: LENGTH,\n borderTopRightRadius: LENGTH,\n borderTopWidth: LENGTH,\n borderWidth: LENGTH,\n bottom: LENGTH,\n flexBasis: PERCENTAGE_FIRST_LENGTH,\n flexGrow: UNITLESS,\n flexShrink: UNITLESS,\n fontSize: LENGTH,\n height: LENGTH,\n left: LENGTH,\n letterSpacing: UNITLESS,\n lineHeight: MULTIPLE_BY_FONT_SIZE_LENGTH,\n margin: LENGTH,\n marginBottom: LENGTH,\n marginLeft: LENGTH,\n marginRight: LENGTH,\n marginTop: LENGTH,\n maxHeight: LENGTH,\n maxWidth: LENGTH,\n minHeight: LENGTH,\n minWidth: LENGTH,\n offsetX: LENGTH,\n offsetY: LENGTH,\n opacity: UNITLESS,\n outline: LENGTH,\n padding: LENGTH,\n paddingBottom: LENGTH,\n paddingLeft: LENGTH,\n paddingRight: LENGTH,\n paddingTop: LENGTH,\n perspective: LENGTH,\n right: LENGTH,\n rotate: ANGLE,\n rotateX: ANGLE,\n rotateY: ANGLE,\n scale: UNITLESS,\n scaleX: UNITLESS,\n scaleY: UNITLESS,\n shadowOffsetY: LENGTH,\n shadowOffsetX: LENGTH,\n shadowBlur: LENGTH,\n shadowSpread: LENGTH,\n skew: ANGLE,\n spreadRadius: LENGTH,\n top: LENGTH,\n translateX: LENGTH,\n translateY: LENGTH,\n width: LENGTH,\n wordSpacing: LENGTH,\n zIndex: UNITLESS,\n}\nlet UNITS_KEYS = Object.keys(UNITS)\n\nlet getUnits = key => {\n let found = UNITS_KEYS.find(ukey => key.startsWith(ukey))\n return UNITS[found] || UNITLESS\n}\n","export default s => `{${s}}`\n","import { isSlot } from '../utils.js'\nimport wrap from './wrap.js'\n\nexport default (value, node) =>\n typeof value === 'string' && !isSlot(value, node)\n ? JSON.stringify(value)\n : wrap(value)\n","import flatten from 'flatten'\nimport getUnit from './get-unit.js'\nimport safe from './react/safe.js'\nimport toCamelCase from 'to-camel-case'\nimport toSlugCase from 'to-slug-case'\nimport path from 'path'\nimport wrap from './react/wrap.js'\n\nlet safeScope = value =>\n typeof value === 'string' && !isSlot(value) ? JSON.stringify(value) : value\n\nexport let checkParentStem = (node, styleKey) => {\n if (\n styleKey !== 'isHovered' ||\n styleKey !== 'isDisabled' ||\n styleKey !== 'isSelected' ||\n styleKey !== 'isSelectedHovered' ||\n !node.parent\n )\n return false\n\n let matchingParentStem = node.parent.scopes.some(\n scope => scope.value === styleKey\n )\n\n return matchingParentStem && (node.parent.is || node.parent.name)\n}\n\nlet INTERPOLATION = /\\${(.+)}/\nexport let isInterpolation = str => INTERPOLATION.test(str)\nexport let deinterpolate = str => {\n let match = str.match(INTERPOLATION)\n return match ? match[1] : str\n}\n\nexport let getObjectAsString = obj =>\n Array.isArray(obj)\n ? `[${obj.map(getObjectAsString)}]`\n : wrap(\n Object.keys(obj)\n .map(k => {\n let v =\n typeof obj[k] === 'object' && hasKeys(obj[k])\n ? getObjectAsString(obj[k])\n : obj[k]\n return `${JSON.stringify(k)}: ${v}`\n })\n .join(',')\n )\n\nexport let getPropertiesAsObject = list => {\n let obj = {}\n\n list.forEach(prop => {\n obj[prop.name] = safeScope(prop.value)\n })\n\n return getObjectAsString(obj)\n}\n\nexport let getProp = (node, key, scope = 'base') => {\n let finder =\n typeof key === 'string' ? p => p.name === key : p => key.test(p.name)\n\n if (scope !== 'base') {\n let nodeScope = node.scopes.find(item => item.value === scope)\n let prop = nodeScope && nodeScope.properties.find(finder)\n if (prop) {\n return prop\n }\n }\n\n return node.properties && node.properties.find(finder)\n}\n\nexport let getPropValueOrDefault = (node, key, defaultValue) => {\n return hasProp(node, key) ? getProp(node, key).value : defaultValue\n}\n\nexport let getScope = node => node.value.split('when ')[1]\n\nlet getScopedProps = (propNode, blockNode) => {\n let scopes = blockNode.scopes\n .filter(scope => !scope.isSystem && !scope.isLocal)\n .map(scope => {\n let prop = scope.properties.find(prop => prop.name === propNode.name)\n return prop && { prop, when: scope.value, scope }\n })\n .filter(Boolean)\n .reverse()\n\n if (isEmpty(scopes)) return false\n\n return scopes\n}\n\nlet getScopedConditionPropValue = node => {\n let value = null\n\n if (node.tags.slot) {\n value = node.value\n } else if (typeof node.value === 'string') {\n value = safe(node.value)\n } else if (typeof node.value === 'boolean' && node.name === 'shadowInset') {\n value = node.value ? \"'inset'\" : \"''\"\n } else {\n let unit = getUnit(node)\n value = unit ? `\"${node.value}${unit}\"` : node.value\n }\n\n return value\n}\n\nlet CHILD_VALUES = /!?props\\.(isSelected|isHovered|isFocused|isSelectedHovered)/\nlet DATA_VALUES = /!?props\\.(isInvalid|isInvalidInitial|isValid|isValidInitial|value)/\nlet IS_HOVERED_OR_SELECTED_HOVER = /!?props\\.(isHovered|isSelectedHovered)/\nlet IS_FLOW = /!?props.flow$/\n\nexport let getScopedCondition = (propNode, blockNode, state) => {\n let scopedProps = getScopedProps(propNode, blockNode)\n\n if (!scopedProps) return false\n\n let conditional = getScopedConditionPropValue(propNode)\n scopedProps.forEach(scope => {\n let when = scope.when\n if (state.data && DATA_VALUES.test(when)) {\n when = when.replace('props', 'data')\n } else if (hasCustomBlockParent(blockNode) && CHILD_VALUES.test(when)) {\n when = when.replace('props.', 'childProps.')\n } else if (IS_FLOW.test(when)) {\n let flowPath = getFlowPath(scope.scope, blockNode, state)\n when = when.replace('props.flow', `flow.has('${flowPath}')`)\n } else if (\n (blockNode.action || !!getActionableParent(blockNode)) &&\n IS_HOVERED_OR_SELECTED_HOVER.test(when)\n ) {\n when = when.replace('props.', '')\n }\n\n conditional = `${when} ? ${getScopedConditionPropValue(\n scope.prop\n )} : ${conditional}`\n })\n\n let lastScope = scopedProps[scopedProps.length - 1]\n\n if (\n !lastScope.prop.animation ||\n lastScope.prop.animation.curve !== 'spring'\n ) {\n lastScope.prop.conditional = conditional\n }\n\n return conditional\n}\n\nexport let getScopedImageCondition = (scopes, scopedNames, defaultName) => {\n let conditional = defaultName\n\n scopes.forEach((scope, index) => {\n conditional = `${scope.when} ? ${scopedNames[index]} : ` + conditional\n })\n\n return conditional\n}\n\nlet styleStems = [\n 'isHovered',\n 'isFocused',\n 'isPlaceholder',\n 'isDisabled',\n 'isSelected',\n 'isSelectedHovered',\n]\nexport let getStyleType = node =>\n styleStems.find(tag => isTag(node, tag)) || 'base'\nexport let hasKeys = obj => Object.keys(obj).length > 0\nexport let hasKeysInChildren = obj =>\n Object.keys(obj).some(k => hasKeys(obj[k]))\n\nexport let hasProp = (node, key, match) => {\n let prop = getProp(node, key)\n if (!prop) return false\n return typeof match === 'function' ? match(prop.value) : true\n}\n\nexport let hasDefaultProp = (node, parent) =>\n parent.properties.some(prop => prop.nameRaw === node.nameRaw)\n\nexport let isSlot = (maybeNode1, maybeNode2) => {\n let node = maybeNode2 || maybeNode1\n\n return typeof node === 'string'\n ? /(data|isHovered|childProps|props|isBefore|isMedia\\.)/.test(node)\n : isTag(node, 'slot')\n}\nexport let isStyle = node => isTag(node, 'style')\nexport let isRowStyle = node => isTag(node, 'rowStyle')\nexport let isTag = (node, tag) => node && node.tags[tag]\n\nexport let getActionableParent = node => {\n if (!node.parent) return false\n if (node.parent.action) return node.parent\n return getActionableParent(node.parent)\n}\n\nexport let hasCustomBlockParent = node => {\n if (!node.parent) return !node.isBasic\n if (!node.parent.isBasic) return true\n return hasCustomBlockParent(node.parent)\n}\n\nexport let getAllowedStyleKeys = node => {\n if (node.isCapture) {\n return ['base', 'isFocused', 'isHovered', 'isDisabled', 'isPlaceholder']\n } else if (node.action || isTable(node) || getActionableParent(node)) {\n return [\n 'base',\n 'isFocused',\n 'isHovered',\n 'isDisabled',\n 'isSelected',\n 'isSelectedHovered',\n ]\n }\n return ['base', 'isFocused']\n}\n\nexport let isList = node =>\n node && node.type === 'Block' && node.name === 'List'\n\nexport let isCell = node => node.properties.some(prop => prop.name === 'isCell')\n\nexport let isHeader = node =>\n node.properties.some(prop => prop.name === 'isHeader')\n\nexport let isColumn = node =>\n node && node.type === 'Block' && node.name === 'Column'\n\nexport let isTable = node =>\n node && node.type === 'Block' && node.name === 'Table'\n\nexport let isEmpty = list => list.length === 0\n\nexport let isValidImgSrc = (node, parent) =>\n node.name === 'source' && parent.name === 'Image' && parent.isBasic\n\nexport let pushImageToState = (state, scopedNames, paths) =>\n scopedNames.forEach(name => {\n let path = paths[scopedNames.findIndex(item => item === name)]\n if (!state.images.includes(path)) {\n state.images.push({\n name,\n file: path,\n })\n }\n })\n\nexport let getScopes = (node, parent) => {\n let scopedProps = getScopedProps(node, parent)\n if (!scopedProps) return false\n let paths = scopedProps.map(scope => scope.prop.value)\n let scopedNames = paths.map(path => toCamelCase(path))\n\n return { scopedProps, paths, scopedNames }\n}\n\nexport let isSvg = node => /^Svg/.test(node.name) && node.isBasic\n\nexport let hasCustomScopes = (propNode, blockNode) =>\n blockNode.scopes.some(\n scope =>\n !scope.isLocal &&\n !scope.isSystem &&\n scope.properties.some(prop => prop.name === propNode.name)\n )\n\nexport let hasLocals = (propNode, blockNode) =>\n blockNode.scopes.some(scope => scope.isLocal)\n\nexport let getLocals = (propNode, blockNode, state) => {\n let locals = {}\n\n blockNode.scopes\n .filter(scope => scope.isLocal)\n .forEach(scope => {\n let prop = scope.properties.find(prop => prop.name === propNode.name)\n if (prop) {\n locals[scope.value] = prop.value\n }\n })\n\n return locals\n}\n\nexport let getLocalsString = (propNode, blockNode, state) => {\n let baseLocalName = `${blockNode.is || blockNode.name}Local`\n let localName = baseLocalName\n let index = 1\n while (localName in state.locals) {\n localName = `${baseLocalName}${index++}`\n }\n\n state.locals[localName] = getLocals(propNode, blockNode, state)\n return wrap(`${localName}[local.state.lang] || ${safe(propNode.value)}`)\n}\n\nexport let makeOnClickTracker = (node, parent, state) => {\n if (!state.track) return node.value\n\n let block = parent.testId\n ? `\"${state.name}.${parent.testId}\"`\n : `props[\"${state.testIdKey}\"] || \"${state.name}\"`\n\n state.isTracking = true\n\n return `event => {\n typeof ${node.value} === 'function' && ${node.value}(event);\n\n track({ block: ${block}, action: \"click\", event, props });\n }`\n}\n\n// let isRotate = name =>\n// name === 'rotate' || name === 'rotateX' || name === 'rotateY'\n\nlet getStandardAnimatedString = (node, prop, isNative) => {\n let value = `animated${node.id}${\n prop.animationIndexOnBlock > 0 ? prop.animationIndexOnBlock : ''\n }.${prop.name}`\n\n // let unit = getUnit(prop)\n // if (unit) {\n // value = `\\`\\${${value}}${unit}\\``\n // }\n\n return `${isNative ? prop.name : `\"--${prop.name}\"`}: ${value}`\n}\n\nlet getTransformString = (node, transform, isNative) => {\n let transformStr = `transform: [`\n\n transform.props.forEach((prop, i) => {\n transformStr += `{${getAnimatedString(node, prop, isNative)}},`\n })\n\n return `${transformStr}]`\n}\n\nexport let getScopeIndex = (node, currentScope) =>\n node.scopes.findIndex(scope => {\n return scope.slotName === currentScope\n })\n\nexport let isNewScope = (state, currentAnimation, index) =>\n index ===\n state.animations.findIndex(\n animation => animation.scope === currentAnimation.scope\n )\n\nexport let getAnimatedStyles = (node, isNative) => {\n let props = isNative ? getAllAnimatedProps(node, true) : getSpringProps(node)\n\n return props.map(prop => getAnimatedString(node, prop, isNative)).join(', ')\n}\n\nlet getPropValue = (prop, interpolateValue = true) => {\n let unit = getUnit(prop)\n if (unit) {\n let value = interpolateValue\n ? `\\`\\${${prop.value}}${unit}\\``\n : `\"${prop.value}${unit}\"`\n return `typeof ${prop.value} === 'number' ? ${value} : ${prop.value}`\n } else {\n return prop.value\n }\n}\n\nexport let getDynamicStyles = node => {\n return flatten([\n node.properties\n .filter(\n prop => prop.tags.style && prop.tags.slot && !getScopedProps(prop, node)\n )\n .map(prop => `'--${prop.name}': ${getPropValue(prop)}`),\n node.scopes.map(scope =>\n scope.properties\n .filter(prop => prop.tags.style)\n .map(prop => {\n let value = null\n\n if (prop.conditional) {\n value = prop.conditional\n // } else if (prop.tags.slot && prop.scope === 'isHovered') {\n // value = getPropValue(prop)\n }\n\n return value && `'--${prop.name}': ${value}`\n })\n ),\n ]).filter(Boolean)\n}\n\nlet getAnimatedString = (node, prop, isNative) =>\n prop.name === 'transform'\n ? getTransformString(node, prop, isNative)\n : getStandardAnimatedString(node, prop, isNative)\n\nexport let getNonAnimatedDynamicStyles = node => {\n let animatedProps = getAllAnimatedProps(node, true).map(prop => prop.name)\n let animatedTransforms = animatedProps.includes('transform')\n ? getAllAnimatedProps(node, true)\n .find(prop => prop.name === 'transform')\n .props.map(prop => prop.name)\n : []\n\n return Object.keys(node.style.dynamic.base)\n .filter(\n key => !animatedProps.includes(key) && !animatedTransforms.includes(key)\n )\n .reduce((obj, key) => {\n obj[key] = node.style.dynamic.base[key]\n return obj\n }, {})\n}\n\nexport let getAllAnimatedProps = (node, isNative) => {\n let props = flatten(\n node.scopes.map(scope => scope.properties.filter(prop => prop.animation))\n )\n return checkForTransforms(props) && isNative\n ? combineTransforms(props)\n : props\n}\n\nlet combineTransforms = props => {\n // TODO: handle transforms on different scopes\n let transform = { name: 'transform', props: [] }\n props.forEach((prop, i) => {\n if (TRANSFORM_WHITELIST[prop.name]) {\n prop.isTransform = true\n transform.props.push(prop)\n }\n })\n props.push(transform)\n return props.filter(prop => !prop.isTransform)\n}\n\nlet checkForTransforms = props =>\n props.some(prop => TRANSFORM_WHITELIST[prop.name])\n\nexport let getTimingProps = node =>\n flatten(\n node.scopes.map(scope =>\n scope.properties.filter(\n prop => prop.animation && prop.animation.curve !== 'spring'\n )\n )\n )\n\nlet getSpringProps = node =>\n flatten(\n node.scopes.map(scope =>\n scope.properties.filter(\n prop => prop.animation && prop.animation.curve === 'spring'\n )\n )\n )\n\n// https://github.com/facebook/react-native/blob/26684cf3adf4094eb6c405d345a75bf8c7c0bf88/Libraries/Animated/src/NativeAnimatedHelper.js\n/**\n * Styles allowed by the native animated implementation.\n *\n * In general native animated implementation should support any numeric property that doesn't need\n * to be updated through the shadow view hierarchy (all non-layout properties).\n */\nlet STYLES_WHITELIST = {\n opacity: true,\n transform: true,\n /* ios styles */\n shadowOpacity: true,\n shadowRadius: true,\n /* legacy android transform properties */\n scaleX: true,\n scaleY: true,\n translateX: true,\n translateY: true,\n}\n\nlet TRANSFORM_WHITELIST = {\n translateX: true,\n translateY: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n rotate: true,\n rotateX: true,\n rotateY: true,\n perspective: true,\n}\n\nexport let canUseNativeDriver = name =>\n STYLES_WHITELIST[name] || TRANSFORM_WHITELIST[name] || false\n\nexport let createId = (node, state, addClassName = true) => {\n let id = node.is || node.name\n // count repeatead ones\n if (state.usedBlockNames[id]) {\n id = `${id}${state.usedBlockNames[id]++}`\n } else {\n state.usedBlockNames[id] = 1\n }\n\n node.styleName = id\n if (addClassName && node.className) {\n node.className.push(`\\${styles.${id}}`)\n }\n\n return id\n}\n\nlet CONTENT_CONTAINER_STYLE_PROPS = [\n 'paddingTop',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'flexDirection',\n 'justifyContent',\n 'alignItems',\n]\n\nlet isContentContainerStyleProp = prop =>\n CONTENT_CONTAINER_STYLE_PROPS.includes(prop)\n\nexport let hasContentContainerStyleProp = styleProps =>\n Object.keys(styleProps).some(isContentContainerStyleProp)\n\nexport let getContentContainerStyleProps = styleProps =>\n Object.keys(styleProps)\n .filter(isContentContainerStyleProp)\n .reduce((obj, key) => {\n obj[key] = styleProps[key]\n return obj\n }, {})\n\nexport let removeContentContainerStyleProps = styleProps =>\n Object.keys(styleProps)\n .filter(key => !isContentContainerStyleProp(key))\n .reduce((obj, key) => {\n obj[key] = styleProps[key]\n return obj\n }, {})\n\nexport let hasRowStyles = node =>\n node.properties.some(\n prop => prop.name.match(/^row/) && prop.name !== 'rowHeight'\n )\n\nlet MAYBE_HYPHENATED_STYLE_PROPS = [\n 'alignContent',\n 'alignItems',\n 'alignSelf',\n 'backgroundBlendMode',\n 'backgroundClip',\n 'backgroudOrigin',\n 'backgroundRepeat',\n 'boxSizing',\n 'clear',\n 'cursor',\n 'flexBasis',\n 'flexDirection',\n 'flexFlow',\n 'flexWrap',\n 'float',\n 'fontFamily',\n 'fontStretch',\n 'justifyContent',\n 'objectFit',\n 'overflowWrap',\n 'textAlign',\n 'textDecorationLine',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n]\n\nexport let maybeMakeHyphenated = ({ name, value }) =>\n MAYBE_HYPHENATED_STYLE_PROPS.includes(name) && /^[a-zA-Z]+$/.test(value)\n ? toSlugCase(value)\n : value\n\nexport let isStory = (node, state) =>\n !node.isBasic && state.isStory(node.name) && state.flow === 'separate'\n\nexport function getFlowPath(node, parent, state) {\n // TODO warn if action is used but it isn't in actions (on parser)\n // TODO warn that there's setFlowTo without an id (on parser)\n let setFlowTo = node.defaultValue\n if (!setFlowTo.startsWith('/')) {\n setFlowTo = path.normalize(path.join(state.viewPath, setFlowTo))\n }\n\n return setFlowTo\n}\n","import { getProp, isSlot } from '../utils.js'\nimport safe from '../react/safe.js'\n\nlet typesMap = {\n email: 'email',\n text: 'text',\n number: 'number',\n phone: 'tel',\n secure: 'password',\n file: 'file',\n}\n\nexport let enter = (node, parent, state) => {\n if (!node.isCapture || node.name === 'CaptureTextArea') return\n\n let type = getProp(node, 'type')\n\n if (isSlot(type)) {\n state.render.push(` type=${safe(type.value)}`)\n\n // fix for iOS Safari to show the numpad on\n // http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios-numeric-keypad/\n let maybeNumber = (name, valueWhenTrue) =>\n `${name}={${type.value} === 'number' || ${\n type.value\n } === 'phone'? \"${valueWhenTrue}\" : undefined}`\n state.render.push(maybeNumber('inputMode', 'numeric'))\n state.render.push(maybeNumber('pattern', '[0-9]*'))\n } else {\n state.render.push(` type=${safe(typesMap[type.value])}`)\n\n // fix for iOS Safari to show the numpad on\n // http://danielfriesen.name/blog/2013/09/19/input-type-number-and-ios-numeric-keypad/\n if (type.value === 'number' || type.value === 'phone') {\n state.render.push(` inputMode=\"numeric\" pattern=\"[0-9]*\"`)\n }\n }\n}\n","import { getLocalsString, hasLocals } from '../utils.js'\n\nexport function enter(node, parent, state) {\n let value = state.getValueForProperty(node, parent, state)\n\n if (value) {\n Object.keys(value).forEach(k => {\n if ((k === 'text' || k === 'placeholder') && hasLocals(node, parent)) {\n return state.render.push(\n ` ${k}=${getLocalsString(node, parent, state)}`\n )\n } else if (k === '...') {\n return state.render.push(` {...${value[k]}}`)\n } else {\n return state.render.push(` ${k}=${value[k]}`)\n }\n })\n }\n}\n","import * as PropertyRest from './property-rest.js'\nimport { getProp, isColumn, isHeader, isCell } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (!isColumn(node)) return\n\n let dataKey = getProp(node, 'key')\n let width = getWidth(node, parent)\n\n state.render.push(` dataKey=\"${dataKey.value}\" width={${width}}`)\n\n // let label = getLabel(node)\n // if (label) {\n // state.render.push(`label=\"${label}\"`)\n // }\n\n let header = node.children.find(isHeader)\n if (header && !header.isBasic) {\n state.render.push(\n ` headerRenderer={headerProps => <${header.name} {...headerProps} `\n )\n header.properties.forEach(propNode => {\n if (propNode.name === 'isHeader') return\n PropertyRest.enter(propNode, header, state)\n })\n state.render.push(` />}`)\n }\n\n let cell = node.children.find(isCell)\n if (cell && !cell.isBasic) {\n state.render.push(\n ` cellRenderer={cellProps => <${cell.name} {...cellProps} `\n )\n cell.properties.forEach(propNode => {\n if (propNode.name === 'isCell') return\n PropertyRest.enter(propNode, cell, state)\n })\n state.render.push(` />}`)\n }\n}\n\nlet getWidth = (node, parent) => {\n let width = getProp(node, 'width')\n if (width && width.value !== 'auto') {\n return width.value\n }\n\n let columns = parent.children.filter(child => child.name === 'Column')\n let columnsWithFixedWidth = columns\n .map(node => {\n let width = getProp(node, 'width')\n return width && typeof width.value === 'number' && width.value\n })\n .filter(Boolean)\n\n let columnsWidthSum = columnsWithFixedWidth.reduce(\n (res, value) => res + value,\n 0\n )\n\n return columnsWidthSum\n ? `(width - ${columnsWidthSum}) / ${columns.length -\n columnsWithFixedWidth.length}`\n : `width / ${columns.length}`\n}\n\n// let getLabel = node => {\n// let header = node.children.find(node => getProp(node, 'isHeader'))\n// if (!header) return\n\n// if (header.name === 'Text') {\n// // removing the text node, because the column handles the label\n// node.children.splice(node.children.indexOf(header), 1)\n// } else {\n// node.externalHeader = header\n// }\n\n// return getProp(header, 'text').value\n// }\n","export function leave(node, parent, state) {\n if (node.explicitChildren) {\n state.render.push('>')\n state.render.push(node.explicitChildren)\n }\n}\n","import { getProp } from '../utils.js'\nimport safe from '../react/safe.js'\n\nexport let enter = (node, parent, state) => {\n if (node.goTo) {\n let goTo = getProp(node, 'goTo')\n state.render.push(\n ` href=${safe(goTo.value)} rel='noopener noreferrer' target='_blank'`\n )\n }\n}\n","export function enter(node, parent, state) {\n if (\n !node.isDefiningChildrenExplicitly &&\n node.isGroup &&\n node.children.length > 0 &&\n !node.nameFinal.includes('FlatList')\n ) {\n state.render.push('>')\n\n if (!node.isBasic) {\n state.render.push('{childProps => (')\n if (node.children.length > 1) {\n state.render.push('<React.Fragment>')\n }\n }\n }\n}\n\nexport function leave(node, parent, state) {\n if (\n !node.isDefiningChildrenExplicitly &&\n node.isGroup &&\n node.children.length > 0 &&\n !node.nameFinal.includes('FlatList') &&\n !node.isBasic\n ) {\n if (node.children.length > 1) {\n state.render.push('</React.Fragment>')\n }\n state.render.push(')}')\n }\n}\n","import { getProp, isList } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (isList(parent)) {\n state.render.push(` index={index}`)\n\n let pass = getProp(parent, 'pass')\n if (pass) {\n state.render.push(` ${pass.value}={${pass.value}}`)\n } else {\n state.render.push(' {...item}')\n }\n\n if (!parent.nameFinal.includes('FlatList')) {\n let key = getProp(node, 'key')\n key = key ? key.value : 'index'\n\n state.render.push(` key={${key}}`)\n }\n }\n}\n","import { getProp, isList } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (isList(node)) {\n let from = getProp(node, 'from')\n if (!from) return\n\n let pass = getProp(node, 'pass')\n let itemName = pass ? pass.value : 'item'\n\n if (node.nameFinal.includes('FlatList')) {\n let key = getProp(node.children[0], 'key')\n key = key ? key.value : 'index'\n\n state.render.push(\n `data={${\n from.value\n }} keyExtractor={(item, index) => ${key}} renderItem={({ ${itemName}, index }) =>`\n )\n } else {\n state.render.push(\n `{Array.isArray(${from.value}) && ${\n from.value\n }.map((${itemName}, index) => `\n )\n }\n }\n}\n\nexport function leave(node, parent, state) {\n if (isList(node)) {\n state.render.push(node.nameFinal.includes('FlatList') ? '}' : ')}')\n }\n}\n","export let enter = node => node.skip\n","export function leave(node, parent, state) {\n if (node.isDefiningChildrenExplicitly) return\n\n if (\n ((!parent && node.isGroup) ||\n node.explicitChildren ||\n (node.isGroup && node.children.length > 0)) &&\n !node.nameFinal.includes('FlatList')\n ) {\n if (!parent && node.isGroup) {\n if (node.children.length === 0) {\n state.render.push('>')\n }\n\n if (!state.hasAlreadyDefinedChildren) {\n state.hasAlreadyDefinedChildren = true\n state.render.push(`{props.children}`)\n }\n }\n\n state.render.push(`</${node.nameFinal}>`)\n } else {\n state.render.push('/>')\n }\n}\n","import { getProp, isCell, isHeader, isTable } from '../utils.js'\n\nexport default (node, parent, state) => {\n if (isTable(node)) {\n let from = getProp(node, 'from')\n // skip the table if we don't have a from prop\n if (!from) return true\n\n state.isTable = true\n\n state.render.push(`<AutoSizer>{({ width, height }) => (`)\n }\n\n return isCell(node) || isHeader(node)\n}\n","import { getProp, hasProp } from '../utils.js'\nimport toCamelCase from 'to-camel-case'\n\nexport default (node, parent, state) => {\n let name = node.name\n\n switch (node.name) {\n case 'Capture':\n name = 'input'\n break\n\n case 'CaptureTextArea':\n name = 'textarea'\n break\n\n case 'Horizontal':\n case 'Vertical':\n name = getGroupBlockName(node, parent, state)\n break\n\n case 'Image':\n name = 'img'\n break\n\n case 'Text':\n return 'span'\n\n case 'List':\n name = 'div'\n break\n\n case 'Svg':\n name = 'svg'\n break\n\n case 'SvgGroup':\n name = 'g'\n break\n\n case 'SvgCircle':\n case 'SvgEllipse':\n case 'SvgLinearGradient':\n case 'SvgRadialGradient':\n case 'SvgLine':\n case 'SvgText':\n case 'SvgPath':\n case 'SvgPolygon':\n case 'SvgPolyline':\n case 'SvgRect':\n case 'SvgSymbol':\n case 'SvgUse':\n case 'SvgDefs':\n case 'SvgStop':\n name = toCamelCase(node.name.replace('Svg', ''))\n break\n\n case 'Block':\n case 'View':\n name = 'React.Fragment'\n break\n\n default:\n break\n }\n\n if (node.hasSpringAnimation) {\n return `animated.${name}`\n }\n\n return name\n}\n\nlet getGroupBlockName = (node, parent, state) => {\n let name = 'div'\n\n if (node.isFragment) {\n name = 'React.Fragment'\n } else if (hasProp(node, 'isModal')) {\n name = 'ViewsModalOverlay'\n } else if (parent && hasProp(parent, 'isModal')) {\n name = 'ViewsModalOverlayContent'\n } else if (hasProp(node, 'goTo')) {\n name = 'a'\n node.goTo = true\n node.action = getProp(node, 'goTo').value\n } else if (hasProp(node, 'onClick')) {\n let propNode = getProp(node, 'onClick')\n let prevParent = parent\n let canBeButton = true\n\n while (prevParent && canBeButton) {\n if (prevParent.type === 'Block') {\n canBeButton = !hasProp(prevParent, 'onClick')\n }\n prevParent = prevParent.parent\n }\n\n if (canBeButton) {\n if (!hasProp(node, 'onClickUseDiv')) {\n name = 'button'\n }\n node.action = propNode.value\n }\n } else if (hasProp(node, 'overflowY', v => v === 'auto' || v === 'scroll')) {\n name = 'div'\n } else if (hasProp(node, 'onSubmit')) {\n name = 'form'\n }\n\n return name\n}\n","import {\n getActionableParent,\n getPropValueOrDefault,\n isStory,\n} from '../utils.js'\nimport { leave } from '../react/block-name.js'\nimport handleTable from '../react/block-name-handle-table.js'\nimport getBlockName from './get-block-name.js'\n\nexport function enter(node, parent, state) {\n // if (parent && !parent.isBasic && !node.isBasic) return true\n if (node.isFragment && node.children.length === 0) return true\n if (node.isChildren) {\n state.hasAlreadyDefinedChildren = true\n\n state.render.push(\n `{typeof props.children === 'function'? props.children({ isSelected: props.isSelected`\n )\n let useIsHovered = !!getActionableParent(node)\n if (useIsHovered) {\n state.useIsHovered = true\n state.render.push(', isHovered, isSelectedHovered')\n }\n state.render.push(`}) : null}`)\n\n return true\n }\n\n if (node.isFragment && node.name === 'View') {\n state.flow = getPropValueOrDefault(node, 'is', false)\n state.flowDefaultState = null\n }\n\n if (isStory(node, state)) {\n state.use('ViewsUseFlow')\n }\n\n let name = getBlockName(node, parent, state)\n if (name === null) return true\n\n state.use(name, node.isLazy)\n\n // TODO remove the use of those because they're just the name and keep one\n node.nameFinal = name\n node.nameTag = name\n\n if (handleTable(node, parent, state)) return true\n\n if (!node.isDefiningChildrenExplicitly) {\n state.render.push(`<${node.nameFinal}`)\n }\n}\n\nexport { leave }\n","import {\n getFlowPath,\n getProp,\n hasCustomBlockParent,\n isList,\n isStory,\n} from '../utils.js'\n\nlet IS_MEDIA = /(!?props\\.isMedia)(.+)/\nlet DATA_VALUES = /!?props\\.(isInvalid|isInvalidInitial|isValid|isValidInitial|value)/\nlet CHILD_VALUES = /!?props\\.(isSelected|isHovered|isFocused)/\nlet IS_HOVERED = /!?props\\.(isHovered|isSelectedHovered)/\nlet IS_FLOW = /!?props\\.flow$/\n\nexport function enter(node, parent, state) {\n if (node.isFragment && node.children.length === 0) return\n\n // onWhen lets you show/hide blocks depending on props\n let onWhen = getProp(node, 'onWhen')\n\n if (onWhen) {\n node.onWhen = true\n\n if (parent && !isList(parent)) state.render.push('{')\n\n let value = onWhen.value\n if (state.data && DATA_VALUES.test(value)) {\n value = value.replace('props', 'data')\n } else if (IS_MEDIA.test(value)) {\n let [, variable, media] = value.match(IS_MEDIA)\n value = `${variable.replace('props.', '')}.${media.toLowerCase()}`\n } else if (hasCustomBlockParent(node) && CHILD_VALUES.test(value)) {\n value = value.replace('props.', 'childProps.')\n } else if (IS_FLOW.test(value)) {\n let flowPath = getFlowPath(onWhen, node, state)\n value = value.replace('props.flow', `flow.has('${flowPath}')`)\n } else if (IS_HOVERED.test(value)) {\n value = value.replace('props.', '')\n }\n\n state.render.push(`${value} ? `)\n } else if (isStory(node, state)) {\n node.onWhen = true\n state.render.push(`{flow.has(\"${state.viewPath}/${node.name}\") ? `)\n }\n}\n\nexport function leave(node, parent, state) {\n if (node.onWhen) {\n state.render.push(` : null`)\n if (parent && !isList(parent)) state.render.push('}')\n }\n}\n","import { deinterpolate, getProp, isSlot, isInterpolation } from '../utils.js'\nimport wrap from '../react/wrap.js'\n\nexport let enter = (node, parent, state) => {\n node.className = node.isBasic\n ? [\n node.name === 'Text'\n ? 'views-text'\n : node.isCapture\n ? 'views-capture'\n : 'views-block',\n ]\n : []\n\n let className = getProp(node, 'className')\n if (className) {\n node.className.push(\n className.tags.slot ? `\\${${className.value}}` : className.value\n )\n }\n}\n\nexport let leave = (node, parent, state) => {\n if (node.isFragment) return\n\n if (node.className.length === 1) {\n let className = node.className[0]\n let shouldWrap = true\n\n if (isInterpolation(className)) {\n className = deinterpolate(className)\n } else if (!isSlot(className)) {\n className = `\"${className}\"`\n shouldWrap = false\n }\n\n state.render.push(` className=${shouldWrap ? wrap(className) : className}`)\n } else if (node.className.length > 1) {\n let className = `\\`${node.className.join(' ')}\\``\n state.render.push(` className=${wrap(className)}`)\n }\n}\n","export let enter = (node, parent, state) => {\n // TODO caption\n if (node.name === 'Image') {\n state.render.push(' alt={\"\"}')\n }\n}\n","import { checkParentStem, isSlot } from '../utils.js'\nimport safe from './safe.js'\n\nexport function enter(node, parent, state) {\n node.style = {\n dynamic: {\n base: {},\n isHovered: {},\n isFocused: {},\n isDisabled: {},\n isPlaceholder: {},\n isSelected: {},\n isSelectedHovered: {},\n },\n static: {\n base: {},\n isHovered: {},\n isFocused: {},\n isDisabled: {},\n isPlaceholder: {},\n isSelected: {},\n isSelectedHovered: {},\n },\n }\n\n if (node.isFragment) return\n\n // TODO use this directly in styles without having to go through this\n node.scopes\n .filter(scope => scope.isSystem)\n .forEach(scope => {\n scope.properties.forEach(propNode => {\n if (propNode.name === 'when') return\n\n let { _isProp, ...styleForProperty } = state.getStyleForProperty(\n propNode,\n node,\n state,\n isSlot(propNode)\n )\n\n if (_isProp) {\n Object.keys(styleForProperty).forEach(k =>\n state.render.push(` ${k}=${safe(styleForProperty[k], node)}`)\n )\n } else {\n let hasMatchingParent =\n parent && node.isDynamic\n ? checkParentStem(node, scope.value)\n : false\n let target =\n isSlot(propNode) || hasMatchingParent\n ? node.style.dynamic\n : node.style.static\n\n Object.assign(target[scope.value], styleForProperty)\n }\n })\n })\n\n // ensure flex-direction in Horizontals\n if (node.isGroup && node.name === 'Horizontal') {\n node.style.static.base.flexDirection = 'row'\n }\n}\n","import { enter } from '../react/properties-style.js'\nimport {\n createId,\n getActionableParent,\n getAllAnimatedProps,\n getAllowedStyleKeys,\n getAnimatedStyles,\n getDynamicStyles,\n getTimingProps,\n hasKeys,\n hasKeysInChildren,\n hasRowStyles,\n isTable,\n} from '../utils.js'\nimport toSlugCase from 'to-slug-case'\nimport uniq from 'array-uniq'\n\nexport { enter }\n\nexport function leave(node, parent, state) {\n if (node.isFragment) return\n\n let allowedStyleKeys = getAllowedStyleKeys(node)\n\n let scopedUnderParent =\n !node.isCapture && !node.action && getActionableParent(node)\n\n if (scopedUnderParent) {\n scopedUnderParent = scopedUnderParent.styleName\n }\n\n if (node.hasSpringAnimation) {\n state.isAnimated = true\n state.hasSpringAnimation = true\n state.animations[node.id] = node.animations\n state.scopes = node.scopes\n }\n\n let id = null\n\n if (isTable(node) && hasRowStyles(node)) {\n id = createId(node, state, false)\n getTableRowCss({ node, state, id, scopedUnderParent })\n }\n\n let css = [\n getStaticCss({ node, scopedUnderParent, state, allowedStyleKeys }),\n node.isAnimated && getAnimatedCss(node),\n getDynamicCss({ node, scopedUnderParent, state, allowedStyleKeys }),\n ].filter(Boolean)\n\n if (css.length > 0) {\n if (id === null) {\n id = createId(node, state)\n } else if (isTable(node)) {\n if (node.className) {\n node.className.push(`\\${styles.${id}}`)\n }\n }\n\n state.styles[id] = `css({label: '${id}', ${css.join(', ')}})`\n state.stylesOrder.push(id)\n }\n}\n\nlet composeStyles = (node, styles, scopedUnderParent) => {\n let allowedStyleKeys = getAllowedStyleKeys(node)\n\n if (hasKeysInChildren(styles.dynamic)) {\n let cssStatic = Object.keys(styles.static)\n .filter(\n key => allowedStyleKeys.includes(key) && hasKeys(styles.static[key])\n )\n .map(key =>\n asCss(\n asStaticCss(styles.static[key], Object.keys(styles.dynamic[key])),\n key,\n scopedUnderParent\n ).join('\\n')\n )\n\n cssStatic = cssStatic.join(',\\n')\n\n let cssDynamic = Object.keys(styles.dynamic)\n .filter(\n key => allowedStyleKeys.includes(key) && hasKeys(styles.dynamic[key])\n )\n .map(key =>\n asCss(asDynamicCss(styles.dynamic[key]), key, scopedUnderParent).join(\n '\\n'\n )\n )\n .join(',\\n')\n\n return { cssDynamic, cssStatic }\n }\n\n let cssStatic = Object.keys(styles.static)\n .filter(\n key => allowedStyleKeys.includes(key) && hasKeys(styles.static[key])\n )\n .map(key =>\n asCss(asStaticCss(styles.static[key]), key, scopedUnderParent).join('\\n')\n )\n .join(',\\n')\n\n return { cssStatic }\n}\n\nlet getStaticCss = ({ node, scopedUnderParent, state, allowedStyleKeys }) => {\n let style = node.style.static\n if (!hasKeysInChildren(style)) return false\n\n state.cssStatic = true\n\n let hasDynamicCss = hasKeysInChildren(node.style.dynamic)\n\n return Object.keys(style)\n .filter(key => allowedStyleKeys.includes(key) && hasKeys(style[key]))\n .map(key =>\n asCss(\n asStaticCss(\n style[key],\n hasDynamicCss ? Object.keys(node.style.dynamic[key]) : []\n ),\n key,\n scopedUnderParent\n ).join('\\n')\n )\n .join(',\\n')\n}\n\nlet getDynamicCss = ({ node, scopedUnderParent, state, allowedStyleKeys }) => {\n let style = node.style.dynamic\n if (!hasKeysInChildren(style)) return false\n\n state.cssDynamic = true\n node.styleName = node.nameFinal\n\n if (node.hasSpringAnimation) {\n state.render.push(\n ` style={{${getAnimatedStyles(\n node,\n state.isReactNative\n )},${getDynamicStyles(node)}}}`\n )\n } else {\n let inlineDynamicStyles = getDynamicStyles(node)\n if (inlineDynamicStyles) {\n state.render.push(` style={{${inlineDynamicStyles}}}`)\n }\n }\n\n return Object.keys(style)\n .filter(key => allowedStyleKeys.includes(key) && hasKeys(style[key]))\n .map(key =>\n asCss(asDynamicCss(style[key]), key, scopedUnderParent).join('\\n')\n )\n .join(',\\n')\n}\n\nlet getAnimatedCss = node => {\n if (node.hasTimingAnimation) {\n let transition = uniq(getTimingProps(node).map(makeTransition)).join(', ')\n\n return `\\ntransition: '${transition}',\\nwillChange: '${getUniqueNames(\n node\n )}'`\n }\n\n return `\\nwillChange: '${getUniqueNames(node)}'`\n}\n\nlet getUniqueNames = node => {\n let names = [\n ...new Set(getAllAnimatedProps(node, false).map(prop => prop.name)),\n ]\n return uniq(names.map(name => ensurePropName(name))).join(', ')\n}\n\nlet ensurePropName = name => {\n switch (name) {\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return 'transform'\n\n case 'shadowColor':\n case 'shadowBlur':\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n case 'shadowSpread':\n case 'shadowInset':\n return 'box-shadow'\n\n default:\n return toSlugCase(name)\n }\n}\n\nlet makeTransition = ({ name, animation }) =>\n [\n ensurePropName(name),\n `${animation.duration}ms`,\n toSlugCase(animation.curve),\n animation.delay && `${animation.delay}ms`,\n ]\n .filter(Boolean)\n .join(' ')\n\nlet asDynamicCss = styles =>\n Object.keys(styles).map(prop => `${prop}: ${styles[prop]}`)\n\nlet safe = str =>\n typeof str === 'string' ? `\"${str.replace(/\"/g, \"'\")}\"` : str\n\nlet asStaticCss = (styles, dynamicStyles = []) =>\n Object.keys(styles)\n .filter(prop => !dynamicStyles.includes(prop))\n .map(prop => `${prop}: ${safe(styles[prop])}`)\n\nlet systemScopeToCssKey = {\n isDisabled: 'disabled',\n // isHovered: 'hover:enabled',\n isFocused: 'focus:enabled',\n}\nlet ensureSystemScopeCssKey = key => systemScopeToCssKey[key] || key\n\nlet asCss = (styles, key, scopedUnderParent) => {\n let css = []\n\n if (key !== 'base') {\n if (scopedUnderParent) {\n let parent = `.\\${styles.${scopedUnderParent}}`\n let theKey = ensureSystemScopeCssKey(key)\n css.push(`[\\`${parent}:${theKey} &\\`]: {`)\n } else if (\n key === 'isDisabled' ||\n // key === 'isHovered' ||\n key === 'isFocused'\n ) {\n css.push(`\"&:${ensureSystemScopeCssKey(key)}\": {`)\n } else if (key === 'isPlaceholder') {\n css.push(`\"&::placeholder\": {`)\n }\n }\n\n css.push(styles.join(',\\n'))\n\n if (key !== 'base') css.push(`}`)\n\n return css\n}\n\nlet getTableRowCss = ({ node, state, id, scopedUnderParent }) => {\n let normalStyles = {}\n let alternateStyles = {}\n\n Object.entries(node.style).forEach(([type, typeScopes]) => {\n if (!(type in alternateStyles)) {\n alternateStyles[type] = {}\n }\n if (!(type in normalStyles)) {\n normalStyles[type] = {}\n }\n\n Object.entries(typeScopes).forEach(([scope, scopeStyles]) => {\n if (!(scope in alternateStyles[type])) {\n alternateStyles[type][scope] = {}\n }\n if (!(scope in normalStyles[type])) {\n normalStyles[type][scope] = {}\n }\n\n Object.entries(scopeStyles).forEach(([key, value]) => {\n switch (key) {\n case 'rowColor':\n normalStyles[type][scope]['color'] = value\n delete node.style[type][scope][key]\n break\n case 'rowBackgroundColor':\n normalStyles[type][scope]['backgroundColor'] = value\n delete node.style[type][scope][key]\n break\n case 'rowColorAlternate':\n alternateStyles[type][scope]['color'] = value\n delete node.style[type][scope][key]\n break\n case 'rowBackgroundColorAlternate':\n alternateStyles[type][scope]['backgroundColor'] = value\n delete node.style[type][scope][key]\n break\n\n default:\n break\n }\n })\n })\n })\n\n let { cssDynamic: normalDynamic, cssStatic: normalStatic } = composeStyles(\n node,\n normalStyles,\n scopedUnderParent\n )\n\n let {\n cssDynamic: alternateDynamic,\n cssStatic: alternateStatic,\n } = composeStyles(node, alternateStyles, scopedUnderParent)\n\n let normalCss = `${normalStatic ? `${normalStatic}` : ''} ${\n normalDynamic ? `, ${normalDynamic}` : ''\n }`\n\n let alternateCss = `${alternateStatic ? `${alternateStatic}` : ''} ${\n alternateDynamic ? `, ${alternateDynamic}` : ''\n }`\n\n node.hasDynamicRowStyles = !!(normalDynamic || alternateDynamic)\n state.render.push(` rowClassName={styles.${id}Row}`)\n\n state.styles[`${id}Row`] = `css({ display: 'flex'\n ${normalCss ? `, ${normalCss}` : ''}\n ${alternateCss ? `, \"&:nth-child(even)\": {${alternateCss}}` : ''}\n })`\n state.stylesOrder.push(`${id}Row`)\n}\n","export let enter = (node, parent, state) => {\n if (node.children && node.children.some(child => child.format)) {\n state.isFormatted = true\n state.formats = []\n node.children\n .filter(child => child.format)\n .forEach(child => state.formats.push(child.format))\n } else if (node.format && !parent) {\n state.isFormatted = true\n state.formats = []\n state.formats.push(node.format)\n }\n}\n","export function enter(node, parent, state) {\n if (!node.action || 'userSelect' in node.style.static.base) return\n\n node.style.static.base.userSelect = 'none'\n}\n","import wrap from '../react/wrap.js'\n\nexport function enter(node, parent, state) {\n if (node.name === 'ref') {\n if (!parent.isBasic) {\n state.hasRefs = true\n }\n\n // TODO swap for React.forwardRef\n state.render.push(\n ` ${parent.isDynamic ? 'innerRef' : 'ref'}=${wrap(node.value)}`\n )\n return true\n }\n}\n","import {\n checkParentStem,\n getProp,\n getStyleType,\n isSlot,\n isStyle,\n isSvg,\n} from '../utils.js'\nimport safe from './safe.js'\n\nlet PROPS_THAT_IMPLY_CODE_FOR_OTHERS = {\n fontFamily: 'fontWeight',\n shadowOffsetX: 'shadowOffsetY',\n shadowOffsetY: 'shadowOffsetX',\n}\n\nexport function enter(node, parent, state) {\n if (\n !isStyle(node) ||\n !parent.isBasic ||\n (isSvg(parent) && state.isReactNative) ||\n parent.name === 'SvgGroup'\n )\n return\n\n let code = isSlot(node)\n\n if (!code && state.isReactNative) {\n let otherProp = PROPS_THAT_IMPLY_CODE_FOR_OTHERS[node.name]\n if (otherProp) {\n code = isSlot(getProp(parent, otherProp))\n }\n }\n\n let { _isProp, _isScoped, ...styleForProperty } = state.getStyleForProperty(\n node,\n parent,\n state,\n code\n )\n\n if (_isProp) {\n Object.keys(styleForProperty).forEach(k =>\n state.render.push(` ${k}=${safe(styleForProperty[k], node)}`)\n )\n } else {\n let hasMatchingParent =\n parent && node.isDynamic\n ? checkParentStem(node, getStyleType(node))\n : false\n let target =\n code || _isScoped || hasMatchingParent\n ? parent.style.dynamic\n : parent.style.static\n\n Object.assign(target[getStyleType(node)], styleForProperty)\n }\n\n return true\n}\n","import {\n getLocalsString,\n getScopedCondition,\n hasCustomScopes,\n hasLocals,\n isSlot,\n} from '../utils.js'\nimport wrap from './wrap.js'\n\nlet parseFormatValue = (value, type) => {\n switch (type) {\n case 'percent':\n return value / 100\n case 'date':\n return `Date.parse('${value}')`\n case 'time':\n let timeValues = value.split(':')\n let timeStr = `Date.UTC(2018, 14, 3`\n // parseInt to remove leading zeroes, it isn't a valid number otherwise\n timeValues.forEach(val => (timeStr += `, ${parseInt(val, 10)}`))\n return `${timeStr})`\n default:\n return value\n }\n}\n\nlet HAS_RESTRICTED_CHARACTERS = /[{}<>/]/\n\nexport function enter(node, parent, state) {\n if (node.name === 'text' && parent.name === 'Text') {\n if (state.data && node.value === 'props.value') {\n parent.explicitChildren = '{data.value}'\n } else if (hasCustomScopes(node, parent)) {\n parent.explicitChildren = wrap(getScopedCondition(node, parent, state))\n } else if (isSlot(node)) {\n parent.explicitChildren = wrap(node.value)\n } else if (hasLocals(node, parent)) {\n parent.explicitChildren = getLocalsString(node, parent, state)\n } else if (parent.hasOwnProperty('format')) {\n let type = Object.keys(parent.format)[0]\n parent.explicitChildren = `{${type}Formatters[local.state.lang].format(${parseFormatValue(\n node.value,\n type\n )})}`\n } else if (HAS_RESTRICTED_CHARACTERS.test(node.value)) {\n parent.explicitChildren = `{\"${node.value}\"}`\n } else {\n parent.explicitChildren = node.value\n }\n\n return true\n }\n}\n","export function enter(node, parent, state) {\n if (node.isBasic || !state.viewPath) return\n\n // this is something we may use when going into dynamic paths through data\n // state.render.push(`viewPath={\\`\\${props.viewPath}/${state.name}\\`}`)\n state.render.push(`viewPath=\"${state.viewPath}/${node.name}\"`)\n}\n","let blacklist = [\n 'classname',\n 'format',\n 'goto',\n 'isfragment',\n 'ismodal',\n 'onclickid',\n 'onclickselected',\n 'onclickselectedtype',\n 'onclickusediv',\n 'perspective',\n 'rotatez',\n 'scalez',\n 'teleportto',\n 'transformoriginz',\n 'translatez',\n 'type',\n]\n\nexport default (node, parent, state) =>\n !blacklist.includes(node.name.toLowerCase())\n","import * as PropertiesClassName from './properties-class-name.js'\nimport * as PropertiesImage from './properties-image.js'\nimport * as PropertiesStyle from './properties-style.js'\nimport * as PropertyFormat from '../react/property-format.js'\nimport * as PropertyOnClickUserSelect from './property-onclick-user-select.js'\nimport * as PropertyRef from '../react/property-ref.js'\nimport * as PropertyRest from '../react/property-rest.js'\nimport * as PropertyStyle from '../react/property-style.js'\nimport * as PropertyText from '../react/property-text.js'\nimport * as PropertyViewPath from '../react/property-view-path.js'\nimport { isColumn } from '../utils.js'\nimport isValidPropertyForBlock from './is-valid-property-for-block.js'\n\nexport function enter(node, parent, state) {\n if (node.isFragment) return false\n\n PropertiesStyle.enter(node, parent, state)\n PropertiesClassName.enter(node, parent, state)\n PropertiesImage.enter(node, parent, state)\n PropertyFormat.enter(node, parent, state)\n PropertyViewPath.enter(node, parent, state)\n\n node.properties.forEach(propNode => {\n if (\n propNode.name === 'lazy' ||\n propNode.name === 'at' ||\n propNode.name === 'when' ||\n propNode.name === 'onWhen' ||\n propNode.tags.unsupportedShorthand ||\n (!isValidPropertyForBlock(propNode, node, state) && node.isBasic) ||\n (propNode.name === 'from' &&\n (node.name === 'List' || node.name === 'Table')) ||\n (propNode.name === 'key' && parent.isList) ||\n (propNode.name === 'pass' && node.isList) ||\n (propNode.name === 'width' && isColumn(node))\n )\n return\n\n !PropertyRef.enter(propNode, node, state) &&\n !PropertyStyle.enter(propNode, node, state) &&\n !PropertyText.enter(propNode, node, state) &&\n PropertyRest.enter(propNode, node, state)\n })\n PropertyOnClickUserSelect.enter(node, parent, state)\n\n PropertiesStyle.leave(node, parent, state)\n PropertiesClassName.leave(node, parent, state)\n}\n","export let enter = (node, parent, state) => {\n let blockName = node.is || node.name\n\n if (typeof state.testIds[blockName] === 'number') {\n state.testIds[blockName]++\n blockName = `${blockName}:${state.testIds[blockName]}`\n } else {\n state.testIds[blockName] = 0\n }\n\n node.testId = blockName\n}\n","import { getProp, isTable } from '../utils.js'\n\nexport function enter(node, parent, state) {\n if (!isTable(node)) return\n\n state.render.push(\n ` width={width} height={height} rowCount={Array.isArray(props.from) ? props.from.length : 0} rowGetter={({ index }) => props.from[index]}`\n )\n}\n\nexport function leave(node, parent, state) {\n if (!isTable(node)) return\n\n state.render.push(`)}</AutoSizer>`)\n}\n","import * as BlockAddTestIdProp from '../react/block-add-test-id-prop.js'\nimport * as BlockAddViewPath from '../react/block-add-view-path.js'\nimport * as BlockCapture from './block-capture.js'\nimport * as BlockColumn from '../react/block-column.js'\nimport * as BlockExplicitChildren from '../react/block-explicit-children.js'\nimport * as BlockGoTo from './block-go-to.js'\nimport * as BlockGroup from '../react/block-group.js'\nimport * as BlockInList from '../react/block-in-list.js'\nimport * as BlockList from '../react/block-list.js'\nimport * as BlockMaybeSkip from '../react/block-maybe-skip.js'\nimport * as BlockName from './block-name.js'\nimport * as BlockOffWhen from '../react/block-off-when.js'\nimport * as BlockProperties from './block-properties.js'\nimport * as BlockSetTestId from '../react/block-set-test-id.js'\nimport * as BlockTable from '../react/block-table.js'\n\nexport let enter = [\n BlockMaybeSkip.enter,\n BlockSetTestId.enter,\n BlockOffWhen.enter,\n BlockName.enter,\n BlockTable.enter,\n BlockColumn.enter,\n BlockCapture.enter,\n BlockGoTo.enter,\n BlockInList.enter,\n BlockAddTestIdProp.enter,\n BlockAddViewPath.enter,\n BlockProperties.enter,\n BlockGroup.enter,\n BlockList.enter,\n]\n\nexport let leave = [\n BlockList.leave,\n BlockExplicitChildren.leave,\n BlockGroup.leave,\n BlockName.leave,\n BlockTable.leave,\n BlockOffWhen.leave,\n]\n","import {\n getProp,\n getScopedCondition,\n isSlot,\n maybeMakeHyphenated,\n} from '../utils.js'\nimport { maybeAddFallbackFont } from '../fonts.js'\n\nexport default function getStyleForProperty(node, parent, state, code) {\n let scopedVar = setScopedVar(node, parent, state)\n\n if (scopedVar) {\n switch (node.name) {\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return {\n _isScoped: true,\n transform: `'${getTransform(node, parent, state)}'`,\n }\n\n case 'shadowColor':\n case 'shadowBlur':\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n case 'shadowSpread':\n case 'shadowInset': {\n let shadow = getShadow(node, parent, state)\n let key = Object.keys(shadow)[0]\n\n return {\n _isScoped: true,\n [key]: `'${shadow[key]}'`,\n }\n }\n\n default:\n return {\n _isScoped: true,\n [node.name]: scopedVar,\n }\n }\n }\n\n switch (node.name) {\n case 'appRegion':\n return {\n WebkitAppRegion: maybeAsVar(node, code),\n }\n\n case 'backgroundImage':\n return {\n backgroundImage: code\n ? `\\`url(\\${${asVar(node)}})\\``\n : `url(\"${node.value}\")`,\n }\n\n case 'fontFamily':\n return {\n fontFamily: code ? asVar(node) : maybeAddFallbackFont(node.value),\n }\n\n case 'shadowColor':\n case 'shadowBlur':\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n case 'shadowSpread':\n case 'shadowInset':\n return getShadow(node, parent, state)\n\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return { transform: getTransform(node, parent, state) }\n\n case 'transformOriginX':\n case 'transformOriginY':\n return {\n transformOrigin: getTransformOrigin(node, parent, state),\n }\n\n case 'zIndex':\n return {\n zIndex: code ? asVar(node) : parseInt(node.value, 10),\n }\n\n default:\n return {\n [node.name]: maybeAsVar(node, code),\n }\n }\n}\n\nlet maybeAsVar = (prop, code) =>\n code ? asVar(prop) : maybeMakeHyphenated(prop)\n\nlet asVar = prop => `'var(--${prop.name})'`\n\nlet setScopedVar = (prop, block, state) => {\n if (\n prop.scope === 'isHovered' ||\n prop.scope === 'isFocused' ||\n prop.scope === 'isDisabled'\n )\n return false\n\n let scopedCondition = getScopedCondition(prop, block, state)\n return scopedCondition && asVar(prop)\n}\n\nlet getPropValue = (prop, block, state, unit = '') => {\n if (!prop) return false\n\n let scopedVar = setScopedVar(prop, block, state)\n\n if (scopedVar) return scopedVar\n\n if (prop.tags.slot) {\n return `var(--${prop.name})`\n }\n\n return typeof prop.value === 'number' ? `${prop.value}${unit}` : prop.value\n}\n\nlet getShadow = (node, parent, state) => {\n let isText = parent.name === 'Text'\n\n let shadowColor = getProp(parent, 'shadowColor', node.scope)\n let shadowBlur = getProp(parent, 'shadowBlur', node.scope)\n let shadowOffsetX = getProp(parent, 'shadowOffsetX', node.scope)\n let shadowOffsetY = getProp(parent, 'shadowOffsetY', node.scope)\n let shadowSpread = getProp(parent, 'shadowSpread', node.scope)\n let shadowInset = getProp(parent, 'shadowInset', node.scope)\n let shadowInsetValue = getPropValue(shadowInset, parent, state)\n\n let value = [\n !isText &&\n (typeof shadowInsetValue === 'string' && /var\\(/.test(shadowInsetValue)\n ? shadowInsetValue\n : shadowInsetValue && 'inset'),\n getPropValue(shadowOffsetX, parent, state, 'px'),\n getPropValue(shadowOffsetY, parent, state, 'px'),\n getPropValue(shadowBlur, parent, state, 'px'),\n !isText && getPropValue(shadowSpread, parent, state, 'px'),\n getPropValue(shadowColor, parent, state),\n ]\n .filter(Boolean)\n .join(' ')\n .replace(/'/g, '')\n\n if (\n isSlot(shadowColor) ||\n isSlot(shadowBlur) ||\n isSlot(shadowOffsetY) ||\n isSlot(shadowOffsetX) ||\n isSlot(shadowSpread) ||\n isSlot(shadowInset)\n ) {\n value = `\\`${value}\\``\n }\n\n return {\n [isText ? 'textShadow' : 'boxShadow']: value,\n }\n}\n\nlet getTransformValue = (prop, parent, unit) => {\n if (!prop) return false\n return `${prop.name}(${getPropValue(prop, parent, unit)})`\n}\n\nlet getTransform = (node, parent) => {\n let rotate = getProp(parent, 'rotate', node.scope)\n let rotateX = getProp(parent, 'rotateX', node.scope)\n let rotateY = getProp(parent, 'rotateY', node.scope)\n let scale = getProp(parent, 'scale', node.scope)\n let scaleX = getProp(parent, 'scaleX', node.scope)\n let scaleY = getProp(parent, 'scaleY', node.scope)\n let translateX = getProp(parent, 'translateX', node.scope)\n let translateY = getProp(parent, 'translateY', node.scope)\n\n let value = [\n getTransformValue(rotate, parent, 'deg'),\n getTransformValue(rotateX, parent, 'deg'),\n getTransformValue(rotateY, parent, 'deg'),\n getTransformValue(scale, parent, ''),\n getTransformValue(scaleX, parent, ''),\n getTransformValue(scaleY, parent, ''),\n\n getTransformValue(translateX, parent, 'px'),\n getTransformValue(translateY, parent, 'px'),\n ]\n .filter(Boolean)\n .join(' ')\n\n if (\n isSlot(rotate) ||\n isSlot(rotateX) ||\n isSlot(rotateY) ||\n isSlot(scale) ||\n isSlot(scaleX) ||\n isSlot(scaleY) ||\n isSlot(translateX) ||\n isSlot(translateY)\n ) {\n value = `\\`${value}\\``\n }\n\n // TODO FIXME this is a hack to remove strings because my head is fried\n // and yeah it does what we need for now :)\n return value.replace(/'/g, '')\n}\n\nlet getTransformOrigin = (node, parent) => {\n let transformOriginX = getProp(parent, 'transformOriginX', node.scope)\n let transformOriginY = getProp(parent, 'transformOriginY', node.scope)\n let value = [\n getPropValue(\n transformOriginX,\n parent,\n Number.isInteger(transformOriginX.value) ? 'px' : ''\n ),\n getPropValue(\n transformOriginY,\n parent,\n Number.isInteger(transformOriginY.value) ? 'px' : ''\n ),\n ]\n .filter(Boolean)\n .join(' ')\n\n if (isSlot(transformOriginX) || isSlot(transformOriginY)) {\n value = `\\`${value}\\``\n }\n return value\n}\n","import { hasKeys } from '../utils.js'\n\nexport default ({ styles, stylesOrder }) => {\n if (!hasKeys(styles)) return ''\n\n let res = [`let styles = {}`]\n\n stylesOrder.forEach(id => {\n res.push(`styles.${id} = ${styles[id]}`)\n })\n\n return res.join('\\n')\n}\n","import {\n getActionableParent,\n getFlowPath,\n getProp,\n getScopedCondition,\n getScopedImageCondition,\n getScopes,\n hasCustomBlockParent,\n isValidImgSrc,\n pushImageToState,\n} from '../utils.js'\nimport safe from '../react/safe.js'\nimport toCamelCase from 'to-camel-case'\nimport wrap from '../react/wrap.js'\n\nlet isUrl = str => /^https?:\\/\\//.test(str)\n\nfunction getImageSource(node, parent, state) {\n let scopes = getScopes(node, parent)\n\n if (scopes && (isUrl(node.value) || node.tags.slot)) {\n return wrap(getScopedCondition(node, parent, state))\n } else if (isUrl(node.value) || node.tags.slot) {\n if (node.defaultValue && !isUrl(node.defaultValue)) {\n state.slots.forEach(item => {\n if (item.defaultValue === node.defaultValue) {\n item.type = 'import'\n let name = toCamelCase(item.defaultValue)\n if (!state.images.includes(item.defaultValue)) {\n state.images.push({\n name,\n file: item.defaultValue,\n })\n }\n item.defaultValue = name\n }\n })\n }\n return safe(node.value)\n } else {\n if (scopes) {\n pushImageToState(state, scopes.scopedNames, scopes.paths)\n }\n let name = toCamelCase(node.value)\n if (!state.images.includes(node.value)) {\n state.images.push({\n name,\n file: node.value,\n })\n }\n return scopes\n ? wrap(\n getScopedImageCondition(scopes.scopedProps, scopes.scopedNames, name)\n )\n : `{${name}}`\n }\n}\n\nlet CHILD_VALUES = /props\\.(isSelected|isHovered|isFocused|isSelectedHovered)/\nlet ON_IS_SELECTED = /(onClick|onPress|goTo)/\n\nexport default function getValueForProperty(node, parent, state) {\n if (\n state.data &&\n (node.value === '!props.value' ||\n node.value === 'props.value' ||\n node.value === 'props.onSubmit' ||\n node.value === 'props.onChange' ||\n node.value === 'props.isInvalid' ||\n node.value === 'props.isInvalidInitial' ||\n node.value === 'props.isValid' ||\n node.value === 'props.isValidInitial' ||\n node.value === 'props.onSubmit')\n ) {\n return {\n [node.name]: `{${node.value.replace('props.', 'data.')}}`,\n }\n } else if (hasCustomBlockParent(parent) && CHILD_VALUES.test(node.value)) {\n return {\n [node.name]: `{${node.value.replace('props.', 'childProps.')}}`,\n }\n } else if (isValidImgSrc(node, parent)) {\n return {\n src: getImageSource(node, parent, state),\n }\n } else if (parent.isBasic && node.name === 'isDisabled') {\n return {\n disabled: safe(node.value, node),\n }\n } else if (getScopedCondition(node, parent, state)) {\n return {\n [node.name]: safe(getScopedCondition(node, parent, state)),\n }\n } else if (/^on[A-Z]/.test(node.name) && node.slotName === 'setFlowTo') {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n let ret = {\n [node.name]: `{() => setFlowTo('${flowPath}')}`,\n }\n\n if (!parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useFlow = true\n ret[\n node.name.replace(ON_IS_SELECTED, 'isSelected')\n ] = `{flow.has('${flowPath}')}`\n }\n\n if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n ret['...'] = `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`\n }\n\n return ret\n } else if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n return {\n '...': `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`,\n [node.name]: safe(node.value, node),\n }\n } else if (\n CHILD_VALUES.test(node.value) &&\n !!getActionableParent(parent) &&\n !parent.isBasic\n ) {\n // TODO support more than one hover/selected in the same block - let's wait\n // for a use case\n if (/isHovered/.test(node.value)) {\n return {\n [node.name]: safe(node.value.replace('props.', ''), node),\n }\n } else if (/isSelected/.test(node.value)) {\n let actionableParent = getActionableParent(parent)\n let actionableProp =\n getProp(actionableParent, 'onClick') ||\n getProp(actionableParent, 'goTo')\n if (!actionableProp.defaultValue) {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n\n let flowPath = getFlowPath(actionableProp, actionableParent, state)\n state.use('ViewsUseFlow')\n state.useFlow = true\n return {\n [node.name]: `{flow.has('${flowPath}')}`,\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n}\n","import getViewRelativeToView from '../../get-view-relative-to-view.js'\nimport relativise from '../../relativise.js'\nimport path from 'path'\n\nexport default function makeGetImport({\n imports,\n getSystemImport,\n view,\n viewsById,\n viewsToFiles,\n}) {\n return function getImport(id, isLazy) {\n if (imports[id]) return imports[id]\n\n let externalImport = getSystemImport(id, view.file)\n if (externalImport) return externalImport\n\n if (!viewsById.has(id)) {\n throw new Error(\n `Import \"${id}\" doesn't exist. It's being imported from ${view.id}.`\n )\n }\n\n let importView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n if (!importView) {\n throw new Error(\n `Import \"${id}\" doesn't exist. It's being imported from ${view.id}.`\n )\n }\n\n let importFile = importView.file\n\n if (importView.logic) {\n importFile = importView.logic\n } else if (!importView.custom) {\n importFile = path.join(path.dirname(importFile), 'view.js')\n }\n let importPath = relativise(view.file, importFile)\n\n return isLazy\n ? `let ${id} = React.lazy(() => import('${importPath}'))`\n : `import ${id} from '${importPath}'`\n }\n}\n","export default [\n 'Block',\n 'Capture',\n 'CaptureTextArea',\n 'Children',\n 'Column',\n 'Horizontal',\n 'Image',\n 'List',\n 'ViewsModalOverlay',\n 'ViewsModalOverlayContent',\n 'Spring',\n 'Svg',\n 'SvgCircle',\n 'SvgDefs',\n 'SvgEllipse',\n 'SvgGroup',\n 'SvgLine',\n 'SvgLinearGradient',\n 'SvgPath',\n 'SvgPolygon',\n 'SvgPolyline',\n 'SvgRadialGradient',\n 'SvgRect',\n 'SvgStop',\n 'SvgSymbol',\n 'SvgText',\n 'SvgUse',\n 'Table',\n 'Text',\n 'Timing',\n 'Vertical',\n 'View',\n]\n","export default ({ state, name }) => {\n let render = state.render.join('')\n if (Object.keys(state.locals).length > 0 || state.isFormatted) {\n render = `<Subscribe to={[LocalContainer]}>\\n{local =>\\n${render}\\n}</Subscribe>`\n }\n\n let animated = []\n if (state.isAnimated) {\n Object.keys(state.animations).forEach(blockId => {\n Object.values(state.animations[blockId]).forEach(item => {\n let { curve, ...configValues } = item.animation.properties\n\n if (!state.isReactNative && curve !== 'spring') return\n\n let spring = ['{', '\"config\": {']\n Object.entries(configValues).forEach(([k, v]) => {\n spring.push(`${k}: ${JSON.stringify(v)},`)\n })\n\n if (curve !== 'spring' && curve !== 'linear') {\n spring.push(`\"easing\": Easing.${curve.replace('ease', 'easeCubic')},`)\n }\n spring.push('},')\n\n let toValue = []\n let fromValue = []\n Object.values(item.props).forEach(prop => {\n prop.scopes.reverse()\n\n let value = prop.scopes.reduce(\n (current, scope) =>\n `props.${scope.name}? ${JSON.stringify(\n scope.value\n )} : ${current}`,\n JSON.stringify(prop.value)\n )\n\n toValue.push(`${JSON.stringify(prop.name)}: ${value}`)\n fromValue.push(\n `${JSON.stringify(prop.name)}: ${JSON.stringify(\n prop.scopes[0].value\n )}`\n )\n })\n\n spring.push(`\"from\": {${fromValue.join(',')}},`)\n spring.push(`\"to\": {${toValue.join(',')}},`)\n spring.push('}')\n\n animated.push(\n `let animated${blockId}${\n item.index > 0 ? item.index : ''\n } = useSpring(${spring.join('\\n')})`\n )\n })\n })\n }\n\n let flow = []\n if (\n state.useFlow ||\n (state.flow === 'separate' && state.uses.includes('ViewsUseFlow'))\n ) {\n flow.push(`let flow = fromFlow.useFlow()`)\n }\n if (state.setFlowTo) {\n flow.push(`let setFlowTo = fromFlow.useSetFlowTo()`)\n }\n let data = []\n if (state.data) {\n switch (state.data.type) {\n case 'show':\n case 'capture': {\n data.push(`let data = fromData.useData({ path: '${state.data.path}', `)\n maybeDataContext(state.data, data)\n maybeDataFormat(state.dataFormat, data)\n maybeDataValidate(state.dataValidate, data)\n data.push('})')\n break\n }\n\n default: {\n break\n }\n }\n }\n\n if (state.hasRefs) {\n let trackOpen = state.track ? '<TrackContext.Consumer>{track => (' : ''\n let trackClose = state.track ? ')}</TrackContext.Consumer>' : ''\n return `export default class ${name} extends React.Component {\n render() {\n let { props } = this\n return (${trackOpen}${render}${trackClose})\n }\n}`\n } else {\n let ret = render ? `(${render})` : null\n\n return `export default function ${name}(props) {\n ${state.track ? `let track = React.useContext(TrackContext)` : ''}\n ${state.useIsBefore ? 'let isBefore = useIsBefore()' : ''}\n ${\n state.useIsHovered\n ? 'let [isHovered, isSelectedHovered, isHoveredBind] = useIsHovered(props)'\n : ''\n }\n ${state.useIsMedia ? 'let isMedia = useIsMedia()' : ''}\n ${animated.join('\\n')}\n ${flow.join('\\n')}\n ${data.join('\\n')}\n\n return ${ret}\n}`\n }\n}\n\nfunction maybeDataContext(dataDefinition, data) {\n if (dataDefinition.context === null) return\n\n data.push(`context: '${dataDefinition.context}',`)\n}\nfunction maybeDataFormat(format, data) {\n if (!format) return\n\n if (format.formatIn) {\n data.push(`formatIn: '${format.formatIn}',`)\n }\n\n if (format.formatOut) {\n data.push(`formatOut: '${format.formatOut}',`)\n }\n}\nfunction maybeDataValidate(validate, data) {\n if (!validate || validate.type !== 'js') return\n data.push(`validate: '${validate.value}',`)\n if (validate.required) {\n data.push('validateRequired: true,')\n }\n}\n","let stringify = slot => {\n if (slot.type === 'array') {\n return JSON.stringify([])\n } else if (/^[0-9]+$/.test(slot.defaultValue) || slot.type === 'import') {\n return slot.defaultValue\n } else {\n return JSON.stringify(slot.defaultValue)\n }\n}\n\nexport default ({ state, name }) => {\n let slots = state.slots\n .filter(slot => slot.defaultValue !== false)\n .map(slot => `${slot.name}: ${stringify(slot)}`)\n\n return slots.length === 0\n ? ''\n : `${name}.defaultProps = {${slots.join(',\\n')}}`\n}\n","export default [\n 'Svg',\n 'SvgCircle',\n 'SvgEllipse',\n 'SvgDefs',\n 'SvgGroup',\n 'SvgLinearGradient',\n 'SvgRadialGradient',\n 'SvgLine',\n 'SvgPath',\n 'SvgPolygon',\n 'SvgPolyline',\n 'SvgRect',\n 'SvgSymbol',\n 'SvgText',\n 'SvgUse',\n 'SvgDefs',\n 'SvgStop',\n]\n","import SVG from './svg.js'\n\nlet NATIVE = [\n 'Animated',\n 'Image',\n 'KeyboardAvoidingView',\n 'FlatList',\n 'ScrollView',\n 'StyleSheet',\n 'Text',\n 'TextInput',\n 'TouchableWithoutFeedback',\n 'TouchableHighlight',\n 'View',\n]\n\nlet sortAlphabetically = (a, b) => {\n return a === b ? 0 : a < b ? -1 : 1\n}\n\nlet importsFirst = (a, b) => {\n let aIsImport = a.startsWith('import')\n let bIsImport = b.startsWith('import')\n\n if ((aIsImport && bIsImport) || (!aIsImport && !bIsImport))\n return sortAlphabetically(a, b)\n\n if (aIsImport) return -1\n if (bIsImport) return 1\n}\n\nexport default (state, getImport) => {\n let usesNative = []\n let usesSvg = []\n\n let useNative = d => {\n if (!usesNative.includes(d)) {\n usesNative.push(d)\n }\n }\n let useSvg = d => {\n if (!usesSvg.includes(d)) {\n usesSvg.push(d)\n }\n }\n\n let dependencies = [`import React from 'react'`]\n\n state.uses.sort().forEach(d => {\n if (state.isReactNative && NATIVE.includes(d)) {\n useNative(d)\n } else if (state.isReactNative && SVG.includes(d)) {\n useSvg(\n d === 'Svg'\n ? d\n : d === 'SvgGroup'\n ? `G as SvgGroup`\n : `${d.replace('Svg', '')} as ${d}`\n )\n } else if (d === 'Table') {\n } else if (/^[A-Z]/.test(d)) {\n dependencies.push(getImport(d, state.lazy[d]))\n }\n })\n\n if (state.isReactNative) {\n // TODO fonts in RN\n // state.getFont(state.fonts)\n } else {\n state.fonts.forEach(usedFont =>\n dependencies.push(state.getFontImport(usedFont.id))\n )\n }\n\n // TODO we probably want to check that the file exists and do something if it\n // doesn't, like warn the user at least?\n state.images.forEach(img =>\n dependencies.push(`import ${img.name} from \"${img.file}\"`)\n )\n\n if (state.cssDynamic || state.cssStatic) {\n dependencies.push('import { css } from \"emotion\"')\n state.dependencies.add('emotion')\n }\n\n if (state.isAnimated) {\n let animations = [\n 'animated',\n (state.hasSpringAnimation ||\n (state.hasTimingAnimation && state.isReactNative)) &&\n 'useSpring',\n ].filter(Boolean)\n\n if (animations.length > 0) {\n dependencies.push(\n `import { ${animations.join(', ')} } from \"react-spring\"`\n )\n\n state.dependencies.add('react-spring')\n\n if (state.hasTimingAnimation && state.isReactNative) {\n dependencies.push(`import * as Easing from 'd3-ease'`)\n state.dependencies.add('d3-ease')\n }\n }\n }\n\n if (state.isReactNative) {\n for (let component of state.animated) {\n dependencies.push(`let Animated${component} = animated(${component})`)\n }\n }\n\n if (state.isTable) {\n dependencies.push(\n `import { AutoSizer, Column, Table } from \"@viewstools/tables/${\n state.isReactNative ? 'native' : 'dom'\n }\"`\n )\n state.dependencies.add('@viewstools/tables')\n }\n\n if (usesSvg.length > 0) {\n let svg = usesSvg.filter(m => m !== 'Svg').join(', ')\n dependencies.push(`import Svg, { ${svg} } from 'react-native-svg'`)\n }\n\n if (usesNative.length > 0) {\n dependencies.push(\n `import { ${usesNative.join(', ')} } from '${\n state.reactNativeLibraryImport\n }'`\n )\n }\n\n if (state.track) {\n dependencies.push(getImport('TrackContext'))\n }\n\n if (state.useIsBefore) {\n dependencies.push(getImport('ViewsUseIsBefore'))\n }\n\n if (state.useIsHovered) {\n dependencies.push(getImport('ViewsUseIsHovered'))\n }\n\n if (state.useIsMedia) {\n dependencies.push(getImport('ViewsUseIsMedia'))\n }\n\n if (Object.keys(state.locals).length > 0) {\n dependencies.push('import { Subscribe } from \"unstated\"')\n dependencies.push(getImport('LocalContainer'))\n state.dependencies.add('unstated')\n }\n\n return dependencies\n .filter(Boolean)\n .sort(importsFirst)\n .join('\\n')\n}\n","export default ({ uses }) => {\n return uses.includes('Animated') && uses.includes('FlatList')\n ? `let AnimatedFlatList = Animated.createAnimatedComponent(FlatList)`\n : ''\n}\n","export default state => (state.isFormatted ? createFormatters(state) : '')\n\nlet createFormatters = ({ formats, localSupported }) => {\n return formats\n .map(format => {\n return getFormat(format, localSupported)\n })\n .join('')\n}\n\nlet getFormat = (format, localSupported) => {\n let style = Object.keys(format)[0]\n let type = style === 'currency' || style === 'percent' ? 'Number' : 'DateTime'\n\n let options = getOptions(format[`${style}`], style, type)\n let string = `let ${style}Options = ${options}\\nlet ${style}Formatters = {`\n localSupported.forEach(local => {\n string += `${local}: new Intl.${type}Format('${local}', ${style}Options),\\n`\n })\n\n return `${string} }\\n`\n}\n\nlet getOptions = (format, style, type) => {\n if (style === 'currency')\n return `{ style: 'currency', currency: '${format}' }`\n\n if (style === 'percent')\n return `{ style: 'percent', maximumFractionDigits: 2 }`\n\n if (style === 'time' && format.clock) {\n format.hour12 = format.clock === '24h' ? false : true\n delete format.clock\n }\n return JSON.stringify(format)\n}\n","export default ({ locals }) =>\n `\\n${Object.keys(locals)\n .map(k => `let ${k} = ${JSON.stringify(locals[k], null, ' ')}`)\n .join('\\n')}`\n","import getBody from './get-body.js'\nimport getDefaultProps from './get-default-props.js'\nimport getDependencies from './get-dependencies.js'\nimport getFlatList from './get-flatlist.js'\nimport getFormatters from './get-formatters.js'\nimport getLocals from './get-locals.js'\n\nexport default ({ getImport, getStyles, name, state }) => {\n // TODO Emojis should be wrapped in <span>, have role=\"img\", and have an accessible description\n // with aria-label or aria-labelledby jsx-a11y/accessible-emoji\n return `/* eslint-disable jsx-a11y/accessible-emoji, no-unused-vars, no-dupe-keys, react/jsx-no-duplicate-props */\n// This file is auto-generated. Edit ${name}.view to change it. More info: https://github.com/viewstools/docs/blob/master/UseViews/README.md#viewjs-is-auto-generated-and-shouldnt-be-edited\n${getDependencies(state, getImport)}\n\n${getStyles(state, name)}\n${getFlatList(state, name)}\n${getFormatters(state, name)}\n${getLocals(state, name)}\n\n${getBody({ state, name })}\n${getDefaultProps({ state, name })}`\n}\n","export default function walk(ast, { enter, leave }, state) {\n visit(ast, null, enter, leave, state)\n}\n\nfunction visit(node, parent, enter, leave, state) {\n if (!node) return\n\n if (enter) {\n if (enter.some(fn => fn(node, parent, state))) return\n }\n\n if (Array.isArray(node.children)) {\n node.children.forEach(child => {\n child.parent = node\n visit(child, node, enter, leave, state)\n })\n }\n\n if (leave) {\n leave.forEach(fn => fn(node, parent, state))\n }\n}\n","import * as visitor from './react-dom/block.js'\nimport getStyleForProperty from './react-dom/get-style-for-property.js'\nimport getStyles from './react-dom/get-styles.js'\nimport getValueForProperty from './react-dom/get-value-for-property.js'\nimport getViewRelativeToView from '../get-view-relative-to-view.js'\nimport makeGetImport from './react/make-get-import.js'\nimport restrictedNames from './react-dom/restricted-names.js'\nimport toComponent from './react/to-component.js'\nimport walk from './walk.js'\n\nlet imports = {\n ViewsModalOverlay:\n \"import { DialogOverlay as ViewsModalOverlay, DialogContent as ViewsModalOverlayContent } from '@reach/dialog'\",\n}\n\nexport default ({\n getFontImport,\n getSystemImport,\n local,\n localSupported,\n track,\n tools,\n view,\n viewsById,\n viewsToFiles,\n}) => {\n let name = view.id\n let finalName = restrictedNames.includes(name) ? `${name}1` : name\n if (name !== finalName) {\n console.warn(\n `// \"${name}\" is a Views reserved name.\n We've renamed it to \"${finalName}\", so your view should work but this isn't ideal.\n To fix this, change its file name to something else.`\n )\n }\n\n let state = {\n animated: new Set(),\n animations: {},\n cssDynamic: false,\n cssStatic: false,\n data: view.parsed.view.data,\n dataFormat: view.parsed.view.dataFormat,\n dataValidate: view.parsed.view.dataValidate,\n dependencies: new Set(),\n flow: null,\n setFlowTo: false,\n getFontImport: font => getFontImport(font, view),\n getStyleForProperty,\n getValueForProperty,\n hasRefs: false,\n images: [],\n isDynamic: false,\n isReactNative: false,\n isStory: id => {\n let viewInView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n\n return viewInView && !viewInView.custom && viewInView.parsed.view.isStory\n },\n lazy: {},\n local,\n locals: {},\n localSupported: [],\n name: finalName,\n viewPath: view.parsed.view.viewPath,\n viewPathParent: view.parsed.view.viewPathParent,\n render: [],\n styles: {},\n stylesOrder: [],\n usedBlockNames: { [finalName]: 1, AutoSizer: 1, Column: 1, Table: 1 },\n uses: [],\n testIdKey: 'data-testid',\n viewPathKey: 'data-view-path',\n testIds: {},\n tools,\n track,\n use(block, isLazy = false) {\n if (isLazy) {\n state.lazy[block] = true\n }\n\n if (\n state.uses.includes(block) ||\n /props/.test(block) ||\n /^Animated/.test(block) ||\n 'React.Fragment' === block ||\n 'ViewsModalOverlayContent' === block ||\n block === finalName\n )\n return\n\n state.uses.push(block)\n },\n useIsBefore: view.parsed.view.useIsBefore,\n useIsMedia: view.parsed.view.useIsMedia,\n }\n\n // TIP: use the following code to trace generated code\n // let _push = state.render.push.bind(state.render)\n // state.render.push = item => {\n // _push(item)\n // if (item.includes(\"Some <isHovered\")) {\n // console.trace()\n // }\n // }\n\n if (state.data) {\n state.use('ViewsUseData')\n }\n\n if (name !== finalName) {\n console.warn(\n `// ${name} is a Views reserved name. To fix this, change its file name to something else.`\n )\n }\n\n state.fonts = view.parsed.fonts\n state.slots = view.parsed.slots\n state.localSupported = localSupported\n\n walk(view.parsed.view, visitor, state)\n\n return {\n code: toComponent({\n getImport: makeGetImport({\n imports,\n getSystemImport,\n view,\n viewsById,\n viewsToFiles,\n }),\n getStyles,\n name: finalName,\n state,\n }),\n dependencies: state.dependencies,\n flow: state.flow,\n flowDefaultState: state.flowDefaultState,\n // TODO flow supported states\n // fonts: view.parsed.fonts,\n // slots: view.parsed.slots,\n }\n}\n","import { hasProp, getObjectAsString, getProp } from '../utils.js'\nimport safe from '../react/safe.js'\nlet BORDER_RADIUS = [\n 'borderRadius',\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n]\n\nexport let enter = (node, parent, state) => {\n if (node.backgroundImage) {\n let source = getObjectAsString({ uri: node.backgroundImage })\n\n let resizeMode = getProp(node, 'backgroundSize')\n resizeMode = safe(resizeMode ? resizeMode.value.value : 'cover')\n\n state.render.push(` resizeMode=${resizeMode} source={${source}}`)\n\n // hack until https://github.com/facebook/react-native/issues/8885\n // is fixed\n BORDER_RADIUS.forEach(prop => {\n if (hasProp(node, prop)) {\n let propNode = getProp(node, prop)\n state.render.push(` ${prop}={${propNode.value.value}}`)\n }\n })\n }\n}\n","import { getProp, isSlot } from '../utils.js'\n\nlet keyboardType = {\n email: 'email-address',\n number: 'numeric',\n phone: 'phone-pad',\n}\n\nexport let enter = (node, parent, state) => {\n if (!node.isCapture) return\n\n if (node.name === 'CaptureTextArea') {\n state.render.push(` multiline={true}`)\n } else {\n let type = getProp(node, 'type')\n\n // TODO warn on parser\n // TODO support file upload in RN\n if (type.value === 'file') {\n type.value = 'text'\n }\n\n if (type.value === 'secure') {\n state.render.push(` secureTextEntry`)\n } else {\n if (isSlot(type)) {\n let dynamicKeyboardType = `\n ${type.value} === 'email'?\n '${keyboardType.email}' :\n ${type.value} === 'number'?\n '${keyboardType.number}' :\n ${type.value} === 'phone'?\n '${keyboardType.phone}' : 'default'\n `\n state.render.push(` keyboardType={${dynamicKeyboardType}}`)\n } else if (keyboardType[type.value]) {\n state.render.push(` keyboardType='${keyboardType[type.value]}'`)\n }\n }\n }\n\n let autoCorrect = getProp(node, 'autoCorrect')\n if (!autoCorrect) {\n state.render.push(` autoCorrect={false}`)\n }\n\n let underlineColorAndroid = getProp(node, 'underlineColorAndroid')\n if (!underlineColorAndroid) {\n state.render.push(` underlineColorAndroid=\"transparent\"`)\n }\n\n let textAlignVertical = getProp(node, 'textAlignVertical')\n if (!textAlignVertical) {\n state.render.push(` textAlignVertical=\"top\"`)\n }\n}\n","import { getProp, hasProp, isSlot } from '../utils.js'\n\nexport default (node, parent, state) => {\n switch (node.name) {\n case 'Capture':\n case 'CaptureTextArea':\n return 'TextInput'\n\n case 'Horizontal':\n case 'Vertical':\n return getGroupBlockName(node, state)\n\n case 'List':\n return getListBlockName(node, state)\n\n case 'Text':\n if (node.isAnimated) {\n state.animated.add('Text')\n return 'AnimatedText'\n } else {\n return 'Text'\n }\n\n case 'Block':\n case 'View':\n return 'React.Fragment'\n\n default:\n return node.name\n }\n}\n\nlet getGroupBlockName = (node, state) => {\n let name = 'View'\n\n if (node.isFragment) {\n name = 'React.Fragment'\n } else if (hasProp(node, 'goTo')) {\n node.goTo = true\n let propNode = getProp(node, 'goTo')\n node.action = propNode.value\n } else if (hasProp(node, 'onClick')) {\n let propNode = getProp(node, 'onClick')\n node.action = propNode.value\n }\n\n if (hasProp(node, 'backgroundImage')) {\n let propNode = getProp(node, 'backgroundImage')\n node.backgroundImage = isSlot(propNode)\n ? propNode.value\n : JSON.stringify(propNode.value)\n\n name = 'Image'\n } else if (hasProp(node, 'overflowY', v => v === 'auto' || v === 'scroll')) {\n name = 'ScrollView'\n }\n\n if (node.isAnimated) {\n state.animated.add(name)\n name = `Animated${name}`\n }\n\n return name\n}\n\nlet getListBlockName = (node, state) => {\n let base = hasProp(node, /^overflow/, v => v === 'auto' || v === 'scroll')\n ? 'FlatList'\n : 'View'\n if (node.isAnimated) {\n state.animated.add(base)\n return `Animated${base}`\n } else {\n return base\n }\n}\n","import {\n getActionableParent,\n getPropValueOrDefault,\n isStory,\n} from '../utils.js'\nimport { leave } from '../react/block-name.js'\nimport handleTable from '../react/block-name-handle-table.js'\nimport getBlockName from './get-block-name.js'\n\nexport function enter(node, parent, state) {\n // if (parent && !parent.isBasic && !node.isBasic) return true\n if (node.isFragment && node.children.length === 0) return true\n if (node.isChildren) {\n state.hasAlreadyDefinedChildren = true\n\n state.render.push(\n `{typeof props.children === 'function'? props.children({ isSelected: props.isSelected`\n )\n let useIsHovered = !!getActionableParent(node)\n if (useIsHovered) {\n state.useIsHovered = true\n state.render.push(', isHovered, isSelectedHovered')\n }\n state.render.push(`}) : null}`)\n\n return true\n }\n\n if (node.isFragment && node.name === 'View') {\n state.flow = getPropValueOrDefault(node, 'is', false)\n state.flowDefaultState = null\n }\n\n if (isStory(node, state)) {\n state.use('ViewsUseFlow')\n }\n\n let name = getBlockName(node, parent, state)\n if (name === null) return true\n\n if (name === 'Animated.FlatList') {\n state.use('FlatList')\n name = 'AnimatedFlatList'\n }\n\n state.use(node.isBasic ? name.replace(/^Animated/, '') : name, node.isLazy)\n\n node.nameFinal = name\n\n if (handleTable(node, parent, state)) return true\n\n state.render.push(`<${name}`)\n}\n\nexport { leave }\n","import { enter } from '../react/properties-style.js'\nimport {\n createId,\n getAnimatedStyles,\n getObjectAsString,\n // TODO: Think of a better name 🙈\n getNonAnimatedDynamicStyles,\n hasContentContainerStyleProp,\n getContentContainerStyleProps,\n removeContentContainerStyleProps,\n hasKeys,\n} from '../utils.js'\n\nexport { enter }\n\nexport let leave = (node, parent, state) => {\n if (node.isFragment) return\n\n let dynamicStyles = getNonAnimatedDynamicStyles(node)\n let baseStyle = null\n let animatedStyle = null\n let dynamicStyle = null\n let containerStyle = null\n\n if (\n node.ensureBackgroundColor &&\n (!('backgroundColor' in node.style.static.base) ||\n !('backgroundColor' in node.style.dynamic.base))\n ) {\n node.style.static.base.backgroundColor = 'transparent'\n }\n\n if (hasKeys(node.style.static.base)) {\n let id = createId(node, state)\n if (\n node.nameFinal.includes('FlatList') &&\n hasContentContainerStyleProp(node.style.static.base)\n ) {\n state.styles[`${id}ContentContainer`] = getContentContainerStyleProps(\n node.style.static.base\n )\n node.style.static.base = removeContentContainerStyleProps(\n node.style.static.base\n )\n containerStyle = `styles.${id}ContentContainer`\n }\n if (hasKeys(node.style.static.base)) {\n state.styles[id] = node.style.static.base\n baseStyle = `styles.${id}`\n }\n }\n\n if (node.isAnimated) {\n animatedStyle = getAnimatedStyles(node, state.isReactNative)\n\n state.isAnimated = true\n state.animations[node.id] = node.animations\n if (node.hasSpringAnimation) {\n state.hasSpringAnimation = true\n }\n\n if (node.hasTimingAnimation) {\n state.hasTimingAnimation = true\n }\n state.scopes = node.scopes\n }\n\n if (hasKeys(dynamicStyles)) {\n if (\n node.nameFinal.includes('FlatList') &&\n hasContentContainerStyleProp(dynamicStyles)\n ) {\n let dynamicContainerStyle = getObjectAsString(\n getContentContainerStyleProps(dynamicStyles)\n )\n dynamicStyles = removeContentContainerStyleProps(dynamicStyles)\n containerStyle = containerStyle\n ? `[${containerStyle},${dynamicContainerStyle}]`\n : dynamicContainerStyle\n }\n if (hasKeys(dynamicStyles)) {\n dynamicStyle = getObjectAsString(dynamicStyles)\n dynamicStyle = dynamicStyle.substr(1, dynamicStyle.length - 2)\n }\n }\n\n if (baseStyle || animatedStyle || dynamicStyle) {\n let style = baseStyle\n if (animatedStyle) {\n // TODO once https://github.com/drcmda/react-spring/issues/337 gets\n // fixed, come back to using the array notation\n style = `{...${baseStyle},${animatedStyle},${dynamicStyle || ''}}`\n } else if (dynamicStyle) {\n style = `[${baseStyle},{${dynamicStyle}}]`\n }\n\n state.render.push(` style={${style}}`)\n }\n\n if (containerStyle) {\n state.render.push(` contentContainerStyle={${containerStyle}}`)\n }\n}\n","let blacklist = [\n 'appregion',\n 'backgroundimage',\n 'backgroundsize',\n 'classname',\n 'clippath',\n 'cursor',\n 'fontweight',\n 'format',\n 'goto',\n 'isdisabled',\n 'isfragment',\n 'onclickusediv',\n 'onsubmit',\n 'overflow',\n 'overflowx',\n 'overflowy',\n 'pagebreakinside',\n 'perspective',\n 'rotatez',\n 'scalez',\n 'shadowspread',\n 'texttransform',\n 'transformorigin',\n 'transformoriginz',\n 'transition',\n 'translatez',\n 'type',\n 'userselect',\n]\n\nexport default (node, parent, state) =>\n !blacklist.includes(node.name.toLowerCase())\n","import * as PropertiesStyle from './properties-style.js'\nimport * as PropertyFormat from '../react/property-format.js'\nimport * as PropertyRef from '../react/property-ref.js'\nimport * as PropertyRest from '../react/property-rest.js'\nimport * as PropertyStyle from '../react/property-style.js'\nimport * as PropertyText from '../react/property-text.js'\nimport * as PropertyViewPath from '../react/property-view-path.js'\nimport { isColumn } from '../utils.js'\nimport isValidPropertyForBlock from './is-valid-property-for-block.js'\n\nexport function enter(node, parent, state) {\n if (node.isFragment) return false\n\n PropertiesStyle.enter(node, parent, state)\n PropertyFormat.enter(node, parent, state)\n PropertyViewPath.enter(node, parent, state)\n\n node.properties.forEach(propNode => {\n if (\n propNode.name === 'lazy' ||\n propNode.name === 'at' ||\n propNode.name === 'when' ||\n propNode.name === 'onWhen' ||\n propNode.tags.unsupportedShorthand ||\n (!isValidPropertyForBlock(propNode, node, state) && node.isBasic) ||\n (propNode.name === 'from' &&\n (node.name === 'List' || node.name === 'Table')) ||\n (propNode.name === 'key' && parent.isList) ||\n (propNode.name === 'pass' && node.isList) ||\n (propNode.name === 'opacity' && state.isSvg) ||\n (propNode.name === 'width' && isColumn(node))\n )\n return\n\n !PropertyRef.enter(propNode, node, state) &&\n !PropertyStyle.enter(propNode, node, state) &&\n !PropertyText.enter(propNode, node, state) &&\n PropertyRest.enter(propNode, node, state)\n })\n\n PropertiesStyle.leave(node, parent, state)\n}\n","import { getProp, hasProp } from '../utils.js'\n\nlet SVG_BLOCKS_WITH_OPACITY = [\n 'SvgPath',\n 'SvgCircle',\n 'SvgEllipse',\n 'SvgPolygon',\n 'SvgPolyline',\n 'SvgRect',\n 'SvgText',\n]\n\nexport function enter(node, parent, state) {\n if (node.name === 'Svg' && !parent) {\n state.isSvg = true\n state.svgOpacity = getProp(node, 'opacity')\n } else if (\n state.isSvg &&\n state.svgOpacity &&\n SVG_BLOCKS_WITH_OPACITY.includes(node.name)\n ) {\n if (hasProp(node, 'fill')) {\n node.properties.push({ ...state.svgOpacity, name: 'fillOpacity' })\n }\n\n if (hasProp(node, 'stroke')) {\n node.properties.push({ ...state.svgOpacity, name: 'strokeOpacity' })\n }\n }\n}\n","import { getFlowPath, getProp } from '../utils.js'\nimport getBlockName from './get-block-name.js'\nimport wrap from '../react/wrap.js'\n\nexport let enter = (node, parent, state) => {\n let name = getBlockName(node, parent, state)\n if (\n name === 'Text' &&\n parent &&\n (parent.backgroundImage || parent.ensureBackgroundColor)\n ) {\n node.ensureBackgroundColor = true\n }\n\n if (node.action) {\n let block = 'TouchableWithoutFeedback'\n let isDisabled = getProp(node, 'isDisabled')\n let onClick = getProp(node, 'onClick')\n\n let onPress = wrap(onClick.value)\n\n if (/^on[A-Z]/.test(onClick.name) && onClick.slotName === 'setFlowTo') {\n // TODO warn if action is used but it isn't in actions (on parser)\n // TODO warn that there's setFlowTo without an id (on parser)\n let setFlowTo = getFlowPath(onClick, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n onPress = `{() => setFlowTo('${setFlowTo}')}`\n }\n\n let key = getProp(node, 'key')\n\n state.use(block)\n\n state.render.push(\n `<${block}\n activeOpacity={0.7}\n onPress=${onPress}\n ${isDisabled ? `disabled=${wrap(isDisabled.value)}` : ''}\n underlayColor='transparent'\n ${node.isInList ? `key={${key ? key.value : 'index'}}` : ''}>`\n )\n node.wrapEnd = `</${block}>`\n } else if (node.goTo) {\n // let goTo = getProp(node, 'goTo')\n // TODO https://facebook.github.io/react-native/docs/linking.html\n }\n}\n\nexport let leave = (node, parent, state) => {\n if (node.wrapEnd) {\n state.render.push(node.wrapEnd)\n }\n}\n","import * as BlockAddTestIdProp from '../react/block-add-test-id-prop.js'\nimport * as BlockBackgroundImage from './block-background-image.js'\nimport * as BlockCapture from './block-capture.js'\nimport * as BlockColumn from '../react/block-column.js'\nimport * as BlockExplicitChildren from '../react/block-explicit-children.js'\nimport * as BlockGroup from '../react/block-group.js'\nimport * as BlockInList from '../react/block-in-list.js'\nimport * as BlockList from '../react/block-list.js'\nimport * as BlockMaybeSkip from '../react/block-maybe-skip.js'\nimport * as BlockName from './block-name.js'\nimport * as BlockOffWhen from '../react/block-off-when.js'\nimport * as BlockProperties from './block-properties.js'\nimport * as BlockSetTestId from '../react/block-set-test-id.js'\nimport * as BlockSvg from './block-svg.js'\nimport * as BlockTable from '../react/block-table.js'\nimport * as BlockWrap from './block-wrap.js'\n\nexport let enter = [\n BlockMaybeSkip.enter,\n BlockSetTestId.enter,\n BlockOffWhen.enter,\n BlockWrap.enter,\n BlockName.enter,\n BlockTable.enter,\n BlockColumn.enter,\n BlockSvg.enter,\n BlockCapture.enter,\n BlockBackgroundImage.enter,\n BlockInList.enter,\n BlockAddTestIdProp.enter,\n BlockProperties.enter,\n BlockGroup.enter,\n BlockList.enter,\n]\n\nexport let leave = [\n BlockList.leave,\n BlockExplicitChildren.leave,\n BlockGroup.leave,\n BlockName.leave,\n BlockTable.leave,\n BlockWrap.leave,\n BlockOffWhen.leave,\n]\n","import {\n getProp,\n getScopedCondition,\n isTag,\n maybeMakeHyphenated,\n} from '../utils.js'\n\nexport default function getStyleForProperty(node, parent, state, code) {\n let scopedCondition = getScopedCondition(node, parent, state)\n if (scopedCondition) {\n switch (node.name) {\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return {\n _isScoped: true,\n transform: getTransform(node, parent, state),\n }\n\n default:\n return {\n _isScoped: true,\n [node.name]: getScopedCondition(node, parent, state),\n }\n }\n }\n\n switch (node.name) {\n case 'borderTopLeftRadius':\n case 'borderTopRightRadius':\n case 'borderBottomLeftRadius':\n case 'borderBottomRightRadius':\n return {\n [parent.name === 'Image' ? 'borderRadius' : node.name]: node.value,\n }\n\n case 'borderTopStyle':\n case 'borderBottomStyle':\n case 'borderLeftStyle':\n case 'borderRightStyle':\n return {\n borderStyle: node.value,\n }\n\n case 'shadowColor':\n return decorateShadow({\n shadowColor: node.value,\n })\n\n case 'shadowBlur':\n return decorateShadow({\n shadowRadius: node.value,\n })\n\n case 'shadowOffsetX':\n case 'shadowOffsetY':\n return getShadowOffset(node, parent, state)\n\n case 'fontWeight':\n case 'fontFamily':\n return {\n fontFamily: getFontFamily(node, parent, state),\n }\n\n case 'rotate':\n case 'rotateX':\n case 'rotateY':\n case 'scale':\n case 'scaleX':\n case 'scaleY':\n case 'translateX':\n case 'translateY':\n return {\n transform: getTransform(node, parent, state),\n }\n\n case 'zIndex':\n return {\n zIndex: code ? node.value : parseInt(node.value, 10),\n }\n\n case 'color':\n // TODO handle this but differently as we don't have the placeholder tag anymore\n if (/Capture/.test(parent.name) && isTag(node, 'placeholder')) {\n return {\n _isProp: true,\n placeholderTextColor: node.value,\n }\n }\n // Just returning the node.value in cases where if statement is not true\n // Otherwise it was falling through to the next case.\n return {\n color: node.value,\n }\n\n case 'lineHeight':\n return {\n lineHeight: getLineHeight(node, parent),\n }\n\n default:\n return {\n [node.name]: maybeMakeHyphenated(node),\n }\n }\n}\n\nlet getFontFamily = (node, parent, state) => {\n let fontWeight = getProp(parent, 'fontWeight')\n // let key = node.key.value\n let fontFamily = node.value.replace(/\\s/g, '')\n\n if (fontWeight && (node.tags.slot || fontWeight.tags.slot)) {\n return `\\`${node.tags.slot ? '${props.fontFamily}' : fontFamily}-${\n fontWeight.tags.slot ? '${props.fontWeight}' : fontWeight.value\n }\\``\n }\n\n return fontWeight ? `${fontFamily}-${fontWeight.value}` : fontFamily\n}\n\nlet getLineHeight = (node, parent, state) => {\n let fontSize = getProp(parent, 'fontSize')\n // using a default font size of 16 if none specified\n let fontSizeValue = fontSize ? fontSize.value : 16\n return node.value * fontSizeValue\n}\n\nlet getShadowOffset = (node, parent, state) => {\n let shadowOffsetX = getProp(parent, 'shadowOffsetX')\n let shadowOffsetY = getProp(parent, 'shadowOffsetY')\n\n return decorateShadow({\n // iOS,\n shadowOffset: {\n width: shadowOffsetX ? shadowOffsetX.value : 0,\n height: shadowOffsetY ? shadowOffsetY.value : 0,\n },\n })\n}\n\nlet decorateShadow = obj => {\n obj.elevation = 1 // for Android\n obj.shadowOpacity = 1\n return obj\n}\n\nlet getPropValue = (prop, block, state, unit = '') => {\n if (!prop) return false\n\n let scopedCondition = getScopedCondition(prop, block, state)\n if (scopedCondition) {\n return unit ? `\\`\\${${scopedCondition}}${unit}\\`` : scopedCondition\n }\n\n if (prop.tags.slot) {\n return `\\${${prop.value}}${unit}`\n }\n\n return typeof prop.value === 'number' && unit\n ? `${prop.value}${unit}`\n : prop.value\n}\n\nlet getTransformValue = (prop, parent, state, unit) =>\n prop && {\n [prop.name]: getPropValue(prop, parent, state, unit),\n }\n\nlet getTransform = (node, parent, state) => {\n let rotate = getProp(parent, 'rotate')\n let rotateX = getProp(parent, 'rotateX')\n let rotateY = getProp(parent, 'rotateY')\n let scale = getProp(parent, 'scale')\n let scaleX = getProp(parent, 'scaleX')\n let scaleY = getProp(parent, 'scaleY')\n let translateX = getProp(parent, 'translateX')\n let translateY = getProp(parent, 'translateY')\n\n return [\n getTransformValue(rotate, parent, state, 'deg'),\n getTransformValue(rotateX, parent, state, 'deg'),\n getTransformValue(rotateY, parent, state, 'deg'),\n getTransformValue(scale, parent, state),\n getTransformValue(scaleX, parent, state),\n getTransformValue(scaleY, parent, state),\n getTransformValue(translateX, parent, state),\n getTransformValue(translateY, parent, state),\n ].filter(Boolean)\n}\n","import { hasKeys } from '../utils.js'\n\nexport default ({ styles }) =>\n hasKeys(styles)\n ? `let styles = StyleSheet.create(${JSON.stringify(styles)})`\n : ''\n","import {\n getActionableParent,\n getFlowPath,\n getProp,\n getScopedCondition,\n getScopedImageCondition,\n getScopes,\n hasCustomBlockParent,\n isValidImgSrc,\n pushImageToState,\n} from '../utils.js'\nimport safe from '../react/safe.js'\nimport wrap from '../react/wrap.js'\nimport toCamelCase from 'to-camel-case'\n\nlet isUrl = str => /^https?:\\/\\//.test(str)\n\nfunction getImageSource(node, parent, state) {\n let scopes = getScopes(node, parent, state)\n\n if (scopes && (isUrl(node.value) || node.tags.slot)) {\n return `{{ uri: ${getScopedCondition(node, parent, state)} }}`\n } else if (isUrl(node.value) || node.tags.slot) {\n if (node.defaultValue && !isUrl(node.defaultValue)) {\n state.slots.forEach(item => {\n if (item.defaultValue === node.defaultValue) {\n item.type = 'import'\n let name = toCamelCase(item.defaultValue)\n if (!state.images.includes(item.defaultValue)) {\n state.images.push({\n name,\n file: item.defaultValue,\n })\n }\n item.defaultValue = name\n }\n })\n }\n return `{{ uri: ${node.tags.slot ? node.value : safe(node.value)} }}`\n } else {\n if (scopes) {\n pushImageToState(state, scopes.scopedNames, scopes.paths)\n }\n let name = toCamelCase(node.value)\n if (!state.images.includes(node.value)) {\n state.images.push({\n name,\n file: node.value,\n })\n }\n\n return scopes\n ? wrap(\n getScopedImageCondition(scopes.scopedProps, scopes.scopedNames, name)\n )\n : `{${name}}`\n }\n}\n\nlet CHILD_VALUES = /props\\.(isSelected|isHovered|isFocused|isSelectedHovered)/\nlet ON_IS_SELECTED = /(onClick|onPress|goTo)/\n\nexport default function getValueForProperty(node, parent, state) {\n if (\n state.data &&\n (node.value === '!props.value' ||\n node.value === 'props.value' ||\n node.value === 'props.onSubmit' ||\n node.value === 'props.onChange' ||\n node.value === 'props.isInvalid' ||\n node.value === 'props.isInvalidInitial' ||\n node.value === 'props.isValid' ||\n node.value === 'props.isValidInitial' ||\n node.value === 'props.onSubmit')\n ) {\n return {\n [node.name]: `{${node.value.replace('props.', 'data.')}}`,\n }\n } else if (hasCustomBlockParent(parent) && CHILD_VALUES.test(node.value)) {\n return {\n [node.name]: `{${node.value.replace('props.', 'childProps.')}}`,\n }\n } else if (isValidImgSrc(node, parent)) {\n return (\n !parent.isSvg && {\n source: getImageSource(node, parent, state),\n }\n )\n } else if (getScopedCondition(node, parent, state)) {\n return {\n [node.name]: safe(getScopedCondition(node, parent, state)),\n }\n } else if (/^on[A-Z]/.test(node.name) && node.slotName === 'setFlowTo') {\n let flowPath = getFlowPath(node, parent, state)\n state.use('ViewsUseFlow')\n state.setFlowTo = true\n\n let ret = {\n [node.name]: `{() => setFlowTo('${flowPath}')}`,\n }\n\n if (!parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useFlow = true\n ret[\n node.name.replace(ON_IS_SELECTED, 'isSelected')\n ] = `{flow.has('${flowPath}')}`\n }\n\n if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n ret['...'] = `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`\n }\n\n return ret\n } else if (parent.isBasic && ON_IS_SELECTED.test(node.name)) {\n state.useIsHovered = true\n return {\n '...': `${node.name.replace(ON_IS_SELECTED, 'isHovered')}Bind`,\n [node.name]: safe(node.value, node),\n }\n } else if (\n CHILD_VALUES.test(node.value) &&\n !!getActionableParent(parent) &&\n !parent.isBasic\n ) {\n // TODO support more than one hover/selected in the same block - let's wait\n // for a use case\n if (/isHovered/.test(node.value)) {\n return {\n [node.name]: safe(node.value.replace('props.', ''), node),\n }\n } else if (/isSelected/.test(node.value)) {\n try {\n let actionableParent = getActionableParent(parent)\n let flowPath = getFlowPath(\n getProp(actionableParent, 'onClick'),\n actionableParent,\n state\n )\n state.use('ViewsUseFlow')\n state.useFlow = true\n return {\n [node.name]: `{flow.has('${flowPath}')}`,\n }\n } catch (error) {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n } else {\n return {\n [node.name]: safe(node.value, node),\n }\n }\n}\n","export default state => {\n if (Object.keys(state.styles).length > 0) {\n state.uses.push('StyleSheet')\n }\n}\n","import * as visitor from './react-native/block.js'\nimport getStyleForProperty from './react-native/get-style-for-property.js'\nimport getStyles from './react-native/get-styles.js'\nimport getValueForProperty from './react-native/get-value-for-property.js'\nimport getViewRelativeToView from '../get-view-relative-to-view.js'\nimport makeGetImport from './react/make-get-import.js'\nimport maybeUsesTextInput from './react-native/maybe-uses-text-input.js'\nimport maybeUsesStyleSheet from './react-native/maybe-uses-style-sheet.js'\nimport restrictedNames from './react-native/restricted-names.js'\nimport toComponent from './react/to-component.js'\nimport walk from './walk.js'\n\nlet imports = {\n DismissKeyboard: `import dismissKeyboard from 'dismissKeyboard'`,\n}\n\nexport default ({\n getFontImport,\n getSystemImport,\n local,\n localSupported,\n reactNativeLibraryImport = 'react-native',\n tools,\n track,\n view,\n viewsById,\n viewsToFiles,\n}) => {\n let name = view.id\n let finalName = restrictedNames.includes(name) ? `${name}1` : name\n if (name !== finalName) {\n console.warn(\n `// \"${name}\" is a Views reserved name.\n We've renamed it to \"${finalName}\", so your view should work but this isn't ideal.\n To fix this, change its file name to something else.`\n )\n }\n\n let state = {\n animations: {},\n animated: new Set(),\n images: [],\n data: view.parsed.view.data,\n dataFormat: view.parsed.view.dataFormat,\n dataValidate: view.parsed.view.dataValidate,\n dependencies: new Set(),\n flow: null,\n setFlowTo: false,\n getFontImport: font => getFontImport(font, view),\n getStyleForProperty,\n getValueForProperty,\n hasRefs: false,\n isReactNative: true,\n isStory: id => {\n let viewInView = getViewRelativeToView({\n id,\n view,\n viewsById,\n viewsToFiles,\n })\n\n return viewInView && !viewInView.custom && viewInView.parsed.view.isStory\n },\n lazy: {},\n local,\n locals: {},\n localSupported: [],\n name: finalName,\n viewPath: view.parsed.view.viewPath,\n viewPathParent: view.parsed.view.viewPathParent,\n remap: {},\n render: [],\n styles: {},\n testIdKey: 'testID',\n viewPathKey: 'testID',\n testIds: {},\n tools,\n track,\n reactNativeLibraryImport,\n usedBlockNames: { [finalName]: 1, AutoSizer: 1, Column: 1, Table: 1 },\n uses: [],\n use(block, isLazy = false) {\n if (isLazy) {\n state.lazy[block] = true\n }\n\n if (\n state.uses.includes(block) ||\n /props/.test(block) ||\n 'React.Fragment' === block ||\n block === finalName\n )\n return\n\n state.uses.push(block)\n },\n useIsBefore: view.parsed.view.useIsBefore,\n useIsMedia: view.parsed.view.useIsMedia,\n }\n\n state.fonts = view.parsed.fonts\n state.slots = view.parsed.slots\n state.localSupported = localSupported\n\n walk(view.parsed.view, visitor, state)\n\n maybeUsesTextInput(state)\n maybeUsesStyleSheet(state)\n\n if (state.data) {\n state.use('ViewsUseData')\n }\n\n return {\n code: toComponent({\n getImport: makeGetImport({\n imports,\n getSystemImport,\n view,\n viewsById,\n viewsToFiles,\n }),\n getStyles,\n name: finalName,\n state,\n }),\n dependencies: state.dependencies,\n flow: state.flow,\n flowDefaultState: state.flowDefaultState,\n // fonts: view.parsed.fonts,\n // slots: view.parsed.slots,\n }\n}\n","import reactNativeMorph from './react-native.js'\n\nexport default options =>\n reactNativeMorph({\n ...options,\n reactNativeLibraryImport: '@react-pdf/renderer',\n })\n","import reactDom from './morph/react-dom.js'\nimport reactNative from './morph/react-native.js'\nimport reactPdf from './morph/react-pdf.js'\n\nexport default {\n 'react-dom': reactDom,\n 'react-native': reactNative,\n 'react-pdf': reactPdf,\n}\n","import chalk from 'chalk'\nimport morphers from './morphers.js'\nimport prettier from 'prettier'\n\nexport default function maybeMorph({\n as,\n getFontImport,\n getSystemImport,\n local,\n track,\n tools,\n view,\n viewsById,\n viewsToFiles,\n verbose,\n}) {\n let result = null\n try {\n result = morphers[as]({\n getFontImport,\n getSystemImport,\n // isStory,\n local,\n // localSupported,\n track,\n tools,\n view,\n viewsById,\n viewsToFiles,\n })\n\n view.version++\n\n verbose &&\n console.log(\n `${chalk.green('M')} ${view.id}@${view.version}:${chalk.dim(view.file)}`\n )\n\n return prettier.format(result.code, {\n parser: 'babel',\n singleQuote: true,\n trailingComma: 'es5',\n })\n } catch (error) {\n console.error(chalk.red('M'), view, error.codeFrame || error)\n return `import { useEffect } from 'react'\n\nexport default function ${view.id}() {\n useEffect(() => {\n console.error({\n type: 'morph',\n view: '${view.id}',\n file: '${view.file}',\n todo: \"Report to https://github.com/viewstools/morph/issues/new with .view and .view.js files and what changed when it failed. This will help us improve the morpher. Thanks!\",\n })\n }, [])\n\n return \"😳 Can't morph '${view.id}'. See console for more details.\"\n}\n\n/*\n>>> CODE\n${result && result.code.replace(/(\\/\\*|\\*\\/)/g, '')}\n\n\n>>> ERROR\n${error.message}\n${error.stack}\n*/`\n }\n}\n","import maybeMorph from './maybe-morph.js'\nimport path from 'path'\n\nexport default function morphAllViews({\n as,\n getFontImport,\n getSystemImport,\n local,\n filesView,\n tools,\n track,\n viewsById,\n viewsToFiles,\n}) {\n return [...filesView]\n .map(file => viewsToFiles.get(file))\n .filter(view => !view.custom)\n .map(view => ({\n file: path.join(path.dirname(view.file), 'view.js'),\n content: maybeMorph({\n as,\n getFontImport,\n getSystemImport,\n local,\n tools,\n track,\n verbose: false,\n view,\n viewsById,\n viewsToFiles,\n }),\n }))\n}\n","import chalk from 'chalk'\n\nexport default function maybePrintWarnings(view, verbose) {\n if (!verbose || !view.parsed || view.parsed.warnings.length === 0) return\n\n console.error(chalk.red(view.id), chalk.dim(view.file))\n\n view.parsed.warnings.forEach(warning => {\n console.error(\n ` ${chalk.yellow(warning.loc.start.line)}: ${chalk.blue(\n warning.type\n )} Line: \"${warning.line}\"`\n )\n })\n console.log('')\n}\n","export let STYLE = [\n 'alignContent',\n 'alignItems',\n 'alignSelf',\n 'appRegion',\n 'background',\n 'backgroundColor',\n 'backgroundImage',\n 'backgroundPosition',\n 'backgroundRepeat',\n 'backgroundSize',\n 'backdropFilter',\n 'borderBottomColor',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n 'borderBottomStyle',\n 'borderBottomWidth',\n 'borderColor',\n 'borderLeftColor',\n 'borderLeftStyle',\n 'borderLeftWidth',\n 'borderRightColor',\n 'borderRightStyle',\n 'borderRightWidth',\n 'borderStyle',\n 'borderTopColor',\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderTopStyle',\n 'borderTopWidth',\n 'borderWidth',\n 'bottom',\n 'clipPath',\n 'color',\n 'cursor',\n 'display',\n 'direction',\n 'fill',\n 'filter',\n 'flexGrow',\n 'flexBasis',\n 'flexDirection',\n 'flexFlow',\n 'flexShrink',\n 'flexWrap',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontWeight',\n 'height',\n 'hyphens',\n 'justifyContent',\n 'left',\n 'letterSpacing',\n 'lineHeight',\n 'marginBottom',\n 'marginLeft',\n 'marginRight',\n 'marginTop',\n 'maxHeight',\n 'maxWidth',\n 'minHeight',\n 'minWidth',\n 'opacity',\n 'outlineColor',\n 'outlineOffset',\n 'outlineStyle',\n 'outlineWidth',\n 'overflowWrap',\n 'overflowX',\n 'overflowY',\n 'paddingBottom',\n 'paddingLeft',\n 'paddingRight',\n 'paddingTop',\n 'pointerEvents',\n 'position',\n 'resize',\n 'right',\n 'shadowColor',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'shadowBlur',\n 'shadowSpread',\n 'shadowInset',\n 'stroke',\n 'textAlign',\n 'textDecoration',\n 'textOverflow',\n 'textJustify',\n 'textTransform',\n 'top',\n 'translateX',\n 'translateY',\n 'scale',\n 'scaleX',\n 'scaleY',\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'transformOriginX',\n 'transformOriginY',\n 'transition',\n 'unicodeBidi',\n 'userSelect',\n 'whiteSpace',\n 'width',\n 'wordBreak',\n 'wordSpacing',\n 'wordWrap',\n 'zIndex',\n // '@fontFace',\n // '@keyframes',\n // '@media',\n // 'background',\n // 'backgroundAttachment',\n // 'backgroundBlend-mode',\n // 'backgroundClip',\n // 'backgroundOrigin',\n // 'backgroundPosition',\n // 'backgroundRepeat',\n // 'border',\n // 'borderBottom',\n // 'borderCollapse',\n // 'borderImage',\n // 'borderImageOutset',\n // 'borderImageRepeat',\n // 'borderImageSlice',\n // 'borderImageSource',\n // 'borderImageWidth',\n // 'borderLeft',\n // 'borderRadius',\n // 'borderRight',\n // 'borderSpacing',\n // 'borderTop',\n // 'boxShadow',\n // 'boxSizing',\n // 'captionSide',\n // 'clear',\n // 'clip',\n // 'column-gap',\n // 'columnCount',\n // 'columnFill',\n // 'columnRule',\n // 'columnRuleColor',\n // 'columnRuleStyle',\n // 'columnRuleWidth',\n // 'columnSpan',\n // 'columnWidth',\n // 'columns',\n // 'content',\n // 'counterIncrement',\n // 'counterReset',\n // 'direction',\n // 'display',\n // 'emptyCells',\n // 'float',\n // 'font',\n // 'font-variant',\n // 'fontSizeAdjust',\n // 'fontStretch',\n // 'hangingPunctuation',\n // 'listStyle',\n // 'listStyleImage',\n // 'listStylePosition',\n // 'listStyleType',\n // 'margin',\n // 'nav-up',\n // 'navDown',\n // 'navIndex',\n // 'navLeft',\n // 'navRight',\n 'order',\n // 'outline',\n // 'overflow',\n // 'padding',\n // 'pageBreakAfter',\n // 'pageBreakBefore',\n // 'pageBreakInside',\n 'perspective',\n 'perspectiveOrigin',\n // 'quotes',\n // 'tabSize',\n // 'tableLayout',\n // 'textAlignLast',\n 'textDecorationColor',\n 'textDecorationLine',\n 'textDecorationStyle',\n // 'textIndent',\n // 'textShadow',\n // 'transformStyle',\n // 'transitionDelay',\n // 'transitionDuration',\n // 'transitionProperty',\n // 'transitionTimingFunction',\n // 'unicodeBidi',\n // 'verticalAlign',\n 'visibility',\n]\nexport let ROWSTYLE = [\n 'rowBackgroundColor',\n 'rowBackgroundColorAlternate',\n 'rowColor',\n 'rowColorAlternate',\n]\n\nexport let isStyle = name => STYLE.includes(name)\nexport let isRowStyle = name => ROWSTYLE.includes(name)\n","import Levenshtein from 'levenshtein'\nimport sortBy from 'lodash.sortby'\n\n/**\n * Creates a fuzzy matcher.\n *\n * Usage:\n *\n * ```\n * var m = new Matcher({\n * values: 'init install update upgrade',\n * threshold: 4\n * });\n *\n * m.list('udpate') // [ { value: 'update', distance: 2 }, { value: 'upgrade', distance: 4 } ]\n * m.get('udpate') // { value: 'update', distance: 2 }\n * ```\n *\n * You can also initialize with an array or with a string directly:\n *\n * ```\n * new Matcher('init install update upgrade');\n * new Matcher(['init', 'install', 'update', 'upgrade']);\n * ```\n *\n * @param options {Object} may contain:\n *\n * * `threshold` (number, default `2`) — maximum search distance, increase\n * for more relaxed search\n *\n * * `values` (array or string, default `[]`) — an array of words to match from;\n * if a string is given, values can be separated with comma or whitespace\n *\n * * `caseSensitive` (boolean, default `false`) — ignore case when matching\n */\nvar Matcher = function(options) {\n options = options || {}\n if (typeof options == 'string' || Array.isArray(options))\n options = { values: options }\n this.values = []\n this.threshold = options.threshold || 2\n\n // Try to initialize via `options.values`\n\n if (Array.isArray(options.values)) this.values = options.values\n else if (typeof options.values == 'string')\n this.values = options.values.split(/[, ]\\s*/g)\n\n this.caseSensitive = options.caseSensitive || false\n}\n\n/**\n * Adds values to the dictionary.\n *\n * Usage:\n *\n * ```\n * new Matcher().add('update', 'upgrade', 'delete').get('deete')\n * ```\n *\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.add = function() {\n ;[].push.apply(this.values, arguments)\n return this\n}\n\n/**\n * Chainable helper for settings `this.caseSensitive = false`.\n *\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.ignoreCase = function() {\n this.caseSensitive = false\n return this\n}\n\n/**\n * Chainable helper for settings `this.caseSensitive = true`.\n *\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.matchCase = function() {\n this.caseSensitive = true\n return this\n}\n\n/**\n * Chainable helper for settings `this.threshold`.\n *\n * @param num {Number} new threshold\n * @returns {Matcher} this for chaining\n */\nMatcher.prototype.setThreshold = function(num) {\n this.threshold = num\n return this\n}\n\n/**\n * Calculate distance (how much difference) between two strings\n *\n * @param word1 {String} a string input\n * @param word2 {String} the other string input\n * @returns {Number} Levenshtein distance between word1 and word2\n */\nMatcher.prototype.distance = function(word1, word2) {\n return new Levenshtein(word1, word2).distance\n}\n\n/**\n * Lists all results from dictionary which are similar to `q`.\n *\n * ```\n * new Matcher({\n * values: 'init install update upgrade',\n * threshold: 4\n * }).list('udpdate');\n * // [ { value: 'update', distance: 2 }, { value: 'upgrade', distance: 4 } ]\n * ```\n *\n * The results are sorted by their distance (similarity). The distance of `0` means\n * a strict match.\n *\n * You can increase `threshold` for more relaxed search, or decrease it to shorten the results.\n *\n * @param q {String} — search string\n * @returns {Array} — an array of objects `{ value: String, distance: Number }`\n */\nMatcher.prototype.list = function(q) {\n var m = this\n q = q.trim()\n if (!m.caseSensitive) q = q.toLowerCase()\n var matches = this.values.reduce(function(results, word) {\n var d = m.distance(q, m.caseSensitive ? word : word.toLowerCase())\n if (d > m.threshold) return results\n return results.concat({\n value: word,\n distance: d,\n })\n }, [])\n return sortBy(matches, 'distance')\n}\n\n/**\n * Returns a single closest match (or `null` if no values from the dictionary\n * are similar to `q`).\n *\n * @param q {String} — search string\n * @returns {String} — closest match or `null`\n */\nMatcher.prototype.get = function(q) {\n var closest = this.list(q)[0]\n return closest ? closest.value : null\n}\n\nexport default Matcher\n","export default {\n width: true,\n maxWidth: true,\n minWidth: true,\n height: true,\n maxHeight: true,\n minHeight: true,\n margin: true,\n marginBottom: true,\n marginLeft: true,\n marginRight: true,\n marginTop: true,\n padding: true,\n paddingBottom: true,\n paddingLeft: true,\n paddingRight: true,\n paddingTop: true,\n bottom: true,\n left: true,\n right: true,\n top: true,\n outline: true,\n opacity: true,\n zIndex: true,\n shadowOffsetY: true,\n shadowOffsetX: true,\n shadowSpread: true,\n shadowRadius: true,\n perspective: true,\n scale: true,\n scaleX: true,\n scaleY: true,\n translateX: true,\n translateY: true,\n borderBottomLeftRadius: true,\n borderBottomRightRadius: true,\n borderBottomWidth: true,\n borderLeftWidth: true,\n borderRadius: true,\n borderRightWidth: true,\n borderTopLeftRadius: true,\n borderTopRightRadius: true,\n borderTopWidth: true,\n borderWidth: true,\n fontSize: true,\n fontWeight: true,\n letterSpacing: true,\n lineHeight: true,\n wordSpacing: true,\n}\n","import { isRowStyle, isStyle, STYLE } from './prop-is-style.js'\nimport { fontFamily as googleFontFamilies } from '../morph/fonts.js'\nimport DidYouMeanMatcher from './did-you-mean.js'\nimport isNumber from './prop-is-number.js'\nimport locales from 'i18n-locales'\nimport toSlugCase from 'to-slug-case'\n\nlet LOCAL_SCOPES = locales.map(item => item.replace(/-/g, ''))\n\nlet dymPropMatcher = new DidYouMeanMatcher([\n ...STYLE,\n 'at',\n 'className',\n 'cx',\n 'cy',\n 'd',\n 'data',\n 'xdata',\n 'dataFormat',\n 'defaultValue',\n 'fill',\n 'from',\n 'direction',\n 'id',\n 'is',\n 'key',\n 'maxLength',\n 'max',\n 'min',\n 'onBlur',\n 'onChange',\n 'onClick',\n 'onClickUseDiv',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onFocus',\n 'onFocus',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseUp',\n 'onWheel',\n 'onWhen',\n 'order',\n 'r',\n 'ref',\n 'rx',\n 'ry',\n 'step',\n 'stroke',\n 'stroke',\n 'strokeLinecap',\n 'strokeLinejoin',\n 'strokeMiterlimit',\n 'strokeWidth',\n 'tabIndex',\n 'text',\n 'type',\n 'value',\n 'viewBox',\n 'when',\n 'x',\n 'x1',\n 'x2',\n 'y',\n 'y1',\n 'y2',\n])\n\nexport let makeDidYouMeanBlock = views => {\n let dymBlockMatcher = new DidYouMeanMatcher(\n 'Block|Capture|CaptureTextArea|Children|Horizontal|Image|List|Svg|SvgCircle|SvgEllipse|SvgDefs|SvgGroup|SvgLinearGradient|SvgRadialGradient|SvgLine|SvgPath|SvgPolygon|SvgPolyline|SvgRect|SvgSymbol|SvgText|SvgUse|SvgStop|Text|View|Vertical'\n .split('|')\n .concat(views)\n )\n return block => dymBlockMatcher.get(block)\n}\n\nexport let didYouMeanProp = prop => dymPropMatcher.get(prop)\n\nexport let makeDidYouMeanFontFamily = customFonts => {\n let dymFontFamilyMatcher = new DidYouMeanMatcher(\n googleFontFamilies.concat(customFonts)\n )\n return family => dymFontFamilyMatcher.get(family)\n}\n\nlet ANIMATION = /(.+)(?:\\s)(spring|linear|easeOut|easeInOut|easeIn|ease)(?:\\s?(.*)?)/\nlet BASIC = /^(Block|Capture|CaptureTextArea|Children|Column|Horizontal|Image|List|Svg|SvgCircle|SvgEllipse|SvgDefs|SvgGroup|SvgLinearGradient|SvgRadialGradient|SvgLine|SvgPath|SvgPolygon|SvgPolyline|SvgRect|SvgSymbol|SvgText|SvgUse|SvgStop|Table|Text|View|Vertical)$/i\nlet BLOCK = /^(\\s*)([A-Z][a-zA-Z0-9]*)(\\s+([A-Z][a-zA-Z0-9]*))?$/\nlet BOOL = /^(false|true)$/i\nlet CAPTURE = /^(Capture|CaptureTextArea)$/i\nexport let CAPTURE_TYPES = [\n 'email',\n 'file',\n 'number',\n 'phone',\n 'secure',\n 'text',\n]\nlet COMMENT = /^#(.+)$/\nlet FLOAT = /^-?[0-9]+\\.[0-9]+$/\nlet FONTABLE = /^(Capture|CaptureTextArea|Text)$/\nlet INT = /^-?[0-9]+$/\nlet NOT_GROUP = /^(Image|Text|SvgCircle|SvgEllipse|SvgLine|SvgPath|SvgPolygon|SvgPolyline|SvgRect|SvgText|SvgStop)$/i\nlet PROP = /^([a-z][a-zA-Z0-9]*)(\\s+(.+))?$/\nlet UNSUPPORTED_SHORTHAND = {\n border: ['borderWidth', 'borderStyle', 'borderColor'],\n borderBottom: ['borderBottomWidth', 'borderBottomStyle', 'borderBottomColor'],\n borderTop: ['borderTopWidth', 'borderTopStyle', 'borderTopColor'],\n borderRight: ['borderRightWidth', 'borderRightStyle', 'borderRightColor'],\n borderLeft: ['borderLeftWidth', 'borderLeftStyle', 'borderLeftColor'],\n borderRadius: [\n 'borderTopLeftRadius',\n 'borderTopRightRadius',\n 'borderBottomLeftRadius',\n 'borderBottomRightRadius',\n ],\n boxShadow: [\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'shadowBlur',\n 'shadowSpread',\n 'shadowColor',\n ],\n flex: ['flexGrow', 'flexShrink', 'flexBasis'],\n margin: ['marginTop', 'marginRight', 'marginBottom', 'marginLeft'],\n padding: ['paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft'],\n textShadow: ['shadowOffsetX', 'shadowOffsetY', 'shadowBlur', 'shadowColor'],\n outline: ['outlineWidth', 'outlineStyle', 'outlineColor'],\n overflow: ['overflowX', 'overflowY'],\n transform: [\n 'rotate',\n 'rotateX',\n 'rotateY',\n 'scale',\n 'translateX',\n 'translateY',\n ],\n transformOrigin: ['transformOriginX', 'transformOriginY'],\n}\nlet TRUE = /^true$/i\nlet USER_COMMENT = /^##(.*)$/\n// TODO slot can't start with a number\nlet SLOT = /^<((!)?([a-zA-Z0-9]+))?(\\s+(.+))?$/\n\nexport let is = (thing, line) => thing.test(line)\nexport let isAnimation = line => is(ANIMATION, line)\nexport let isBasic = line => is(BASIC, line)\nexport let isBlock = line => is(BLOCK, line)\nexport let isBool = line => is(BOOL, line)\nexport let isCapture = line => is(CAPTURE, line)\nexport let isColumn = line => line === 'Column'\nexport let isComment = line => is(COMMENT, line)\nexport let isEmptyText = line => line === ''\nexport let isEnd = line => line === ''\nexport let isFloat = line => is(FLOAT, line)\nexport let isFragment = line => line === 'isFragment'\nexport let isFontable = line => is(FONTABLE, line)\nexport let isGroup = line => !is(NOT_GROUP, line) && !isCapture(line)\nexport let isList = line => line === 'List'\nexport let isInt = line => is(INT, line)\nexport let isProp = line => is(PROP, line)\nexport let isSlot = line => is(SLOT, line)\nexport let isTable = line => line === 'Table'\nexport let isUnsupportedShorthand = name => name in UNSUPPORTED_SHORTHAND\nexport { isRowStyle, isStyle }\nexport let isTrue = line => is(TRUE, line)\nexport let isUserComment = line => is(USER_COMMENT, line)\n\nlet get = (regex, line) => line.match(regex)\n\nlet addDefaults = (animationType, properties) => {\n // if (!properties.delay) {\n // properties.delay = 0\n // }\n\n if (animationType !== 'spring' && !properties.duration) {\n properties.duration = 150\n } else if (animationType === 'spring') {\n if (!properties.tension) {\n properties.tension = 170\n }\n if (!properties.friction) {\n properties.friction = 26\n }\n }\n return properties\n}\n\nexport let getAnimation = line => {\n // eslint-disable-next-line\n let [_, defaultValue, animationType, animationValues] = get(ANIMATION, line)\n let properties = {\n curve: animationType,\n }\n\n if (animationValues) {\n let values = animationValues.split(' ')\n for (let i = 0; i < values.length; i = i + 2) {\n properties[values[i]] = getValue(values[i + 1])\n }\n }\n\n addDefaults(animationType, properties)\n\n return {\n id: Object.keys(properties)\n .sort()\n .map(key => `${key}${properties[key]}`)\n .join(''),\n defaultValue: getValue(defaultValue),\n properties,\n }\n}\n\nexport let getBlock = line => {\n // eslint-disable-next-line\n let [_, indentation, is, _1, block] = get(BLOCK, line)\n return {\n block: block || is,\n is: block ? is : null,\n level: Math.floor(indentation.length / 2),\n }\n}\nexport let getComment = line => {\n try {\n return get(COMMENT, line).slice(1)\n } catch (err) {\n return ''\n }\n}\n\nexport let getData = maybeProp => {\n if (!maybeProp) return null\n\n let match = maybeProp.value.match(/^(show|capture)\\s+(.+)$/)\n if (!match) return null\n\n let path = match[2]\n let [context = null] = /\\./.test(path) ? path.split('.') : [path]\n\n return { type: match[1], path, context }\n}\n\nexport let getDataFormat = maybeProp => {\n if (!maybeProp || !maybeProp.value) return null\n let [formatIn, formatOut] = maybeProp.value.split(' ')\n return {\n type: 'js',\n formatIn,\n formatOut,\n }\n}\n\nexport let getDataValidate = maybeProp => {\n if (!maybeProp || !maybeProp.value) return null\n let [value, required] = maybeProp.value.split(' ')\n return {\n type: 'js',\n value,\n required: required === 'required',\n }\n}\n\nexport let getFormat = line => {\n let properties = {}\n let values = line.split(' ')\n let formatKey = values[0]\n\n if (values.length === 2) {\n properties[formatKey] = values[1]\n } else {\n properties[formatKey] = {}\n for (let i = 1; i < values.length; i = i + 2) {\n properties[formatKey][values[i]] = getValue(values[i + 1])\n }\n }\n\n return properties\n}\nexport let getProp = line => {\n // eslint-disable-next-line\n let [_, name, _1, value = ''] = get(PROP, line)\n\n let prop = { name, isSlot: false, value }\n\n if (is(SLOT, value)) {\n let [\n // eslint-disable-next-line\n _2,\n slotIsNot = false,\n slotName = '',\n // eslint-disable-next-line\n _3,\n // eslint-disable-next-line\n defaultValue = '',\n ] = getSlot(value)\n\n prop.isSlot = true\n prop.slotIsNot = slotIsNot === '!'\n prop.slotName = slotName\n prop.value = defaultValue || value\n }\n\n return prop\n}\nexport let getSlot = line => get(SLOT, line).slice(1)\nexport let getUnsupportedShorthandExpanded = (name, value) => {\n let props = UNSUPPORTED_SHORTHAND[name]\n\n if (name === 'borderRadius') {\n let theValue = value.replace('px', '')\n\n return [\n `${props[0]} ${theValue}`,\n `${props[1]} ${theValue}`,\n `${props[2]} ${theValue}`,\n `${props[3]} ${theValue}`,\n ]\n } else if (name.startsWith('border') || name === 'outline') {\n let [width, style, ...color] = value.split(' ')\n\n return [\n `${props[0]} ${width.replace('px', '')}`,\n `${props[1]} ${style}`,\n `${props[2]} ${color.join(' ')}`,\n ]\n } else if (name === 'boxShadow') {\n let [offsetX, offsetY, blurRadius, spreadRadius, ...color] = value.split(\n ' '\n )\n\n return [\n `${props[0]} ${offsetX.replace('px', '')}`,\n `${props[1]} ${offsetY.replace('px', '')}`,\n `${props[2]} ${blurRadius.replace('px', '')}`,\n `${props[3]} ${spreadRadius.replace('px', '')}`,\n `${props[4]} ${color.join(' ')}`,\n ]\n } else if (name === 'textShadow') {\n let [offsetX, offsetY, blurRadius, ...color] = value.split(' ')\n\n return [\n `${props[0]} ${offsetX.replace('px', '')}`,\n `${props[1]} ${offsetY.replace('px', '')}`,\n `${props[2]} ${blurRadius.replace('px', '')}`,\n `${props[3]} ${color.join(' ')}`,\n ]\n } else if (name === 'overflow') {\n return [`${props[0]} ${value}`, `${props[1]} ${value}`]\n } else if (name === 'padding' || name === 'margin') {\n let [top, right, bottom, left] = value.split(' ')\n top = top.replace('px', '')\n right = right ? right.replace('px', '') : top\n bottom = bottom ? bottom.replace('px', '') : top\n left = left ? left.replace('px', '') : right || top\n\n return [\n `${props[0]} ${top}`,\n `${props[1]} ${right}`,\n `${props[2]} ${bottom}`,\n `${props[3]} ${left}`,\n ]\n } else if (name === 'flex') {\n return [`flexGrow ${value}`, 'flexShrink 1', 'flexBasis 0%']\n } else if (name === 'transform') {\n return [`expand the values like: translateX 10`]\n } else if (name === 'transformOrigin') {\n let [x, y] = value.split(' ')\n return [`${props[0]} ${x}`, `${props[1]} ${y || x}`]\n }\n\n return []\n}\nexport let getValue = (value, name) => {\n if (isFloat(value)) {\n return parseFloat(value, 10)\n } else if (isInt(value)) {\n return parseInt(value, 10)\n } else if (isEmptyText(value)) {\n return ''\n } else if (isBool(value)) {\n return isTrue(value)\n } else {\n return maybeMakeHyphenated(value, name)\n }\n}\n\nexport let isLocalScope = name => LOCAL_SCOPES.includes(name)\n\nlet SYSTEM_SCOPES = [\n 'isDisabled',\n 'isFocused',\n // 'isHovered',\n 'isPlaceholder',\n // 'isSelected',\n // TODO do we want to do media queries here?\n]\nexport let isSystemScope = name => SYSTEM_SCOPES.includes(name)\n\nlet isActionable = name => name !== 'onWhen' && /^on[A-Z]/.test(name)\n\nexport let getPropType = (block, name, defaultValue) =>\n block.isList && name === 'from'\n ? 'array'\n : isActionable(name)\n ? 'function'\n : isNumber[name]\n ? 'number'\n : 'string'\n\nlet MAYBE_HYPHENATED_STYLE_PROPS = [\n 'alignContent',\n 'alignItems',\n 'alignSelf',\n 'backgroundBlendMode',\n 'backgroundClip',\n 'backgroudOrigin',\n 'backgroundRepeat',\n 'boxSizing',\n 'clear',\n 'cursor',\n 'flexBasis',\n 'flexDirection',\n 'flexFlow',\n 'flexWrap',\n 'float',\n 'fontStretch',\n 'justifyContent',\n 'objectFit',\n 'overflowWrap',\n 'textAlign',\n 'textDecorationLine',\n 'textTransform',\n 'whiteSpace',\n 'wordBreak',\n]\n\nexport let maybeMakeHyphenated = (value, name) =>\n MAYBE_HYPHENATED_STYLE_PROPS.includes(name) && /^[a-zA-Z]+$/.test(value)\n ? toSlugCase(value)\n : value\n\nexport function sortScopes(scopes) {\n let isHovered = scopes.find(item => item.slotName === 'isHovered')\n let isSelected = scopes.find(item => item.slotName === 'isSelected')\n let isSelectedHovered = scopes.find(\n item => item.slotName === 'isSelectedHovered'\n )\n\n return [\n isSelectedHovered,\n isSelected,\n isHovered,\n ...scopes.filter(\n item => !/^(isHovered|isSelected|isSelectedHovered)$/.test(item.slotName)\n ),\n ].filter(Boolean)\n}\n","export default (line, scolumn, ecolumn) => ({\n start: {\n line,\n column: scolumn,\n },\n end: {\n line,\n column: ecolumn,\n },\n})\n","import {\n isAnimation,\n isRowStyle,\n isFragment,\n isStyle,\n isUnsupportedShorthand,\n} from './helpers.js'\n\nlet SLOT_PROPS = [\n 'onBlur',\n 'onChange',\n 'onClick',\n 'onDrag',\n 'onDragEnd',\n 'onDragEnter',\n 'onDragExit',\n 'onDragLeave',\n 'onDragOver',\n 'onDragStart',\n 'onDrop',\n 'onFocus',\n 'onFocus',\n 'onMouseDown',\n 'onMouseEnter',\n 'onMouseLeave',\n 'onMouseMove',\n 'onMouseOver',\n 'onMouseUp',\n 'onWheel',\n 'onWhen',\n 'when',\n]\nlet shouldBeSlot = (prop, block) =>\n SLOT_PROPS.includes(prop) || (block.isList && prop === 'from')\n\nexport default ({ name, isSlot, slotIsNot, value, block }) => {\n let tags = {}\n\n if (isAnimation(value) && name !== 'text') tags.animation = true\n if (isStyle(name)) tags.style = true\n if (isRowStyle(name)) {\n tags.style = true\n tags.rowStyle = true\n }\n if (\n isUnsupportedShorthand(name) &&\n block.isBasic &&\n !block.name.startsWith('Svg')\n ) {\n tags.unsupportedShorthand = true\n }\n\n if (shouldBeSlot(name, block)) tags.shouldBeSlot = true\n if (isSlot) tags.slot = true\n if (slotIsNot) tags.slotIsNot = true\n\n tags.validSlot = tags.slot || (tags.shouldBeSlot && tags.slot) || null\n\n if (isFragment(name)) tags.fragment = true\n\n return tags\n}\n","import {\n CAPTURE_TYPES,\n makeDidYouMeanBlock,\n didYouMeanProp,\n getAnimation,\n getBlock,\n getComment,\n getData,\n getDataFormat,\n getDataValidate,\n getFormat,\n getProp,\n getPropType,\n getUnsupportedShorthandExpanded,\n getValue,\n isBasic,\n isBlock,\n isCapture,\n isColumn,\n isComment,\n isFontable,\n isGroup,\n isList,\n isProp,\n isTable,\n isLocalScope,\n isSystemScope,\n isUserComment,\n makeDidYouMeanFontFamily,\n sortScopes,\n} from './helpers.js'\nimport { isGoogleFont } from '../morph/fonts.js'\nimport getLoc from './get-loc.js'\nimport getTags from './get-tags.js'\nimport path from 'path'\n\nexport default ({\n convertSlotToProps = true,\n customFonts,\n enableLocalScopes = true,\n enableSystemScopes = true,\n file,\n id,\n skipComments = true,\n skipInvalidProps = true,\n warnMissingDefaultValue = false,\n source,\n src,\n views,\n}) => {\n // convert crlf to lf\n let text = source.replace(/\\r\\n/g, '\\n')\n let rlines = text.split('\\n')\n let lines = rlines.map(line => line.trimRight())\n let fonts = []\n let isDefiningChildrenExplicitly = false\n let locals = []\n let stack = []\n let slots = []\n let useIsBefore = false\n let useIsMedia = false\n let topBlockShouldBe = file.endsWith('.view') ? 'View' : 'Block'\n let view = null\n let viewsInView = new Set()\n let warnings = []\n\n let didYouMeanBlock = makeDidYouMeanBlock([...views.keys()])\n let didYouMeanFontFamily = makeDidYouMeanFontFamily(\n [...customFonts.keys()].map(id => id.split('-')[0])\n )\n\n let blockIds = []\n function getBlockId(node) {\n let maybeId = node.is || node.name\n\n if (!blockIds.includes(maybeId)) {\n blockIds.push(maybeId)\n return maybeId\n }\n\n let index = 1\n while (blockIds.includes(`${maybeId}${index}`)) {\n index++\n }\n let id = `${maybeId}${index}`\n blockIds.push(id)\n return id\n }\n\n function lookForFonts(block) {\n if (block.properties && (isFontable(block.name) || !block.isBasic)) {\n let fontFamilyProp = block.properties.find(p => p.name === 'fontFamily')\n if (!fontFamilyProp) return\n\n let family = fontFamilyProp.value\n\n let fontWeightProp = block.properties.find(p => p.name === 'fontWeight')\n let weight = fontWeightProp ? fontWeightProp.value.toString() : '400'\n\n let fontStyleProp = block.properties.find(p => p.name === 'fontStyle')\n let style = fontStyleProp ? fontStyleProp.value.toString() : 'normal'\n\n if (\n !fonts.find(\n font =>\n font.family === family &&\n font.weight === weight &&\n font.style === style\n )\n ) {\n let font = {\n id: `${family}-${weight}${style === 'italic' ? '-italic' : ''}`,\n isGoogleFont: isGoogleFont(family),\n family,\n weight,\n style,\n }\n\n if (font.isGoogleFont || customFonts.has(font.id)) {\n fonts.push(font)\n } else {\n let meant = didYouMeanFontFamily(family)\n if (meant && meant !== family) {\n warnings.push({\n loc: fontFamilyProp.loc,\n type: `The font \"${family}\" is missing. Did you mean \"${meant}\" instead?\\nIf not, download the font files (eg, \"${font.id}.woff2\", \"${font.id}.woff\", \"${font.id}.ttf\", etc) and add the to the \"Fonts\" folder.`,\n line: lines[fontFamilyProp.loc.start.line - 1],\n })\n } else if (!font.weight.startsWith('props.')) {\n warnings.push({\n loc: fontFamilyProp.loc,\n type: `The font \"${family}\" is missing.\\nDownload the font files (eg, \"${font.id}.woff2\", \"${font.id}.woff\", \"${font.id}.ttf\", etc) and add the to the \"Fonts\" folder.`,\n line: lines[fontFamilyProp.loc.start.line - 1],\n })\n }\n }\n }\n }\n }\n\n function lookForMultiples(block) {\n let freq = {}\n block.properties.forEach(prop => {\n if (!(prop.name in freq)) {\n freq[prop.name] = 0\n }\n freq[prop.name]++\n })\n\n let multiples = Object.keys(freq).filter(name => freq[name] > 1)\n\n if (multiples.length > 0) {\n multiples.forEach(name =>\n warnings.push({\n loc: block.loc,\n type: `You have declared a value for ${name} ${freq[name]} times. Only the last value will be used. Delete the ones you don't use.`,\n line: lines[block.loc.start.line - 1],\n })\n )\n }\n }\n\n function end(block, endLine) {\n block.loc.end = {\n line: endLine + 1,\n column: Math.max(0, lines[endLine].length - 1),\n }\n\n if (!block.properties) {\n block.properties = []\n }\n\n if (\n block.name === 'List' &&\n !block.properties.some(prop => prop.name === 'from')\n ) {\n warnings.push({\n loc: block.loc,\n type: `A List needs \"from <\" to work`,\n line: lines[block.loc.start.line - 1],\n })\n }\n\n if (stack.length === 0) {\n // if we're the last block on the stack, then this is the view!\n view = block\n return true\n }\n return false\n }\n\n function parseBlock(line, i) {\n let { block: name, is, level } = getBlock(line)\n let shouldPushToStack = false\n\n let isChildren = name === 'Children'\n if (isChildren) {\n isDefiningChildrenExplicitly = true\n }\n\n let block = {\n type: 'Block',\n name,\n animations: {},\n isAnimated: false,\n isBasic: isBasic(name),\n isCapture: isCapture(name),\n isColumn: isColumn(name),\n isGroup: false,\n isChildren,\n level,\n loc: getLoc(i + 1, 0),\n properties: [],\n scopes: [],\n }\n\n let meant = didYouMeanBlock(name)\n if (meant) {\n if (meant !== name) {\n warnings.push({\n loc: block.loc,\n type: `\"${name}\" doesn't exist and won't be morphed. Did you mean \"${meant}\" instead of \"${name}\"?`,\n line,\n })\n block.skip = true\n }\n } else {\n warnings.push({\n loc: block.loc,\n type: `\"${name}\" doesn't exist and won't be morphed.\\nCreate the view or rename the block to point to the right view.`,\n line,\n })\n block.skip = true\n }\n\n if (id === name) {\n warnings.push({\n loc: block.loc,\n type: `Is this a typo? You can't use the view within itself.\\nRename the view or use a different block instead of ${name} here. This won't be morphed to avoid loops.`,\n line,\n })\n block.skip = true\n }\n\n if (!block.isBasic) {\n viewsInView.add(block.name)\n }\n\n if (is) {\n block.is = is\n }\n block.id = getBlockId(block)\n\n let last = stack[stack.length - 1]\n while (last && last.level >= block.level) {\n end(stack.pop(), i)\n last = stack[stack.length - 1]\n }\n\n if (last) {\n shouldPushToStack = true\n\n if (last.isGroup) {\n if (last.isList) {\n if (block.isBasic) {\n warnings.push({\n loc: block.loc,\n type: `A basic block \"${block.name}\" can't be inside a List. Use a view you made instead.`,\n line,\n blocker: true,\n })\n } else if (last.children.length > 0) {\n warnings.push({\n loc: block.loc,\n type: `A List can only have one view inside. \"${block.name}\" is outside of it. Put 1 empty line before.`,\n line,\n })\n } else {\n last.children.push(block)\n }\n } else if (block.isColumn && !last.isTable) {\n warnings.push({\n loc: block.loc,\n type: `Only tables can contain columns. Put this column directly inside a table.`,\n line,\n })\n } else {\n last.children.push(block)\n }\n } else {\n end(stack.pop(), i)\n\n // inside a block that isn't a group\n if (last.isBasic) {\n warnings.push({\n loc: block.loc,\n type: `${block.is || block.name} is inside a block ${last.is ||\n last.name} but ${\n last.name\n } isn't a container and can't have blocks inside of it.\\nIndent it one level less.`,\n line,\n })\n } else {\n warnings.push({\n loc: block.loc,\n type: `${block.is ||\n block.name} is inside a view. While that's allowed for now, it may break in the future. Ideally, you'd refactor it into its specific own view.`,\n line,\n })\n }\n }\n } else if (view !== null) {\n warnings.push({\n loc: block.loc,\n type: `${block.is ||\n block.name} is outside of the top block and it won't render. Views relies on indentation to nest child views within ${topBlockShouldBe} blocks\\nTo fix it, either:\\na) Indent ${block.is ||\n block.name} within the top block and indent all nested views within ${block.is ||\n block.name}, or\\nb) remove it.`,\n line,\n })\n }\n\n if (isGroup(name)) {\n block.isGroup = true\n block.isList = isList(name)\n block.isTable = isTable(name)\n block.children = []\n }\n\n if (block.isBasic && (block.name === 'View' || block.name === 'Block')) {\n block.isFragment = true\n if (stack.length > 0) {\n warnings.push({\n type: `A view can only have one ${block.name} block. Maybe you want to split this block into another view?`,\n line,\n loc: block.loc,\n })\n }\n } else if (stack.length === 0) {\n warnings.push({\n type: `A view must start with a ${topBlockShouldBe} block. ${block.name} isn't valid.\\nWrap everything within a ${topBlockShouldBe} block at the top.`,\n line,\n loc: block.loc,\n })\n }\n\n if (shouldPushToStack || stack.length === 0) {\n stack.push(block)\n }\n\n parseProps(i, block, last)\n lookForFonts(block)\n lookForMultiples(block)\n }\n\n function parseProps(i, block) {\n let endOfBlockIndex = i\n while (\n endOfBlockIndex < lines.length - 1 &&\n !isBlock(lines[endOfBlockIndex + 1])\n ) {\n endOfBlockIndex++\n }\n\n let properties = []\n let scopes = []\n let scope\n let inScope = false\n\n for (let j = i; j <= endOfBlockIndex; j++) {\n let line = lines[j].trim()\n\n let propNode = null\n\n if (isProp(line)) {\n let { name, isSlot, slotName, slotIsNot, value } = getProp(line)\n let loc = getLoc(j + 1, line.indexOf(name), line.length - 1)\n let tags = getTags({\n name,\n isSlot,\n slotIsNot,\n value,\n block,\n })\n\n if (block.isBasic) {\n if (tags.unsupportedShorthand) {\n warnings.push({\n loc,\n type: `The shorthand ${name} isn't supported. You need to expand it like:\\n${getUnsupportedShorthandExpanded(\n name,\n value\n ).join('\\n')}`,\n line,\n })\n } else {\n let meant = didYouMeanProp(name)\n if (meant && meant !== name) {\n warnings.push({\n loc,\n type: `Did you mean \"${meant}\" instead of \"${name}\"?`,\n line,\n })\n }\n }\n\n if (tags.fragment && block.isGroup) {\n if (isSlot) {\n warnings.push({\n loc,\n type: `The isFragment prop can't be a slot. You need to change it to isFragment true. Treating it as true for now.`,\n line,\n })\n }\n block.isFragment = true\n }\n\n if (block.type === 'Capture' && !CAPTURE_TYPES.includes(value)) {\n if (/textarea/i.test(value)) {\n warnings.push({\n loc,\n type: `Invalid type ${value} for Capture. Perhaps you want to use a CaptureTextArea block instead? Using type text as a default.`,\n line,\n })\n } else {\n warnings.push({\n loc,\n type: `Invalid type ${value} for Capture. You can use ${CAPTURE_TYPES.join(\n ', '\n )}. Using type text as a default.`,\n line,\n })\n }\n value = 'text'\n }\n } else {\n if (name === 'lazy') {\n block.isLazy = true\n }\n }\n\n if (name === 'when') {\n let isSystem = enableSystemScopes && isSystemScope(slotName)\n let isLocal = enableLocalScopes && isLocalScope(slotName)\n\n if (isLocal) {\n if (!locals.includes(value)) {\n locals.push(slotName)\n }\n }\n\n if (value === '' || value === '<' || value === '<!') {\n warnings.push({\n loc,\n type:\n 'This when has no condition assigned to it. Add one like: \"when <isCondition\"',\n line,\n })\n if (skipInvalidProps) continue\n } else if (!tags.validSlot) {\n warnings.push({\n loc,\n type: `The slot name \"${name}\" isn't valid. Fix it like: \"when <isCondition\" `,\n line,\n })\n if (skipInvalidProps) continue\n }\n\n if (isSystem && slotIsNot) {\n warnings.push({\n loc,\n type: `\"${slotName}\" is a system slot and it can't take a \"!\" in its value. Replace the line for: \"when <${slotName}\".`,\n })\n }\n\n // TODO warning\n // if (isLocal && (name !== 'text' || name !== 'placeholder')) {\n // }\n\n tags.scope = value\n inScope = true\n scope = {\n isLocal,\n isSystem,\n defaultValue: getValue(value, name),\n value,\n name,\n slotName,\n slotIsNot: isSystem || isLocal ? false : slotIsNot,\n properties: [],\n }\n\n if (convertSlotToProps) {\n scope.value = slotName\n\n if (slotName === 'isBefore') {\n useIsBefore = true\n } else if (/!?isMedia.+/.test(slotName)) {\n scope.value = `isMedia.${slotName\n .replace('isMedia', '')\n .toLowerCase()}`\n useIsMedia = true\n } else if (!isSystem && !isLocal) {\n scope.value = `${slotIsNot ? '!' : ''}props.${slotName || name}`\n }\n }\n\n scopes.push(scope)\n } else if ((tags.slot || tags.shouldBeSlot) && !tags.validSlot) {\n if ((name === 'from' && block.name === 'List') || name !== 'from') {\n warnings.push({\n loc,\n type: `The value you used in the slot \"${name}\" is invalid`,\n line,\n })\n if (skipInvalidProps) continue\n }\n }\n\n if (name === 'onWhen' && properties.length > 0) {\n warnings.push({\n type: `Put onWhen at the top of the block. It's easier to see it that way!`,\n line,\n loc,\n })\n }\n\n if (name === 'onWhen' && /!?isMedia.+/.test(slotName)) {\n useIsMedia = true\n }\n\n if (name === 'format') {\n block.format = getFormat(value)\n }\n\n if (value === '' && name !== 'text') {\n warnings.push({\n loc,\n type: `\"${name}\" has no value. Please give it a value.`,\n line,\n })\n if (skipInvalidProps) continue\n }\n\n propNode = {\n type: 'Property',\n loc,\n name,\n tags,\n value: getValue(value, name),\n }\n\n if (tags.animation && scope) {\n block.isAnimated = true\n\n let currentAnimation = getAnimation(value)\n propNode.value = currentAnimation.defaultValue\n propNode.animation = currentAnimation.properties\n\n if (propNode.animation.curve === 'spring') {\n block.hasSpringAnimation = true\n } else {\n block.hasTimingAnimation = true\n }\n\n if (!block.animations[currentAnimation.id]) {\n block.animations[currentAnimation.id] = {\n index: Object.keys(block.animations).length,\n animation: currentAnimation,\n props: {},\n }\n }\n propNode.animationIndexOnBlock =\n block.animations[currentAnimation.id].index\n\n if (!block.animations[currentAnimation.id].props[name]) {\n let baseValue = null\n let baseProp = properties.find(prop => prop.name === name)\n if (baseProp) {\n baseValue = baseProp.value\n }\n\n block.animations[currentAnimation.id].props[name] = {\n name,\n scopes: [],\n value: baseValue,\n }\n }\n\n block.animations[currentAnimation.id].props[name].scopes.push({\n name: scope.slotName,\n value: currentAnimation.defaultValue,\n })\n }\n\n if (scope) {\n propNode.scope = scope.slotName\n }\n\n if (tags.slot) {\n let needsDefaultValue = !tags.shouldBeSlot && /</.test(propNode.value)\n\n if (typeof propNode.value === 'string') {\n propNode.value = propNode.value.replace(/^</, '')\n }\n\n propNode.slotName = slotName\n\n if (name !== 'when' || (name === 'when' && !scope.isSystem)) {\n propNode.defaultValue = propNode.value\n\n if (convertSlotToProps) {\n propNode.value = `${slotIsNot ? '!' : ''}props.${slotName ||\n name}`\n }\n\n if (needsDefaultValue) {\n if (name === 'text' && block.name === 'Text') {\n propNode.defaultValue = ''\n } else {\n propNode.defaultValue = false\n\n if (\n warnMissingDefaultValue &&\n block.isBasic &&\n (propNode.tags.style ||\n (block.name === 'Text' && propNode.name === 'text'))\n ) {\n warnings.push({\n loc,\n type: `Add a default value to \"${name}\" like: \"${name} <${slotName} default value\"`,\n line,\n })\n }\n }\n }\n\n if (\n !inScope &&\n !propNode.tags.fragment &&\n !slots.some(vp => vp.name === (slotName || name))\n ) {\n slots.push({\n name: slotName || name,\n type: getPropType(block, name, value),\n defaultValue: tags.shouldBeSlot ? false : propNode.defaultValue,\n })\n }\n }\n }\n } else if (isComment(line) && !skipComments) {\n let [value] = getComment(line)\n\n let userComment = isUserComment(line)\n if (userComment) {\n value = getComment(value)\n }\n\n propNode = {\n type: 'Property',\n loc: getLoc(j + 1, 0, line.length - 1),\n value,\n tags: { comment: true, userComment },\n }\n }\n\n if (propNode) {\n block.loc.end = propNode.loc.end\n\n if (inScope) {\n if (\n propNode.name !== 'when' &&\n !propNode.tags.comment &&\n !properties.some(baseProp => baseProp.name === propNode.name)\n ) {\n warnings.push({\n loc: propNode.loc,\n type: `You're missing a base prop for ${propNode.name}. Add it before all whens on the block.`,\n line,\n })\n }\n\n scope.properties.push(propNode)\n } else {\n properties.push(propNode)\n }\n }\n }\n\n block.properties = properties\n block.scopes = sortScopes(scopes)\n\n if (block.name !== 'View' && block.isFragment) {\n let invalidProps = properties\n .filter(prop => prop.name !== 'isFragment' || prop.name !== 'onWhen')\n .map(prop => prop.name)\n\n if (invalidProps.length > 0) {\n warnings.push({\n type: `A fragment can only have isFragment and onWhen props.\\nEvery other prop will be dismissed.\\nEither remove ${invalidProps.join(\n ', '\n )} or remove isFragment.`,\n loc: block.loc,\n line: rlines[i],\n })\n }\n }\n }\n\n lines.forEach((line, i) => {\n if (line !== rlines[i].trimRight()) {\n warnings.push({\n type: `You have some spaces before or after this line. Clean them up.`,\n loc: {\n start: {\n line: i + 1,\n },\n },\n line: rlines[i],\n })\n }\n\n if (isBlock(line)) {\n parseBlock(line, i)\n }\n })\n\n if (stack.length > 0) {\n while (!end(stack.pop(), lines.length - 1)) {}\n }\n\n if (!view) {\n view = {\n type: 'Block',\n name: id,\n animations: {},\n isAnimated: false,\n isBasic: true,\n isCapture: false,\n isColumn: false,\n isGroup: false,\n isChildren: false,\n level: 0,\n loc: getLoc(1, 0),\n properties: [],\n scopes: [],\n }\n\n warnings.push({\n loc: view.loc,\n type: `The file for ${id} is empty and won't render! Add some blocks to it like:\\n${topBlockShouldBe}\\n Text\\n text content`,\n line: '',\n })\n }\n\n let flowProp = view.properties.find(p => p.name === 'is')\n if (flowProp) {\n view.isStory = true\n view.flow = flowProp.value\n view.viewPath = path.dirname(file.replace(src.replace(/\\\\/g, '/'), ''))\n view.viewPathParent = path.dirname(view.viewPath)\n\n view.data = getData(view.properties.find(p => p.name === 'data'))\n view.dataFormat = getDataFormat(\n view.properties.find(p => p.name === 'dataFormat')\n )\n view.dataValidate = getDataValidate(\n view.properties.find(p => p.name === 'dataValidate')\n )\n } else {\n view.isStory = false\n }\n\n view.isDefiningChildrenExplicitly = isDefiningChildrenExplicitly\n view.useIsBefore = useIsBefore\n view.useIsMedia = useIsMedia\n view.views = viewsInView\n\n return {\n fonts,\n locals,\n slots,\n view,\n warnings,\n }\n}\n","import path from 'path'\n\nlet getFileDepth = file => file.split(path.sep).length - 1\n\nlet sortByFileDepth = (a, b) => {\n let depthA = getFileDepth(a)\n let depthB = getFileDepth(b)\n let depthDelta = depthA - depthB\n\n if (depthDelta !== 0) return depthDelta\n\n return a < b ? 1 : a > b ? -1 : 0\n}\n\nexport default function sortSetsInMap(map) {\n for (let [key, value] of map) {\n if (value.size <= 1) continue\n\n map.set(key, new Set([...value].sort(sortByFileDepth)))\n }\n}\n","import maybePrintWarnings from './maybe-print-warnings.js'\nimport parse from './parse/index.js'\nimport sortSetsInMap from './sort-sets-in-map.js'\n\nexport default function parseViews({\n customFonts,\n filesView,\n src,\n verbose,\n viewsById,\n viewsToFiles,\n}) {\n for (let file of filesView) {\n let view = viewsToFiles.get(file)\n\n if (view.custom) continue\n\n view.parsed = parse({\n customFonts,\n file,\n id: view.id,\n src,\n source: view.source,\n views: viewsById,\n })\n\n maybePrintWarnings(view, verbose)\n }\n sortSetsInMap(viewsById)\n}\n","import path from 'path'\n\nlet EXTENSIONS = ['view.blocks', 'logic.js', 'react.js']\n\nexport default function getViewIdFromFile(file) {\n let extension = EXTENSIONS.find(item => file.endsWith(item))\n\n if (!extension) {\n throw new Error(\n `Can't recognise the extension of \"${file}\" to get a view's id.`\n )\n }\n\n return path.basename(path.dirname(file))\n}\n","import addToMapSet from './add-to-map-set.js'\nimport getViewIdFromFile from './get-view-id-from-file.js'\n\nexport default function processViewCustomFiles({\n filesViewCustom,\n viewsById,\n viewsToFiles,\n}) {\n for (let file of filesViewCustom) {\n let id = getViewIdFromFile(file)\n\n addToMapSet(viewsById, id, file)\n\n viewsToFiles.set(file, {\n custom: true,\n file,\n id,\n logic: false,\n source: null,\n version: 0,\n })\n }\n}\n","import { promises as fs } from 'fs'\nimport addToMapSet from './add-to-map-set.js'\nimport getViewIdFromFile from './get-view-id-from-file.js'\nimport path from 'path'\n\nexport default async function processViewFiles({\n filesView,\n filesViewLogic,\n viewsById,\n viewsToFiles,\n}) {\n for await (let file of filesView) {\n let id = getViewIdFromFile(file)\n\n addToMapSet(viewsById, id, file)\n\n let view = viewsToFiles.has(file) ? viewsToFiles.get(file) : {}\n let logic = path.join(path.dirname(file), 'logic.js')\n\n viewsToFiles.set(file, {\n ...view,\n custom: false,\n file,\n id,\n logic: filesViewLogic.has(logic) && logic,\n source: await fs.readFile(file, 'utf8'),\n version: view.version ? view.version + 1 : 0,\n })\n }\n}\n","import {\n makeGetFontImport,\n morphAllFonts,\n processCustomFonts,\n} from './fonts.js'\nimport { promises as fs } from 'fs'\nimport ensureData from './ensure-data.js'\nimport ensureFlow from './ensure-flow.js'\nimport ensureIsBefore from './ensure-is-before.js'\nimport ensureIsHovered from './ensure-is-hovered.js'\nimport ensureIsMedia from './ensure-is-media.js'\nimport ensureTools from './ensure-tools.js'\nimport makeGetSystemImport from './make-get-system-import.js'\nimport morphAllViews from './morph-all-views.js'\nimport parseViews from './parse-views.js'\nimport processViewCustomFiles from './process-view-custom-files.js'\nimport processViewFiles from './process-view-files.js'\n\nexport default function makeMorpher({\n as = 'react-dom',\n local = 'en',\n src,\n tools = false,\n track = false,\n verbose = true,\n}) {\n let state = {\n as,\n local,\n src,\n tools,\n track,\n verbose,\n customFonts: new Map(),\n viewsById: new Map(),\n viewsToFiles: new Map(),\n }\n\n state.processFiles = async function processFiles({\n filesFontCustom = new Set(),\n filesView = new Set(),\n filesViewCustom = new Set(),\n filesViewLogic = new Set(),\n }) {\n if (filesFontCustom.size > 0) {\n processCustomFonts({\n customFonts: state.customFonts,\n filesFontCustom,\n })\n }\n\n // detect .view files\n await processViewFiles({\n filesView,\n filesViewLogic,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n // detect .js files meant to be custom views with \"// @view\" at the top\n processViewCustomFiles({\n filesViewCustom,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n // TODO optimise\n // parse views\n parseViews({\n customFonts: state.customFonts,\n filesView,\n src: state.src,\n verbose: state.verbose,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n let morphedFonts = morphAllFonts({\n as: state.as,\n customFonts: state.customFonts,\n filesView,\n src: state.src,\n viewsToFiles: state.viewsToFiles,\n })\n\n // TODO optimise\n // morph views\n let morphedViews = morphAllViews({\n as: state.as,\n filesView,\n getFontImport: makeGetFontImport(state.src),\n getSystemImport: makeGetSystemImport(state.src),\n local: state.local,\n tools: state.tools,\n track: state.track,\n viewsById: state.viewsById,\n viewsToFiles: state.viewsToFiles,\n })\n\n let filesToWrite = [\n ...morphedFonts,\n ...morphedViews,\n // TODO optimise, only if they changed, cache, etc\n await ensureData(state),\n await ensureFlow(state),\n await ensureTools(state),\n await ensureIsBefore(state),\n await ensureIsHovered(state),\n await ensureIsMedia(state),\n ].filter(Boolean)\n\n await Promise.all(\n filesToWrite.map(({ file, content }) =>\n fs.writeFile(file, content, 'utf-8')\n )\n )\n }\n\n return state\n}\n","export default function getPointsOfUse({ view, viewsToFiles }) {\n let filesView = new Set([view.file])\n let filesViewLogic = new Set()\n let viewsId = new Set()\n\n if (view.logic) {\n filesViewLogic.add(view.logic)\n }\n\n for (let viewInView of viewsToFiles.values()) {\n if (viewInView.custom) continue\n\n if (viewInView.parsed.view.views.has(view.id)) {\n filesView.add(viewInView.file)\n if (viewInView.logic) {\n filesViewLogic.add(viewInView.logic)\n }\n viewsId.add(viewInView.id)\n }\n }\n\n return { filesView, filesViewLogic, viewsId }\n}\n","import {\n MATCH,\n isFontCustomFile,\n isViewCustomFile,\n isViewFile,\n isViewLogicFile,\n} from './match-files.js'\nimport { promises as fs, existsSync } from 'fs'\nimport { getFontId } from './fonts.js'\nimport chalk from 'chalk'\nimport chokidar from 'chokidar'\nimport getPointsOfUse from './get-points-of-use.js'\nimport path from 'path'\n\nexport default async function watchFiles({ morpher }) {\n let watcher = chokidar.watch(MATCH, {\n cwd: morpher.src,\n ignored: [\n path.join('**', 'node_modules', '**'),\n path.join('**', 'view.js'),\n path.join('**', 'DesignSystem', 'Fonts', '*.js'),\n path.join('**', 'Logic', 'ViewsFlow.js'),\n path.join('**', 'Logic', 'useIsMedia.js'),\n path.join('**', 'Logic', 'useIsBefore.js'),\n path.join('**', 'Logic', 'useIsHovered.js'),\n path.join('**', 'Logic', 'ViewsTools', 'logic.js'),\n path.join('**', 'Data', 'ViewsData.js'),\n ],\n ignoreInitial: true,\n awaitWriteFinish: true,\n })\n\n let skipTimeout = null\n let processEventsPromise = null\n let queue = []\n\n function onEvent({ file, op }) {\n queue.push({ file: path.join(morpher.src, file), op })\n\n maybeProcess()\n }\n\n function maybeProcess() {\n // if busy, try again in a bit\n clearTimeout(skipTimeout)\n skipTimeout = null\n if (processEventsPromise) {\n skipTimeout = setTimeout(maybeProcess, 200)\n return\n }\n processEvents()\n }\n\n async function processEvents() {\n if (queue.length === 0 || processEventsPromise) {\n return\n }\n\n let queueClone = [...queue]\n queue = []\n processEventsPromise = new Promise(async resolve => {\n try {\n await processQueue({ queue: queueClone, morpher })\n } catch (error) {\n console.error(error)\n } finally {\n resolve()\n processEventsPromise = null\n }\n })\n }\n\n watcher.on('add', file => onEvent({ file, op: 'add' }))\n watcher.on('change', file => onEvent({ file, op: 'change' }))\n watcher.on('unlink', file => onEvent({ file, op: 'unlink' }))\n\n return watcher\n}\n\nasync function processQueue({ queue, morpher }) {\n let filesToProcess = {\n filesView: new Set(),\n filesViewLogic: new Set(),\n filesViewCustom: new Set(),\n filesFontCustom: new Set(),\n }\n\n await processUnlinked({\n files: queue.filter(item => item.op === 'unlink'),\n morpher,\n filesToProcess,\n })\n\n await processAddedOrChanged({\n files: queue.filter(item => item.op !== 'unlink'),\n morpher,\n filesToProcess,\n })\n\n await morpher.processFiles(filesToProcess)\n\n if (!morpher.verbose) return // && viewsId.size > 0) {\n\n // Object.entries(filesToProcess).forEach(([key, value]) => {\n // console.log(chalk.greenBright(key), [...value])\n // })\n\n // console.log(chalk.green('M'), [...viewsId].join(', '))\n // }\n}\n\nfunction processUnlinked({ files, morpher, filesToProcess }) {\n return Promise.all(\n files.map(async ({ file }) => {\n morpher.verbose && console.log(chalk.magenta('X'), file) // view.id, chalk.dim(`-> ${file}`))\n\n if (await isFontCustomFile(file)) {\n let id = getFontId(file)\n let font = morpher.customFonts.get(id)\n font.delete(file)\n\n if (font.size === 0) {\n morpher.customFonts.delete(id)\n }\n } else {\n let view = morpher.viewsToFiles.get(path.dirname(file))\n if (!view) return\n\n processPointsOfUse({ view, morpher, filesToProcess })\n\n filesToProcess.filesView.delete(view.file)\n morpher.viewsById.delete(view.id)\n morpher.viewsToFiles.delete(view.file)\n\n try {\n fs.unlink(view.file)\n } catch (error) {}\n\n if (await isViewFile(file)) {\n filesToProcess.filesView.delete(file)\n } else if (await isViewLogicFile(file)) {\n filesToProcess.filesView.add(view.file)\n filesToProcess.filesViewLogic.delete(file)\n } else if (await isViewCustomFile(file)) {\n filesToProcess.filesViewCustom.delete(file)\n }\n }\n })\n )\n}\n\nfunction processAddedOrChanged({ files, morpher, filesToProcess }) {\n return Promise.all(\n files.map(async ({ file, op }) => {\n morpher.verbose && console.log(chalk.yellow(op), file)\n\n if (await isFontCustomFile(file)) {\n filesToProcess.filesFontCustom.add(file)\n } else {\n if (await isViewFile(file)) {\n filesToProcess.filesView.add(file)\n\n let logicFile = path.join(path.dirname(file), 'logic.js')\n if (existsSync(logicFile)) {\n filesToProcess.filesViewLogic.add(logicFile)\n }\n } else if (await isViewLogicFile(file)) {\n filesToProcess.filesView.add(file.replace('logic.js', 'view.blocks'))\n filesToProcess.filesViewLogic.add(file)\n } else if (await isViewCustomFile(file)) {\n filesToProcess.filesViewCustom.add(file)\n }\n\n let view = morpher.viewsToFiles.get(path.dirname(file))\n if (!view) return\n\n processPointsOfUse({ view, morpher, filesToProcess })\n }\n\n // morpher.verbose &&\n // console.log(\n // op === 'add'\n // ? `${chalk.yellow('A')} ${chalk.green('M')}`\n // : chalk.green('M'),\n // getViewIdFromFile(file),\n // chalk.dim(`-> ${file}`)\n // )\n })\n )\n}\n\nfunction processPointsOfUse({ view, morpher, filesToProcess }) {\n let { filesView, filesViewLogic } = getPointsOfUse({\n view,\n viewsToFiles: morpher.viewsToFiles,\n })\n for (let file of filesView) {\n filesToProcess.filesView.add(file)\n }\n for (let file of filesViewLogic) {\n filesToProcess.filesViewLogic.add(file)\n }\n}\n","import { ensureFontsDirectory } from './fonts.js'\nimport getFiles from './get-files.js'\nimport chalk from 'chalk'\nimport makeMorpher from './make-morpher.js'\nimport maybePrintWarnings from './maybe-print-warnings.js'\nimport path from 'path'\nimport watchFiles from './watch-files.js'\n\nexport default async function watch(options) {\n let morpher = makeMorpher(options)\n\n await ensureFontsDirectory(morpher.src)\n\n await morpher.processFiles(await getFiles(morpher.src))\n\n if (options.verbose) {\n if (morpher.customFonts.size > 0) {\n console.log(chalk.yellow(`\\nCustom fonts detected:`))\n console.log([...morpher.customFonts.keys()].sort().join('\\n'))\n }\n\n let views = [...morpher.viewsToFiles.values()]\n console.log(\n views\n .map(view => {\n let msg = view.id\n if (view.custom) {\n msg = `${view.id} ${chalk.dim('(is custom)')}`\n } else if (view.logic) {\n msg = `${view.id} ${chalk.dim('(has logic)')}`\n }\n return `${chalk.yellow('A')} ${chalk.green('M')} ${msg} ${chalk.dim(\n path.relative(process.cwd(), view.file)\n )}`\n })\n .sort()\n .join('\\n')\n )\n\n views.forEach(maybePrintWarnings)\n }\n\n if (options.once) return\n\n let watcher = watchFiles({ morpher })\n\n process.on('beforeExit', () => {\n console.log('Stopping Views morpher file watcher...')\n watcher.close()\n })\n}\n","import { promises as fs } from 'fs'\nimport chalk from 'chalk'\nimport cleanup from './clean.js'\nimport minimist from 'minimist'\nimport path from 'path'\nimport pkg from './package.json'\nimport updateNotifier from 'update-notifier'\nimport watch from './watch.js'\n\nlet wait = time => new Promise(resolve => setTimeout(resolve, time))\n\n;(async function() {\n let {\n _,\n as,\n clean,\n help,\n local,\n tools,\n track,\n watch: shouldWatch,\n verbose,\n version,\n } = minimist(process.argv.slice(2), {\n alias: {\n help: 'h',\n },\n booleans: ['clean', 'help', 'track', 'tools', 'watch', 'version'],\n default: {\n as: 'react-dom',\n clean: false,\n local: 'en',\n tools: true,\n track: false,\n verbose: true,\n version: false,\n watch: false,\n },\n })\n\n if (!shouldWatch && tools) {\n tools = false\n }\n\n track = track === 'true'\n\n if (help) {\n console.log(`\n views-morph [directory]\n --as target platform\n react-dom (default)\n react-native\n react-pdf\n --clean clean the autogenerated .view.js files\n --local default local language, defaults to English (en)\n --tools use with Views Tools, defauls to true when\n --watch is enabled, otherwise defaults to false\n --track enable UI tracking, defaults to false\n --verbose defaults to true\n --version print the version\n --watch watch a directory and produce .view.js files\n `)\n\n process.exit()\n }\n\n if (version) {\n console.log(`v${pkg.version}`)\n process.exit()\n }\n\n let input = Array.isArray(_) && _[0]\n\n if (!input || !(await fs.stat(input)).isDirectory()) {\n console.error(\n `You need to specify an input directory to watch. ${input} is a file.`\n )\n process.exit()\n }\n\n if (!path.isAbsolute(input)) {\n input = path.normalize(path.join(process.cwd(), input))\n }\n\n try {\n if ((await fs.stat(path.join(input, 'src'))).isDirectory()) {\n input = path.join(input, 'src')\n }\n } catch (error) {}\n\n if (clean) {\n console.log(`Cleaning up ${input}...`)\n await cleanup(input, verbose)\n process.exit()\n }\n\n updateNotifier({ pkg }).notify()\n\n if (verbose) {\n console.log(chalk.underline(`Views Tools morpher v${pkg.version}`))\n\n console.log(\n `\\nWill morph files at \"${chalk.green(input)}\" as \"${chalk.green(as)}\" ${\n tools ? 'with Views Tools' : 'without Views Tools'\n }`\n )\n\n if (shouldWatch && !tools) {\n console.log(\n chalk.bgRed(' ')\n )\n console.log()\n console.log(`🚨 You're missing out!!!`)\n console.log(\n chalk.bold(\n '🚀 Views Tools can help you find product market\\n fit before you run out of money.'\n )\n )\n console.log()\n console.log(\n '✨ Find out how 👉',\n chalk.bold(chalk.green('https://views.tools'))\n )\n console.log()\n console.log(\n chalk.bgRed(' ')\n )\n await wait(15000)\n }\n\n console.log(chalk.yellow('A'), '= Added')\n console.log(chalk.green('M'), `= Morphed`)\n console.log(chalk.blue('X'), `= Deleted`)\n console.log('\\nPress', chalk.blue('ctrl+c'), 'to stop at any time.\\n')\n }\n\n watch({\n as,\n local,\n once: !shouldWatch,\n src: input,\n tools,\n track,\n verbose,\n })\n})()\n"],"names":["clean","src","verbose","morphed","glob","bashNative","cwd","ignore","Promise","all","map","f","console","log","fs","unlink","path","join","deleted","deleteEmpty","forEach","d","addToMapSet","key","value","has","set","Set","get","add","getWeights","variants","filter","v","includes","list","font","category","family","weights","byName","fontFamily","isGoogleFont","maybeAddFallbackFont","sources","body","replace","weight","style","type","file","id","relativise","from","to","r","relative","substr","startsWith","ensureDir","dir","mkdir","recursive","error","morphFont","morphFontAsReactDom","morphFontAsReactNative","ensureFontsDirectory","getFontId","basename","extname","fontsOrder","sortFonts","fonts","sort","a","b","indexOf","processCustomFonts","customFonts","filesFontCustom","morphAllFonts","as","filesView","viewsToFiles","fontsDirectory","fontsInUse","mapCustomFont","FONT_TYPES","view","custom","parsed","split","customFontSources","content","makeGetFontImport","PATTERNS","match","filesViewLogic","filesViewCustom","isViewFile","mm","isMatch","isViewLogicFile","isViewCustomFile","isFontCustomFile","MATCH","Object","values","item","flat","getMatchesPerPattern","files","fromEntries","entries","matches","getFiles","absolute","ensureFile","dirname","prettier","format","parser","singleQuote","trailingComma","DATA","ensureData","getViewRelativeToView","viewsById","importCandidates","importViewFile","size","pathToView","maybeFileViewInside","maybeFileViewCustomInside","ensureFirstStoryIsOn","flow","stories","story","index","isSeparate","makeFlow","tools","flowMap","Map","flowMapStr","isStory","states","views","viewInView","push","viewPath","parent","viewPathParent","length","JSON","stringify","topStory","initialState","ensureFlow","USE_IS_BEFORE","ensureIsBefore","USE_IS_HOVERED","ensureIsHovered","makeUseIsMedia","media","name","minWidth","maxWidth","ret","getMediaConfig","mobile","width","tablet","laptop","parse","readFile","resolve","base","ensureIsMedia","TOOLS_FILE","ensureTools","fsExtra","exists","process","env","REACT_APP_VIEWS_TOOLS","FILE_USE_IS_BEFORE","FILE_USE_IS_HOVERED","FILE_USE_IS_MEDIA","FILE_USE_DATA","FILE_USE_FLOW","FILE_LOCAL_CONTAINER","FILE_TRACK_CONTEXT","makeGetSystemImport","getSystemImport","enter","node","state","isFragment","testId","testIdKey","render","viewPathKey","IS_INT","IS_FLOAT","MULTIPLE_BY_FONT_SIZE","PIXEL","PERCENTAGE","EM","REM","VW","VH","DEGREES","GRADIANS","RADIANS","TURN","getUnit","units","getUnits","test","find","u","LENGTH","PERCENTAGE_FIRST_LENGTH","MULTIPLE_BY_FONT_SIZE_LENGTH","ANGLE","UNITLESS","UNITS","blurRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomWidth","borderLeftWidth","borderRadius","borderRightWidth","borderTopLeftRadius","borderTopRightRadius","borderTopWidth","borderWidth","bottom","flexBasis","flexGrow","flexShrink","fontSize","height","left","letterSpacing","lineHeight","margin","marginBottom","marginLeft","marginRight","marginTop","maxHeight","minHeight","offsetX","offsetY","opacity","outline","padding","paddingBottom","paddingLeft","paddingRight","paddingTop","perspective","right","rotate","rotateX","rotateY","scale","scaleX","scaleY","shadowOffsetY","shadowOffsetX","shadowBlur","shadowSpread","skew","spreadRadius","top","translateX","translateY","wordSpacing","zIndex","UNITS_KEYS","keys","found","ukey","s","isSlot","wrap","checkParentStem","styleKey","matchingParentStem","scopes","some","scope","is","INTERPOLATION","isInterpolation","str","deinterpolate","getObjectAsString","obj","Array","isArray","k","hasKeys","getProp","finder","p","nodeScope","prop","properties","getPropValueOrDefault","defaultValue","hasProp","getScopedProps","propNode","blockNode","isSystem","isLocal","when","Boolean","reverse","isEmpty","getScopedConditionPropValue","tags","slot","safe","unit","CHILD_VALUES","DATA_VALUES","IS_HOVERED_OR_SELECTED_HOVER","IS_FLOW","getScopedCondition","scopedProps","conditional","data","hasCustomBlockParent","flowPath","getFlowPath","action","getActionableParent","lastScope","animation","curve","getScopedImageCondition","scopedNames","defaultName","styleStems","getStyleType","tag","isTag","hasKeysInChildren","maybeNode1","maybeNode2","isStyle","isBasic","getAllowedStyleKeys","isCapture","isTable","isList","isCell","isHeader","isColumn","isValidImgSrc","pushImageToState","paths","findIndex","images","getScopes","toCamelCase","isSvg","hasCustomScopes","hasLocals","getLocals","locals","getLocalsString","baseLocalName","localName","getStandardAnimatedString","isNative","animationIndexOnBlock","getTransformString","transform","transformStr","props","i","getAnimatedString","getAnimatedStyles","getAllAnimatedProps","getSpringProps","getPropValue","interpolateValue","getDynamicStyles","flatten","getNonAnimatedDynamicStyles","animatedProps","animatedTransforms","dynamic","reduce","checkForTransforms","combineTransforms","TRANSFORM_WHITELIST","isTransform","getTimingProps","createId","addClassName","usedBlockNames","styleName","className","CONTENT_CONTAINER_STYLE_PROPS","isContentContainerStyleProp","hasContentContainerStyleProp","styleProps","getContentContainerStyleProps","removeContentContainerStyleProps","hasRowStyles","MAYBE_HYPHENATED_STYLE_PROPS","maybeMakeHyphenated","toSlugCase","setFlowTo","normalize","typesMap","email","text","number","phone","secure","maybeNumber","valueWhenTrue","getValueForProperty","dataKey","getWidth","header","children","PropertyRest","cell","columns","child","columnsWithFixedWidth","columnsWidthSum","res","leave","explicitChildren","goTo","isDefiningChildrenExplicitly","isGroup","nameFinal","pass","itemName","skip","hasAlreadyDefinedChildren","getGroupBlockName","hasSpringAnimation","prevParent","canBeButton","isChildren","useIsHovered","flowDefaultState","use","getBlockName","isLazy","nameTag","handleTable","IS_MEDIA","IS_HOVERED","onWhen","variable","toLowerCase","shouldWrap","isHovered","isFocused","isDisabled","isPlaceholder","isSelected","isSelectedHovered","static","_isProp","styleForProperty","getStyleForProperty","hasMatchingParent","isDynamic","target","assign","flexDirection","allowedStyleKeys","scopedUnderParent","isAnimated","animations","getTableRowCss","css","getStaticCss","getAnimatedCss","getDynamicCss","styles","stylesOrder","composeStyles","cssStatic","asCss","asStaticCss","cssDynamic","asDynamicCss","hasDynamicCss","isReactNative","inlineDynamicStyles","hasTimingAnimation","transition","uniq","makeTransition","getUniqueNames","names","ensurePropName","duration","delay","dynamicStyles","systemScopeToCssKey","ensureSystemScopeCssKey","theKey","normalStyles","alternateStyles","typeScopes","scopeStyles","normalDynamic","normalStatic","alternateDynamic","alternateStatic","normalCss","alternateCss","hasDynamicRowStyles","isFormatted","formats","userSelect","hasRefs","PROPS_THAT_IMPLY_CODE_FOR_OTHERS","code","otherProp","_isScoped","parseFormatValue","timeValues","timeStr","val","parseInt","HAS_RESTRICTED_CHARACTERS","hasOwnProperty","blacklist","PropertiesStyle","PropertiesClassName","PropertiesImage","PropertyFormat","PropertyViewPath","unsupportedShorthand","isValidPropertyForBlock","PropertyRef","PropertyStyle","PropertyText","PropertyOnClickUserSelect","blockName","testIds","BlockMaybeSkip","BlockSetTestId","BlockOffWhen","BlockName","BlockTable","BlockColumn","BlockCapture","BlockGoTo","BlockInList","BlockAddTestIdProp","BlockAddViewPath","BlockProperties","BlockGroup","BlockList","BlockExplicitChildren","scopedVar","setScopedVar","getTransform","shadow","getShadow","WebkitAppRegion","maybeAsVar","backgroundImage","asVar","transformOrigin","getTransformOrigin","block","scopedCondition","isText","shadowColor","shadowInset","shadowInsetValue","getTransformValue","transformOriginX","transformOriginY","Number","isInteger","isUrl","getImageSource","slots","ON_IS_SELECTED","disabled","slotName","useFlow","actionableParent","actionableProp","makeGetImport","imports","getImport","externalImport","Error","importView","importFile","logic","importPath","animated","blockId","configValues","spring","toValue","fromValue","current","uses","maybeDataContext","maybeDataFormat","dataFormat","maybeDataValidate","dataValidate","trackOpen","track","trackClose","useIsBefore","useIsMedia","dataDefinition","context","formatIn","formatOut","validate","required","NATIVE","sortAlphabetically","importsFirst","aIsImport","bIsImport","usesNative","usesSvg","useNative","useSvg","dependencies","SVG","lazy","usedFont","getFontImport","img","component","svg","m","reactNativeLibraryImport","createFormatters","localSupported","getFormat","options","getOptions","string","local","clock","hour12","getStyles","getDependencies","getFlatList","getFormatters","getBody","getDefaultProps","walk","ast","visit","fn","ViewsModalOverlay","finalName","restrictedNames","warn","AutoSizer","Column","Table","visitor","toComponent","BORDER_RADIUS","source","uri","resizeMode","keyboardType","dynamicKeyboardType","autoCorrect","underlineColorAndroid","textAlignVertical","getListBlockName","baseStyle","animatedStyle","dynamicStyle","containerStyle","ensureBackgroundColor","backgroundColor","dynamicContainerStyle","SVG_BLOCKS_WITH_OPACITY","svgOpacity","onClick","onPress","isInList","wrapEnd","BlockWrap","BlockSvg","BlockBackgroundImage","borderStyle","decorateShadow","shadowRadius","getShadowOffset","getFontFamily","placeholderTextColor","color","getLineHeight","fontWeight","fontSizeValue","shadowOffset","elevation","shadowOpacity","DismissKeyboard","remap","maybeUsesTextInput","maybeUsesStyleSheet","reactNativeMorph","reactDom","reactNative","reactPdf","maybeMorph","result","morphers","version","chalk","green","dim","red","codeFrame","message","stack","morphAllViews","maybePrintWarnings","warnings","warning","yellow","loc","start","line","blue","STYLE","ROWSTYLE","isRowStyle","Matcher","threshold","caseSensitive","prototype","apply","arguments","ignoreCase","matchCase","setThreshold","num","distance","word1","word2","Levenshtein","q","trim","results","word","concat","sortBy","closest","LOCAL_SCOPES","locales","dymPropMatcher","DidYouMeanMatcher","makeDidYouMeanBlock","dymBlockMatcher","didYouMeanProp","makeDidYouMeanFontFamily","dymFontFamilyMatcher","googleFontFamilies","ANIMATION","BASIC","BLOCK","BOOL","CAPTURE","CAPTURE_TYPES","COMMENT","FLOAT","FONTABLE","INT","NOT_GROUP","PROP","UNSUPPORTED_SHORTHAND","border","borderBottom","borderTop","borderRight","borderLeft","boxShadow","flex","textShadow","overflow","TRUE","USER_COMMENT","SLOT","thing","isAnimation","isBlock","isBool","isComment","isEmptyText","isFloat","isFontable","isInt","isProp","isUnsupportedShorthand","isTrue","isUserComment","regex","addDefaults","animationType","tension","friction","getAnimation","_","animationValues","getValue","getBlock","indentation","_1","level","Math","floor","getComment","slice","err","getData","maybeProp","getDataFormat","getDataValidate","formatKey","_2","slotIsNot","_3","getSlot","getUnsupportedShorthandExpanded","theValue","x","y","parseFloat","isLocalScope","SYSTEM_SCOPES","isSystemScope","isActionable","getPropType","isNumber","sortScopes","scolumn","ecolumn","column","end","SLOT_PROPS","shouldBeSlot","rowStyle","validSlot","fragment","convertSlotToProps","enableLocalScopes","enableSystemScopes","skipComments","skipInvalidProps","warnMissingDefaultValue","rlines","lines","trimRight","topBlockShouldBe","endsWith","viewsInView","didYouMeanBlock","didYouMeanFontFamily","blockIds","getBlockId","maybeId","lookForFonts","fontFamilyProp","fontWeightProp","toString","fontStyleProp","meant","lookForMultiples","freq","multiples","endLine","max","parseBlock","shouldPushToStack","getLoc","last","pop","blocker","parseProps","endOfBlockIndex","inScope","j","getTags","currentAnimation","baseValue","baseProp","needsDefaultValue","vp","userComment","comment","invalidProps","flowProp","getFileDepth","sep","sortByFileDepth","depthA","depthB","depthDelta","sortSetsInMap","parseViews","EXTENSIONS","getViewIdFromFile","extension","processViewCustomFiles","processViewFiles","makeMorpher","processFiles","morphedFonts","morphedViews","filesToWrite","writeFile","getPointsOfUse","viewsId","watchFiles","morpher","watcher","chokidar","watch","ignored","ignoreInitial","awaitWriteFinish","skipTimeout","processEventsPromise","queue","onEvent","op","maybeProcess","clearTimeout","setTimeout","processEvents","queueClone","processQueue","on","filesToProcess","processUnlinked","processAddedOrChanged","magenta","delete","processPointsOfUse","logicFile","existsSync","msg","once","close","wait","time","help","shouldWatch","minimist","argv","alias","booleans","default","exit","pkg","input","stat","isDirectory","isAbsolute","cleanup","updateNotifier","notify","underline","bgRed","bold"],"mappings":"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"}
\No newline at end of file