From 720092d7d55a34587f062bc399c75fc7aa73c46d Mon Sep 17 00:00:00 2001 From: Ryan Jones Date: Mon, 10 Jun 2019 16:19:02 +0200 Subject: [PATCH 1/6] remove experimental json module --- cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cli.js b/cli.js index 5784270..f7485ed 100755 --- a/cli.js +++ b/cli.js @@ -1,4 +1,4 @@ -#!/usr/bin/env node --experimental-modules --experimental-json-modules +#!/usr/bin/env node --experimental-modules import { promises as fs } from 'fs' import chalk from 'chalk' From f1653f51cce1b2c0437864bdeb78f13f1ee6d068 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Javier=20Cravero?= Date: Mon, 2 Sep 2019 14:46:55 +0100 Subject: [PATCH 2/6] feat: dataValidate fn ``` FirstName View flow together data user.first_name dataValidate name Input value < onChange < isInvalid < ``` `name` is a function expected to be in `Data/validators.js` that returns a boolean, like: ``` export function name(value) { return true } ``` --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 88c18db..d17949f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@viewstools/morph", - "version": "19.7.2", + "version": "19.8.0", "description": "Views language morpher", "main": "index.js", "type": "module", From 7b72e380e14bc55cb1ff42d7c0ab6161a0558e92 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Javier=20Cravero?= Date: Mon, 2 Sep 2019 21:29:29 +0100 Subject: [PATCH 3/6] fix: remove default prop in data --- morph/react-dom/get-value-for-property.js | 4 +--- morph/react-native/get-value-for-property.js | 4 +--- morph/react/block-off-when.js | 7 +++---- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/morph/react-dom/get-value-for-property.js b/morph/react-dom/get-value-for-property.js index 74197fe..ff209e2 100644 --- a/morph/react-dom/get-value-for-property.js +++ b/morph/react-dom/get-value-for-property.js @@ -65,9 +65,7 @@ export default (node, parent, state) => { node.value === 'props.isValid') ) { return { - [node.name]: `{${node.value.replace('props.', 'data.')} || ${ - node.value - }}`, + [node.name]: `{${node.value.replace('props.', 'data.')}}`, } } else if (isValidImgSrc(node, parent)) { return { diff --git a/morph/react-native/get-value-for-property.js b/morph/react-native/get-value-for-property.js index a1561e7..2d42852 100644 --- a/morph/react-native/get-value-for-property.js +++ b/morph/react-native/get-value-for-property.js @@ -65,9 +65,7 @@ export default (node, parent, state) => { node.value === 'props.isInvalid') ) { return { - [node.name]: `{${node.value.replace('props.', 'data.')} || ${ - node.value - }}`, + [node.name]: `{${node.value.replace('props.', 'data.')}}`, } } else if (isValidImgSrc(node, parent)) { return ( diff --git a/morph/react/block-off-when.js b/morph/react/block-off-when.js index eab889c..3b6fc89 100644 --- a/morph/react/block-off-when.js +++ b/morph/react/block-off-when.js @@ -12,10 +12,9 @@ export function enter(node, parent, state) { if (parent && !isList(parent)) state.render.push('{') let value = onWhen.value if (state.data && value === 'props.isInvalid') { - value = 'data.isInvalid || props.isInvalid' - } - if (state.data && value === 'props.isValid') { - value = 'data.isValid || props.isValid' + value = 'data.isInvalid' + } else if (state.data && value === 'props.isValid') { + value = 'data.isValid' } state.render.push(`${value} ? `) } else if (isStory(node, state)) { From 42e4b9522cfc3d0c27b338da7297feffa6385df4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Javier=20Cravero?= Date: Mon, 2 Sep 2019 21:34:18 +0100 Subject: [PATCH 4/6] fix: data text value --- morph/react/property-text.js | 4 +++- package.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/morph/react/property-text.js b/morph/react/property-text.js index 9c4cd75..ee5c2db 100644 --- a/morph/react/property-text.js +++ b/morph/react/property-text.js @@ -26,7 +26,9 @@ let parseFormatValue = (value, type) => { export function enter(node, parent, state) { if (node.name === 'text' && parent.name === 'Text') { - if (hasCustomScopes(node, parent)) { + if (state.data && node.value === 'props.value') { + parent.explicitChildren = '{data.value}' + } else if (hasCustomScopes(node, parent)) { parent.explicitChildren = wrap(getScopedCondition(node, parent)) } else if (isSlot(node)) { parent.explicitChildren = wrap(node.value) diff --git a/package.json b/package.json index d17949f..70399d3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@viewstools/morph", - "version": "19.8.0", + "version": "19.8.1", "description": "Views language morpher", "main": "index.js", "type": "module", From ec36a3684c6141c4ea71e433aa890b181af7fc54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Javier=20Cravero?= Date: Tue, 3 Sep 2019 16:57:22 +0100 Subject: [PATCH 5/6] chore: v19.8.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 70399d3..0fbfe3b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@viewstools/morph", - "version": "19.8.1", + "version": "19.8.2", "description": "Views language morpher", "main": "index.js", "type": "module", From 249d578a191132c4d54bf49a5e9fccf7fac875b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dar=C3=ADo=20Javier=20Cravero?= Date: Sat, 7 Sep 2019 19:48:02 +0100 Subject: [PATCH 6/6] feat: basic support for react-pdf morpher --- cli.js | 1 + ensure-flow.js | 2 +- fonts.js | 1 + morph/react-native.js | 2 ++ morph/react-pdf.js | 7 +++++++ morph/react/get-dependencies.js | 6 +++++- morphers.js | 2 ++ package.json | 2 +- 8 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 morph/react-pdf.js diff --git a/cli.js b/cli.js index 7998d11..d6609d5 100644 --- a/cli.js +++ b/cli.js @@ -51,6 +51,7 @@ let wait = time => new Promise(resolve => setTimeout(resolve, time)) --as target platform react-dom (default) react-native + react-pdf --clean clean the autogenerated .view.js files --local default local language, defaults to English (en) --tools use with Views Tools, defauls to true when diff --git a/ensure-flow.js b/ensure-flow.js index ec8d33a..ef32f53 100644 --- a/ensure-flow.js +++ b/ensure-flow.js @@ -8,7 +8,7 @@ function ensureFirstStoryIsOn(flow, key, stories) { if (!stories.has(key)) return let story = flow.get(key) - if (story.stories.size > 0) { + if (story && story.stories.size > 0) { let index = 0 for (let id of story.stories) { if (index === 0 || !story.isSeparate) { diff --git a/fonts.js b/fonts.js index 920be0e..6f78a71 100644 --- a/fonts.js +++ b/fonts.js @@ -9,6 +9,7 @@ import relativise from './relativise.js' let morphFont = { 'react-dom': morphFontAsReactDom, 'react-native': morphFontAsReactNative, + 'react-pdf': morphFontAsReactNative, } export async function ensureFontsDirectory(src) { diff --git a/morph/react-native.js b/morph/react-native.js index 11d7c57..34b824d 100644 --- a/morph/react-native.js +++ b/morph/react-native.js @@ -23,6 +23,7 @@ export default ({ getSystemImport, local, localSupported, + reactNativeLibraryImport = 'react-native', track, view, viewsById, @@ -75,6 +76,7 @@ export default ({ testIdKey: 'testID', testIds: {}, track, + reactNativeLibraryImport, usedBlockNames: { [finalName]: 1, AutoSizer: 1, Column: 1, Table: 1 }, uses: [], use(block, isLazy = false) { diff --git a/morph/react-pdf.js b/morph/react-pdf.js new file mode 100644 index 0000000..e258c8f --- /dev/null +++ b/morph/react-pdf.js @@ -0,0 +1,7 @@ +import reactNativeMorph from './react-native.js' + +export default options => + reactNativeMorph({ + ...options, + reactNativeLibraryImport: '@react-pdf/renderer', + }) diff --git a/morph/react/get-dependencies.js b/morph/react/get-dependencies.js index 8f464d6..1e6ef99 100644 --- a/morph/react/get-dependencies.js +++ b/morph/react/get-dependencies.js @@ -126,7 +126,11 @@ export default (state, getImport) => { } if (usesNative.length > 0) { - dependencies.push(`import { ${usesNative.join(', ')} } from 'react-native'`) + dependencies.push( + `import { ${usesNative.join(', ')} } from '${ + state.reactNativeLibraryImport + }'` + ) } if (state.track) { diff --git a/morphers.js b/morphers.js index 4e1b4a4..b72186c 100644 --- a/morphers.js +++ b/morphers.js @@ -1,7 +1,9 @@ import reactDom from './morph/react-dom.js' import reactNative from './morph/react-native.js' +import reactPdf from './morph/react-pdf.js' export default { 'react-dom': reactDom, 'react-native': reactNative, + 'react-pdf': reactPdf, } diff --git a/package.json b/package.json index 0fbfe3b..6ff8ffc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@viewstools/morph", - "version": "19.8.2", + "version": "19.9.0", "description": "Views language morpher", "main": "index.js", "type": "module",