sanity-plugin-iframe-pane 1.0.8 → 1.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/Iframe.js CHANGED
@@ -37,11 +37,13 @@ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
37
37
 
38
38
  var sizes = {
39
39
  desktop: {
40
- width: '100%',
40
+ backgroundColor: "white",
41
+ width: "100%",
41
42
  height: "100%",
42
- maxHeight: '100%'
43
+ maxHeight: "100%"
43
44
  },
44
45
  mobile: {
46
+ backgroundColor: "white",
45
47
  width: 414,
46
48
  height: "100%",
47
49
  maxHeight: 736
package/lib/Iframe.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/Iframe.js"],"names":["sizes","desktop","width","height","maxHeight","mobile","Iframe","sanityDocument","document","options","url","defaultSize","displayUrl","setDisplayUrl","iframeSize","setIframeSize","input","displayed","handleCopy","current","select","setSelectionRange","execCommand","getUrl","resolveUrl","_id","padding","position","pointerEvents","opacity","MobileDeviceIcon","CopyIcon","LeaveIcon","window","open","propTypes","PropTypes","shape","string","isRequired","slug","oneOfType","func"],"mappings":"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","sourcesContent":["import React, {useEffect, useState, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Flex, Text, Button, Stack, ThemeProvider, Card} from '@sanity/ui'\nimport {CopyIcon, LeaveIcon, MobileDeviceIcon} from '@sanity/icons'\n\nconst sizes = {\n desktop: {width: '100%', height: `100%`, maxHeight: '100%'},\n mobile: {width: 414, height: `100%`, maxHeight: 736},\n}\nfunction Iframe({document: sanityDocument, options}) {\n const {url, defaultSize} = options\n const [displayUrl, setDisplayUrl] = useState(typeof url === 'string' ? url : ``)\n const [iframeSize, setIframeSize] = useState(\n defaultSize && sizes?.[defaultSize] ? defaultSize : `desktop`\n )\n const input = useRef()\n const {displayed} = sanityDocument\n\n function handleCopy() {\n if (!input?.current) return\n\n input.current.select()\n input.current.setSelectionRange(0, 99999)\n\n // eslint-disable-next-line react/prop-types\n document.execCommand('copy')\n }\n\n useEffect(() => {\n const getUrl = async () => {\n const resolveUrl = await url(displayed)\n\n setDisplayUrl(resolveUrl)\n }\n\n if (!displayUrl && displayed?._id) getUrl()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n if (!displayUrl || typeof displayUrl !== 'string') {\n return <div style={{padding: `1rem`}}>Loading...</div>\n }\n\n return (\n <ThemeProvider>\n <textarea\n style={{position: `absolute`, pointerEvents: `none`, opacity: 0}}\n ref={input}\n value={displayUrl}\n readOnly\n tabIndex=\"-1\"\n />\n <Flex direction=\"column\" style={{height: `100%`}}>\n <Card padding={2} borderBottom={1}>\n <Flex align=\"center\" gap={2}>\n <Flex align=\"center\" gap={1}>\n <Button\n fontSize={[1]}\n padding={2}\n tone=\"primary\"\n mode={iframeSize === 'mobile' ? 'default' : 'ghost'}\n icon={MobileDeviceIcon}\n onClick={() => setIframeSize(iframeSize === 'mobile' ? 'desktop' : 'mobile')}\n />\n </Flex>\n <Box flex={1}>\n <Text size={0} textOverflow=\"ellipsis\">\n {displayUrl}\n </Text>\n </Box>\n <Flex align=\"center\" gap={1}>\n <Button\n fontSize={[1]}\n icon={CopyIcon}\n padding={[2]}\n text=\"Copy\"\n tone=\"default\"\n onClick={() => handleCopy()}\n />\n <Button\n fontSize={[1]}\n icon={LeaveIcon}\n padding={[2]}\n text=\"Open\"\n tone=\"primary\"\n onClick={() => window.open(displayUrl)}\n />\n </Flex>\n </Flex>\n </Card>\n <Card tone=\"transparent\" padding={iframeSize === 'mobile' ? 2 : 0} style={{height: `100%`}}>\n <Flex align=\"center\" justify=\"center\" style={{height: `100%`}}>\n <iframe title=\"preview\" style={sizes[iframeSize]} frameBorder=\"0\" src={displayUrl} />\n </Flex>\n </Card>\n </Flex>\n </ThemeProvider>\n )\n}\n\nIframe.propTypes = {\n document: PropTypes.shape({\n displayed: PropTypes.shape({\n _id: PropTypes.string.isRequired,\n slug: PropTypes.shape({\n current: PropTypes.string,\n }),\n }),\n }),\n options: PropTypes.shape({\n url: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n }),\n}\n\nexport default Iframe\n"],"file":"Iframe.js"}
1
+ {"version":3,"sources":["../src/Iframe.js"],"names":["sizes","desktop","backgroundColor","width","height","maxHeight","mobile","Iframe","sanityDocument","document","options","url","defaultSize","displayUrl","setDisplayUrl","iframeSize","setIframeSize","input","displayed","handleCopy","current","select","setSelectionRange","execCommand","getUrl","resolveUrl","_id","padding","position","pointerEvents","opacity","MobileDeviceIcon","CopyIcon","LeaveIcon","window","open","propTypes","PropTypes","shape","string","isRequired","slug","oneOfType","func"],"mappings":"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","sourcesContent":["import React, {useEffect, useState, useRef} from 'react'\nimport PropTypes from 'prop-types'\nimport {Box, Flex, Text, Button, Stack, ThemeProvider, Card} from '@sanity/ui'\nimport {CopyIcon, LeaveIcon, MobileDeviceIcon} from '@sanity/icons'\n\nconst sizes = {\n desktop: {backgroundColor: `white`, width: `100%`, height: `100%`, maxHeight: `100%`},\n mobile: {backgroundColor: `white`, width: 414, height: `100%`, maxHeight: 736},\n}\nfunction Iframe({document: sanityDocument, options}) {\n const {url, defaultSize} = options\n const [displayUrl, setDisplayUrl] = useState(typeof url === 'string' ? url : ``)\n const [iframeSize, setIframeSize] = useState(\n defaultSize && sizes?.[defaultSize] ? defaultSize : `desktop`\n )\n const input = useRef()\n const {displayed} = sanityDocument\n\n function handleCopy() {\n if (!input?.current) return\n\n input.current.select()\n input.current.setSelectionRange(0, 99999)\n\n // eslint-disable-next-line react/prop-types\n document.execCommand('copy')\n }\n\n useEffect(() => {\n const getUrl = async () => {\n const resolveUrl = await url(displayed)\n\n setDisplayUrl(resolveUrl)\n }\n\n if (!displayUrl && displayed?._id) getUrl()\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [])\n\n if (!displayUrl || typeof displayUrl !== 'string') {\n return <div style={{padding: `1rem`}}>Loading...</div>\n }\n\n return (\n <ThemeProvider>\n <textarea\n style={{position: `absolute`, pointerEvents: `none`, opacity: 0}}\n ref={input}\n value={displayUrl}\n readOnly\n tabIndex=\"-1\"\n />\n <Flex direction=\"column\" style={{height: `100%`}}>\n <Card padding={2} borderBottom={1}>\n <Flex align=\"center\" gap={2}>\n <Flex align=\"center\" gap={1}>\n <Button\n fontSize={[1]}\n padding={2}\n tone=\"primary\"\n mode={iframeSize === 'mobile' ? 'default' : 'ghost'}\n icon={MobileDeviceIcon}\n onClick={() => setIframeSize(iframeSize === 'mobile' ? 'desktop' : 'mobile')}\n />\n </Flex>\n <Box flex={1}>\n <Text size={0} textOverflow=\"ellipsis\">\n {displayUrl}\n </Text>\n </Box>\n <Flex align=\"center\" gap={1}>\n <Button\n fontSize={[1]}\n icon={CopyIcon}\n padding={[2]}\n text=\"Copy\"\n tone=\"default\"\n onClick={() => handleCopy()}\n />\n <Button\n fontSize={[1]}\n icon={LeaveIcon}\n padding={[2]}\n text=\"Open\"\n tone=\"primary\"\n onClick={() => window.open(displayUrl)}\n />\n </Flex>\n </Flex>\n </Card>\n <Card tone=\"transparent\" padding={iframeSize === 'mobile' ? 2 : 0} style={{height: `100%`}}>\n <Flex align=\"center\" justify=\"center\" style={{height: `100%`}}>\n <iframe title=\"preview\" style={sizes[iframeSize]} frameBorder=\"0\" src={displayUrl} />\n </Flex>\n </Card>\n </Flex>\n </ThemeProvider>\n )\n}\n\nIframe.propTypes = {\n document: PropTypes.shape({\n displayed: PropTypes.shape({\n _id: PropTypes.string.isRequired,\n slug: PropTypes.shape({\n current: PropTypes.string,\n }),\n }),\n }),\n options: PropTypes.shape({\n url: PropTypes.oneOfType([PropTypes.string, PropTypes.func]),\n }),\n}\n\nexport default Iframe\n"],"file":"Iframe.js"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sanity-plugin-iframe-pane",
3
- "version": "1.0.8",
3
+ "version": "1.0.9",
4
4
  "description": "Display any URL in a View Pane, along with helpful buttons to Copy the URL or open in a new tab",
5
5
  "main": "lib/Iframe.js",
6
6
  "scripts": {
package/src/Iframe.js CHANGED
@@ -4,8 +4,8 @@ import {Box, Flex, Text, Button, Stack, ThemeProvider, Card} from '@sanity/ui'
4
4
  import {CopyIcon, LeaveIcon, MobileDeviceIcon} from '@sanity/icons'
5
5
 
6
6
  const sizes = {
7
- desktop: {width: '100%', height: `100%`, maxHeight: '100%'},
8
- mobile: {width: 414, height: `100%`, maxHeight: 736},
7
+ desktop: {backgroundColor: `white`, width: `100%`, height: `100%`, maxHeight: `100%`},
8
+ mobile: {backgroundColor: `white`, width: 414, height: `100%`, maxHeight: 736},
9
9
  }
10
10
  function Iframe({document: sanityDocument, options}) {
11
11
  const {url, defaultSize} = options