UNPKG

411 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/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'\n// import prettier from 'prettier'\n\nexport default async function ensureFile({ file, content }) {\n await ensureDir(path.dirname(file))\n\n return {\n file,\n content,\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\nfunction 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}', { isSeparate: ${isSeparate}, parent: '${\n parent === '/' ? '' : parent\n }',\n stories: new Set(${states.length > 0 ? JSON.stringify(states) : ''}) }]`\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([\n${flowMapStr.join(',\\n')}\n])\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')\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 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)\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.isSystem &&\n scope.properties.some(prop => prop.name === propNode.name)\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","export 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 === '...') {\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}',\\n ${css.join(',\\n ')}})`\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 { getScopedCondition, hasCustomScopes, isSlot } from '../utils.js'\nimport wrap from './wrap.js'\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 (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')\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 return `export default class ${name} extends React.Component {\n render() {\n let { props } = this\n return (${render})\n }\n}`\n } else {\n let ret = render ? `(${render})` : null\n\n return `export default function ${name}(props) {\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 let importStatement = getImport(d, state.lazy[d])\n dependencies.push(importStatement)\n\n if (/logic\\.js'/.test(importStatement)) {\n dependencies.push(`${d}.displayName = '${d}Logic'`)\n }\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.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 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","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'\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\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 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 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 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\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 reactNativeLibraryImport = 'react-native',\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 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 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 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\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'\n// import prettier from 'prettier'\n\nexport default function maybeMorph({\n as,\n getFontImport,\n getSystemImport,\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 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 result.code\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 filesView,\n tools,\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 tools,\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 toSlugCase from 'to-slug-case'\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\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 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 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 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\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 tags.scope = value\n inScope = true\n scope = {\n isSystem,\n defaultValue: getValue(value, name),\n value,\n name,\n slotName,\n slotIsNot: isSystem ? 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) {\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 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 ;[...filesViewCustom].forEach(file => {\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 await Promise.all(\n [...filesView].map(async file => {\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}\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 src,\n tools = false,\n verbose = true,\n}) {\n let state = {\n as,\n src,\n tools,\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 tools: state.tools,\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.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 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, 50)\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 Promise.all([\n processUnlinked({\n files: queue.filter(item => item.op === 'unlink'),\n morpher,\n filesToProcess,\n }),\n processAddedOrChanged({\n files: queue.filter(item => item.op !== 'unlink'),\n morpher,\n filesToProcess,\n }),\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 &&\n console.log(\n chalk.magenta('X'),\n path.basename(path.dirname(file)),\n chalk.dim(file.replace(morpher.src, '').replace(/^\\//, ''))\n )\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 viewFile = path.join(path.dirname(file), 'view.blocks')\n let view = morpher.viewsToFiles.get(viewFile)\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 if (await isViewFile(file)) {\n filesToProcess.filesView.delete(file)\n try {\n await fs.unlink(file.replace('view.blocks', 'view.js'))\n } catch (error) {}\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 &&\n console.log(\n chalk.yellow(op.toUpperCase()[0]),\n path.basename(path.dirname(file)),\n chalk.dim(file.replace(morpher.src, '').replace(/^\\//, ''))\n )\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\n let parentFile = path.join(\n path.dirname(path.dirname(file)),\n 'view.blocks'\n )\n if (existsSync(parentFile)) {\n filesToProcess.filesView.add(parentFile)\n }\n } else if (await isViewLogicFile(file)) {\n filesToProcess.filesView.add(\n path.join(path.dirname(file), 'view.blocks')\n )\n filesToProcess.filesViewLogic.add(file)\n } else if (await isViewCustomFile(file)) {\n filesToProcess.filesViewCustom.add(file)\n }\n\n let viewFile = path.join(path.dirname(file), 'view.blocks')\n let view = morpher.viewsToFiles.get(viewFile)\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\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 tools,\n watch: shouldWatch,\n verbose,\n version,\n } = minimist(process.argv.slice(2), {\n alias: {\n help: 'h',\n },\n booleans: ['clean', 'help', 'tools', 'watch', 'version'],\n default: {\n as: 'react-dom',\n clean: false,\n tools: true,\n verbose: true,\n version: false,\n watch: false,\n },\n })\n\n if (!shouldWatch && tools) {\n tools = false\n }\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 --tools use with Views Tools, defauls to true when\n --watch is enabled, otherwise 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 once: !shouldWatch,\n src: input,\n tools,\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","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","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","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","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","format","isFormatted","formats","userSelect","hasRefs","PROPS_THAT_IMPLY_CODE_FOR_OTHERS","code","otherProp","_isScoped","HAS_RESTRICTED_CHARACTERS","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","parseInt","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","useIsBefore","useIsMedia","dataDefinition","context","formatIn","formatOut","validate","required","NATIVE","sortAlphabetically","importsFirst","aIsImport","bIsImport","usesNative","usesSvg","useNative","useSvg","dependencies","SVG","importStatement","lazy","usedFont","getFontImport","img","component","svg","m","reactNativeLibraryImport","getStyles","getDependencies","getFlatList","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","options","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","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","getFormat","formatKey","_2","slotIsNot","_3","getSlot","getUnsupportedShorthandExpanded","theValue","x","y","parseFloat","SYSTEM_SCOPES","isSystemScope","isActionable","getPropType","isNumber","sortScopes","scolumn","ecolumn","column","end","SLOT_PROPS","shouldBeSlot","rowStyle","validSlot","fragment","convertSlotToProps","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","skipTimeout","processEventsPromise","queue","onEvent","op","maybeProcess","clearTimeout","setTimeout","processEvents","queueClone","processQueue","on","filesToProcess","processUnlinked","processAddedOrChanged","magenta","delete","viewFile","processPointsOfUse","toUpperCase","logicFile","existsSync","parentFile","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