sanity-plugin-aprimo 0.3.7 → 0.4.1

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/README.md CHANGED
@@ -1,10 +1,15 @@
1
- ## Installation
1
+ # Aprimo asset selector for Sanity
2
2
 
3
- `sanity install aprimo`
3
+ ![aprimo gif](https://user-images.githubusercontent.com/3969996/136493868-9908e13d-e97e-4275-87e6-7a3ca3019d5b.gif)
4
4
 
5
- ## Usage
5
+ This plugin allows you to open the Aprimo DAM asset selector from your studio and save those chosen assets and renditions in your Sanity documents.
6
+
7
+ NOTE: To take advantage of assets that aren't public renditions, you will need to authenticate requests from the studio. Because CORS isn't possible with Aprimo, you will need to set up a proxy to route authentication requests (this proxy endpoint can be configured from the studio). Your proxy endpoint should be able to route requests from the studio to https://your-tenant-name.aprimo.com/api/oauth/create-native-token. If you are using serverless functions or Next.js and would rather route all requests according to an `X-URL` header, we've set up a quickstart example for that [here](https://github.com/sanity-io/example-sanity-proxy).
8
+
9
+ ## Installation
6
10
 
7
- Declare a field to be `aprimo.asset` or an `aprimo.cdnasset` in your schema
11
+ 1. In your studio directory, run `sanity install aprimo`.
12
+ 2. Declare a field to be `aprimo.asset` or an `aprimo.cdnasset` (for public renditions) in your schema. For example:
8
13
 
9
14
  ```javascript
10
15
  {
@@ -13,3 +18,12 @@ Declare a field to be `aprimo.asset` or an `aprimo.cdnasset` in your schema
13
18
  description: "This asset is served from Aprimo",
14
19
  }
15
20
  ```
21
+ 3. Navigate to that directory in your studio. There will be a plugin icon to the top left of that field, that will allow you to add the credentials for your Aprimo tenant. Enter in these details (they will be safely stored in your Sanity dataset as a private document. Remember to include these credentials across all your datasets!) If any of these fields are confusing, contact your Aprimo administrator.
22
+
23
+ <img width="324" alt="aprimo credentials" src="https://user-images.githubusercontent.com/3969996/136494120-0951c831-96da-4317-8b5f-d8d1f689c775.png">
24
+
25
+ ## Usage
26
+
27
+ After the above, you should be able to use the selector on any field declared as `aprimo.asset` or `aprimo.cdnasset`. By including the `aprimo.asset` type in an array, you can use the multiple selector in Sanity as well.
28
+
29
+ <img width="724" alt="aprimo array" src="https://user-images.githubusercontent.com/3969996/136494363-a14973ea-9132-40f8-b365-679e203beb50.png">
@@ -96,7 +96,7 @@ var AssetListFunctions = props => {
96
96
  }, [secrets, isLoading]);
97
97
 
98
98
  var actions = /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_default2.default, {
99
- enabled: props.readOnly !== true && !loading,
99
+ enabled: props.readOnly !== true && !loading ? 1 : undefined,
100
100
  inverted: true,
101
101
  onClick: () => {
102
102
  setIsLoading(true);
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/arrayFunctions.jsx"],"names":["AssetListFunctions","props","namespace","secrets","loading","showSettings","setShowSettings","isLoading","setIsLoading","aprimoAssetType","type","of","find","t","name","aprimoAsset","onCreateValue","onChange","setAssets","assets","items","map","asset","Object","assign","_version","PatchEvent","from","handleMessageEvent","event","origin","tenantName","data","result","selection","window","addEventListener","removeEventListener","actions","readOnly"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AAIA;;AAEA;;AACA;;AACA;;AACA;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAMA,kBAAkB,GAAGC,KAAK,IAAI;AAClC,oBAA6B,+BAAWC,4BAAX,CAA7B;AAAA,MAAQC,OAAR,eAAQA,OAAR;AAAA,MAAiBC,OAAjB,eAAiBA,OAAjB;;AACA,kBAAwC,qBAAS,KAAT,CAAxC;AAAA;AAAA,MAAOC,YAAP;AAAA,MAAqBC,eAArB;;AACA,mBAAkC,qBAAS,KAAT,CAAlC;AAAA;AAAA,MAAOC,SAAP;AAAA,MAAkBC,YAAlB;;AAEA,MAAMC,eAAe,GAAGR,KAAK,CAACS,IAAN,CAAWC,EAAX,CAAcC,IAAd,CAAmBC,CAAC,IAAIA,CAAC,CAACC,IAAF,KAAWC,qBAAYD,IAA/C,CAAxB;AAEA,MAAQE,aAAR,GAAoCf,KAApC,CAAQe,aAAR;AAAA,MAAuBC,QAAvB,GAAoChB,KAApC,CAAuBgB,QAAvB;;AAEA,MAAMC,SAAS,GAAGC,MAAM,IAAI;AAC1B,QAAMC,KAAK,GAAGD,MAAM,CAACE,GAAP,CAAWC,KAAK,IAC5BC,MAAM,CAACC,MAAP,CACE,EADF,EAEEF,KAFF,EAGE;AACE;AACAG,MAAAA,QAAQ,EAAE;AAFZ,KAHF,EAOET,aAAa,CAACP,eAAD,CAPf,CADY,CAAd;AAWAQ,IAAAA,QAAQ,CAACS,oBAAWC,IAAX,CAAgB,8BAAa,EAAb,CAAhB,EAAkC,wBAAOP,KAAP,EAAc,OAAd,EAAuB,CAAC,CAAC,CAAF,CAAvB,CAAlC,CAAD,CAAR;AACD,GAbD;;AAeA,wBAAU,MAAM;AACd,QAAMQ,kBAAkB;AAAA,mCAAG,WAAMC,KAAN,EAAe;AACxC;AACA,YACE1B,OAAO,IACP0B,KAAK,CAACC,MAAN,uBAA4B3B,OAAO,CAAC4B,UAApC,oBAFF,EAGE;AACA,cAAIF,KAAK,CAACG,IAAN,CAAWC,MAAX,KAAsB,QAA1B,EAAoC;AAClCzB,YAAAA,YAAY,CAAC,KAAD,CAAZ;AACA;AACD,WAHD,MAGO,IAAIqB,KAAK,CAACG,IAAN,CAAWE,SAAX,IAAwB3B,SAA5B,EAAuC;AAC5CC,YAAAA,YAAY,CAAC,KAAD,CAAZ;AACAU,YAAAA,SAAS,CAACW,KAAK,CAACG,IAAN,CAAWE,SAAZ,CAAT;AACD;AACF;AACF,OAduB;;AAAA,sBAAlBN,kBAAkB;AAAA;AAAA;AAAA,OAAxB;;AAgBAO,IAAAA,MAAM,CAACC,gBAAP,CAAwB,SAAxB,EAAmCR,kBAAnC,EAjBc,CAkBd;;AACA,WAAO,MAAMO,MAAM,CAACE,mBAAP,CAA2B,SAA3B,EAAsCT,kBAAtC,CAAb;AACD,GApBD,EAoBG,CAACzB,OAAD,EAAUI,SAAV,CApBH;;AAsBA,MAAM+B,OAAO,gBACX,yEACE,6BAAC,iBAAD;AACE,IAAA,OAAO,EAAErC,KAAK,CAACsC,QAAN,KAAmB,IAAnB,IAA2B,CAACnC,OADvC;AAEE,IAAA,QAAQ,MAFV;AAGE,IAAA,OAAO,EAAE,MAAM;AACbI,MAAAA,YAAY,CAAC,IAAD,CAAZ;AACA,+BAAaL,OAAO,CAAC4B,UAArB,EAAiC,UAAjC;AACD;AANH,oBADF,eAWE,6BAAC,iBAAD;AAAQ,IAAA,OAAO,EAAE,MAAMzB,eAAe,CAAC,IAAD;AAAtC,iBAXF,CADF;;AAgBA,sBACE,4DACGD,YAAY,iBACX,6BAAC,0BAAD;AAAmB,IAAA,OAAO,EAAE,MAAMC,eAAe,CAAC,KAAD;AAAjD,IAFJ,eAIE,6BAAC,yBAAD,EAA2BL,KAA3B,EACGQ,eAAe,IAAI6B,OADtB,CAJF,CADF;AAUD,CAxED;;eA0EetC,kB","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport Button from 'part:@sanity/components/buttons/default'\nimport PatchEvent, {\n setIfMissing,\n insert,\n} from 'part:@sanity/form-builder/patch-event'\nimport DefaultArrayFunctions from 'part:@sanity/form-builder/input/array/functions-default'\n\nimport { useSecrets } from 'sanity-secrets'\nimport SecretsConfigView, { namespace } from './components/SecretsConfigView'\nimport aprimoAsset from './schema/AprimoAsset'\nimport { openSelector } from './utils'\n\nconst AssetListFunctions = props => {\n const { secrets, loading } = useSecrets(namespace)\n const [showSettings, setShowSettings] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const aprimoAssetType = props.type.of.find(t => t.name === aprimoAsset.name)\n\n const { onCreateValue, onChange } = props\n\n const setAssets = assets => {\n const items = assets.map(asset =>\n Object.assign(\n {},\n asset,\n {\n // Schema version. In case we ever change our schema.\n _version: 1,\n },\n onCreateValue(aprimoAssetType)\n )\n )\n onChange(PatchEvent.from(setIfMissing([]), insert(items, 'after', [-1])))\n }\n\n useEffect(() => {\n const handleMessageEvent = async event => {\n // Ensure only messages from the Aprimo Content Selector are handled\n if (\n secrets &&\n event.origin === `https://${secrets.tenantName}.dam.aprimo.com`\n ) {\n if (event.data.result === 'cancel') {\n setIsLoading(false)\n return\n } else if (event.data.selection && isLoading) {\n setIsLoading(false)\n setAssets(event.data.selection)\n }\n }\n }\n\n window.addEventListener('message', handleMessageEvent)\n //cleanup\n return () => window.removeEventListener('message', handleMessageEvent)\n }, [secrets, isLoading])\n\n const actions = (\n <>\n <Button\n enabled={props.readOnly !== true && !loading}\n inverted\n onClick={() => {\n setIsLoading(true)\n openSelector(secrets.tenantName, 'multiple')\n }}\n >\n Add multiple\n </Button>\n <Button onClick={() => setShowSettings(true)}>Configure</Button>\n </>\n )\n\n return (\n <>\n {showSettings && (\n <SecretsConfigView onClose={() => setShowSettings(false)} />\n )}\n <DefaultArrayFunctions {...props}>\n {aprimoAssetType && actions}\n </DefaultArrayFunctions>\n </>\n )\n}\n\nexport default AssetListFunctions\n"],"file":"arrayFunctions.js"}
1
+ {"version":3,"sources":["../src/arrayFunctions.jsx"],"names":["AssetListFunctions","props","namespace","secrets","loading","showSettings","setShowSettings","isLoading","setIsLoading","aprimoAssetType","type","of","find","t","name","aprimoAsset","onCreateValue","onChange","setAssets","assets","items","map","asset","Object","assign","_version","PatchEvent","from","handleMessageEvent","event","origin","tenantName","data","result","selection","window","addEventListener","removeEventListener","actions","readOnly","undefined"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport Button from 'part:@sanity/components/buttons/default'\nimport PatchEvent, {\n setIfMissing,\n insert,\n} from 'part:@sanity/form-builder/patch-event'\nimport DefaultArrayFunctions from 'part:@sanity/form-builder/input/array/functions-default'\n\nimport { useSecrets } from 'sanity-secrets'\nimport SecretsConfigView, { namespace } from './components/SecretsConfigView'\nimport aprimoAsset from './schema/AprimoAsset'\nimport { openSelector } from './utils'\n\nconst AssetListFunctions = props => {\n const { secrets, loading } = useSecrets(namespace)\n const [showSettings, setShowSettings] = useState(false)\n const [isLoading, setIsLoading] = useState(false)\n\n const aprimoAssetType = props.type.of.find(t => t.name === aprimoAsset.name)\n\n const { onCreateValue, onChange } = props\n\n const setAssets = assets => {\n const items = assets.map(asset =>\n Object.assign(\n {},\n asset,\n {\n // Schema version. In case we ever change our schema.\n _version: 1,\n },\n onCreateValue(aprimoAssetType)\n )\n )\n onChange(PatchEvent.from(setIfMissing([]), insert(items, 'after', [-1])))\n }\n\n useEffect(() => {\n const handleMessageEvent = async event => {\n // Ensure only messages from the Aprimo Content Selector are handled\n if (\n secrets &&\n event.origin === `https://${secrets.tenantName}.dam.aprimo.com`\n ) {\n if (event.data.result === 'cancel') {\n setIsLoading(false)\n return\n } else if (event.data.selection && isLoading) {\n setIsLoading(false)\n setAssets(event.data.selection)\n }\n }\n }\n\n window.addEventListener('message', handleMessageEvent)\n //cleanup\n return () => window.removeEventListener('message', handleMessageEvent)\n }, [secrets, isLoading])\n\n const actions = (\n <>\n <Button\n enabled={(props.readOnly !== true && !loading) ? 1 : undefined}\n inverted\n onClick={() => {\n setIsLoading(true)\n openSelector(secrets.tenantName, 'multiple')\n }}\n >\n Add multiple\n </Button>\n <Button onClick={() => setShowSettings(true)}>Configure</Button>\n </>\n )\n\n return (\n <>\n {showSettings && (\n <SecretsConfigView onClose={() => setShowSettings(false)} />\n )}\n <DefaultArrayFunctions {...props}>\n {aprimoAssetType && actions}\n </DefaultArrayFunctions>\n </>\n )\n}\n\nexport default AssetListFunctions\n"],"file":"arrayFunctions.js"}
@@ -31,6 +31,7 @@ var findPreviewComponent = schemaName => {
31
31
  var AprimoDiff = _ref => {
32
32
  var diff = _ref.diff,
33
33
  schemaType = _ref.schemaType;
34
+ console.log('diffFromTo', _diff.DiffFromTo);
34
35
  var previewComponent = findPreviewComponent(schemaType.name);
35
36
  return /*#__PURE__*/_react.default.createElement(_diff.DiffFromTo, {
36
37
  diff: diff,
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/AprimoDiff.tsx"],"names":["findPreviewComponent","schemaName","AprimoCDNPreview","AprimoPreview","AprimoDiff","diff","schemaType","previewComponent","name"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,oBAAoB,GAAIC,UAAD,IAAwB;AACnD,UAAQA,UAAR;AACE,SAAK,iBAAL;AACE,aAAOC,yBAAP;;AACF,SAAK,cAAL;AACE,aAAOC,sBAAP;;AACF;AACE,aAAO,mBAAM,yCAAb;AANJ;AAQD,CATD;;AAWA,IAAMC,UAAU,GAAG,QAMb;AAAA,MALJC,IAKI,QALJA,IAKI;AAAA,MAJJC,UAII,QAJJA,UAII;AACJ,MAAMC,gBAAgB,GAAGP,oBAAoB,CAACM,UAAU,CAACE,IAAZ,CAA7C;AACA,sBACE,6BAAC,gBAAD;AACE,IAAA,IAAI,EAAEH,IADR;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,gBAAgB,EAAEC;AAHpB,IADF;AAOD,CAfD;;eAiBeH,U","sourcesContent":["import React from 'react'\nimport { DiffFromTo, SchemaType } from '@sanity/field/diff'\nimport AprimoCDNPreview from './AprimoCDNPreview'\nimport AprimoPreview from './AprimoPreview'\n\nconst findPreviewComponent = (schemaName: string) => {\n switch (schemaName) {\n case 'aprimo.cdnasset':\n return AprimoCDNPreview\n case 'aprimo.asset':\n return AprimoPreview\n default:\n return () => <div />\n }\n}\n\nconst AprimoDiff = ({\n diff,\n schemaType,\n}: {\n diff: any\n schemaType: SchemaType\n}) => {\n const previewComponent = findPreviewComponent(schemaType.name)\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={previewComponent}\n />\n )\n}\n\nexport default AprimoDiff\n"],"file":"AprimoDiff.js"}
1
+ {"version":3,"sources":["../../src/components/AprimoDiff.tsx"],"names":["findPreviewComponent","schemaName","AprimoCDNPreview","AprimoPreview","AprimoDiff","diff","schemaType","console","log","DiffFromTo","previewComponent","name"],"mappings":";;;;;;;AAAA;;AACA;;AACA;;AACA;;;;AAEA,IAAMA,oBAAoB,GAAIC,UAAD,IAAwB;AACnD,UAAQA,UAAR;AACE,SAAK,iBAAL;AACE,aAAOC,yBAAP;;AACF,SAAK,cAAL;AACE,aAAOC,sBAAP;;AACF;AACE,aAAO,mBAAM,yCAAb;AANJ;AAQD,CATD;;AAWA,IAAMC,UAAU,GAAG,QAMb;AAAA,MALJC,IAKI,QALJA,IAKI;AAAA,MAJJC,UAII,QAJJA,UAII;AACJC,EAAAA,OAAO,CAACC,GAAR,CAAY,YAAZ,EAA0BC,gBAA1B;AACA,MAAMC,gBAAgB,GAAGV,oBAAoB,CAACM,UAAU,CAACK,IAAZ,CAA7C;AACA,sBACE,6BAAC,gBAAD;AACE,IAAA,IAAI,EAAEN,IADR;AAEE,IAAA,UAAU,EAAEC,UAFd;AAGE,IAAA,gBAAgB,EAAEI;AAHpB,IADF;AAOD,CAhBD;;eAkBeN,U","sourcesContent":["import React from 'react'\nimport { DiffFromTo, SchemaType } from '@sanity/field/diff'\nimport AprimoCDNPreview from './AprimoCDNPreview'\nimport AprimoPreview from './AprimoPreview'\n\nconst findPreviewComponent = (schemaName: string) => {\n switch (schemaName) {\n case 'aprimo.cdnasset':\n return AprimoCDNPreview\n case 'aprimo.asset':\n return AprimoPreview\n default:\n return () => <div />\n }\n}\n\nconst AprimoDiff = ({\n diff,\n schemaType,\n}: {\n diff: any\n schemaType: SchemaType\n}) => {\n console.log('diffFromTo', DiffFromTo)\n const previewComponent = findPreviewComponent(schemaType.name)\n return (\n <DiffFromTo\n diff={diff}\n schemaType={schemaType}\n previewComponent={previewComponent}\n />\n )\n}\n\nexport default AprimoDiff\n"],"file":"AprimoDiff.js"}
@@ -105,6 +105,7 @@ var AprimoWidget = props => {
105
105
 
106
106
  var setAsset = asset => {
107
107
  asset._key = value && value._key ? value._key : (0, _nanoid.nanoid)();
108
+ asset._type = type;
108
109
  onChange(_patchEvent.default.from(asset ? (0, _patchEvent.set)(asset) : (0, _patchEvent.unset)()));
109
110
  };
110
111
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/AprimoWidget.tsx"],"names":["SetupButtonContainer","styled","div","AprimoWidget","props","value","type","markers","level","readOnly","presence","onChange","removeValue","PatchEvent","from","setRenditions","showSettings","setShowSettings","isLoading","setIsLoading","namespace","secrets","token","setToken","renditions","setAsset","asset","_key","fetchToken","localStorage","getItem","handleMessageEvent","event","origin","tenantName","data","result","selection","window","addEventListener","removeEventListener","fetchRenditions","id","e","action","selectType","changeRendition","currentTarget","renditionId","renditionObj","find","rendition","newVal","SetupIcon","title","description","textAlign"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport PatchEvent, { set, unset } from 'part:@sanity/form-builder/patch-event'\n//TODO: pjut all these in sanity-ui\nimport ButtonGrid from 'part:@sanity/components/buttons/button-grid'\nimport Button from 'part:@sanity/components/buttons/default'\nimport Fieldset from 'part:@sanity/components/fieldsets/default'\nimport SetupIcon from 'part:@sanity/base/plugin-icon'\nimport { Marker } from '@sanity/types'\n\nimport styled from 'styled-components'\nimport AprimoPreview from './AprimoPreview'\nimport { useSecrets } from 'sanity-secrets'\nimport { nanoid } from 'nanoid'\n\nimport SecretsConfigView, { Secrets, namespace } from './SecretsConfigView'\nimport { openSelector, setAuthToken, getRenditions } from '../utils'\nimport { RenditionSelector } from './RenditionSelector'\n\nconst SetupButtonContainer = styled.div`\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n`\n\ntype Props = {\n type: Record<string, any>\n onChange: (patches: any) => void\n value: any | undefined\n level: number\n readOnly: boolean\n markers: Marker[]\n presence: any[]\n}\n\nconst AprimoWidget = (props: Props) => {\n const { value, type, markers, level, readOnly, presence, onChange } = props\n\n const removeValue = () => {\n onChange(PatchEvent.from([unset()]))\n setRenditions([])\n }\n\n const [showSettings, setShowSettings] = useState(false)\n\n //this keeps track of which component is requesting an asset\n const [isLoading, setIsLoading] = useState(false)\n\n const { secrets } = useSecrets<Secrets>(namespace)\n const [token, setToken] = useState<string | null>(null)\n const [renditions, setRenditions] = useState<Record<string, any>[]>([])\n\n const setAsset = (asset: Record<string, any>) => {\n asset._key = value && value._key ? value._key : nanoid()\n onChange(PatchEvent.from(asset ? set(asset) : unset()))\n }\n\n useEffect(() => {\n const fetchToken = async () => {\n let token = localStorage.getItem('aprimoToken') as string\n if (!token && secrets) {\n await setAuthToken(secrets)\n token = localStorage.getItem('aprimoToken') as string\n }\n setToken(token)\n }\n\n fetchToken()\n }, [value, secrets])\n\n useEffect(() => {\n const handleMessageEvent = async (event: MessageEvent) => {\n // Ensure only messages from the Aprimo Content Selector are handled\n if (\n secrets &&\n event.origin === `https://${secrets.tenantName}.dam.aprimo.com`\n ) {\n //if cancel, get out of fetching state\n if (event.data.result === 'cancel') {\n setIsLoading(false)\n return\n } else if (\n event.data.selection &&\n event.data.selection[0] &&\n isLoading\n ) {\n setAsset(event.data.selection[0])\n setIsLoading(false)\n }\n }\n }\n\n window.addEventListener('message', handleMessageEvent)\n //cleanup\n return () => window.removeEventListener('message', handleMessageEvent)\n }, [secrets, isLoading])\n\n useEffect(() => {\n const fetchRenditions = async () => {\n if (token && secrets && value && value.id) {\n try {\n const renditions = await getRenditions(secrets, token, value.id)\n setRenditions(renditions)\n } catch (e) {\n //thrown for 401\n //reset the token, which will rerun this callback\n await setAuthToken(secrets)\n const token = localStorage.getItem('aprimoToken') as string\n setToken(token)\n }\n }\n }\n fetchRenditions()\n }, [value, secrets, token])\n\n const action = (selectType: string) =>\n secrets\n ? () => {\n setIsLoading(true)\n openSelector(secrets.tenantName, selectType)\n }\n : () => setShowSettings(true)\n\n const changeRendition = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (event && event.currentTarget && event.currentTarget.value) {\n const renditionId = event.currentTarget.value\n const renditionObj = renditions.find(\n (rendition: Record<string, any>) => rendition.id === renditionId\n )\n const newVal = { ...value, ...{ rendition: renditionObj } }\n onChange(PatchEvent.from(newVal ? set(newVal) : unset()))\n }\n }\n\n return (\n <div>\n {showSettings && (\n <SecretsConfigView onClose={() => setShowSettings(false)} />\n )}\n <SetupButtonContainer>\n <Button\n color=\"primary\"\n icon={SetupIcon}\n kind=\"simple\"\n title=\"Configure\"\n tabIndex={1}\n onClick={() => setShowSettings(true)}\n />\n </SetupButtonContainer>\n <Fieldset\n markers={markers}\n presence={presence}\n legend={type.title}\n description={type.description}\n level={level}\n >\n <div style={{ textAlign: 'center' }}>\n <AprimoPreview value={value} />\n </div>\n\n <ButtonGrid align=\"start\">\n <Button\n disabled={readOnly}\n inverted\n title=\"Select an asset\"\n kind=\"default\"\n onClick={action('single')}\n >\n Select…\n </Button>\n <Button\n disabled={readOnly || !value}\n color=\"danger\"\n inverted\n title=\"Remove asset\"\n onClick={removeValue}\n >\n Remove\n </Button>\n </ButtonGrid>\n {value && (\n <RenditionSelector\n changeRendition={changeRendition}\n renditions={renditions}\n currentRendition={value && value.rendition}\n />\n )}\n </Fieldset>\n </div>\n )\n}\n\nexport default AprimoWidget\n"],"file":"AprimoWidget.js"}
1
+ {"version":3,"sources":["../../src/components/AprimoWidget.tsx"],"names":["SetupButtonContainer","styled","div","AprimoWidget","props","value","type","markers","level","readOnly","presence","onChange","removeValue","PatchEvent","from","setRenditions","showSettings","setShowSettings","isLoading","setIsLoading","namespace","secrets","token","setToken","renditions","setAsset","asset","_key","_type","fetchToken","localStorage","getItem","handleMessageEvent","event","origin","tenantName","data","result","selection","window","addEventListener","removeEventListener","fetchRenditions","id","e","action","selectType","changeRendition","currentTarget","renditionId","renditionObj","find","rendition","newVal","SetupIcon","title","description","textAlign"],"mappings":"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","sourcesContent":["import React, { useEffect, useState } from 'react'\nimport PatchEvent, { set, unset } from 'part:@sanity/form-builder/patch-event'\n//TODO: pjut all these in sanity-ui\nimport ButtonGrid from 'part:@sanity/components/buttons/button-grid'\nimport Button from 'part:@sanity/components/buttons/default'\nimport Fieldset from 'part:@sanity/components/fieldsets/default'\nimport SetupIcon from 'part:@sanity/base/plugin-icon'\nimport { Marker } from '@sanity/types'\n\nimport styled from 'styled-components'\nimport AprimoPreview from './AprimoPreview'\nimport { useSecrets } from 'sanity-secrets'\nimport { nanoid } from 'nanoid'\n\nimport SecretsConfigView, { Secrets, namespace } from './SecretsConfigView'\nimport { openSelector, setAuthToken, getRenditions } from '../utils'\nimport { RenditionSelector } from './RenditionSelector'\n\nconst SetupButtonContainer = styled.div`\n position: relative;\n display: block;\n font-size: 0.8em;\n transform: translate(0%, -10%);\n`\n\ntype Props = {\n type: Record<string, any>\n onChange: (patches: any) => void\n value: any | undefined\n level: number\n readOnly: boolean\n markers: Marker[]\n presence: any[]\n}\n\nconst AprimoWidget = (props: Props) => {\n const { value, type, markers, level, readOnly, presence, onChange } = props\n\n const removeValue = () => {\n onChange(PatchEvent.from([unset()]))\n setRenditions([])\n }\n\n const [showSettings, setShowSettings] = useState(false)\n\n //this keeps track of which component is requesting an asset\n const [isLoading, setIsLoading] = useState(false)\n\n const { secrets } = useSecrets<Secrets>(namespace)\n const [token, setToken] = useState<string | null>(null)\n const [renditions, setRenditions] = useState<Record<string, any>[]>([])\n\n const setAsset = (asset: Record<string, any>) => {\n asset._key = value && value._key ? value._key : nanoid()\n asset._type = type\n onChange(PatchEvent.from(asset ? set(asset) : unset()))\n }\n\n useEffect(() => {\n const fetchToken = async () => {\n let token = localStorage.getItem('aprimoToken') as string\n if (!token && secrets) {\n await setAuthToken(secrets)\n token = localStorage.getItem('aprimoToken') as string\n }\n setToken(token)\n }\n\n fetchToken()\n }, [value, secrets])\n\n useEffect(() => {\n const handleMessageEvent = async (event: MessageEvent) => {\n // Ensure only messages from the Aprimo Content Selector are handled\n if (\n secrets &&\n event.origin === `https://${secrets.tenantName}.dam.aprimo.com`\n ) {\n //if cancel, get out of fetching state\n if (event.data.result === 'cancel') {\n setIsLoading(false)\n return\n } else if (\n event.data.selection &&\n event.data.selection[0] &&\n isLoading\n ) {\n setAsset(event.data.selection[0])\n setIsLoading(false)\n }\n }\n }\n\n window.addEventListener('message', handleMessageEvent)\n //cleanup\n return () => window.removeEventListener('message', handleMessageEvent)\n }, [secrets, isLoading])\n\n useEffect(() => {\n const fetchRenditions = async () => {\n if (token && secrets && value && value.id) {\n try {\n const renditions = await getRenditions(secrets, token, value.id)\n setRenditions(renditions)\n } catch (e) {\n //thrown for 401\n //reset the token, which will rerun this callback\n await setAuthToken(secrets)\n const token = localStorage.getItem('aprimoToken') as string\n setToken(token)\n }\n }\n }\n fetchRenditions()\n }, [value, secrets, token])\n\n const action = (selectType: string) =>\n secrets\n ? () => {\n setIsLoading(true)\n openSelector(secrets.tenantName, selectType)\n }\n : () => setShowSettings(true)\n\n const changeRendition = (event: React.ChangeEvent<HTMLSelectElement>) => {\n if (event && event.currentTarget && event.currentTarget.value) {\n const renditionId = event.currentTarget.value\n const renditionObj = renditions.find(\n (rendition: Record<string, any>) => rendition.id === renditionId\n )\n const newVal = { ...value, ...{ rendition: renditionObj } }\n onChange(PatchEvent.from(newVal ? set(newVal) : unset()))\n }\n }\n\n return (\n <div>\n {showSettings && (\n <SecretsConfigView onClose={() => setShowSettings(false)} />\n )}\n <SetupButtonContainer>\n <Button\n color=\"primary\"\n icon={SetupIcon}\n kind=\"simple\"\n title=\"Configure\"\n tabIndex={1}\n onClick={() => setShowSettings(true)}\n />\n </SetupButtonContainer>\n <Fieldset\n markers={markers}\n presence={presence}\n legend={type.title}\n description={type.description}\n level={level}\n >\n <div style={{ textAlign: 'center' }}>\n <AprimoPreview value={value} />\n </div>\n\n <ButtonGrid align=\"start\">\n <Button\n disabled={readOnly}\n inverted\n title=\"Select an asset\"\n kind=\"default\"\n onClick={action('single')}\n >\n Select…\n </Button>\n <Button\n disabled={readOnly || !value}\n color=\"danger\"\n inverted\n title=\"Remove asset\"\n onClick={removeValue}\n >\n Remove\n </Button>\n </ButtonGrid>\n {value && (\n <RenditionSelector\n changeRendition={changeRendition}\n renditions={renditions}\n currentRendition={value && value.rendition}\n />\n )}\n </Fieldset>\n </div>\n )\n}\n\nexport default AprimoWidget\n"],"file":"AprimoWidget.js"}
@@ -19,15 +19,16 @@ var RenditionSelector = _ref => {
19
19
  var placeholder = /*#__PURE__*/_react.default.createElement("option", {
20
20
  value: "",
21
21
  disabled: true,
22
- selected: true,
23
- hidden: true
22
+ hidden: true,
23
+ key: 0
24
24
  }, "Select rendition...");
25
25
 
26
- var renditionOptions = renditions.map(rendition => /*#__PURE__*/_react.default.createElement("option", {
27
- value: rendition === null || rendition === void 0 ? void 0 : rendition.id
26
+ var renditionOptions = renditions.map((rendition, i) => /*#__PURE__*/_react.default.createElement("option", {
27
+ value: rendition === null || rendition === void 0 ? void 0 : rendition.id,
28
+ key: i + 1
28
29
  }, rendition === null || rendition === void 0 ? void 0 : rendition.label));
29
30
  var selectedRendition = {
30
- id: null
31
+ id: ""
31
32
  };
32
33
 
33
34
  if (currentRendition && renditions) {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/RenditionSelector.tsx"],"names":["RenditionSelector","renditions","changeRendition","currentRendition","placeholder","renditionOptions","map","rendition","id","label","selectedRendition","foundRendition","find"],"mappings":";;;;;;;AAAA;;AACA;;;;AAQO,IAAMA,iBAAiB,GAAG,QAIX;AAAA,MAHpBC,UAGoB,QAHpBA,UAGoB;AAAA,MAFpBC,eAEoB,QAFpBA,eAEoB;AAAA,MADpBC,gBACoB,QADpBA,gBACoB;;AACpB,MAAMC,WAAW,gBACf;AAAQ,IAAA,KAAK,EAAC,EAAd;AAAiB,IAAA,QAAQ,MAAzB;AAA0B,IAAA,QAAQ,MAAlC;AAAmC,IAAA,MAAM;AAAzC,2BADF;;AAKA,MAAMC,gBAAgB,GAAGJ,UAAU,CAACK,GAAX,CAAgBC,SAAD,iBACtC;AAAQ,IAAA,KAAK,EAAEA,SAAF,aAAEA,SAAF,uBAAEA,SAAS,CAAEC;AAA1B,KAA+BD,SAA/B,aAA+BA,SAA/B,uBAA+BA,SAAS,CAAEE,KAA1C,CADuB,CAAzB;AAIA,MAAIC,iBAAsC,GAAG;AAAEF,IAAAA,EAAE,EAAE;AAAN,GAA7C;;AACA,MAAIL,gBAAgB,IAAIF,UAAxB,EAAoC;AAClC,QAAMU,cAAc,GAAGV,UAAU,CAACW,IAAX,CACpBL,SAAD,IAAoCA,SAAS,CAACC,EAAV,KAAiBL,gBAAgB,CAACK,EADjD,CAAvB;;AAGA,QAAIG,cAAJ,EAAoB;AAClBD,MAAAA,iBAAiB,GAAGC,cAApB;AACD;AACF;;AAED,sBACE,6BAAC,UAAD;AAAQ,IAAA,QAAQ,EAAET,eAAlB;AAAmC,IAAA,KAAK,EAAEQ,iBAAiB,CAACF;AAA5D,KACG,CAACJ,WAAD,EAAc,GAAGC,gBAAjB,CADH,CADF;AAKD,CA7BM","sourcesContent":["import React, { FormEventHandler } from 'react'\nimport { Select } from '@sanity/ui'\n\ntype RenditionProps = {\n renditions: Record<string, any>\n changeRendition: FormEventHandler<HTMLSelectElement>\n currentRendition: Record<string, any> | undefined\n}\n\nexport const RenditionSelector = ({\n renditions,\n changeRendition,\n currentRendition,\n}: RenditionProps) => {\n const placeholder = (\n <option value=\"\" disabled selected hidden>\n Select rendition...\n </option>\n )\n const renditionOptions = renditions.map((rendition: Record<string, any>) => (\n <option value={rendition?.id}>{rendition?.label}</option>\n ))\n\n let selectedRendition: Record<string, any> = { id: null }\n if (currentRendition && renditions) {\n const foundRendition = renditions.find(\n (rendition: Record<string, any>) => rendition.id === currentRendition.id\n )\n if (foundRendition) {\n selectedRendition = foundRendition\n }\n }\n\n return (\n <Select onChange={changeRendition} value={selectedRendition.id}>\n {[placeholder, ...renditionOptions]}\n </Select>\n )\n}\n"],"file":"RenditionSelector.js"}
1
+ {"version":3,"sources":["../../src/components/RenditionSelector.tsx"],"names":["RenditionSelector","renditions","changeRendition","currentRendition","placeholder","renditionOptions","map","rendition","i","id","label","selectedRendition","foundRendition","find"],"mappings":";;;;;;;AAAA;;AACA;;;;AAQO,IAAMA,iBAAiB,GAAG,QAIX;AAAA,MAHpBC,UAGoB,QAHpBA,UAGoB;AAAA,MAFpBC,eAEoB,QAFpBA,eAEoB;AAAA,MADpBC,gBACoB,QADpBA,gBACoB;;AACpB,MAAMC,WAAW,gBACf;AAAQ,IAAA,KAAK,EAAC,EAAd;AAAiB,IAAA,QAAQ,MAAzB;AAA0B,IAAA,MAAM,MAAhC;AAAiC,IAAA,GAAG,EAAE;AAAtC,2BADF;;AAKA,MAAMC,gBAAgB,GAAGJ,UAAU,CAACK,GAAX,CAAe,CAACC,SAAD,EAAiCC,CAAjC,kBACtC;AAAQ,IAAA,KAAK,EAAED,SAAF,aAAEA,SAAF,uBAAEA,SAAS,CAAEE,EAA1B;AAA8B,IAAA,GAAG,EAAED,CAAC,GAAC;AAArC,KAAyCD,SAAzC,aAAyCA,SAAzC,uBAAyCA,SAAS,CAAEG,KAApD,CADuB,CAAzB;AAIA,MAAIC,iBAAsC,GAAG;AAAEF,IAAAA,EAAE,EAAE;AAAN,GAA7C;;AACA,MAAIN,gBAAgB,IAAIF,UAAxB,EAAoC;AAClC,QAAMW,cAAc,GAAGX,UAAU,CAACY,IAAX,CACpBN,SAAD,IAAoCA,SAAS,CAACE,EAAV,KAAiBN,gBAAgB,CAACM,EADjD,CAAvB;;AAGA,QAAIG,cAAJ,EAAoB;AAClBD,MAAAA,iBAAiB,GAAGC,cAApB;AACD;AACF;;AAED,sBACE,6BAAC,UAAD;AAAQ,IAAA,QAAQ,EAAEV,eAAlB;AAAmC,IAAA,KAAK,EAAES,iBAAiB,CAACF;AAA5D,KACG,CAACL,WAAD,EAAc,GAAGC,gBAAjB,CADH,CADF;AAKD,CA7BM","sourcesContent":["import React, { FormEventHandler } from 'react'\nimport { Select } from '@sanity/ui'\n\ntype RenditionProps = {\n renditions: Record<string, any>\n changeRendition: FormEventHandler<HTMLSelectElement>\n currentRendition: Record<string, any> | undefined\n}\n\nexport const RenditionSelector = ({\n renditions,\n changeRendition,\n currentRendition,\n}: RenditionProps) => {\n const placeholder = (\n <option value=\"\" disabled hidden key={0}>\n Select rendition...\n </option>\n )\n const renditionOptions = renditions.map((rendition: Record<string, any>, i: number) => (\n <option value={rendition?.id} key={i+1}>{rendition?.label}</option>\n ))\n\n let selectedRendition: Record<string, any> = { id: \"\" }\n if (currentRendition && renditions) {\n const foundRendition = renditions.find(\n (rendition: Record<string, any>) => rendition.id === currentRendition.id\n )\n if (foundRendition) {\n selectedRendition = foundRendition\n }\n }\n\n return (\n <Select onChange={changeRendition} value={selectedRendition.id}>\n {[placeholder, ...renditionOptions]}\n </Select>\n )\n}\n"],"file":"RenditionSelector.js"}
@@ -27,8 +27,9 @@ var openSelector = (tenantName, selectType) => {
27
27
  accept: "Use ".concat(assetType),
28
28
  select: selectType
29
29
  };
30
+ var params = "scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,\n width=1000,height=600,left=100,top=100";
30
31
  var encodedOptions = btoa(JSON.stringify(selectorOptions));
31
- window.open("https://".concat(tenantName, ".dam.aprimo.com/dam/selectcontent#options=").concat(encodedOptions), 'selector');
32
+ window.open("https://".concat(tenantName, ".dam.aprimo.com/dam/selectcontent#options=").concat(encodedOptions), 'selector', params);
32
33
  };
33
34
 
34
35
  exports.openSelector = openSelector;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utils/openSelector.ts"],"names":["openSelector","tenantName","selectType","assetType","selectorOptions","title","description","accept","select","encodedOptions","btoa","JSON","stringify","window","open"],"mappings":";;;;;;;AAAO,IAAMA,YAAY,GAAG,CAACC,UAAD,EAAqBC,UAArB,KAA4C;AACtE,MAAIC,SAAS,GAAG,OAAhB;;AACA,UAAQD,UAAR;AACE,SAAK,iBAAL;AACEC,MAAAA,SAAS,GAAG,iBAAZ;AACA;;AACF,SAAK,UAAL;AACEA,MAAAA,SAAS,GAAG,QAAZ;AACA;;AACF;AACEA,MAAAA,SAAS,GAAG,OAAZ;AARJ;;AAWA,MAAMC,eAAe,GAAG;AACtBC,IAAAA,KAAK,mBAAYF,SAAZ,CADiB;AAEtBG,IAAAA,WAAW,uBAAgBH,SAAhB,mDAFW;AAGtBI,IAAAA,MAAM,gBAASJ,SAAT,CAHgB;AAItBK,IAAAA,MAAM,EAAEN;AAJc,GAAxB;AAOA,MAAMO,cAAc,GAAGC,IAAI,CAACC,IAAI,CAACC,SAAL,CAAeR,eAAf,CAAD,CAA3B;AACAS,EAAAA,MAAM,CAACC,IAAP,mBACab,UADb,uDACoEQ,cADpE,GAEE,UAFF;AAID,CAzBM","sourcesContent":["export const openSelector = (tenantName: string, selectType: string) => {\n let assetType = 'asset'\n switch (selectType) {\n case 'singlerendition':\n assetType = 'asset rendition'\n break\n case 'multiple':\n assetType = 'assets'\n break\n default:\n assetType = 'asset'\n }\n\n const selectorOptions = {\n title: `Select ${assetType}`,\n description: `Select the ${assetType} you'd like to bring into this Sanity document`,\n accept: `Use ${assetType}`,\n select: selectType,\n }\n\n const encodedOptions = btoa(JSON.stringify(selectorOptions))\n window.open(\n `https://${tenantName}.dam.aprimo.com/dam/selectcontent#options=${encodedOptions}`,\n 'selector'\n )\n}\n"],"file":"openSelector.js"}
1
+ {"version":3,"sources":["../../src/utils/openSelector.ts"],"names":["openSelector","tenantName","selectType","assetType","selectorOptions","title","description","accept","select","params","encodedOptions","btoa","JSON","stringify","window","open"],"mappings":";;;;;;;AAAO,IAAMA,YAAY,GAAG,CAACC,UAAD,EAAqBC,UAArB,KAA4C;AACtE,MAAIC,SAAS,GAAG,OAAhB;;AACA,UAAQD,UAAR;AACE,SAAK,iBAAL;AACEC,MAAAA,SAAS,GAAG,iBAAZ;AACA;;AACF,SAAK,UAAL;AACEA,MAAAA,SAAS,GAAG,QAAZ;AACA;;AACF;AACEA,MAAAA,SAAS,GAAG,OAAZ;AARJ;;AAWA,MAAMC,eAAe,GAAG;AACtBC,IAAAA,KAAK,mBAAYF,SAAZ,CADiB;AAEtBG,IAAAA,WAAW,uBAAgBH,SAAhB,mDAFW;AAGtBI,IAAAA,MAAM,gBAASJ,SAAT,CAHgB;AAItBK,IAAAA,MAAM,EAAEN;AAJc,GAAxB;AAOF,MAAIO,MAAM,sHAAV;AAGE,MAAMC,cAAc,GAAGC,IAAI,CAACC,IAAI,CAACC,SAAL,CAAeT,eAAf,CAAD,CAA3B;AACAU,EAAAA,MAAM,CAACC,IAAP,mBACad,UADb,uDACoES,cADpE,GAEE,UAFF,EAEcD,MAFd;AAID,CA5BM","sourcesContent":["export const openSelector = (tenantName: string, selectType: string) => {\n let assetType = 'asset'\n switch (selectType) {\n case 'singlerendition':\n assetType = 'asset rendition'\n break\n case 'multiple':\n assetType = 'assets'\n break\n default:\n assetType = 'asset'\n }\n\n const selectorOptions = {\n title: `Select ${assetType}`,\n description: `Select the ${assetType} you'd like to bring into this Sanity document`,\n accept: `Use ${assetType}`,\n select: selectType,\n }\n \t\nlet params = `scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,\n width=1000,height=600,left=100,top=100`\n\n const encodedOptions = btoa(JSON.stringify(selectorOptions))\n window.open(\n `https://${tenantName}.dam.aprimo.com/dam/selectcontent#options=${encodedOptions}`,\n 'selector', params\n )\n}\n"],"file":"openSelector.js"}
package/package.json CHANGED
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.3.7",
2
+ "version": "0.4.1",
3
3
  "license": "MIT",
4
4
  "files": [
5
5
  "dist",