@payloadcms/plugin-seo 3.0.0-alpha.41 → 3.0.0-alpha.42
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/dist/defaults.js +1 -1
- package/dist/defaults.js.map +1 -0
- package/dist/fields/MetaDescription.js +1 -1
- package/dist/fields/MetaDescription.js.map +1 -0
- package/dist/fields/MetaImage.js +1 -1
- package/dist/fields/MetaImage.js.map +1 -0
- package/dist/fields/MetaTitle.js +1 -1
- package/dist/fields/MetaTitle.js.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -0
- package/dist/translations/index.js +1 -1
- package/dist/translations/index.js.map +1 -0
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -0
- package/dist/ui/LengthIndicator.js +1 -1
- package/dist/ui/LengthIndicator.js.map +1 -0
- package/dist/ui/Overview.js +1 -1
- package/dist/ui/Overview.js.map +1 -0
- package/dist/ui/Pill.js +1 -1
- package/dist/ui/Pill.js.map +1 -0
- package/dist/ui/Preview.js +1 -1
- package/dist/ui/Preview.js.map +1 -0
- package/package.json +7 -7
package/dist/defaults.js
CHANGED
|
@@ -9,4 +9,4 @@ export const defaults = {
|
|
|
9
9
|
}
|
|
10
10
|
};
|
|
11
11
|
|
|
12
|
-
//# sourceMappingURL=
|
|
12
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/defaults.ts"],"sourcesContent":["export const defaults = {\n description: {\n maxLength: 150,\n minLength: 100,\n },\n title: {\n maxLength: 60,\n minLength: 50,\n },\n}\n"],"names":["defaults","description","maxLength","minLength","title"],"mappings":"AAAA,OAAO,MAAMA,WAAW;IACtBC,aAAa;QACXC,WAAW;QACXC,WAAW;IACb;IACAC,OAAO;QACLF,WAAW;QACXC,WAAW;IACb;AACF,EAAC"}
|
|
@@ -110,4 +110,4 @@ export const MetaDescription = (props)=>{
|
|
|
110
110
|
})));
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
-
//# sourceMappingURL=
|
|
113
|
+
//# sourceMappingURL=MetaDescription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/MetaDescription.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldType, FormFieldBase, Options } from '@payloadcms/ui'\n\nimport { useFieldPath } from '@payloadcms/ui'\nimport { useTranslation } from '@payloadcms/ui'\nimport { TextareaInput } from '@payloadcms/ui'\nimport { useAllFormFields, useDocumentInfo, useField, useLocale } from '@payloadcms/ui'\nimport React, { useCallback } from 'react'\n\nimport type { GenerateDescription } from '../types.js'\n\nimport { defaults } from '../defaults.js'\nimport { LengthIndicator } from '../ui/LengthIndicator.js'\n\nconst { maxLength, minLength } = defaults.description\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\ntype MetaDescriptionProps = FormFieldBase & {\n hasGenerateDescriptionFn: boolean\n path: string\n}\n\nexport const MetaDescription: React.FC<MetaDescriptionProps> = (props) => {\n const { Label, hasGenerateDescriptionFn, path, required } = props\n const { path: pathFromContext, schemaPath } = useFieldPath()\n\n const { t } = useTranslation()\n\n const locale = useLocale()\n const [fields] = useAllFormFields()\n const docInfo = useDocumentInfo()\n\n const field: FieldType<string> = useField({\n path,\n } as Options)\n\n const { errorMessage, setValue, showError, value } = field\n\n const regenerateDescription = useCallback(async () => {\n if (!hasGenerateDescriptionFn) return\n\n const genDescriptionResponse = await fetch('/api/plugin-seo/generate-description', {\n body: JSON.stringify({\n ...docInfo,\n doc: { ...fields },\n locale: typeof locale === 'object' ? locale?.code : locale,\n } satisfies Parameters<GenerateDescription>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n const { result: generatedDescription } = await genDescriptionResponse.json()\n\n setValue(generatedDescription || '')\n }, [fields, setValue, hasGenerateDescriptionFn, locale, docInfo])\n\n return (\n <div\n style={{\n marginBottom: '20px',\n }}\n >\n <div\n style={{\n marginBottom: '5px',\n position: 'relative',\n }}\n >\n <div className=\"plugin-seo__field\">\n {Label}\n\n {required && (\n <span\n style={{\n color: 'var(--theme-error-500)',\n marginLeft: '5px',\n }}\n >\n *\n </span>\n )}\n\n {hasGenerateDescriptionFn && (\n <React.Fragment>\n — \n <button\n onClick={regenerateDescription}\n style={{\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n color: 'currentcolor',\n cursor: 'pointer',\n padding: 0,\n textDecoration: 'underline',\n }}\n type=\"button\"\n >\n {t('plugin-seo:autoGenerate')}\n </button>\n </React.Fragment>\n )}\n </div>\n <div\n style={{\n color: '#9A9A9A',\n }}\n >\n {t('plugin-seo:lengthTipDescription', { maxLength, minLength })}\n <a\n href=\"https://developers.google.com/search/docs/advanced/appearance/snippet#meta-descriptions\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {t('plugin-seo:bestPractices')}\n </a>\n </div>\n </div>\n <div\n style={{\n marginBottom: '10px',\n position: 'relative',\n }}\n >\n <TextareaInput\n Error={errorMessage} // TODO: Fix\n onChange={setValue}\n path={pathFromContext}\n required={required}\n showError={showError}\n style={{\n marginBottom: 0,\n }}\n value={value}\n />\n </div>\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n }}\n >\n <LengthIndicator maxLength={maxLength} minLength={minLength} text={value} />\n </div>\n </div>\n )\n}\n"],"names":["useFieldPath","useTranslation","TextareaInput","useAllFormFields","useDocumentInfo","useField","useLocale","React","useCallback","defaults","LengthIndicator","maxLength","minLength","description","MetaDescription","props","Label","hasGenerateDescriptionFn","path","required","pathFromContext","schemaPath","t","locale","fields","docInfo","field","errorMessage","setValue","showError","value","regenerateDescription","genDescriptionResponse","fetch","body","JSON","stringify","doc","code","credentials","headers","method","result","generatedDescription","json","div","style","marginBottom","position","className","span","color","marginLeft","Fragment","button","onClick","background","backgroundColor","border","cursor","padding","textDecoration","type","a","href","rel","target","Error","onChange","alignItems","display","width","text"],"mappings":"AAAA;AAIA,SAASA,YAAY,QAAQ,iBAAgB;AAC7C,SAASC,cAAc,QAAQ,iBAAgB;AAC/C,SAASC,aAAa,QAAQ,iBAAgB;AAC9C,SAASC,gBAAgB,EAAEC,eAAe,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,iBAAgB;AACvF,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,QAAQ,QAAQ,iBAAgB;AACzC,SAASC,eAAe,QAAQ,2BAA0B;AAE1D,MAAM,EAAEC,SAAS,EAAEC,SAAS,EAAE,GAAGH,SAASI,WAAW;AAQrD,OAAO,MAAMC,kBAAkD,CAACC;IAC9D,MAAM,EAAEC,KAAK,EAAEC,wBAAwB,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAGJ;IAC5D,MAAM,EAAEG,MAAME,eAAe,EAAEC,UAAU,EAAE,GAAGrB;IAE9C,MAAM,EAAEsB,CAAC,EAAE,GAAGrB;IAEd,MAAMsB,SAASjB;IACf,MAAM,CAACkB,OAAO,GAAGrB;IACjB,MAAMsB,UAAUrB;IAEhB,MAAMsB,QAA2BrB,SAAS;QACxCa;IACF;IAEA,MAAM,EAAES,YAAY,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGJ;IAErD,MAAMK,wBAAwBvB,YAAY;QACxC,IAAI,CAACS,0BAA0B;QAE/B,MAAMe,yBAAyB,MAAMC,MAAM,wCAAwC;YACjFC,MAAMC,KAAKC,SAAS,CAAC;gBACnB,GAAGX,OAAO;gBACVY,KAAK;oBAAE,GAAGb,MAAM;gBAAC;gBACjBD,QAAQ,OAAOA,WAAW,WAAWA,QAAQe,OAAOf;YACtD;YACAgB,aAAa;YACbC,SAAS;gBACP,gBAAgB;YAClB;YACAC,QAAQ;QACV;QAEA,MAAM,EAAEC,QAAQC,oBAAoB,EAAE,GAAG,MAAMX,uBAAuBY,IAAI;QAE1EhB,SAASe,wBAAwB;IACnC,GAAG;QAACnB;QAAQI;QAAUX;QAA0BM;QAAQE;KAAQ;IAEhE,qBACE,oBAACoB;QACCC,OAAO;YACLC,cAAc;QAChB;qBAEA,oBAACF;QACCC,OAAO;YACLC,cAAc;YACdC,UAAU;QACZ;qBAEA,oBAACH;QAAII,WAAU;OACZjC,OAEAG,0BACC,oBAAC+B;QACCJ,OAAO;YACLK,OAAO;YACPC,YAAY;QACd;OACD,MAKFnC,0CACC,oBAACV,MAAM8C,QAAQ,QAAC,uBAEd,oBAACC;QACCC,SAASxB;QACTe,OAAO;YACLU,YAAY;YACZC,iBAAiB;YACjBC,QAAQ;YACRP,OAAO;YACPQ,QAAQ;YACRC,SAAS;YACTC,gBAAgB;QAClB;QACAC,MAAK;OAEJxC,EAAE,6CAKX,oBAACuB;QACCC,OAAO;YACLK,OAAO;QACT;OAEC7B,EAAE,mCAAmC;QAAEX;QAAWC;IAAU,kBAC7D,oBAACmD;QACCC,MAAK;QACLC,KAAI;QACJC,QAAO;OAEN5C,EAAE,8CAIT,oBAACuB;QACCC,OAAO;YACLC,cAAc;YACdC,UAAU;QACZ;qBAEA,oBAAC9C;QACCiE,OAAOxC;QACPyC,UAAUxC;QACVV,MAAME;QACND,UAAUA;QACVU,WAAWA;QACXiB,OAAO;YACLC,cAAc;QAChB;QACAjB,OAAOA;uBAGX,oBAACe;QACCC,OAAO;YACLuB,YAAY;YACZC,SAAS;YACTC,OAAO;QACT;qBAEA,oBAAC7D;QAAgBC,WAAWA;QAAWC,WAAWA;QAAW4D,MAAM1C;;AAI3E,EAAC"}
|
package/dist/fields/MetaImage.js
CHANGED
|
@@ -111,4 +111,4 @@ export const MetaImage = (props)=>{
|
|
|
111
111
|
})));
|
|
112
112
|
};
|
|
113
113
|
|
|
114
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9maWVsZHMvTWV0YUltYWdlLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCdcblxuaW1wb3J0IHR5cGUgeyBGaWVsZFR5cGUsIE9wdGlvbnMsIFVwbG9hZElucHV0UHJvcHMgfSBmcm9tICdAcGF5bG9hZGNtcy91aSdcblxuaW1wb3J0IHtcbiAgVXBsb2FkSW5wdXQsXG4gIHVzZUFsbEZvcm1GaWVsZHMsXG4gIHVzZUNvbmZpZyxcbiAgdXNlRG9jdW1lbnRJbmZvLFxuICB1c2VGaWVsZCxcbiAgdXNlTG9jYWxlLFxuICB1c2VUcmFuc2xhdGlvbixcbn0gZnJvbSAnQHBheWxvYWRjbXMvdWknXG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tICdyZWFjdCdcblxuaW1wb3J0IHR5cGUgeyBHZW5lcmF0ZUltYWdlIH0gZnJvbSAnLi4vdHlwZXMuanMnXG5cbmltcG9ydCB7IFBpbGwgfSBmcm9tICcuLi91aS9QaWxsLmpzJ1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlZHVuZGFudC10eXBlLWNvbnN0aXR1ZW50c1xudHlwZSBNZXRhSW1hZ2VQcm9wcyA9IFVwbG9hZElucHV0UHJvcHMgJiB7XG4gIGhhc0dlbmVyYXRlSW1hZ2VGbjogYm9vbGVhblxufVxuXG5leHBvcnQgY29uc3QgTWV0YUltYWdlOiBSZWFjdC5GQzxNZXRhSW1hZ2VQcm9wcz4gPSAocHJvcHMpID0+IHtcbiAgY29uc3QgeyBMYWJlbCwgaGFzR2VuZXJhdGVJbWFnZUZuLCBwYXRoLCByZWxhdGlvblRvLCByZXF1aXJlZCB9ID0gcHJvcHMgfHwge31cblxuICBjb25zdCBmaWVsZDogRmllbGRUeXBlPHN0cmluZz4gPSB1c2VGaWVsZChwcm9wcyBhcyBPcHRpb25zKVxuXG4gIGNvbnN0IHsgdCB9ID0gdXNlVHJhbnNsYXRpb24oKVxuXG4gIGNvbnN0IGxvY2FsZSA9IHVzZUxvY2FsZSgpXG4gIGNvbnN0IFtmaWVsZHNdID0gdXNlQWxsRm9ybUZpZWxkcygpXG4gIGNvbnN0IGRvY0luZm8gPSB1c2VEb2N1bWVudEluZm8oKVxuXG4gIGNvbnN0IHsgZXJyb3JNZXNzYWdlLCBzZXRWYWx1ZSwgc2hvd0Vycm9yLCB2YWx1ZSB9ID0gZmllbGRcblxuICBjb25zdCByZWdlbmVyYXRlSW1hZ2UgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgaWYgKCFoYXNHZW5lcmF0ZUltYWdlRm4pIHJldHVyblxuXG4gICAgY29uc3QgZ2VuSW1hZ2VSZXNwb25zZSA9IGF3YWl0IGZldGNoKCcvYXBpL3BsdWdpbi1zZW8vZ2VuZXJhdGUtaW1hZ2UnLCB7XG4gICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgIC4uLmRvY0luZm8sXG4gICAgICAgIGRvYzogeyAuLi5maWVsZHMgfSxcbiAgICAgICAgbG9jYWxlOiB0eXBlb2YgbG9jYWxlID09PSAnb2JqZWN0JyA/IGxvY2FsZT8uY29kZSA6IGxvY2FsZSxcbiAgICAgIH0gc2F0aXNmaWVzIFBhcmFtZXRlcnM8R2VuZXJhdGVJbWFnZT5bMF0pLFxuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICB9KVxuXG4gICAgY29uc3QgeyByZXN1bHQ6IGdlbmVyYXRlZEltYWdlIH0gPSBhd2FpdCBnZW5JbWFnZVJlc3BvbnNlLmpzb24oKVxuXG4gICAgc2V0VmFsdWUoZ2VuZXJhdGVkSW1hZ2UgfHwgJycpXG4gIH0sIFtmaWVsZHMsIHNldFZhbHVlLCBoYXNHZW5lcmF0ZUltYWdlRm4sIGxvY2FsZSwgZG9jSW5mb10pXG5cbiAgY29uc3QgaGFzSW1hZ2UgPSBCb29sZWFuKHZhbHVlKVxuXG4gIGNvbnN0IGNvbmZpZyA9IHVzZUNvbmZpZygpXG5cbiAgY29uc3QgeyBjb2xsZWN0aW9ucywgcm91dGVzOiB7IGFwaSB9ID0ge30sIHNlcnZlclVSTCB9ID0gY29uZmlnXG5cbiAgY29uc3QgY29sbGVjdGlvbiA9IGNvbGxlY3Rpb25zPy5maW5kKChjb2xsKSA9PiBjb2xsLnNsdWcgPT09IHJlbGF0aW9uVG8pIHx8IHVuZGVmaW5lZFxuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgc3R5bGU9e3tcbiAgICAgICAgbWFyZ2luQm90dG9tOiAnMjBweCcsXG4gICAgICB9fVxuICAgID5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBtYXJnaW5Cb3R0b206ICc1cHgnLFxuICAgICAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgICAgICB9fVxuICAgICAgPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInBsdWdpbi1zZW9fX2ZpZWxkXCI+XG4gICAgICAgICAge0xhYmVsfVxuXG4gICAgICAgICAge3JlcXVpcmVkICYmIChcbiAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgY29sb3I6ICd2YXIoLS10aGVtZS1lcnJvci01MDApJyxcbiAgICAgICAgICAgICAgICBtYXJnaW5MZWZ0OiAnNXB4JyxcbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgKlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICB7aGFzR2VuZXJhdGVJbWFnZUZuICYmIChcbiAgICAgICAgICAgIDxSZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgJm5ic3A7ICZtZGFzaDsgJm5ic3A7XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtyZWdlbmVyYXRlSW1hZ2V9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgICAgICAgICAgICAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgY29sb3I6ICdjdXJyZW50Y29sb3InLFxuICAgICAgICAgICAgICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICAgICAgICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgICAgICAgICAgICAgdGV4dERlY29yYXRpb246ICd1bmRlcmxpbmUnLFxuICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7dCgncGx1Z2luLXNlbzphdXRvR2VuZXJhdGUnKX1cbiAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8L1JlYWN0LkZyYWdtZW50PlxuICAgICAgICAgICl9XG4gICAgICAgIDwvZGl2PlxuICAgICAgICB7aGFzR2VuZXJhdGVJbWFnZUZuICYmIChcbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICBjb2xvcjogJyM5QTlBOUEnLFxuICAgICAgICAgICAgfX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7dCgncGx1Z2luLXNlbzppbWFnZUF1dG9HZW5lcmF0aW9uVGlwJyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBtYXJnaW5Cb3R0b206ICcxMHB4JyxcbiAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFVwbG9hZElucHV0XG4gICAgICAgICAgRXJyb3I9e2Vycm9yTWVzc2FnZX0gLy8gVE9ETzogRml4XG4gICAgICAgICAgYXBpPXthcGl9XG4gICAgICAgICAgY29sbGVjdGlvbj17Y29sbGVjdGlvbn1cbiAgICAgICAgICBmaWx0ZXJPcHRpb25zPXt7fX1cbiAgICAgICAgICBsYWJlbD17dW5kZWZpbmVkfVxuICAgICAgICAgIG9uQ2hhbmdlPXsoaW5jb21pbmdJbWFnZSkgPT4ge1xuICAgICAgICAgICAgaWYgKGluY29taW5nSW1hZ2UgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgY29uc3QgeyBpZDogaW5jb21pbmdJRCB9ID0gaW5jb21pbmdJbWFnZVxuICAgICAgICAgICAgICBzZXRWYWx1ZShpbmNvbWluZ0lEKVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgc2V0VmFsdWUobnVsbClcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9fVxuICAgICAgICAgIHJlbGF0aW9uVG89e3JlbGF0aW9uVG99XG4gICAgICAgICAgcmVxdWlyZWQ9e3JlcXVpcmVkfVxuICAgICAgICAgIHNlcnZlclVSTD17c2VydmVyVVJMfVxuICAgICAgICAgIHNob3dFcnJvcj17c2hvd0Vycm9yfVxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBtYXJnaW5Cb3R0b206IDAsXG4gICAgICAgICAgfX1cbiAgICAgICAgICB2YWx1ZT17dmFsdWV9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAgPFBpbGxcbiAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I9e2hhc0ltYWdlID8gJ2dyZWVuJyA6ICdyZWQnfVxuICAgICAgICAgIGNvbG9yPVwid2hpdGVcIlxuICAgICAgICAgIGxhYmVsPXtoYXNJbWFnZSA/IHQoJ3BsdWdpbi1zZW86Z29vZCcpIDogdCgncGx1Z2luLXNlbzpub0ltYWdlJyl9XG4gICAgICAgIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKVxufVxuIl0sIm5hbWVzIjpbIlVwbG9hZElucHV0IiwidXNlQWxsRm9ybUZpZWxkcyIsInVzZUNvbmZpZyIsInVzZURvY3VtZW50SW5mbyIsInVzZUZpZWxkIiwidXNlTG9jYWxlIiwidXNlVHJhbnNsYXRpb24iLCJSZWFjdCIsInVzZUNhbGxiYWNrIiwiUGlsbCIsIk1ldGFJbWFnZSIsInByb3BzIiwiTGFiZWwiLCJoYXNHZW5lcmF0ZUltYWdlRm4iLCJwYXRoIiwicmVsYXRpb25UbyIsInJlcXVpcmVkIiwiZmllbGQiLCJ0IiwibG9jYWxlIiwiZmllbGRzIiwiZG9jSW5mbyIsImVycm9yTWVzc2FnZSIsInNldFZhbHVlIiwic2hvd0Vycm9yIiwidmFsdWUiLCJyZWdlbmVyYXRlSW1hZ2UiLCJnZW5JbWFnZVJlc3BvbnNlIiwiZmV0Y2giLCJib2R5IiwiSlNPTiIsInN0cmluZ2lmeSIsImRvYyIsImNvZGUiLCJjcmVkZW50aWFscyIsImhlYWRlcnMiLCJtZXRob2QiLCJyZXN1bHQiLCJnZW5lcmF0ZWRJbWFnZSIsImpzb24iLCJoYXNJbWFnZSIsIkJvb2xlYW4iLCJjb25maWciLCJjb2xsZWN0aW9ucyIsInJvdXRlcyIsImFwaSIsInNlcnZlclVSTCIsImNvbGxlY3Rpb24iLCJmaW5kIiwiY29sbCIsInNsdWciLCJ1bmRlZmluZWQiLCJkaXYiLCJzdHlsZSIsIm1hcmdpbkJvdHRvbSIsInBvc2l0aW9uIiwiY2xhc3NOYW1lIiwic3BhbiIsImNvbG9yIiwibWFyZ2luTGVmdCIsIkZyYWdtZW50IiwiYnV0dG9uIiwib25DbGljayIsImJhY2tncm91bmQiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3JkZXIiLCJjdXJzb3IiLCJwYWRkaW5nIiwidGV4dERlY29yYXRpb24iLCJ0eXBlIiwiRXJyb3IiLCJmaWx0ZXJPcHRpb25zIiwibGFiZWwiLCJvbkNoYW5nZSIsImluY29taW5nSW1hZ2UiLCJpZCIsImluY29taW5nSUQiLCJhbGlnbkl0ZW1zIiwi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
|
|
114
|
+
//# sourceMappingURL=MetaImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/MetaImage.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldType, Options, UploadInputProps } from '@payloadcms/ui'\n\nimport {\n UploadInput,\n useAllFormFields,\n useConfig,\n useDocumentInfo,\n useField,\n useLocale,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback } from 'react'\n\nimport type { GenerateImage } from '../types.js'\n\nimport { Pill } from '../ui/Pill.js'\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\ntype MetaImageProps = UploadInputProps & {\n hasGenerateImageFn: boolean\n}\n\nexport const MetaImage: React.FC<MetaImageProps> = (props) => {\n const { Label, hasGenerateImageFn, path, relationTo, required } = props || {}\n\n const field: FieldType<string> = useField(props as Options)\n\n const { t } = useTranslation()\n\n const locale = useLocale()\n const [fields] = useAllFormFields()\n const docInfo = useDocumentInfo()\n\n const { errorMessage, setValue, showError, value } = field\n\n const regenerateImage = useCallback(async () => {\n if (!hasGenerateImageFn) return\n\n const genImageResponse = await fetch('/api/plugin-seo/generate-image', {\n body: JSON.stringify({\n ...docInfo,\n doc: { ...fields },\n locale: typeof locale === 'object' ? locale?.code : locale,\n } satisfies Parameters<GenerateImage>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n const { result: generatedImage } = await genImageResponse.json()\n\n setValue(generatedImage || '')\n }, [fields, setValue, hasGenerateImageFn, locale, docInfo])\n\n const hasImage = Boolean(value)\n\n const config = useConfig()\n\n const { collections, routes: { api } = {}, serverURL } = config\n\n const collection = collections?.find((coll) => coll.slug === relationTo) || undefined\n\n return (\n <div\n style={{\n marginBottom: '20px',\n }}\n >\n <div\n style={{\n marginBottom: '5px',\n position: 'relative',\n }}\n >\n <div className=\"plugin-seo__field\">\n {Label}\n\n {required && (\n <span\n style={{\n color: 'var(--theme-error-500)',\n marginLeft: '5px',\n }}\n >\n *\n </span>\n )}\n\n {hasGenerateImageFn && (\n <React.Fragment>\n — \n <button\n onClick={regenerateImage}\n style={{\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n color: 'currentcolor',\n cursor: 'pointer',\n padding: 0,\n textDecoration: 'underline',\n }}\n type=\"button\"\n >\n {t('plugin-seo:autoGenerate')}\n </button>\n </React.Fragment>\n )}\n </div>\n {hasGenerateImageFn && (\n <div\n style={{\n color: '#9A9A9A',\n }}\n >\n {t('plugin-seo:imageAutoGenerationTip')}\n </div>\n )}\n </div>\n <div\n style={{\n marginBottom: '10px',\n position: 'relative',\n }}\n >\n <UploadInput\n Error={errorMessage} // TODO: Fix\n api={api}\n collection={collection}\n filterOptions={{}}\n label={undefined}\n onChange={(incomingImage) => {\n if (incomingImage !== null) {\n const { id: incomingID } = incomingImage\n setValue(incomingID)\n } else {\n setValue(null)\n }\n }}\n relationTo={relationTo}\n required={required}\n serverURL={serverURL}\n showError={showError}\n style={{\n marginBottom: 0,\n }}\n value={value}\n />\n </div>\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n }}\n >\n <Pill\n backgroundColor={hasImage ? 'green' : 'red'}\n color=\"white\"\n label={hasImage ? t('plugin-seo:good') : t('plugin-seo:noImage')}\n />\n </div>\n </div>\n )\n}\n"],"names":["UploadInput","useAllFormFields","useConfig","useDocumentInfo","useField","useLocale","useTranslation","React","useCallback","Pill","MetaImage","props","Label","hasGenerateImageFn","path","relationTo","required","field","t","locale","fields","docInfo","errorMessage","setValue","showError","value","regenerateImage","genImageResponse","fetch","body","JSON","stringify","doc","code","credentials","headers","method","result","generatedImage","json","hasImage","Boolean","config","collections","routes","api","serverURL","collection","find","coll","slug","undefined","div","style","marginBottom","position","className","span","color","marginLeft","Fragment","button","onClick","background","backgroundColor","border","cursor","padding","textDecoration","type","Error","filterOptions","label","onChange","incomingImage","id","incomingID","alignItems","display","width"],"mappings":"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"}
|
package/dist/fields/MetaTitle.js
CHANGED
|
@@ -109,4 +109,4 @@ export const MetaTitle = (props)=>{
|
|
|
109
109
|
})));
|
|
110
110
|
};
|
|
111
111
|
|
|
112
|
-
//# sourceMappingURL=
|
|
112
|
+
//# sourceMappingURL=MetaTitle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/fields/MetaTitle.tsx"],"sourcesContent":["'use client'\n\nimport type { FieldType, FormFieldBase, Options } from '@payloadcms/ui'\n\nimport { useFieldPath } from '@payloadcms/ui'\nimport {\n TextInput,\n useAllFormFields,\n useDocumentInfo,\n useField,\n useLocale,\n useTranslation,\n} from '@payloadcms/ui'\nimport React, { useCallback } from 'react'\n\nimport type { GenerateTitle } from '../types.js'\n\nimport { defaults } from '../defaults.js'\nimport { LengthIndicator } from '../ui/LengthIndicator.js'\nimport './index.scss'\n\nconst { maxLength, minLength } = defaults.title\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\ntype MetaTitleProps = FormFieldBase & {\n hasGenerateTitleFn: boolean\n}\n\nexport const MetaTitle: React.FC<MetaTitleProps> = (props) => {\n const { Label, hasGenerateTitleFn, path, required } = props || {}\n const { path: pathFromContext, schemaPath } = useFieldPath()\n\n const { t } = useTranslation()\n\n const field: FieldType<string> = useField({\n path,\n } as Options)\n\n const locale = useLocale()\n const [fields] = useAllFormFields()\n const docInfo = useDocumentInfo()\n\n const { errorMessage, setValue, showError, value } = field\n\n const regenerateTitle = useCallback(async () => {\n if (!hasGenerateTitleFn) return\n\n const genTitleResponse = await fetch('/api/plugin-seo/generate-title', {\n body: JSON.stringify({\n ...docInfo,\n doc: { ...fields },\n locale: typeof locale === 'object' ? locale?.code : locale,\n } satisfies Parameters<GenerateTitle>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n const { result: generatedTitle } = await genTitleResponse.json()\n\n setValue(generatedTitle || '')\n }, [fields, setValue, hasGenerateTitleFn, locale, docInfo])\n\n return (\n <div\n style={{\n marginBottom: '20px',\n }}\n >\n <div\n style={{\n marginBottom: '5px',\n position: 'relative',\n }}\n >\n <div className=\"plugin-seo__field\">\n {Label}\n\n {required && (\n <span\n style={{\n color: 'var(--theme-error-500)',\n marginLeft: '5px',\n }}\n >\n *\n </span>\n )}\n\n {hasGenerateTitleFn && (\n <React.Fragment>\n — \n <button\n onClick={regenerateTitle}\n style={{\n background: 'none',\n backgroundColor: 'transparent',\n border: 'none',\n color: 'currentcolor',\n cursor: 'pointer',\n padding: 0,\n textDecoration: 'underline',\n }}\n type=\"button\"\n >\n {t('plugin-seo:autoGenerate')}\n </button>\n </React.Fragment>\n )}\n </div>\n <div\n style={{\n color: '#9A9A9A',\n }}\n >\n {t('plugin-seo:lengthTipTitle', { maxLength, minLength })}\n <a\n href=\"https://developers.google.com/search/docs/advanced/appearance/title-link#page-titles\"\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {t('plugin-seo:bestPractices')}\n </a>\n .\n </div>\n </div>\n <div\n style={{\n marginBottom: '10px',\n position: 'relative',\n }}\n >\n <TextInput\n Error={errorMessage} // TODO: fix errormessage\n onChange={setValue}\n path={pathFromContext}\n required={required}\n showError={showError}\n style={{\n marginBottom: 0,\n }}\n value={value}\n />\n </div>\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n }}\n >\n <LengthIndicator maxLength={maxLength} minLength={minLength} text={value} />\n </div>\n </div>\n )\n}\n"],"names":["useFieldPath","TextInput","useAllFormFields","useDocumentInfo","useField","useLocale","useTranslation","React","useCallback","defaults","LengthIndicator","maxLength","minLength","title","MetaTitle","props","Label","hasGenerateTitleFn","path","required","pathFromContext","schemaPath","t","field","locale","fields","docInfo","errorMessage","setValue","showError","value","regenerateTitle","genTitleResponse","fetch","body","JSON","stringify","doc","code","credentials","headers","method","result","generatedTitle","json","div","style","marginBottom","position","className","span","color","marginLeft","Fragment","button","onClick","background","backgroundColor","border","cursor","padding","textDecoration","type","a","href","rel","target","Error","onChange","alignItems","display","width","text"],"mappings":"AAAA;AAIA,SAASA,YAAY,QAAQ,iBAAgB;AAC7C,SACEC,SAAS,EACTC,gBAAgB,EAChBC,eAAe,EACfC,QAAQ,EACRC,SAAS,EACTC,cAAc,QACT,iBAAgB;AACvB,OAAOC,SAASC,WAAW,QAAQ,QAAO;AAI1C,SAASC,QAAQ,QAAQ,iBAAgB;AACzC,SAASC,eAAe,QAAQ,2BAA0B;AAC1D,OAAO,eAAc;AAErB,MAAM,EAAEC,SAAS,EAAEC,SAAS,EAAE,GAAGH,SAASI,KAAK;AAO/C,OAAO,MAAMC,YAAsC,CAACC;IAClD,MAAM,EAAEC,KAAK,EAAEC,kBAAkB,EAAEC,IAAI,EAAEC,QAAQ,EAAE,GAAGJ,SAAS,CAAC;IAChE,MAAM,EAAEG,MAAME,eAAe,EAAEC,UAAU,EAAE,GAAGrB;IAE9C,MAAM,EAAEsB,CAAC,EAAE,GAAGhB;IAEd,MAAMiB,QAA2BnB,SAAS;QACxCc;IACF;IAEA,MAAMM,SAASnB;IACf,MAAM,CAACoB,OAAO,GAAGvB;IACjB,MAAMwB,UAAUvB;IAEhB,MAAM,EAAEwB,YAAY,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGP;IAErD,MAAMQ,kBAAkBvB,YAAY;QAClC,IAAI,CAACS,oBAAoB;QAEzB,MAAMe,mBAAmB,MAAMC,MAAM,kCAAkC;YACrEC,MAAMC,KAAKC,SAAS,CAAC;gBACnB,GAAGV,OAAO;gBACVW,KAAK;oBAAE,GAAGZ,MAAM;gBAAC;gBACjBD,QAAQ,OAAOA,WAAW,WAAWA,QAAQc,OAAOd;YACtD;YACAe,aAAa;YACbC,SAAS;gBACP,gBAAgB;YAClB;YACAC,QAAQ;QACV;QAEA,MAAM,EAAEC,QAAQC,cAAc,EAAE,GAAG,MAAMX,iBAAiBY,IAAI;QAE9DhB,SAASe,kBAAkB;IAC7B,GAAG;QAAClB;QAAQG;QAAUX;QAAoBO;QAAQE;KAAQ;IAE1D,qBACE,oBAACmB;QACCC,OAAO;YACLC,cAAc;QAChB;qBAEA,oBAACF;QACCC,OAAO;YACLC,cAAc;YACdC,UAAU;QACZ;qBAEA,oBAACH;QAAII,WAAU;OACZjC,OAEAG,0BACC,oBAAC+B;QACCJ,OAAO;YACLK,OAAO;YACPC,YAAY;QACd;OACD,MAKFnC,oCACC,oBAACV,MAAM8C,QAAQ,QAAC,uBAEd,oBAACC;QACCC,SAASxB;QACTe,OAAO;YACLU,YAAY;YACZC,iBAAiB;YACjBC,QAAQ;YACRP,OAAO;YACPQ,QAAQ;YACRC,SAAS;YACTC,gBAAgB;QAClB;QACAC,MAAK;OAEJxC,EAAE,6CAKX,oBAACuB;QACCC,OAAO;YACLK,OAAO;QACT;OAEC7B,EAAE,6BAA6B;QAAEX;QAAWC;IAAU,kBACvD,oBAACmD;QACCC,MAAK;QACLC,KAAI;QACJC,QAAO;OAEN5C,EAAE,8BACD,qBAIR,oBAACuB;QACCC,OAAO;YACLC,cAAc;YACdC,UAAU;QACZ;qBAEA,oBAAC/C;QACCkE,OAAOxC;QACPyC,UAAUxC;QACVV,MAAME;QACND,UAAUA;QACVU,WAAWA;QACXiB,OAAO;YACLC,cAAc;QAChB;QACAjB,OAAOA;uBAGX,oBAACe;QACCC,OAAO;YACLuB,YAAY;YACZC,SAAS;YACTC,OAAO;QACT;qBAEA,oBAAC7D;QAAgBC,WAAWA;QAAWC,WAAWA;QAAW4D,MAAM1C;;AAI3E,EAAC"}
|
package/dist/index.js
CHANGED
|
@@ -246,4 +246,4 @@ const seo = (pluginConfig)=>(config)=>{
|
|
|
246
246
|
};
|
|
247
247
|
export default seo;
|
|
248
248
|
|
|
249
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICdwYXlsb2FkL2NvbmZpZydcbmltcG9ydCB0eXBlIHsgRmllbGQsIEdyb3VwRmllbGQsIFRhYnNGaWVsZCwgVGV4dEZpZWxkIH0gZnJvbSAncGF5bG9hZC90eXBlcydcblxuaW1wb3J0IHsgZGVlcE1lcmdlIH0gZnJvbSAncGF5bG9hZC91dGlsaXRpZXMnXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnXG5cbmltcG9ydCB0eXBlIHtcbiAgR2VuZXJhdGVEZXNjcmlwdGlvbixcbiAgR2VuZXJhdGVJbWFnZSxcbiAgR2VuZXJhdGVUaXRsZSxcbiAgR2VuZXJhdGVVUkwsXG4gIFBsdWdpbkNvbmZpZyxcbn0gZnJvbSAnLi90eXBlcy5qcydcblxuaW1wb3J0IHsgTWV0YURlc2NyaXB0aW9uIH0gZnJvbSAnLi9maWVsZHMvTWV0YURlc2NyaXB0aW9uLmpzJ1xuaW1wb3J0IHsgTWV0YUltYWdlIH0gZnJvbSAnLi9maWVsZHMvTWV0YUltYWdlLmpzJ1xuaW1wb3J0IHsgTWV0YVRpdGxlIH0gZnJvbSAnLi9maWVsZHMvTWV0YVRpdGxlLmpzJ1xuaW1wb3J0IHRyYW5zbGF0aW9ucyBmcm9tICcuL3RyYW5zbGF0aW9ucy9pbmRleC5qcydcbmltcG9ydCB7IE92ZXJ2aWV3IH0gZnJvbSAnLi91aS9PdmVydmlldy5qcydcbmltcG9ydCB7IFByZXZpZXcgfSBmcm9tICcuL3VpL1ByZXZpZXcuanMnXG5cbmNvbnN0IHNlbyA9XG4gIChwbHVnaW5Db25maWc6IFBsdWdpbkNvbmZpZykgPT5cbiAgKGNvbmZpZzogQ29uZmlnKTogQ29uZmlnID0+IHtcbiAgICBjb25zdCBzZW9GaWVsZHM6IEdyb3VwRmllbGRbXSA9IFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ21ldGEnLFxuICAgICAgICB0eXBlOiAnZ3JvdXAnLFxuICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnb3ZlcnZpZXcnLFxuICAgICAgICAgICAgdHlwZTogJ3VpJyxcbiAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgICBGaWVsZDogT3ZlcnZpZXcsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbGFiZWw6ICdPdmVydmlldycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndGl0bGUnLFxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxuICAgICAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICAgICAgY29tcG9uZW50czoge1xuICAgICAgICAgICAgICAgIEZpZWxkOiAocHJvcHMpID0+IChcbiAgICAgICAgICAgICAgICAgIDxNZXRhVGl0bGVcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgICAgICBoYXNHZW5lcmF0ZVRpdGxlRm49e3R5cGVvZiBwbHVnaW5Db25maWcuZ2VuZXJhdGVUaXRsZSA9PT0gJ2Z1bmN0aW9uJ31cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBsb2NhbGl6ZWQ6IHRydWUsXG4gICAgICAgICAgICAuLi4oKHBsdWdpbkNvbmZpZz8uZmllbGRPdmVycmlkZXM/LnRpdGxlIGFzIHVua25vd24gYXMgVGV4dEZpZWxkKSA/PyB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZGVzY3JpcHRpb24nLFxuICAgICAgICAgICAgdHlwZTogJ3RleHRhcmVhJyxcbiAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgICBGaWVsZDogKHByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8TWV0YURlc2NyaXB0aW9uXG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgICAgICAgICAgaGFzR2VuZXJhdGVEZXNjcmlwdGlvbkZuPXtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgcGx1Z2luQ29uZmlnLmdlbmVyYXRlRGVzY3JpcHRpb24gPT09ICdmdW5jdGlvbidcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvY2FsaXplZDogdHJ1ZSxcbiAgICAgICAgICAgIC4uLihwbHVnaW5Db25maWc/LmZpZWxkT3ZlcnJpZGVzPy5kZXNjcmlwdGlvbiA/PyB7fSksXG4gICAgICAgICAgfSxcbiAgICAgICAgICAuLi4ocGx1Z2luQ29uZmlnPy51cGxvYWRzQ29sbGVjdGlvblxuICAgICAgICAgICAgPyBbXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9jb25zaXN0ZW50LXR5cGUtYXNzZXJ0aW9uc1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6ICdpbWFnZScsXG4gICAgICAgICAgICAgICAgICB0eXBlOiAndXBsb2FkJyxcbiAgICAgICAgICAgICAgICAgIGFkbWluOiB7XG4gICAgICAgICAgICAgICAgICAgIGNvbXBvbmVudHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICBGaWVsZDogKHByb3BzKSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8TWV0YUltYWdlXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzR2VuZXJhdGVJbWFnZUZuPXt0eXBlb2YgcGx1Z2luQ29uZmlnLmdlbmVyYXRlSW1hZ2UgPT09ICdmdW5jdGlvbid9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgICAgICAgICdNYXhpbXVtIHVwbG9hZCBmaWxlIHNpemU6IDEyTUIuIFJlY29tbWVuZGVkIGZpbGUgc2l6ZSBmb3IgaW1hZ2VzIGlzIDw1MDBLQi4nLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGxhYmVsOiAnTWV0YSBJbWFnZScsXG4gICAgICAgICAgICAgICAgICBsb2NhbGl6ZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgICByZWxhdGlvblRvOiBwbHVnaW5Db25maWc/LnVwbG9hZHNDb2xsZWN0aW9uLFxuICAgICAgICAgICAgICAgICAgLi4uKHBsdWdpbkNvbmZpZz8uZmllbGRPdmVycmlkZXM/LmltYWdlID8/IHt9KSxcbiAgICAgICAgICAgICAgICB9IGFzIEZpZWxkLFxuICAgICAgICAgICAgICBdXG4gICAgICAgICAgICA6IFtdKSxcbiAgICAgICAgICAuLi4ocGx1Z2luQ29uZmlnPy5maWVsZHMgfHwgW10pLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdwcmV2aWV3JyxcbiAgICAgICAgICAgIHR5cGU6ICd1aScsXG4gICAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgICBjb21wb25lbnRzOiB7XG4gICAgICAgICAgICAgICAgRmllbGQ6IChwcm9wcykgPT4gKFxuICAgICAgICAgICAgICAgICAgPFByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxuICAgICAgICAgICAgICAgICAgICBoYXNHZW5lcmF0ZVVSTEZuPXt0eXBlb2YgcGx1Z2luQ29uZmlnLmdlbmVyYXRlVVJMID09PSAnZnVuY3Rpb24nfVxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxhYmVsOiAnUHJldmlldycsXG4gICAgICAgICAgfSxcbiAgICAgICAgXSxcbiAgICAgICAgaW50ZXJmYWNlTmFtZTogcGx1Z2luQ29uZmlnLmludGVyZmFjZU5hbWUsXG4gICAgICAgIGxhYmVsOiAnU0VPJyxcbiAgICAgIH0sXG4gICAgXVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLmNvbmZpZyxcbiAgICAgIGNvbGxlY3Rpb25zOlxuICAgICAgICBjb25maWcuY29sbGVjdGlvbnM/Lm1hcCgoY29sbGVjdGlvbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgc2x1ZyB9ID0gY29sbGVjdGlvblxuICAgICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IHBsdWdpbkNvbmZpZz8uY29sbGVjdGlvbnM/LmluY2x1ZGVzKHNsdWcpXG5cbiAgICAgICAgICBpZiAoaXNFbmFibGVkKSB7XG4gICAgICAgICAgICBpZiAocGx1Z2luQ29uZmlnPy50YWJiZWRVSSkge1xuICAgICAgICAgICAgICAvLyBwcmV2ZW50IGlzc3VlcyB3aXRoIGF1dGggZW5hYmxlZCBjb2xsZWN0aW9ucyBoYXZpbmcgYW4gZW1haWwgZmllbGQgdGhhdCBzaG91bGRuJ3QgYmUgbW92ZWQgdG8gdGhlIFNFTyB0YWJcbiAgICAgICAgICAgICAgY29uc3QgZW1haWxGaWVsZCA9XG4gICAgICAgICAgICAgICAgKGNvbGxlY3Rpb24uYXV0aCB8fFxuICAgICAgICAgICAgICAgICAgISh0eXBlb2YgY29sbGVjdGlvbi5hdXRoID09PSAnb2JqZWN0JyAmJiBjb2xsZWN0aW9uLmF1dGguZGlzYWJsZUxvY2FsU3RyYXRlZ3kpKSAmJlxuICAgICAgICAgICAgICAgIGNvbGxlY3Rpb24uZmllbGRzPy5maW5kKChmaWVsZCkgPT4gJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgPT09ICdlbWFpbCcpXG5cbiAgICAgICAgICAgICAgY29uc3Qgc2VvVGFiczogVGFic0ZpZWxkW10gPSBbXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgdHlwZTogJ3RhYnMnLFxuICAgICAgICAgICAgICAgICAgdGFiczogW1xuICAgICAgICAgICAgICAgICAgICAvLyBhcHBlbmQgYSBuZXcgdGFiIG9udG8gdGhlIGVuZCBvZiB0aGUgdGFicyBhcnJheSwgaWYgdGhlcmUgaXMgb25lIGF0IHRoZSBmaXJzdCBpbmRleFxuICAgICAgICAgICAgICAgICAgICAvLyBpZiBuZWVkZWQsIGNyZWF0ZSBhIG5ldyBgQ29udGVudGAgdGFiIGluIHRoZSBmaXJzdCBpbmRleCBmb3IgdGhpcyBjb2xsZWN0aW9uJ3MgYmFzZSBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgLi4uKGNvbGxlY3Rpb24/LmZpZWxkcz8uWzBdPy50eXBlID09PSAndGFicydcbiAgICAgICAgICAgICAgICAgICAgICA/IGNvbGxlY3Rpb24uZmllbGRzWzBdPy50YWJzXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLigoZW1haWxGaWVsZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGNvbGxlY3Rpb24uZmllbGRzLmZpbHRlcihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmaWVsZCkgPT4gJ25hbWUnIGluIGZpZWxkICYmIGZpZWxkLm5hbWUgIT09ICdlbWFpbCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGNvbGxlY3Rpb24uZmllbGRzKSB8fCBbXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogY29sbGVjdGlvbj8ubGFiZWxzPy5zaW5ndWxhciB8fCAnQ29udGVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczogc2VvRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU0VPJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uY29sbGVjdGlvbixcbiAgICAgICAgICAgICAgICBmaWVsZHM6IFtcbiAgICAgICAgICAgICAgICAgIC4uLihlbWFpbEZpZWxkID8gW2VtYWlsRmllbGRdIDogW10pLFxuICAgICAgICAgICAgICAgICAgLi4uc2VvVGFicyxcbiAgICAgICAgICAgICAgICAgIC4uLihjb2xsZWN0aW9uPy5maWVsZHM/LlswXT8udHlwZSA9PT0gJ3RhYnMnID8gY29sbGVjdGlvbi5maWVsZHMuc2xpY2UoMSkgOiBbXSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5jb2xsZWN0aW9uLFxuICAgICAgICAgICAgICBmaWVsZHM6IFsuLi4oY29sbGVjdGlvbj8uZmllbGRzIHx8IFtdKSwgLi4uc2VvRmllbGRzXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gY29sbGVjdGlvblxuICAgICAgICB9KSB8fCBbXSxcbiAgICAgIGVuZHBvaW50czogW1xuICAgICAgICB7XG4gICAgICAgICAgaGFuZGxlcjogYXN5bmMgKHJlcSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgYXJnczogUGFyYW1ldGVyczxHZW5lcmF0ZVRpdGxlPlswXSA9XG4gICAgICAgICAgICAgIHJlcS5kYXRhIGFzIHVua25vd24gYXMgUGFyYW1ldGVyczxHZW5lcmF0ZVRpdGxlPlswXVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luQ29uZmlnLmdlbmVyYXRlVGl0bGUoYXJncylcbiAgICAgICAgICAgIHJldHVybiBuZXcgUmVzcG9uc2UoSlNPTi5zdHJpbmdpZnkoeyByZXN1bHQgfSksIHsgc3RhdHVzOiAyMDAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIG1ldGhvZDogJ3Bvc3QnLFxuICAgICAgICAgIHBhdGg6ICcvcGx1Z2luLXNlby9nZW5lcmF0ZS10aXRsZScsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBoYW5kbGVyOiBhc3luYyAocmVxKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBhcmdzOiBQYXJhbWV0ZXJzPEdlbmVyYXRlRGVzY3JpcHRpb24+WzBdID1cbiAgICAgICAgICAgICAgcmVxLmRhdGEgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPEdlbmVyYXRlRGVzY3JpcHRpb24+WzBdXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBwbHVnaW5Db25maWcuZ2VuZXJhdGVEZXNjcmlwdGlvbihhcmdzKVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZXNwb25zZShKU09OLnN0cmluZ2lmeSh7IHJlc3VsdCB9KSwgeyBzdGF0dXM6IDIwMCB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgcGF0aDogJy9wbHVnaW4tc2VvL2dlbmVyYXRlLWRlc2NyaXB0aW9uJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhhbmRsZXI6IGFzeW5jIChyZXEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3M6IFBhcmFtZXRlcnM8R2VuZXJhdGVVUkw+WzBdID1cbiAgICAgICAgICAgICAgcmVxLmRhdGEgYXMgdW5rbm93biBhcyBQYXJhbWV0ZXJzPEdlbmVyYXRlVVJMPlswXVxuICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcGx1Z2luQ29uZmlnLmdlbmVyYXRlVVJMKGFyZ3MpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKEpTT04uc3RyaW5naWZ5KHsgcmVzdWx0IH0pLCB7IHN0YXR1czogMjAwIH0pXG4gICAgICAgICAgfSxcbiAgICAgICAgICBtZXRob2Q6ICdwb3N0JyxcbiAgICAgICAgICBwYXRoOiAnL3BsdWdpbi1zZW8vZ2VuZXJhdGUtdXJsJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIGhhbmRsZXI6IGFzeW5jIChyZXEpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGFyZ3M6IFBhcmFtZXRlcnM8R2VuZXJhdGVJbWFnZT5bMF0gPVxuICAgICAgICAgICAgICByZXEuZGF0YSBhcyB1bmtub3duIGFzIFBhcmFtZXRlcnM8R2VuZXJhdGVJbWFnZT5bMF1cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHBsdWdpbkNvbmZpZy5nZW5lcmF0ZUltYWdlKGFyZ3MpXG4gICAgICAgICAgICByZXR1cm4gbmV3IFJlc3BvbnNlKHJlc3VsdCwgeyBzdGF0dXM6IDIwMCB9KVxuICAgICAgICAgIH0sXG4gICAgICAgICAgbWV0aG9kOiAncG9zdCcsXG4gICAgICAgICAgcGF0aDogJy9wbHVnaW4tc2VvL2dlbmVyYXRlLWltYWdlJyxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgICBnbG9iYWxzOlxuICAgICAgICBjb25maWcuZ2xvYmFscz8ubWFwKChnbG9iYWwpID0+IHtcbiAgICAgICAgICBjb25zdCB7IHNsdWcgfSA9IGdsb2JhbFxuICAgICAgICAgIGNvbnN0IGlzRW5hYmxlZCA9IHBsdWdpbkNvbmZpZz8uZ2xvYmFscz8uaW5jbHVkZXMoc2x1ZylcblxuICAgICAgICAgIGlmIChpc0VuYWJsZWQpIHtcbiAgICAgICAgICAgIGlmIChwbHVnaW5Db25maWc/LnRhYmJlZFVJKSB7XG4gICAgICAgICAgICAgIGNvbnN0IHNlb1RhYnM6IFRhYnNGaWVsZFtdID0gW1xuICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgIHR5cGU6ICd0YWJzJyxcbiAgICAgICAgICAgICAgICAgIHRhYnM6IFtcbiAgICAgICAgICAgICAgICAgICAgLy8gYXBwZW5kIGEgbmV3IHRhYiBvbnRvIHRoZSBlbmQgb2YgdGhlIHRhYnMgYXJyYXksIGlmIHRoZXJlIGlzIG9uZSBhdCB0aGUgZmlyc3QgaW5kZXhcbiAgICAgICAgICAgICAgICAgICAgLy8gaWYgbmVlZGVkLCBjcmVhdGUgYSBuZXcgYENvbnRlbnRgIHRhYiBpbiB0aGUgZmlyc3QgaW5kZXggZm9yIHRoaXMgZ2xvYmFsJ3MgYmFzZSBmaWVsZHNcbiAgICAgICAgICAgICAgICAgICAgLi4uKGdsb2JhbD8uZmllbGRzPy5bMF0udHlwZSA9PT0gJ3RhYnMnXG4gICAgICAgICAgICAgICAgICAgICAgPyBnbG9iYWwuZmllbGRzWzBdPy50YWJzXG4gICAgICAgICAgICAgICAgICAgICAgOiBbXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHM6IFsuLi4oZ2xvYmFsPy5maWVsZHMgfHwgW10pXSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2xvYmFsPy5sYWJlbCB8fCAnQ29udGVudCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICBdKSxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkczogc2VvRmllbGRzLFxuICAgICAgICAgICAgICAgICAgICAgIGxhYmVsOiAnU0VPJyxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgXVxuXG4gICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgLi4uZ2xvYmFsLFxuICAgICAgICAgICAgICAgIGZpZWxkczogW1xuICAgICAgICAgICAgICAgICAgLi4uc2VvVGFicyxcbiAgICAgICAgICAgICAgICAgIC4uLihnbG9iYWw/LmZpZWxkcz8uWzBdLnR5cGUgPT09ICd0YWJzJyA/IGdsb2JhbD8uZmllbGRzPy5zbGljZSgxKSA6IFtdKSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmdsb2JhbCxcbiAgICAgICAgICAgICAgZmllbGRzOiBbLi4uKGdsb2JhbD8uZmllbGRzIHx8IFtdKSwgLi4uc2VvRmllbGRzXSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4gZ2xvYmFsXG4gICAgICAgIH0pIHx8IFtdLFxuICAgICAgaTE4bjoge1xuICAgICAgICAuLi5jb25maWcuaTE4bixcbiAgICAgICAgdHJhbnNsYXRpb25zOiB7XG4gICAgICAgICAgLi4uZGVlcE1lcmdlKHRyYW5zbGF0aW9ucywgY29uZmlnLmkxOG4/LnRyYW5zbGF0aW9ucyksXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG5leHBvcnQgZGVmYXVsdCBzZW9cbiJdLCJuYW1lcyI6WyJkZWVwTWVyZ2UiLCJSZWFjdCIsIk1ldGFEZXNjcmlwdGlvbiIsIk1ldGFJbWFnZSIsIk1ldGFUaXRsZSIsInRyYW5zbGF0aW9ucyIsIk92ZXJ2aWV3IiwiUHJldmlldyIsInNlbyIsInBsdWdpbkNvbmZpZyIsImNvbmZpZyIsInNlb0ZpZWxkcyIsIm5hbWUiLCJ0eXBlIiwiZmllbGRzIiwiYWRtaW4iLCJjb21wb25lbnRzIiwiRmllbGQiLCJsYWJlbCIsInByb3BzIiwiaGFzR2VuZXJhdGVUaXRsZUZuIiwiZ2VuZXJhdGVUaXRsZSIsImxvY2FsaXplZCIsImZpZWxkT3ZlcnJpZGVzIiwidGl0bGUiLCJoYXNHZW5lcmF0ZURlc2NyaXB0aW9uRm4iLCJnZW5lcmF0ZURlc2NyaXB0aW9uIiwiZGVzY3JpcHRpb24iLCJ1cGxvYWRzQ29sbGVjdGlvbiIsImhhc0dlbmVyYXRlSW1hZ2VGbiIsImdlbmVyYXRlSW1hZ2UiLCJyZWxhdGlvblRvIiwiaW1hZ2UiLCJoYXNHZW5lcmF0ZVVSTEZuIiwiZ2VuZXJhdGVVUkwiLCJpbnRlcmZhY2VOYW1lIiwiY29sbGVjdGlvbnMiLCJtYXAiLCJjb2xsZWN0aW9uIiwic2x1ZyIsImlzRW5hYmxlZCIsImluY2x1ZGVzIiwidGFiYmVkVUkiLCJlbWFpbEZpZWxkIiwiYXV0aCIsImRpc2FibGVMb2NhbFN0cmF0ZWd5IiwiZmluZCIsImZpZWxkIiwic2VvVGFicyIsInRhYnMiLCJmaWx0ZXIiLCJsYWJlbHMiLCJzaW5ndWxhciIsInNsaWNlIiwiZW5kcG9pbnRzIiwiaGFuZGxlciIsInJlcSIsImFyZ3MiLCJkYXRhIiwicmVzdWx0IiwiUmVzcG9uc2UiLCJKU09OIiwic3RyaW5naWZ5Iiwic3RhdHVzIiwibWV0aG9kIiwicGF0aCIsImdsb2JhbHMiLCJnbG9iYWwiLCJpMThuIl0sIm1hcHBpbmdzIjoiQUFHQSxTQUFTQSxTQUFTLFFBQVEsb0JBQW1CO0FBQzdDLE9BQU9DLFdBQVcsUUFBTztBQVV6QixTQUFTQyxlQUFlLFFBQVEsOEJBQTZCO0FBQzdELFNBQVNDLFNBQVMsUUFBUSx3QkFBdUI7QUFDakQsU0FBU0MsU0FBUyxRQUFRLHdCQUF1QjtBQUNqRCxPQUFPQyxrQkFBa0IsMEJBQXlCO0FBQ2xELFNBQVNDLFFBQVEsUUFBUSxtQkFBa0I7QUFDM0MsU0FBU0MsT0FBTyxRQUFRLGtCQUFpQjtBQUV6QyxNQUFNQyxNQUNKLENBQUNDLGVBQ0QsQ0FBQ0M7UUFDQyxNQUFNQyxZQUEwQjtZQUM5QjtnQkFDRUMsTUFBTTtnQkFDTkMsTUFBTTtn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
|
|
249
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.tsx"],"sourcesContent":["import type { Config } from 'payload/config'\nimport type { Field, GroupField, TabsField, TextField } from 'payload/types'\n\nimport { deepMerge } from 'payload/utilities'\nimport React from 'react'\n\nimport type {\n GenerateDescription,\n GenerateImage,\n GenerateTitle,\n GenerateURL,\n PluginConfig,\n} from './types.js'\n\nimport { MetaDescription } from './fields/MetaDescription.js'\nimport { MetaImage } from './fields/MetaImage.js'\nimport { MetaTitle } from './fields/MetaTitle.js'\nimport translations from './translations/index.js'\nimport { Overview } from './ui/Overview.js'\nimport { Preview } from './ui/Preview.js'\n\nconst seo =\n (pluginConfig: PluginConfig) =>\n (config: Config): Config => {\n const seoFields: GroupField[] = [\n {\n name: 'meta',\n type: 'group',\n fields: [\n {\n name: 'overview',\n type: 'ui',\n admin: {\n components: {\n Field: Overview,\n },\n },\n label: 'Overview',\n },\n {\n name: 'title',\n type: 'text',\n admin: {\n components: {\n Field: (props) => (\n <MetaTitle\n {...props}\n hasGenerateTitleFn={typeof pluginConfig.generateTitle === 'function'}\n />\n ),\n },\n },\n localized: true,\n ...((pluginConfig?.fieldOverrides?.title as unknown as TextField) ?? {}),\n },\n {\n name: 'description',\n type: 'textarea',\n admin: {\n components: {\n Field: (props) => (\n <MetaDescription\n {...props}\n hasGenerateDescriptionFn={\n typeof pluginConfig.generateDescription === 'function'\n }\n />\n ),\n },\n },\n localized: true,\n ...(pluginConfig?.fieldOverrides?.description ?? {}),\n },\n ...(pluginConfig?.uploadsCollection\n ? [\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n {\n name: 'image',\n type: 'upload',\n admin: {\n components: {\n Field: (props) => (\n <MetaImage\n {...props}\n hasGenerateImageFn={typeof pluginConfig.generateImage === 'function'}\n />\n ),\n },\n description:\n 'Maximum upload file size: 12MB. Recommended file size for images is <500KB.',\n },\n label: 'Meta Image',\n localized: true,\n relationTo: pluginConfig?.uploadsCollection,\n ...(pluginConfig?.fieldOverrides?.image ?? {}),\n } as Field,\n ]\n : []),\n ...(pluginConfig?.fields || []),\n {\n name: 'preview',\n type: 'ui',\n admin: {\n components: {\n Field: (props) => (\n <Preview\n {...props}\n hasGenerateURLFn={typeof pluginConfig.generateURL === 'function'}\n />\n ),\n },\n },\n label: 'Preview',\n },\n ],\n interfaceName: pluginConfig.interfaceName,\n label: 'SEO',\n },\n ]\n\n return {\n ...config,\n collections:\n config.collections?.map((collection) => {\n const { slug } = collection\n const isEnabled = pluginConfig?.collections?.includes(slug)\n\n if (isEnabled) {\n if (pluginConfig?.tabbedUI) {\n // prevent issues with auth enabled collections having an email field that shouldn't be moved to the SEO tab\n const emailField =\n (collection.auth ||\n !(typeof collection.auth === 'object' && collection.auth.disableLocalStrategy)) &&\n collection.fields?.find((field) => 'name' in field && field.name === 'email')\n\n const seoTabs: TabsField[] = [\n {\n type: 'tabs',\n tabs: [\n // append a new tab onto the end of the tabs array, if there is one at the first index\n // if needed, create a new `Content` tab in the first index for this collection's base fields\n ...(collection?.fields?.[0]?.type === 'tabs'\n ? collection.fields[0]?.tabs\n : [\n {\n fields: [\n ...((emailField\n ? collection.fields.filter(\n (field) => 'name' in field && field.name !== 'email',\n )\n : collection.fields) || []),\n ],\n label: collection?.labels?.singular || 'Content',\n },\n ]),\n {\n fields: seoFields,\n label: 'SEO',\n },\n ],\n },\n ]\n\n return {\n ...collection,\n fields: [\n ...(emailField ? [emailField] : []),\n ...seoTabs,\n ...(collection?.fields?.[0]?.type === 'tabs' ? collection.fields.slice(1) : []),\n ],\n }\n }\n\n return {\n ...collection,\n fields: [...(collection?.fields || []), ...seoFields],\n }\n }\n\n return collection\n }) || [],\n endpoints: [\n {\n handler: async (req) => {\n const args: Parameters<GenerateTitle>[0] =\n req.data as unknown as Parameters<GenerateTitle>[0]\n const result = await pluginConfig.generateTitle(args)\n return new Response(JSON.stringify({ result }), { status: 200 })\n },\n method: 'post',\n path: '/plugin-seo/generate-title',\n },\n {\n handler: async (req) => {\n const args: Parameters<GenerateDescription>[0] =\n req.data as unknown as Parameters<GenerateDescription>[0]\n const result = await pluginConfig.generateDescription(args)\n return new Response(JSON.stringify({ result }), { status: 200 })\n },\n method: 'post',\n path: '/plugin-seo/generate-description',\n },\n {\n handler: async (req) => {\n const args: Parameters<GenerateURL>[0] =\n req.data as unknown as Parameters<GenerateURL>[0]\n const result = await pluginConfig.generateURL(args)\n return new Response(JSON.stringify({ result }), { status: 200 })\n },\n method: 'post',\n path: '/plugin-seo/generate-url',\n },\n {\n handler: async (req) => {\n const args: Parameters<GenerateImage>[0] =\n req.data as unknown as Parameters<GenerateImage>[0]\n const result = await pluginConfig.generateImage(args)\n return new Response(result, { status: 200 })\n },\n method: 'post',\n path: '/plugin-seo/generate-image',\n },\n ],\n globals:\n config.globals?.map((global) => {\n const { slug } = global\n const isEnabled = pluginConfig?.globals?.includes(slug)\n\n if (isEnabled) {\n if (pluginConfig?.tabbedUI) {\n const seoTabs: TabsField[] = [\n {\n type: 'tabs',\n tabs: [\n // append a new tab onto the end of the tabs array, if there is one at the first index\n // if needed, create a new `Content` tab in the first index for this global's base fields\n ...(global?.fields?.[0].type === 'tabs'\n ? global.fields[0]?.tabs\n : [\n {\n fields: [...(global?.fields || [])],\n label: global?.label || 'Content',\n },\n ]),\n {\n fields: seoFields,\n label: 'SEO',\n },\n ],\n },\n ]\n\n return {\n ...global,\n fields: [\n ...seoTabs,\n ...(global?.fields?.[0].type === 'tabs' ? global?.fields?.slice(1) : []),\n ],\n }\n }\n\n return {\n ...global,\n fields: [...(global?.fields || []), ...seoFields],\n }\n }\n\n return global\n }) || [],\n i18n: {\n ...config.i18n,\n translations: {\n ...deepMerge(translations, config.i18n?.translations),\n },\n },\n }\n }\n\nexport default seo\n"],"names":["deepMerge","React","MetaDescription","MetaImage","MetaTitle","translations","Overview","Preview","seo","pluginConfig","config","seoFields","name","type","fields","admin","components","Field","label","props","hasGenerateTitleFn","generateTitle","localized","fieldOverrides","title","hasGenerateDescriptionFn","generateDescription","description","uploadsCollection","hasGenerateImageFn","generateImage","relationTo","image","hasGenerateURLFn","generateURL","interfaceName","collections","map","collection","slug","isEnabled","includes","tabbedUI","emailField","auth","disableLocalStrategy","find","field","seoTabs","tabs","filter","labels","singular","slice","endpoints","handler","req","args","data","result","Response","JSON","stringify","status","method","path","globals","global","i18n"],"mappings":"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"}
|
|
@@ -11,4 +11,4 @@ export default {
|
|
|
11
11
|
pl
|
|
12
12
|
};
|
|
13
13
|
|
|
14
|
-
//# sourceMappingURL=
|
|
14
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/translations/index.ts"],"sourcesContent":["import en from './en.json'\nimport es from './es.json'\nimport fa from './fa.json'\nimport fr from './fr.json'\nimport pl from './pl.json'\n\nexport default {\n en,\n es,\n fa,\n fr,\n pl,\n}\n"],"names":["en","es","fa","fr","pl"],"mappings":"AAAA,OAAOA,QAAQ,YAAW;AAC1B,OAAOC,QAAQ,YAAW;AAC1B,OAAOC,QAAQ,YAAW;AAC1B,OAAOC,QAAQ,YAAW;AAC1B,OAAOC,QAAQ,YAAW;AAE1B,eAAe;IACbJ;IACAC;IACAC;IACAC;IACAC;AACF,EAAC"}
|
package/dist/types.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { };
|
|
2
2
|
|
|
3
|
-
//# sourceMappingURL=
|
|
3
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/types.ts"],"sourcesContent":["import type { DocumentInfoContext } from '@payloadcms/ui/providers'\nimport type { Field, TextField, TextareaField, UploadField } from 'payload/types'\n\nexport type GenerateTitle = <T = any>(\n args: DocumentInfoContext & { doc: T; locale?: string },\n) => Promise<string> | string\n\nexport type GenerateDescription = <T = any>(\n args: DocumentInfoContext & {\n doc: T\n locale?: string\n },\n) => Promise<string> | string\n\nexport type GenerateImage = <T = any>(\n args: DocumentInfoContext & { doc: T; locale?: string },\n) => Promise<string> | string\n\nexport type GenerateURL = <T = any>(\n args: DocumentInfoContext & { doc: T; locale?: string },\n) => Promise<string> | string\n\nexport interface PluginConfig {\n collections?: string[]\n fieldOverrides?: {\n description?: Partial<TextareaField>\n image?: Partial<UploadField>\n title?: Partial<TextField>\n }\n fields?: Field[]\n generateDescription?: GenerateDescription\n generateImage?: GenerateImage\n generateTitle?: GenerateTitle\n generateURL?: GenerateURL\n globals?: string[]\n interfaceName?: string\n tabbedUI?: boolean\n uploadsCollection?: string\n}\n\nexport interface Meta {\n description?: string\n image?: any // TODO: type this\n keywords?: string\n title?: string\n}\n"],"names":[],"mappings":"AAwCA,WAKC"}
|
|
@@ -110,4 +110,4 @@ export const LengthIndicator = (props)=>{
|
|
|
110
110
|
})));
|
|
111
111
|
};
|
|
112
112
|
|
|
113
|
-
//# sourceMappingURL=
|
|
113
|
+
//# sourceMappingURL=LengthIndicator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/LengthIndicator.tsx"],"sourcesContent":["'use client'\n\nimport { useTranslation } from '@payloadcms/ui'\nimport React, { Fragment, useEffect, useState } from 'react'\n\nimport { Pill } from './Pill.js'\n\nexport const LengthIndicator: React.FC<{\n maxLength?: number\n minLength?: number\n text?: string\n}> = (props) => {\n const { maxLength = 0, minLength = 0, text } = props\n\n const [labelStyle, setLabelStyle] = useState({\n backgroundColor: '',\n color: '',\n })\n\n const [label, setLabel] = useState('')\n const [barWidth, setBarWidth] = useState<number>(0)\n const { t } = useTranslation()\n\n useEffect(() => {\n const textLength = text?.length || 0\n\n if (textLength === 0) {\n setLabel('Missing')\n setLabelStyle({\n backgroundColor: 'red',\n color: 'white',\n })\n setBarWidth(0)\n } else {\n const progress = (textLength - minLength) / (maxLength - minLength)\n\n if (progress < 0) {\n const ratioUntilMin = textLength / minLength\n\n if (ratioUntilMin > 0.9) {\n setLabel(t('plugin-seo:almostThere'))\n setLabelStyle({\n backgroundColor: 'orange',\n color: 'white',\n })\n } else {\n setLabel(t('plugin-seo:tooShort'))\n setLabelStyle({\n backgroundColor: 'orangered',\n color: 'white',\n })\n }\n\n setBarWidth(ratioUntilMin)\n }\n\n if (progress >= 0 && progress <= 1) {\n setLabel(t('plugin-seo:good'))\n setLabelStyle({\n backgroundColor: 'green',\n color: 'white',\n })\n setBarWidth(progress)\n }\n\n if (progress > 1) {\n setLabel(t('plugin-seo:tooLong'))\n setLabelStyle({\n backgroundColor: 'red',\n color: 'white',\n })\n setBarWidth(1)\n }\n }\n }, [minLength, maxLength, text])\n\n const textLength = text?.length || 0\n\n const charsUntilMax = maxLength - textLength\n const charsUntilMin = minLength - textLength\n\n return (\n <div\n style={{\n alignItems: 'center',\n display: 'flex',\n width: '100%',\n }}\n >\n <Pill backgroundColor={labelStyle.backgroundColor} color={labelStyle.color} label={label} />\n <div\n style={{\n flexShrink: 0,\n lineHeight: 1,\n marginRight: '10px',\n whiteSpace: 'nowrap',\n }}\n >\n <small>\n {t('plugin-seo:characterCount', { current: text?.length || 0, maxLength, minLength })}\n {(textLength === 0 || charsUntilMin > 0) && (\n <Fragment>{t('plugin-seo:charactersToGo', { characters: charsUntilMin })}</Fragment>\n )}\n {charsUntilMin <= 0 && charsUntilMax >= 0 && (\n <Fragment>{t('plugin-seo:charactersLeftOver', { characters: charsUntilMax })}</Fragment>\n )}\n {charsUntilMax < 0 && (\n <Fragment>\n {t('plugin-seo:charactersTooMany', { characters: charsUntilMax * -1 })}\n </Fragment>\n )}\n </small>\n </div>\n <div\n style={{\n backgroundColor: '#F3F3F3',\n height: '2px',\n position: 'relative',\n width: '100%',\n }}\n >\n <div\n style={{\n backgroundColor: labelStyle.backgroundColor,\n height: '100%',\n left: 0,\n position: 'absolute',\n top: 0,\n width: `${barWidth * 100}%`,\n }}\n />\n </div>\n </div>\n )\n}\n"],"names":["useTranslation","React","Fragment","useEffect","useState","Pill","LengthIndicator","props","maxLength","minLength","text","labelStyle","setLabelStyle","backgroundColor","color","label","setLabel","barWidth","setBarWidth","t","textLength","length","progress","ratioUntilMin","charsUntilMax","charsUntilMin","div","style","alignItems","display","width","flexShrink","lineHeight","marginRight","whiteSpace","small","current","characters","height","position","left","top"],"mappings":"AAAA;AAEA,SAASA,cAAc,QAAQ,iBAAgB;AAC/C,OAAOC,SAASC,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAE5D,SAASC,IAAI,QAAQ,YAAW;AAEhC,OAAO,MAAMC,kBAIR,CAACC;IACJ,MAAM,EAAEC,YAAY,CAAC,EAAEC,YAAY,CAAC,EAAEC,IAAI,EAAE,GAAGH;IAE/C,MAAM,CAACI,YAAYC,cAAc,GAAGR,SAAS;QAC3CS,iBAAiB;QACjBC,OAAO;IACT;IAEA,MAAM,CAACC,OAAOC,SAAS,GAAGZ,SAAS;IACnC,MAAM,CAACa,UAAUC,YAAY,GAAGd,SAAiB;IACjD,MAAM,EAAEe,CAAC,EAAE,GAAGnB;IAEdG,UAAU;QACR,MAAMiB,aAAaV,MAAMW,UAAU;QAEnC,IAAID,eAAe,GAAG;YACpBJ,SAAS;YACTJ,cAAc;gBACZC,iBAAiB;gBACjBC,OAAO;YACT;YACAI,YAAY;QACd,OAAO;YACL,MAAMI,WAAW,AAACF,CAAAA,aAAaX,SAAQ,IAAMD,CAAAA,YAAYC,SAAQ;YAEjE,IAAIa,WAAW,GAAG;gBAChB,MAAMC,gBAAgBH,aAAaX;gBAEnC,IAAIc,gBAAgB,KAAK;oBACvBP,SAASG,EAAE;oBACXP,cAAc;wBACZC,iBAAiB;wBACjBC,OAAO;oBACT;gBACF,OAAO;oBACLE,SAASG,EAAE;oBACXP,cAAc;wBACZC,iBAAiB;wBACjBC,OAAO;oBACT;gBACF;gBAEAI,YAAYK;YACd;YAEA,IAAID,YAAY,KAAKA,YAAY,GAAG;gBAClCN,SAASG,EAAE;gBACXP,cAAc;oBACZC,iBAAiB;oBACjBC,OAAO;gBACT;gBACAI,YAAYI;YACd;YAEA,IAAIA,WAAW,GAAG;gBAChBN,SAASG,EAAE;gBACXP,cAAc;oBACZC,iBAAiB;oBACjBC,OAAO;gBACT;gBACAI,YAAY;YACd;QACF;IACF,GAAG;QAACT;QAAWD;QAAWE;KAAK;IAE/B,MAAMU,aAAaV,MAAMW,UAAU;IAEnC,MAAMG,gBAAgBhB,YAAYY;IAClC,MAAMK,gBAAgBhB,YAAYW;IAElC,qBACE,oBAACM;QACCC,OAAO;YACLC,YAAY;YACZC,SAAS;YACTC,OAAO;QACT;qBAEA,oBAACzB;QAAKQ,iBAAiBF,WAAWE,eAAe;QAAEC,OAAOH,WAAWG,KAAK;QAAEC,OAAOA;sBACnF,oBAACW;QACCC,OAAO;YACLI,YAAY;YACZC,YAAY;YACZC,aAAa;YACbC,YAAY;QACd;qBAEA,oBAACC,eACEhB,EAAE,6BAA6B;QAAEiB,SAAS1B,MAAMW,UAAU;QAAGb;QAAWC;IAAU,IAClF,AAACW,CAAAA,eAAe,KAAKK,gBAAgB,CAAA,mBACpC,oBAACvB,gBAAUiB,EAAE,6BAA6B;QAAEkB,YAAYZ;IAAc,KAEvEA,iBAAiB,KAAKD,iBAAiB,mBACtC,oBAACtB,gBAAUiB,EAAE,iCAAiC;QAAEkB,YAAYb;IAAc,KAE3EA,gBAAgB,mBACf,oBAACtB,gBACEiB,EAAE,gCAAgC;QAAEkB,YAAYb,gBAAgB,CAAC;IAAE,qBAK5E,oBAACE;QACCC,OAAO;YACLd,iBAAiB;YACjByB,QAAQ;YACRC,UAAU;YACVT,OAAO;QACT;qBAEA,oBAACJ;QACCC,OAAO;YACLd,iBAAiBF,WAAWE,eAAe;YAC3CyB,QAAQ;YACRE,MAAM;YACND,UAAU;YACVE,KAAK;YACLX,OAAO,CAAC,EAAEb,WAAW,IAAI,CAAC,CAAC;QAC7B;;AAKV,EAAC"}
|
package/dist/ui/Overview.js
CHANGED
|
@@ -47,4 +47,4 @@ export const Overview = ()=>{
|
|
|
47
47
|
})));
|
|
48
48
|
};
|
|
49
49
|
|
|
50
|
-
//# sourceMappingURL=
|
|
50
|
+
//# sourceMappingURL=Overview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/Overview.tsx"],"sourcesContent":["'use client'\n\nimport type { FormField } from 'payload/types'\n\nimport { useAllFormFields, useForm, useTranslation } from '@payloadcms/ui'\nimport React, { useCallback, useEffect, useState } from 'react'\n\nimport { defaults } from '../defaults.js'\n\nconst {\n description: { maxLength: maxDesc, minLength: minDesc },\n title: { maxLength: maxTitle, minLength: minTitle },\n} = defaults\n\nexport const Overview: React.FC = () => {\n const {\n // dispatchFields,\n getFields,\n } = useForm()\n\n const [\n {\n 'meta.description': { value: metaDesc } = {} as FormField,\n 'meta.image': { value: metaImage } = {} as FormField,\n 'meta.title': { value: metaTitle } = {} as FormField,\n },\n ] = useAllFormFields()\n const { t } = useTranslation()\n\n const [titleIsValid, setTitleIsValid] = useState<boolean | undefined>()\n const [descIsValid, setDescIsValid] = useState<boolean | undefined>()\n const [imageIsValid, setImageIsValid] = useState<boolean | undefined>()\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const resetAll = useCallback(() => {\n const fields = getFields()\n const fieldsWithoutMeta = fields\n fieldsWithoutMeta['meta.title'].value = ''\n fieldsWithoutMeta['meta.description'].value = ''\n fieldsWithoutMeta['meta.image'].value = ''\n // dispatchFields(fieldsWithoutMeta);\n }, [getFields])\n\n useEffect(() => {\n if (typeof metaTitle === 'string')\n setTitleIsValid(metaTitle.length >= minTitle && metaTitle.length <= maxTitle)\n if (typeof metaDesc === 'string')\n setDescIsValid(metaDesc.length >= minDesc && metaDesc.length <= maxDesc)\n setImageIsValid(Boolean(metaImage))\n }, [metaTitle, metaDesc, metaImage])\n\n const testResults = [titleIsValid, descIsValid, imageIsValid]\n\n const numberOfPasses = testResults.filter(Boolean).length\n\n return (\n <div\n style={{\n marginBottom: '20px',\n }}\n >\n <div>\n {t('plugin-seo:checksPassing', { current: numberOfPasses, max: testResults.length })}\n </div>\n </div>\n )\n}\n"],"names":["useAllFormFields","useForm","useTranslation","React","useCallback","useEffect","useState","defaults","description","maxLength","maxDesc","minLength","minDesc","title","maxTitle","minTitle","Overview","getFields","value","metaDesc","metaImage","metaTitle","t","titleIsValid","setTitleIsValid","descIsValid","setDescIsValid","imageIsValid","setImageIsValid","resetAll","fields","fieldsWithoutMeta","length","Boolean","testResults","numberOfPasses","filter","div","style","marginBottom","current","max"],"mappings":"AAAA;AAIA,SAASA,gBAAgB,EAAEC,OAAO,EAAEC,cAAc,QAAQ,iBAAgB;AAC1E,OAAOC,SAASC,WAAW,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AAE/D,SAASC,QAAQ,QAAQ,iBAAgB;AAEzC,MAAM,EACJC,aAAa,EAAEC,WAAWC,OAAO,EAAEC,WAAWC,OAAO,EAAE,EACvDC,OAAO,EAAEJ,WAAWK,QAAQ,EAAEH,WAAWI,QAAQ,EAAE,EACpD,GAAGR;AAEJ,OAAO,MAAMS,WAAqB;IAChC,MAAM,EACJ,mBAAmB;IACnBC,SAAS,EACV,GAAGhB;IAEJ,MAAM,CACJ,EACE,oBAAoB,EAAEiB,OAAOC,QAAQ,EAAE,GAAG,CAAC,CAAc,EACzD,cAAc,EAAED,OAAOE,SAAS,EAAE,GAAG,CAAC,CAAc,EACpD,cAAc,EAAEF,OAAOG,SAAS,EAAE,GAAG,CAAC,CAAc,EACrD,CACF,GAAGrB;IACJ,MAAM,EAAEsB,CAAC,EAAE,GAAGpB;IAEd,MAAM,CAACqB,cAAcC,gBAAgB,GAAGlB;IACxC,MAAM,CAACmB,aAAaC,eAAe,GAAGpB;IACtC,MAAM,CAACqB,cAAcC,gBAAgB,GAAGtB;IAExC,6DAA6D;IAC7D,MAAMuB,WAAWzB,YAAY;QAC3B,MAAM0B,SAASb;QACf,MAAMc,oBAAoBD;QAC1BC,iBAAiB,CAAC,aAAa,CAACb,KAAK,GAAG;QACxCa,iBAAiB,CAAC,mBAAmB,CAACb,KAAK,GAAG;QAC9Ca,iBAAiB,CAAC,aAAa,CAACb,KAAK,GAAG;IACxC,qCAAqC;IACvC,GAAG;QAACD;KAAU;IAEdZ,UAAU;QACR,IAAI,OAAOgB,cAAc,UACvBG,gBAAgBH,UAAUW,MAAM,IAAIjB,YAAYM,UAAUW,MAAM,IAAIlB;QACtE,IAAI,OAAOK,aAAa,UACtBO,eAAeP,SAASa,MAAM,IAAIpB,WAAWO,SAASa,MAAM,IAAItB;QAClEkB,gBAAgBK,QAAQb;IAC1B,GAAG;QAACC;QAAWF;QAAUC;KAAU;IAEnC,MAAMc,cAAc;QAACX;QAAcE;QAAaE;KAAa;IAE7D,MAAMQ,iBAAiBD,YAAYE,MAAM,CAACH,SAASD,MAAM;IAEzD,qBACE,oBAACK;QACCC,OAAO;YACLC,cAAc;QAChB;qBAEA,oBAACF,aACEf,EAAE,4BAA4B;QAAEkB,SAASL;QAAgBM,KAAKP,YAAYF,MAAM;IAAC;AAI1F,EAAC"}
|
package/dist/ui/Pill.js
CHANGED
|
@@ -16,4 +16,4 @@ export const Pill = (props)=>{
|
|
|
16
16
|
}, /*#__PURE__*/ React.createElement("small", null, label));
|
|
17
17
|
};
|
|
18
18
|
|
|
19
|
-
//# sourceMappingURL=
|
|
19
|
+
//# sourceMappingURL=Pill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/Pill.tsx"],"sourcesContent":["'use client'\n\nimport React from 'react'\n\nexport const Pill: React.FC<{\n backgroundColor: string\n color: string\n label: string\n}> = (props) => {\n const { backgroundColor, color, label } = props\n\n return (\n <div\n style={{\n backgroundColor,\n borderRadius: '2px',\n color,\n flexShrink: 0,\n lineHeight: 1,\n marginRight: '10px',\n padding: '4px 6px',\n whiteSpace: 'nowrap',\n }}\n >\n <small>{label}</small>\n </div>\n )\n}\n"],"names":["React","Pill","props","backgroundColor","color","label","div","style","borderRadius","flexShrink","lineHeight","marginRight","padding","whiteSpace","small"],"mappings":"AAAA;AAEA,OAAOA,WAAW,QAAO;AAEzB,OAAO,MAAMC,OAIR,CAACC;IACJ,MAAM,EAAEC,eAAe,EAAEC,KAAK,EAAEC,KAAK,EAAE,GAAGH;IAE1C,qBACE,oBAACI;QACCC,OAAO;YACLJ;YACAK,cAAc;YACdJ;YACAK,YAAY;YACZC,YAAY;YACZC,aAAa;YACbC,SAAS;YACTC,YAAY;QACd;qBAEA,oBAACC,eAAOT;AAGd,EAAC"}
|
package/dist/ui/Preview.js
CHANGED
|
@@ -73,4 +73,4 @@ export const Preview = ({ hasGenerateURLFn })=>{
|
|
|
73
73
|
}, metaDescription)));
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
//# sourceMappingURL=
|
|
76
|
+
//# sourceMappingURL=Preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/ui/Preview.tsx"],"sourcesContent":["'use client'\n\nimport type { FormField, UIField } from 'payload/types'\n\nimport { useAllFormFields, useDocumentInfo, useLocale, useTranslation } from '@payloadcms/ui'\nimport React, { useEffect, useState } from 'react'\n\nimport type { GenerateURL } from '../types.js'\n\n// eslint-disable-next-line @typescript-eslint/no-redundant-type-constituents\ntype PreviewProps = UIField & {\n hasGenerateURLFn: boolean\n}\n\nexport const Preview: React.FC<PreviewProps> = ({ hasGenerateURLFn }) => {\n const { t } = useTranslation()\n\n const locale = useLocale()\n const [fields] = useAllFormFields()\n const docInfo = useDocumentInfo()\n\n const {\n 'meta.description': { value: metaDescription } = {} as FormField,\n 'meta.title': { value: metaTitle } = {} as FormField,\n } = fields\n\n const [href, setHref] = useState<string>()\n\n useEffect(() => {\n const getHref = async () => {\n const genURLResponse = await fetch('/api/plugin-seo/generate-url', {\n body: JSON.stringify({\n ...docInfo,\n doc: { ...fields },\n locale: typeof locale === 'object' ? locale?.code : locale,\n } satisfies Parameters<GenerateURL>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n\n const { result: newHref } = await genURLResponse.json()\n\n setHref(newHref)\n }\n\n if (hasGenerateURLFn && !href) {\n void getHref()\n }\n }, [fields, href, locale, docInfo, hasGenerateURLFn])\n\n return (\n <div>\n <div>{t('plugin-seo:preview')}</div>\n <div\n style={{\n color: '#9A9A9A',\n marginBottom: '5px',\n }}\n >\n {t('plugin-seo:previewDescription')}\n </div>\n <div\n style={{\n background: 'var(--theme-elevation-50)',\n borderRadius: '5px',\n boxShadow: '0px 0px 10px rgba(0, 0, 0, 0.1)',\n maxWidth: '600px',\n padding: '20px',\n pointerEvents: 'none',\n width: '100%',\n }}\n >\n <div>\n <a\n href={href}\n style={{\n textDecoration: 'none',\n }}\n >\n {href || 'https://...'}\n </a>\n </div>\n <h4\n style={{\n margin: 0,\n }}\n >\n <a\n href=\"/\"\n style={{\n textDecoration: 'none',\n }}\n >\n {metaTitle as string}\n </a>\n </h4>\n <p\n style={{\n margin: 0,\n }}\n >\n {metaDescription as string}\n </p>\n </div>\n </div>\n )\n}\n"],"names":["useAllFormFields","useDocumentInfo","useLocale","useTranslation","React","useEffect","useState","Preview","hasGenerateURLFn","t","locale","fields","docInfo","value","metaDescription","metaTitle","href","setHref","getHref","genURLResponse","fetch","body","JSON","stringify","doc","code","credentials","headers","method","result","newHref","json","div","style","color","marginBottom","background","borderRadius","boxShadow","maxWidth","padding","pointerEvents","width","a","textDecoration","h4","margin","p"],"mappings":"AAAA;AAIA,SAASA,gBAAgB,EAAEC,eAAe,EAAEC,SAAS,EAAEC,cAAc,QAAQ,iBAAgB;AAC7F,OAAOC,SAASC,SAAS,EAAEC,QAAQ,QAAQ,QAAO;AASlD,OAAO,MAAMC,UAAkC,CAAC,EAAEC,gBAAgB,EAAE;IAClE,MAAM,EAAEC,CAAC,EAAE,GAAGN;IAEd,MAAMO,SAASR;IACf,MAAM,CAACS,OAAO,GAAGX;IACjB,MAAMY,UAAUX;IAEhB,MAAM,EACJ,oBAAoB,EAAEY,OAAOC,eAAe,EAAE,GAAG,CAAC,CAAc,EAChE,cAAc,EAAED,OAAOE,SAAS,EAAE,GAAG,CAAC,CAAc,EACrD,GAAGJ;IAEJ,MAAM,CAACK,MAAMC,QAAQ,GAAGX;IAExBD,UAAU;QACR,MAAMa,UAAU;YACd,MAAMC,iBAAiB,MAAMC,MAAM,gCAAgC;gBACjEC,MAAMC,KAAKC,SAAS,CAAC;oBACnB,GAAGX,OAAO;oBACVY,KAAK;wBAAE,GAAGb,MAAM;oBAAC;oBACjBD,QAAQ,OAAOA,WAAW,WAAWA,QAAQe,OAAOf;gBACtD;gBACAgB,aAAa;gBACbC,SAAS;oBACP,gBAAgB;gBAClB;gBACAC,QAAQ;YACV;YAEA,MAAM,EAAEC,QAAQC,OAAO,EAAE,GAAG,MAAMX,eAAeY,IAAI;YAErDd,QAAQa;QACV;QAEA,IAAItB,oBAAoB,CAACQ,MAAM;YAC7B,KAAKE;QACP;IACF,GAAG;QAACP;QAAQK;QAAMN;QAAQE;QAASJ;KAAiB;IAEpD,qBACE,oBAACwB,2BACC,oBAACA,aAAKvB,EAAE,sCACR,oBAACuB;QACCC,OAAO;YACLC,OAAO;YACPC,cAAc;QAChB;OAEC1B,EAAE,iDAEL,oBAACuB;QACCC,OAAO;YACLG,YAAY;YACZC,cAAc;YACdC,WAAW;YACXC,UAAU;YACVC,SAAS;YACTC,eAAe;YACfC,OAAO;QACT;qBAEA,oBAACV,2BACC,oBAACW;QACC3B,MAAMA;QACNiB,OAAO;YACLW,gBAAgB;QAClB;OAEC5B,QAAQ,+BAGb,oBAAC6B;QACCZ,OAAO;YACLa,QAAQ;QACV;qBAEA,oBAACH;QACC3B,MAAK;QACLiB,OAAO;YACLW,gBAAgB;QAClB;OAEC7B,2BAGL,oBAACgC;QACCd,OAAO;YACLa,QAAQ;QACV;OAEChC;AAKX,EAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/plugin-seo",
|
|
3
|
-
"version": "3.0.0-alpha.
|
|
3
|
+
"version": "3.0.0-alpha.42",
|
|
4
4
|
"homepage:": "https://payloadcms.com",
|
|
5
5
|
"repository": "git@github.com:payloadcms/plugin-seo.git",
|
|
6
6
|
"description": "SEO plugin for Payload",
|
|
@@ -20,17 +20,17 @@
|
|
|
20
20
|
"license": "MIT",
|
|
21
21
|
"peerDependencies": {
|
|
22
22
|
"react": "^18.0.0",
|
|
23
|
-
"payload": "3.0.0-alpha.
|
|
24
|
-
"@payloadcms/
|
|
25
|
-
"@payloadcms/
|
|
23
|
+
"payload": "3.0.0-alpha.42",
|
|
24
|
+
"@payloadcms/translations": "3.0.0-alpha.42",
|
|
25
|
+
"@payloadcms/ui": "3.0.0-alpha.42"
|
|
26
26
|
},
|
|
27
27
|
"devDependencies": {
|
|
28
28
|
"@types/react": "18.2.15",
|
|
29
29
|
"react": "^18.0.0",
|
|
30
30
|
"@payloadcms/eslint-config": "1.1.1",
|
|
31
|
-
"payload": "3.0.0-alpha.
|
|
32
|
-
"@payloadcms/translations": "3.0.0-alpha.
|
|
33
|
-
"@payloadcms/ui": "3.0.0-alpha.
|
|
31
|
+
"payload": "3.0.0-alpha.42",
|
|
32
|
+
"@payloadcms/translations": "3.0.0-alpha.42",
|
|
33
|
+
"@payloadcms/ui": "3.0.0-alpha.42"
|
|
34
34
|
},
|
|
35
35
|
"exports": null,
|
|
36
36
|
"publishConfig": {
|