@ai-stack/payloadcms 3.0.0-beta.104.2 → 3.0.0-beta.65.0

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.
Files changed (202) hide show
  1. package/README.md +2 -16
  2. package/dist/ai/{schemas → editor}/lexical.schema.d.ts +2 -2
  3. package/dist/ai/editor/lexical.schema.d.ts.map +1 -0
  4. package/dist/ai/editor/lexical.schema.js.map +1 -0
  5. package/dist/ai/models/anthropic/generateRichText.js.map +1 -1
  6. package/dist/ai/models/anthropic/index.d.ts.map +1 -1
  7. package/dist/ai/models/anthropic/index.js +4 -43
  8. package/dist/ai/models/anthropic/index.js.map +1 -1
  9. package/dist/ai/models/elevenLabs/index.d.ts.map +1 -1
  10. package/dist/ai/models/elevenLabs/index.js +11 -1
  11. package/dist/ai/models/elevenLabs/index.js.map +1 -1
  12. package/dist/ai/models/index.d.ts.map +1 -1
  13. package/dist/ai/models/index.js +3 -3
  14. package/dist/ai/models/index.js.map +1 -1
  15. package/dist/ai/models/openai/generateRichText.js.map +1 -1
  16. package/dist/ai/models/openai/index.js +3 -3
  17. package/dist/ai/models/openai/index.js.map +1 -1
  18. package/dist/ai/models/style.d.ts +2 -0
  19. package/dist/ai/models/style.d.ts.map +1 -0
  20. package/dist/ai/models/style.js +31 -0
  21. package/dist/ai/models/style.js.map +1 -0
  22. package/dist/ai/prompts.d.ts +6 -7
  23. package/dist/ai/prompts.d.ts.map +1 -1
  24. package/dist/ai/prompts.js +16 -24
  25. package/dist/ai/prompts.js.map +1 -1
  26. package/dist/ai/utils/generateFileNameByPrompt.js.map +1 -1
  27. package/dist/ai/utils/generateSeedPrompt.d.ts.map +1 -1
  28. package/dist/ai/utils/generateSeedPrompt.js +5 -14
  29. package/dist/ai/utils/generateSeedPrompt.js.map +1 -1
  30. package/dist/collections/Instructions.d.ts.map +1 -1
  31. package/dist/collections/Instructions.js +13 -10
  32. package/dist/collections/Instructions.js.map +1 -1
  33. package/dist/defaults.d.ts +2 -3
  34. package/dist/defaults.d.ts.map +1 -1
  35. package/dist/defaults.js +2 -3
  36. package/dist/defaults.js.map +1 -1
  37. package/dist/endpoints/index.d.ts +1 -1
  38. package/dist/endpoints/index.d.ts.map +1 -1
  39. package/dist/endpoints/index.js +51 -17
  40. package/dist/endpoints/index.js.map +1 -1
  41. package/dist/exports/fields.d.ts +1 -3
  42. package/dist/exports/fields.d.ts.map +1 -1
  43. package/dist/exports/fields.js +0 -3
  44. package/dist/exports/fields.js.map +1 -1
  45. package/dist/fields/DescriptionField/DescriptionField.d.ts +3 -0
  46. package/dist/fields/DescriptionField/DescriptionField.d.ts.map +1 -0
  47. package/dist/fields/DescriptionField/DescriptionField.js +15 -0
  48. package/dist/fields/DescriptionField/DescriptionField.js.map +1 -0
  49. package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts +4 -0
  50. package/dist/fields/DescriptionField/DescriptionFieldComponent.d.ts.map +1 -0
  51. package/dist/fields/{ComposeField/ComposeField.js → DescriptionField/DescriptionFieldComponent.js} +5 -5
  52. package/dist/fields/DescriptionField/DescriptionFieldComponent.js.map +1 -0
  53. package/dist/fields/LexicalEditor/ActionsFeatureComponent.d.ts +2 -0
  54. package/dist/fields/LexicalEditor/ActionsFeatureComponent.d.ts.map +1 -0
  55. package/dist/fields/LexicalEditor/{ComposeFeatureComponent.js → ActionsFeatureComponent.js} +5 -5
  56. package/dist/fields/LexicalEditor/ActionsFeatureComponent.js.map +1 -0
  57. package/dist/fields/LexicalEditor/feature.client.d.ts +4 -1
  58. package/dist/fields/LexicalEditor/feature.client.d.ts.map +1 -1
  59. package/dist/fields/LexicalEditor/feature.client.js +2 -2
  60. package/dist/fields/LexicalEditor/feature.client.js.map +1 -1
  61. package/dist/fields/LexicalEditor/feature.server.d.ts +7 -1
  62. package/dist/fields/LexicalEditor/feature.server.d.ts.map +1 -1
  63. package/dist/fields/LexicalEditor/feature.server.js +11 -4
  64. package/dist/fields/LexicalEditor/feature.server.js.map +1 -1
  65. package/dist/fields/PromptEditorField/PromptEditorField.d.ts +2 -2
  66. package/dist/fields/PromptEditorField/PromptEditorField.d.ts.map +1 -1
  67. package/dist/fields/PromptEditorField/PromptEditorField.js +51 -32
  68. package/dist/fields/PromptEditorField/PromptEditorField.js.map +1 -1
  69. package/dist/fields/SelectField/SelectField.d.ts +2 -9
  70. package/dist/fields/SelectField/SelectField.d.ts.map +1 -1
  71. package/dist/fields/SelectField/SelectField.js +23 -26
  72. package/dist/fields/SelectField/SelectField.js.map +1 -1
  73. package/dist/index.d.ts +2 -2
  74. package/dist/index.d.ts.map +1 -1
  75. package/dist/index.js +3 -3
  76. package/dist/index.js.map +1 -1
  77. package/dist/init.d.ts +1 -2
  78. package/dist/init.d.ts.map +1 -1
  79. package/dist/init.js +19 -35
  80. package/dist/init.js.map +1 -1
  81. package/dist/plugin.d.ts.map +1 -1
  82. package/dist/plugin.js +73 -104
  83. package/dist/plugin.js.map +1 -1
  84. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts +3 -1
  85. package/dist/providers/InstructionsProvider/InstructionsProvider.d.ts.map +1 -1
  86. package/dist/providers/InstructionsProvider/InstructionsProvider.js.map +1 -1
  87. package/dist/providers/InstructionsProvider/hook.d.ts +9 -0
  88. package/dist/providers/InstructionsProvider/hook.d.ts.map +1 -0
  89. package/dist/providers/InstructionsProvider/hook.js +17 -0
  90. package/dist/providers/InstructionsProvider/hook.js.map +1 -0
  91. package/dist/providers/InstructionsProvider/index.d.ts +5 -0
  92. package/dist/providers/InstructionsProvider/index.d.ts.map +1 -0
  93. package/dist/providers/InstructionsProvider/index.js +10 -0
  94. package/dist/providers/InstructionsProvider/index.js.map +1 -0
  95. package/dist/types.d.ts +1 -2
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/types.js.map +1 -1
  98. package/dist/ui/Actions/Actions.d.ts +5 -0
  99. package/dist/ui/Actions/Actions.d.ts.map +1 -0
  100. package/dist/ui/{Compose/Compose.js → Actions/Actions.js} +18 -17
  101. package/dist/ui/Actions/Actions.js.map +1 -0
  102. package/dist/ui/{Compose → Actions}/UndoRedoActions.d.ts.map +1 -1
  103. package/dist/ui/{Compose → Actions}/UndoRedoActions.js +2 -15
  104. package/dist/ui/Actions/UndoRedoActions.js.map +1 -0
  105. package/dist/ui/Actions/hooks/highlight.module.scss +3 -0
  106. package/dist/ui/{Compose → Actions}/hooks/menu/Item.d.ts.map +1 -1
  107. package/dist/ui/{Compose → Actions}/hooks/menu/Item.js.map +1 -1
  108. package/dist/ui/Actions/hooks/menu/TranslateMenu.d.ts.map +1 -0
  109. package/dist/ui/{Compose → Actions}/hooks/menu/TranslateMenu.js.map +1 -1
  110. package/dist/ui/{Compose → Actions}/hooks/menu/items.d.ts.map +1 -1
  111. package/dist/ui/{Compose → Actions}/hooks/menu/items.js.map +1 -1
  112. package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.d.ts.map +1 -1
  113. package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.js.map +1 -1
  114. package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.d.ts.map +1 -1
  115. package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.js.map +1 -1
  116. package/dist/ui/{Compose → Actions}/hooks/useGenerate.d.ts.map +1 -1
  117. package/dist/ui/{Compose → Actions}/hooks/useGenerate.js +12 -10
  118. package/dist/ui/Actions/hooks/useGenerate.js.map +1 -0
  119. package/dist/ui/Actions/hooks/useHistory.d.ts.map +1 -0
  120. package/dist/ui/{Compose → Actions}/hooks/useHistory.js +1 -3
  121. package/dist/ui/Actions/hooks/useHistory.js.map +1 -0
  122. package/dist/ui/Floatype/Floatype.d.ts +21 -0
  123. package/dist/ui/Floatype/Floatype.d.ts.map +1 -0
  124. package/dist/ui/Floatype/Floatype.js +245 -0
  125. package/dist/ui/Floatype/Floatype.js.map +1 -0
  126. package/dist/ui/Floatype/floatype.module.css +25 -0
  127. package/dist/utilities/getFieldBySchemaPath.d.ts +2 -2
  128. package/dist/utilities/getFieldBySchemaPath.d.ts.map +1 -1
  129. package/dist/utilities/getFieldBySchemaPath.js.map +1 -1
  130. package/dist/utilities/updateFieldsConfig.d.ts.map +1 -1
  131. package/dist/utilities/updateFieldsConfig.js +8 -14
  132. package/dist/utilities/updateFieldsConfig.js.map +1 -1
  133. package/package.json +50 -72
  134. package/dist/ai/schemas/lexical.schema.d.ts.map +0 -1
  135. package/dist/ai/schemas/lexical.schema.js.map +0 -1
  136. package/dist/exports/client.d.ts +0 -3
  137. package/dist/exports/client.d.ts.map +0 -1
  138. package/dist/exports/client.js +0 -4
  139. package/dist/exports/client.js.map +0 -1
  140. package/dist/fields/ComposeField/ComposeField.d.ts +0 -4
  141. package/dist/fields/ComposeField/ComposeField.d.ts.map +0 -1
  142. package/dist/fields/ComposeField/ComposeField.js.map +0 -1
  143. package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts +0 -2
  144. package/dist/fields/LexicalEditor/ComposeFeatureComponent.d.ts.map +0 -1
  145. package/dist/fields/LexicalEditor/ComposeFeatureComponent.js.map +0 -1
  146. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts +0 -8
  147. package/dist/libraries/autocomplete/AutocompleteTextArea.d.ts.map +0 -1
  148. package/dist/libraries/autocomplete/AutocompleteTextArea.js +0 -437
  149. package/dist/libraries/autocomplete/AutocompleteTextArea.js.map +0 -1
  150. package/dist/libraries/autocomplete/AutocompleteTextArea.module.scss +0 -35
  151. package/dist/libraries/handlebars/asyncHandlebars.d.ts +0 -2
  152. package/dist/libraries/handlebars/asyncHandlebars.d.ts.map +0 -1
  153. package/dist/libraries/handlebars/asyncHandlebars.js +0 -5
  154. package/dist/libraries/handlebars/asyncHandlebars.js.map +0 -1
  155. package/dist/libraries/handlebars/helpers.d.ts +0 -2
  156. package/dist/libraries/handlebars/helpers.d.ts.map +0 -1
  157. package/dist/libraries/handlebars/helpers.js +0 -22
  158. package/dist/libraries/handlebars/helpers.js.map +0 -1
  159. package/dist/libraries/handlebars/helpersMap.d.ts +0 -12
  160. package/dist/libraries/handlebars/helpersMap.d.ts.map +0 -1
  161. package/dist/libraries/handlebars/helpersMap.js +0 -13
  162. package/dist/libraries/handlebars/helpersMap.js.map +0 -1
  163. package/dist/libraries/handlebars/replacePlaceholders.d.ts +0 -2
  164. package/dist/libraries/handlebars/replacePlaceholders.d.ts.map +0 -1
  165. package/dist/libraries/handlebars/replacePlaceholders.js +0 -8
  166. package/dist/libraries/handlebars/replacePlaceholders.js.map +0 -1
  167. package/dist/providers/InstructionsProvider/useInstructions.d.ts +0 -4
  168. package/dist/providers/InstructionsProvider/useInstructions.d.ts.map +0 -1
  169. package/dist/providers/InstructionsProvider/useInstructions.js +0 -38
  170. package/dist/providers/InstructionsProvider/useInstructions.js.map +0 -1
  171. package/dist/ui/Compose/Compose.d.ts +0 -9
  172. package/dist/ui/Compose/Compose.d.ts.map +0 -1
  173. package/dist/ui/Compose/Compose.js.map +0 -1
  174. package/dist/ui/Compose/UndoRedoActions.js.map +0 -1
  175. package/dist/ui/Compose/hooks/menu/TranslateMenu.d.ts.map +0 -1
  176. package/dist/ui/Compose/hooks/useGenerate.js.map +0 -1
  177. package/dist/ui/Compose/hooks/useHistory.d.ts.map +0 -1
  178. package/dist/ui/Compose/hooks/useHistory.js.map +0 -1
  179. package/dist/utilities/getFieldInfo.d.ts +0 -3
  180. package/dist/utilities/getFieldInfo.d.ts.map +0 -1
  181. package/dist/utilities/getFieldInfo.js +0 -14
  182. package/dist/utilities/getFieldInfo.js.map +0 -1
  183. package/dist/utilities/isPluginActivated.d.ts +0 -2
  184. package/dist/utilities/isPluginActivated.d.ts.map +0 -1
  185. package/dist/utilities/isPluginActivated.js +0 -5
  186. package/dist/utilities/isPluginActivated.js.map +0 -1
  187. /package/dist/ai/{schemas → editor}/lexical.schema.js +0 -0
  188. /package/dist/ui/{Compose → Actions}/UndoRedoActions.d.ts +0 -0
  189. /package/dist/ui/{Compose/compose.module.scss → Actions/actions.module.scss} +0 -0
  190. /package/dist/ui/{Compose → Actions}/hooks/menu/Item.d.ts +0 -0
  191. /package/dist/ui/{Compose → Actions}/hooks/menu/Item.js +0 -0
  192. /package/dist/ui/{Compose → Actions}/hooks/menu/TranslateMenu.d.ts +0 -0
  193. /package/dist/ui/{Compose → Actions}/hooks/menu/TranslateMenu.js +0 -0
  194. /package/dist/ui/{Compose → Actions}/hooks/menu/items.d.ts +0 -0
  195. /package/dist/ui/{Compose → Actions}/hooks/menu/items.js +0 -0
  196. /package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.d.ts +0 -0
  197. /package/dist/ui/{Compose → Actions}/hooks/menu/itemsMap.js +0 -0
  198. /package/dist/ui/{Compose → Actions}/hooks/menu/menu.module.scss +0 -0
  199. /package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.d.ts +0 -0
  200. /package/dist/ui/{Compose → Actions}/hooks/menu/useMenu.js +0 -0
  201. /package/dist/ui/{Compose → Actions}/hooks/useGenerate.d.ts +0 -0
  202. /package/dist/ui/{Compose → Actions}/hooks/useHistory.d.ts +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TranslateMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Actions/hooks/menu/TranslateMenu.tsx"],"names":[],"mappings":"AAOA,eAAO,MAAM,aAAa;;6CA0EzB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/TranslateMenu.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport locales from 'locale-codes'\n\nimport { Translate } from './items.js'\nimport { Item } from './Item.js'\nimport styles from './menu.module.scss'\n\nexport const TranslateMenu = ({ onClick }) => {\n const [show, setShow] = useState(false)\n\n const filteredLocales = locales.all.filter((a) => {\n return a.tag && a.location\n })\n\n const [languages, setLanguages] = useState(filteredLocales)\n const [inputFocus, setInputFocus] = useState(false)\n\n return (\n <div\n className={styles.menu}\n onMouseLeave={() => {\n if (!inputFocus) {\n setShow(false)\n }\n }}\n >\n <Translate\n onClick={() => {\n setShow(!show)\n }}\n onMouseEnter={() => setShow(true)}\n isMenu={true}\n isActive={show}\n ></Translate>\n <div className={styles.hoverMenu} data-show={show}>\n <div className={`${styles.menu} ${styles.subMenu}`}>\n <Item\n onClick={() => {}}\n style={{\n position: 'sticky',\n top: 0,\n padding: '0 0 5px 0',\n background: 'transparent',\n }}\n >\n <input\n className={styles.menuInput}\n placeholder={'Search...'}\n onFocus={() => setInputFocus(true)}\n onBlur={() => setInputFocus(false)}\n onChange={(event) => {\n const value = event.target.value\n setLanguages(\n filteredLocales.filter((l) => {\n const lowerCaseValue = value.toLowerCase()\n return (\n l.name.toLowerCase().startsWith(lowerCaseValue) ||\n l.location.toLowerCase().startsWith(lowerCaseValue) ||\n l.tag.toLowerCase().startsWith(lowerCaseValue)\n )\n }),\n )\n }}\n />\n </Item>\n {languages.map((locale) => {\n return (\n <Item\n key={locale.tag}\n onClick={() => {\n onClick({ locale: locale.tag })\n }}\n >\n <span className={styles.ellipsis}>{`${locale.location} (${locale.tag})`}</span>\n </Item>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","useState","locales","Translate","Item","styles","TranslateMenu","onClick","show","setShow","filteredLocales","all","filter","a","tag","location","languages","setLanguages","inputFocus","setInputFocus","div","className","menu","onMouseLeave","onMouseEnter","isMenu","isActive","hoverMenu","data-show","subMenu","style","position","top","padding","background","input","menuInput","placeholder","onFocus","onBlur","onChange","event","value","target","l","lowerCaseValue","toLowerCase","name","startsWith","map","locale","span","ellipsis"],"mappings":";AAAA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AACvC,OAAOC,aAAa,eAAc;AAElC,SAASC,SAAS,QAAQ,aAAY;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAE;IACvC,MAAM,CAACC,MAAMC,QAAQ,GAAGR,SAAS;IAEjC,MAAMS,kBAAkBR,QAAQS,GAAG,CAACC,MAAM,CAAC,CAACC;QAC1C,OAAOA,EAAEC,GAAG,IAAID,EAAEE,QAAQ;IAC5B;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGhB,SAASS;IAC3C,MAAM,CAACQ,YAAYC,cAAc,GAAGlB,SAAS;IAE7C,qBACE,MAACmB;QACCC,WAAWhB,OAAOiB,IAAI;QACtBC,cAAc;YACZ,IAAI,CAACL,YAAY;gBACfT,QAAQ;YACV;QACF;;0BAEA,KAACN;gBACCI,SAAS;oBACPE,QAAQ,CAACD;gBACX;gBACAgB,cAAc,IAAMf,QAAQ;gBAC5BgB,QAAQ;gBACRC,UAAUlB;;0BAEZ,KAACY;gBAAIC,WAAWhB,OAAOsB,SAAS;gBAAEC,aAAWpB;0BAC3C,cAAA,MAACY;oBAAIC,WAAW,GAAGhB,OAAOiB,IAAI,CAAC,CAAC,EAAEjB,OAAOwB,OAAO,EAAE;;sCAChD,KAACzB;4BACCG,SAAS,KAAO;4BAChBuB,OAAO;gCACLC,UAAU;gCACVC,KAAK;gCACLC,SAAS;gCACTC,YAAY;4BACd;sCAEA,cAAA,KAACC;gCACCd,WAAWhB,OAAO+B,SAAS;gCAC3BC,aAAa;gCACbC,SAAS,IAAMnB,cAAc;gCAC7BoB,QAAQ,IAAMpB,cAAc;gCAC5BqB,UAAU,CAACC;oCACT,MAAMC,QAAQD,MAAME,MAAM,CAACD,KAAK;oCAChCzB,aACEP,gBAAgBE,MAAM,CAAC,CAACgC;wCACtB,MAAMC,iBAAiBH,MAAMI,WAAW;wCACxC,OACEF,EAAEG,IAAI,CAACD,WAAW,GAAGE,UAAU,CAACH,mBAChCD,EAAE7B,QAAQ,CAAC+B,WAAW,GAAGE,UAAU,CAACH,mBACpCD,EAAE9B,GAAG,CAACgC,WAAW,GAAGE,UAAU,CAACH;oCAEnC;gCAEJ;;;wBAGH7B,UAAUiC,GAAG,CAAC,CAACC;4BACd,qBACE,KAAC9C;gCAECG,SAAS;oCACPA,QAAQ;wCAAE2C,QAAQA,OAAOpC,GAAG;oCAAC;gCAC/B;0CAEA,cAAA,KAACqC;oCAAK9B,WAAWhB,OAAO+C,QAAQ;8CAAG,GAAGF,OAAOnC,QAAQ,CAAC,EAAE,EAAEmC,OAAOpC,GAAG,CAAC,CAAC,CAAC;;+BALlEoC,OAAOpC,GAAG;wBAQrB;;;;;;AAKV,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/ui/Actions/hooks/menu/TranslateMenu.tsx"],"sourcesContent":["import React, { useState } from 'react'\nimport locales from 'locale-codes'\n\nimport { Translate } from './items.js'\nimport { Item } from './Item.js'\nimport styles from './menu.module.scss'\n\nexport const TranslateMenu = ({ onClick }) => {\n const [show, setShow] = useState(false)\n\n const filteredLocales = locales.all.filter((a) => {\n return a.tag && a.location\n })\n\n const [languages, setLanguages] = useState(filteredLocales)\n const [inputFocus, setInputFocus] = useState(false)\n\n return (\n <div\n className={styles.menu}\n onMouseLeave={() => {\n if (!inputFocus) {\n setShow(false)\n }\n }}\n >\n <Translate\n onClick={() => {\n setShow(!show)\n }}\n onMouseEnter={() => setShow(true)}\n isMenu={true}\n isActive={show}\n ></Translate>\n <div className={styles.hoverMenu} data-show={show}>\n <div className={`${styles.menu} ${styles.subMenu}`}>\n <Item\n onClick={() => {}}\n style={{\n position: 'sticky',\n top: 0,\n padding: '0 0 5px 0',\n background: 'transparent',\n }}\n >\n <input\n className={styles.menuInput}\n placeholder={'Search...'}\n onFocus={() => setInputFocus(true)}\n onBlur={() => setInputFocus(false)}\n onChange={(event) => {\n const value = event.target.value\n setLanguages(\n filteredLocales.filter((l) => {\n const lowerCaseValue = value.toLowerCase()\n return (\n l.name.toLowerCase().startsWith(lowerCaseValue) ||\n l.location.toLowerCase().startsWith(lowerCaseValue) ||\n l.tag.toLowerCase().startsWith(lowerCaseValue)\n )\n }),\n )\n }}\n />\n </Item>\n {languages.map((locale) => {\n return (\n <Item\n key={locale.tag}\n onClick={() => {\n onClick({ locale: locale.tag })\n }}\n >\n <span className={styles.ellipsis}>{`${locale.location} (${locale.tag})`}</span>\n </Item>\n )\n })}\n </div>\n </div>\n </div>\n )\n}\n"],"names":["React","useState","locales","Translate","Item","styles","TranslateMenu","onClick","show","setShow","filteredLocales","all","filter","a","tag","location","languages","setLanguages","inputFocus","setInputFocus","div","className","menu","onMouseLeave","onMouseEnter","isMenu","isActive","hoverMenu","data-show","subMenu","style","position","top","padding","background","input","menuInput","placeholder","onFocus","onBlur","onChange","event","value","target","l","lowerCaseValue","toLowerCase","name","startsWith","map","locale","span","ellipsis"],"mappings":";AAAA,OAAOA,SAASC,QAAQ,QAAQ,QAAO;AACvC,OAAOC,aAAa,eAAc;AAElC,SAASC,SAAS,QAAQ,aAAY;AACtC,SAASC,IAAI,QAAQ,YAAW;AAChC,OAAOC,YAAY,qBAAoB;AAEvC,OAAO,MAAMC,gBAAgB,CAAC,EAAEC,OAAO,EAAE;IACvC,MAAM,CAACC,MAAMC,QAAQ,GAAGR,SAAS;IAEjC,MAAMS,kBAAkBR,QAAQS,GAAG,CAACC,MAAM,CAAC,CAACC;QAC1C,OAAOA,EAAEC,GAAG,IAAID,EAAEE,QAAQ;IAC5B;IAEA,MAAM,CAACC,WAAWC,aAAa,GAAGhB,SAASS;IAC3C,MAAM,CAACQ,YAAYC,cAAc,GAAGlB,SAAS;IAE7C,qBACE,MAACmB;QACCC,WAAWhB,OAAOiB,IAAI;QACtBC,cAAc;YACZ,IAAI,CAACL,YAAY;gBACfT,QAAQ;YACV;QACF;;0BAEA,KAACN;gBACCI,SAAS;oBACPE,QAAQ,CAACD;gBACX;gBACAgB,cAAc,IAAMf,QAAQ;gBAC5BgB,QAAQ;gBACRC,UAAUlB;;0BAEZ,KAACY;gBAAIC,WAAWhB,OAAOsB,SAAS;gBAAEC,aAAWpB;0BAC3C,cAAA,MAACY;oBAAIC,WAAW,CAAC,EAAEhB,OAAOiB,IAAI,CAAC,CAAC,EAAEjB,OAAOwB,OAAO,CAAC,CAAC;;sCAChD,KAACzB;4BACCG,SAAS,KAAO;4BAChBuB,OAAO;gCACLC,UAAU;gCACVC,KAAK;gCACLC,SAAS;gCACTC,YAAY;4BACd;sCAEA,cAAA,KAACC;gCACCd,WAAWhB,OAAO+B,SAAS;gCAC3BC,aAAa;gCACbC,SAAS,IAAMnB,cAAc;gCAC7BoB,QAAQ,IAAMpB,cAAc;gCAC5BqB,UAAU,CAACC;oCACT,MAAMC,QAAQD,MAAME,MAAM,CAACD,KAAK;oCAChCzB,aACEP,gBAAgBE,MAAM,CAAC,CAACgC;wCACtB,MAAMC,iBAAiBH,MAAMI,WAAW;wCACxC,OACEF,EAAEG,IAAI,CAACD,WAAW,GAAGE,UAAU,CAACH,mBAChCD,EAAE7B,QAAQ,CAAC+B,WAAW,GAAGE,UAAU,CAACH,mBACpCD,EAAE9B,GAAG,CAACgC,WAAW,GAAGE,UAAU,CAACH;oCAEnC;gCAEJ;;;wBAGH7B,UAAUiC,GAAG,CAAC,CAACC;4BACd,qBACE,KAAC9C;gCAECG,SAAS;oCACPA,QAAQ;wCAAE2C,QAAQA,OAAOpC,GAAG;oCAAC;gCAC/B;0CAEA,cAAA,KAACqC;oCAAK9B,WAAWhB,OAAO+C,QAAQ;8CAAG,CAAC,EAAEF,OAAOnC,QAAQ,CAAC,EAAE,EAAEmC,OAAOpC,GAAG,CAAC,CAAC,CAAC;;+BALlEoC,OAAOpC,GAAG;wBAQrB;;;;;;AAKV,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/items.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,4LAA8C,CAAA;AACpE,eAAO,MAAM,QAAQ,4LAA2C,CAAA;AAChE,eAAO,MAAM,SAAS,4LAA6C,CAAA;AACnE,eAAO,MAAM,MAAM,4LAA0C,CAAA;AAC7D,eAAO,MAAM,SAAS,4LAA6C,CAAA;AACnE,eAAO,MAAM,QAAQ,4LAA0C,CAAA;AAC/D,eAAO,MAAM,OAAO,4LAA4C,CAAA;AAChE,eAAO,MAAM,QAAQ,4LAAuC,CAAA"}
1
+ {"version":3,"file":"items.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Actions/hooks/menu/items.tsx"],"names":[],"mappings":"AAYA,eAAO,MAAM,SAAS,4LAA8C,CAAA;AACpE,eAAO,MAAM,QAAQ,4LAA2C,CAAA;AAChE,eAAO,MAAM,SAAS,4LAA6C,CAAA;AACnE,eAAO,MAAM,MAAM,4LAA0C,CAAA;AAC7D,eAAO,MAAM,SAAS,4LAA6C,CAAA;AACnE,eAAO,MAAM,QAAQ,4LAA0C,CAAA;AAC/D,eAAO,MAAM,OAAO,4LAA4C,CAAA;AAChE,eAAO,MAAM,QAAQ,4LAAuC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/items.tsx"],"sourcesContent":["import {\n DocsAddOnIcon,\n EditNoteIcon,\n SegmentIcon,\n SpellCheckIcon,\n StylusNoteIcon,\n SummarizeIcon,\n TranslateIcon,\n TuneIcon,\n} from '../../../Icons/Icons.js'\nimport { createMenuItem } from './Item.js'\n\nexport const Proofread = createMenuItem(SpellCheckIcon, 'Proofread')\nexport const Rephrase = createMenuItem(EditNoteIcon, 'Rephrase')\nexport const Translate = createMenuItem(TranslateIcon, 'Translate')\nexport const Expand = createMenuItem(DocsAddOnIcon, 'Expand')\nexport const Summarize = createMenuItem(SummarizeIcon, 'Summarize')\nexport const Simplify = createMenuItem(SegmentIcon, 'Simplify')\nexport const Compose = createMenuItem(StylusNoteIcon, 'Compose')\nexport const Settings = createMenuItem(TuneIcon, 'Settings')\n"],"names":["DocsAddOnIcon","EditNoteIcon","SegmentIcon","SpellCheckIcon","StylusNoteIcon","SummarizeIcon","TranslateIcon","TuneIcon","createMenuItem","Proofread","Rephrase","Translate","Expand","Summarize","Simplify","Compose","Settings"],"mappings":"AAAA,SACEA,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,aAAa,EACbC,QAAQ,QACH,0BAAyB;AAChC,SAASC,cAAc,QAAQ,YAAW;AAE1C,OAAO,MAAMC,YAAYD,eAAeL,gBAAgB,aAAY;AACpE,OAAO,MAAMO,WAAWF,eAAeP,cAAc,YAAW;AAChE,OAAO,MAAMU,YAAYH,eAAeF,eAAe,aAAY;AACnE,OAAO,MAAMM,SAASJ,eAAeR,eAAe,UAAS;AAC7D,OAAO,MAAMa,YAAYL,eAAeH,eAAe,aAAY;AACnE,OAAO,MAAMS,WAAWN,eAAeN,aAAa,YAAW;AAC/D,OAAO,MAAMa,UAAUP,eAAeJ,gBAAgB,WAAU;AAChE,OAAO,MAAMY,WAAWR,eAAeD,UAAU,YAAW"}
1
+ {"version":3,"sources":["../../../../../src/ui/Actions/hooks/menu/items.tsx"],"sourcesContent":["import {\n DocsAddOnIcon,\n EditNoteIcon,\n SegmentIcon,\n SpellCheckIcon,\n StylusNoteIcon,\n SummarizeIcon,\n TranslateIcon,\n TuneIcon,\n} from '../../../Icons/Icons.js'\nimport { createMenuItem } from './Item.js'\n\nexport const Proofread = createMenuItem(SpellCheckIcon, 'Proofread')\nexport const Rephrase = createMenuItem(EditNoteIcon, 'Rephrase')\nexport const Translate = createMenuItem(TranslateIcon, 'Translate')\nexport const Expand = createMenuItem(DocsAddOnIcon, 'Expand')\nexport const Summarize = createMenuItem(SummarizeIcon, 'Summarize')\nexport const Simplify = createMenuItem(SegmentIcon, 'Simplify')\nexport const Compose = createMenuItem(StylusNoteIcon, 'Compose')\nexport const Settings = createMenuItem(TuneIcon, 'Settings')\n"],"names":["DocsAddOnIcon","EditNoteIcon","SegmentIcon","SpellCheckIcon","StylusNoteIcon","SummarizeIcon","TranslateIcon","TuneIcon","createMenuItem","Proofread","Rephrase","Translate","Expand","Summarize","Simplify","Compose","Settings"],"mappings":"AAAA,SACEA,aAAa,EACbC,YAAY,EACZC,WAAW,EACXC,cAAc,EACdC,cAAc,EACdC,aAAa,EACbC,aAAa,EACbC,QAAQ,QACH,0BAAyB;AAChC,SAASC,cAAc,QAAQ,YAAW;AAE1C,OAAO,MAAMC,YAAYD,eAAeL,gBAAgB,aAAY;AACpE,OAAO,MAAMO,WAAWF,eAAeP,cAAc,YAAW;AAChE,OAAO,MAAMU,YAAYH,eAAeF,eAAe,aAAY;AACnE,OAAO,MAAMM,SAASJ,eAAeR,eAAe,UAAS;AAC7D,OAAO,MAAMa,YAAYL,eAAeH,eAAe,aAAY;AACnE,OAAO,MAAMS,WAAWN,eAAeN,aAAa,YAAW;AAC/D,OAAO,MAAMa,UAAUP,eAAeJ,gBAAgB,WAAU;AAChE,OAAO,MAAMY,WAAWR,eAAeD,UAAU,YAAW"}
@@ -1 +1 @@
1
- {"version":3,"file":"itemsMap.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/itemsMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAK1E,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,gBAAgB,EAoB1C,CAAA"}
1
+ {"version":3,"file":"itemsMap.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Actions/hooks/menu/itemsMap.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAK1E,KAAK,gBAAgB,GAAG;IACtB,SAAS,EAAE,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,CAAA;IAClC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE,eAAe,CAAA;CACtB,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,gBAAgB,EAoB1C,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/itemsMap.ts"],"sourcesContent":["import React from 'react'\n\nimport type { ActionMenuItems, BaseItemProps } from '../../../../types.js'\n\nimport { Compose, Expand, Proofread, Rephrase, Settings, Simplify, Summarize } from './items.js'\nimport { TranslateMenu } from './TranslateMenu.js'\n\ntype MenuItemsMapType = {\n component: React.FC<BaseItemProps>\n excludedFor?: string[]\n loadingText?: string\n name: ActionMenuItems\n}\n\nexport const menuItemsMap: MenuItemsMapType[] = [\n { name: 'Proofread', component: Proofread, excludedFor: ['upload'], loadingText: 'Proofreading' },\n { name: 'Rephrase', component: Rephrase, excludedFor: ['upload'], loadingText: 'Rephrasing' },\n {\n name: 'Translate',\n component: TranslateMenu,\n excludedFor: ['upload'],\n loadingText: 'Translating',\n },\n { name: 'Expand', component: Expand, excludedFor: ['upload', 'text'], loadingText: 'Expanding' },\n {\n // Turned off - WIP\n name: 'Summarize',\n component: Summarize,\n excludedFor: ['upload', 'text', 'richText'],\n loadingText: 'Summarizing',\n },\n { name: 'Simplify', component: Simplify, excludedFor: ['upload'], loadingText: 'Simplifying' },\n { name: 'Compose', component: Compose, loadingText: 'Composing' },\n { name: 'Settings', component: Settings },\n]\n"],"names":["React","Compose","Expand","Proofread","Rephrase","Settings","Simplify","Summarize","TranslateMenu","menuItemsMap","name","component","excludedFor","loadingText"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,OAAO,EAAEC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,aAAY;AAChG,SAASC,aAAa,QAAQ,qBAAoB;AASlD,OAAO,MAAMC,eAAmC;IAC9C;QAAEC,MAAM;QAAaC,WAAWR;QAAWS,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAe;IAChG;QAAEH,MAAM;QAAYC,WAAWP;QAAUQ,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAa;IAC5F;QACEH,MAAM;QACNC,WAAWH;QACXI,aAAa;YAAC;SAAS;QACvBC,aAAa;IACf;IACA;QAAEH,MAAM;QAAUC,WAAWT;QAAQU,aAAa;YAAC;YAAU;SAAO;QAAEC,aAAa;IAAY;IAC/F;QACE,mBAAmB;QACnBH,MAAM;QACNC,WAAWJ;QACXK,aAAa;YAAC;YAAU;YAAQ;SAAW;QAC3CC,aAAa;IACf;IACA;QAAEH,MAAM;QAAYC,WAAWL;QAAUM,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAc;IAC7F;QAAEH,MAAM;QAAWC,WAAWV;QAASY,aAAa;IAAY;IAChE;QAAEH,MAAM;QAAYC,WAAWN;IAAS;CACzC,CAAA"}
1
+ {"version":3,"sources":["../../../../../src/ui/Actions/hooks/menu/itemsMap.ts"],"sourcesContent":["import React from 'react'\n\nimport type { ActionMenuItems, BaseItemProps } from '../../../../types.js'\n\nimport { Compose, Expand, Proofread, Rephrase, Settings, Simplify, Summarize } from './items.js'\nimport { TranslateMenu } from './TranslateMenu.js'\n\ntype MenuItemsMapType = {\n component: React.FC<BaseItemProps>\n excludedFor?: string[]\n loadingText?: string\n name: ActionMenuItems\n}\n\nexport const menuItemsMap: MenuItemsMapType[] = [\n { name: 'Proofread', component: Proofread, excludedFor: ['upload'], loadingText: 'Proofreading' },\n { name: 'Rephrase', component: Rephrase, excludedFor: ['upload'], loadingText: 'Rephrasing' },\n {\n name: 'Translate',\n component: TranslateMenu,\n excludedFor: ['upload'],\n loadingText: 'Translating',\n },\n { name: 'Expand', component: Expand, excludedFor: ['upload', 'text'], loadingText: 'Expanding' },\n {\n // Turned off - WIP\n name: 'Summarize',\n component: Summarize,\n excludedFor: ['upload', 'text', 'richText'],\n loadingText: 'Summarizing',\n },\n { name: 'Simplify', component: Simplify, excludedFor: ['upload'], loadingText: 'Simplifying' },\n { name: 'Compose', component: Compose, loadingText: 'Composing' },\n { name: 'Settings', component: Settings },\n]\n"],"names":["React","Compose","Expand","Proofread","Rephrase","Settings","Simplify","Summarize","TranslateMenu","menuItemsMap","name","component","excludedFor","loadingText"],"mappings":"AAAA,OAAOA,WAAW,QAAO;AAIzB,SAASC,OAAO,EAAEC,MAAM,EAAEC,SAAS,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,SAAS,QAAQ,aAAY;AAChG,SAASC,aAAa,QAAQ,qBAAoB;AASlD,OAAO,MAAMC,eAAmC;IAC9C;QAAEC,MAAM;QAAaC,WAAWR;QAAWS,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAe;IAChG;QAAEH,MAAM;QAAYC,WAAWP;QAAUQ,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAa;IAC5F;QACEH,MAAM;QACNC,WAAWH;QACXI,aAAa;YAAC;SAAS;QACvBC,aAAa;IACf;IACA;QAAEH,MAAM;QAAUC,WAAWT;QAAQU,aAAa;YAAC;YAAU;SAAO;QAAEC,aAAa;IAAY;IAC/F;QACE,mBAAmB;QACnBH,MAAM;QACNC,WAAWJ;QACXK,aAAa;YAAC;YAAU;YAAQ;SAAW;QAC3CC,aAAa;IACf;IACA;QAAEH,MAAM;QAAYC,WAAWL;QAAUM,aAAa;YAAC;SAAS;QAAEC,aAAa;IAAc;IAC7F;QAAEH,MAAM;QAAWC,WAAWV;QAASY,aAAa;IAAY;IAChE;QAAEH,MAAM;QAAYC,WAAWN;IAAS;CACzC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Compose/hooks/menu/useMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAmB1E,eAAO,MAAM,OAAO,eAAgB,aAAa;;;;;;;;CAyEhD,CAAA"}
1
+ {"version":3,"file":"useMenu.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Actions/hooks/menu/useMenu.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAmB,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAmB1E,eAAO,MAAM,OAAO,eAAgB,aAAa;;;;;;;;CAyEhD,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../src/ui/Compose/hooks/menu/useMenu.tsx"],"sourcesContent":["'use client'\n\nimport { useField, useFieldProps } from '@payloadcms/ui'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport type { ActionMenuItems, UseMenuEvents } from '../../../../types.js'\n\nimport { Compose, Proofread, Rephrase } from './items.js'\nimport { menuItemsMap } from './itemsMap.js'\nimport styles from './menu.module.scss'\n\nconst getActiveComponent = (ac) => {\n switch (ac) {\n case 'Proofread':\n return Proofread\n case 'Rephrase':\n return Rephrase\n case 'Compose':\n return Compose\n default:\n return Rephrase\n }\n}\n\nexport const useMenu = (menuEvents: UseMenuEvents) => {\n const { type: fieldType, path: pathFromContext } = useFieldProps()\n const field = useField({ path: pathFromContext })\n const [activeComponent, setActiveComponent] = useState<ActionMenuItems>('Rephrase')\n\n const { initialValue, value } = field\n\n useEffect(() => {\n if (!value) {\n setActiveComponent('Compose')\n return\n }\n\n if (menuItemsMap.some((i) => i.excludedFor?.includes(fieldType))) {\n setActiveComponent('Compose')\n return\n }\n\n if (typeof value === 'string' && value !== initialValue) {\n setActiveComponent('Proofread')\n } else {\n setActiveComponent('Rephrase')\n }\n }, [initialValue, value, fieldType])\n\n const MemoizedActiveComponent = useMemo(() => {\n return ({ isLoading }) => {\n const ActiveComponent = getActiveComponent(activeComponent)\n const activeItem = menuItemsMap.find((i) => i.name === activeComponent)\n return (\n <ActiveComponent disabled={isLoading} hideIcon onClick={menuEvents[`on${activeComponent}`]}>\n {isLoading && activeItem.loadingText}\n </ActiveComponent>\n )\n }\n }, [activeComponent, menuEvents])\n\n const filteredMenuItems = useMemo(\n () =>\n menuItemsMap.filter((i) => i.name !== activeComponent && !i.excludedFor?.includes(fieldType)),\n [activeComponent, fieldType],\n )\n\n const MemoizedMenu = useMemo(() => {\n return ({ isLoading, onClose }) => (\n <div className={styles.menu}>\n {filteredMenuItems.map((i) => {\n const Action = i.component\n return (\n <Action\n disabled={isLoading}\n key={i.name}\n onClick={(data) => {\n if (i.name !== 'Settings') {\n setActiveComponent(i.name)\n }\n\n menuEvents[`on${i.name}`](data)\n onClose()\n }}\n >\n {isLoading && i.loadingText}\n </Action>\n )\n })}\n </div>\n )\n }, [filteredMenuItems, menuEvents])\n\n return {\n ActiveComponent: MemoizedActiveComponent,\n Menu: MemoizedMenu,\n }\n}\n"],"names":["useField","useFieldProps","React","useEffect","useMemo","useState","Compose","Proofread","Rephrase","menuItemsMap","styles","getActiveComponent","ac","useMenu","menuEvents","type","fieldType","path","pathFromContext","field","activeComponent","setActiveComponent","initialValue","value","some","i","excludedFor","includes","MemoizedActiveComponent","isLoading","ActiveComponent","activeItem","find","name","disabled","hideIcon","onClick","loadingText","filteredMenuItems","filter","MemoizedMenu","onClose","div","className","menu","map","Action","component","data","Menu"],"mappings":"AAAA;;AAEA,SAASA,QAAQ,EAAEC,aAAa,QAAQ,iBAAgB;AACxD,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAI3D,SAASC,OAAO,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,aAAY;AACzD,SAASC,YAAY,QAAQ,gBAAe;AAC5C,OAAOC,YAAY,qBAAoB;AAEvC,MAAMC,qBAAqB,CAACC;IAC1B,OAAQA;QACN,KAAK;YACH,OAAOL;QACT,KAAK;YACH,OAAOC;QACT,KAAK;YACH,OAAOF;QACT;YACE,OAAOE;IACX;AACF;AAEA,OAAO,MAAMK,UAAU,CAACC;IACtB,MAAM,EAAEC,MAAMC,SAAS,EAAEC,MAAMC,eAAe,EAAE,GAAGjB;IACnD,MAAMkB,QAAQnB,SAAS;QAAEiB,MAAMC;IAAgB;IAC/C,MAAM,CAACE,iBAAiBC,mBAAmB,GAAGhB,SAA0B;IAExE,MAAM,EAAEiB,YAAY,EAAEC,KAAK,EAAE,GAAGJ;IAEhChB,UAAU;QACR,IAAI,CAACoB,OAAO;YACVF,mBAAmB;YACnB;QACF;QAEA,IAAIZ,aAAae,IAAI,CAAC,CAACC,IAAMA,EAAEC,WAAW,EAAEC,SAASX,aAAa;YAChEK,mBAAmB;YACnB;QACF;QAEA,IAAI,OAAOE,UAAU,YAAYA,UAAUD,cAAc;YACvDD,mBAAmB;QACrB,OAAO;YACLA,mBAAmB;QACrB;IACF,GAAG;QAACC;QAAcC;QAAOP;KAAU;IAEnC,MAAMY,0BAA0BxB,QAAQ;QACtC,OAAO,CAAC,EAAEyB,SAAS,EAAE;YACnB,MAAMC,kBAAkBnB,mBAAmBS;YAC3C,MAAMW,aAAatB,aAAauB,IAAI,CAAC,CAACP,IAAMA,EAAEQ,IAAI,KAAKb;YACvD,qBACE,KAACU;gBAAgBI,UAAUL;gBAAWM,QAAQ;gBAACC,SAAStB,UAAU,CAAC,CAAC,EAAE,EAAEM,iBAAiB,CAAC;0BACvFS,aAAaE,WAAWM,WAAW;;QAG1C;IACF,GAAG;QAACjB;QAAiBN;KAAW;IAEhC,MAAMwB,oBAAoBlC,QACxB,IACEK,aAAa8B,MAAM,CAAC,CAACd,IAAMA,EAAEQ,IAAI,KAAKb,mBAAmB,CAACK,EAAEC,WAAW,EAAEC,SAASX,aACpF;QAACI;QAAiBJ;KAAU;IAG9B,MAAMwB,eAAepC,QAAQ;QAC3B,OAAO,CAAC,EAAEyB,SAAS,EAAEY,OAAO,EAAE,iBAC5B,KAACC;gBAAIC,WAAWjC,OAAOkC,IAAI;0BACxBN,kBAAkBO,GAAG,CAAC,CAACpB;oBACtB,MAAMqB,SAASrB,EAAEsB,SAAS;oBAC1B,qBACE,KAACD;wBACCZ,UAAUL;wBAEVO,SAAS,CAACY;4BACR,IAAIvB,EAAEQ,IAAI,KAAK,YAAY;gCACzBZ,mBAAmBI,EAAEQ,IAAI;4BAC3B;4BAEAnB,UAAU,CAAC,CAAC,EAAE,EAAEW,EAAEQ,IAAI,EAAE,CAAC,CAACe;4BAC1BP;wBACF;kCAECZ,aAAaJ,EAAEY,WAAW;uBAVtBZ,EAAEQ,IAAI;gBAajB;;IAGN,GAAG;QAACK;QAAmBxB;KAAW;IAElC,OAAO;QACLgB,iBAAiBF;QACjBqB,MAAMT;IACR;AACF,EAAC"}
1
+ {"version":3,"sources":["../../../../../src/ui/Actions/hooks/menu/useMenu.tsx"],"sourcesContent":["'use client'\n\nimport { useField, useFieldProps } from '@payloadcms/ui'\nimport React, { useEffect, useMemo, useState } from 'react'\n\nimport type { ActionMenuItems, UseMenuEvents } from '../../../../types.js'\n\nimport { Compose, Proofread, Rephrase } from './items.js'\nimport { menuItemsMap } from './itemsMap.js'\nimport styles from './menu.module.scss'\n\nconst getActiveComponent = (ac) => {\n switch (ac) {\n case 'Proofread':\n return Proofread\n case 'Rephrase':\n return Rephrase\n case 'Compose':\n return Compose\n default:\n return Rephrase\n }\n}\n\nexport const useMenu = (menuEvents: UseMenuEvents) => {\n const { type: fieldType, path: pathFromContext } = useFieldProps()\n const field = useField({ path: pathFromContext })\n const [activeComponent, setActiveComponent] = useState<ActionMenuItems>('Rephrase')\n\n const { initialValue, value } = field\n\n useEffect(() => {\n if (!value) {\n setActiveComponent('Compose')\n return\n }\n\n if (menuItemsMap.some((i) => i.excludedFor?.includes(fieldType))) {\n setActiveComponent('Compose')\n return\n }\n\n if (typeof value === 'string' && value !== initialValue) {\n setActiveComponent('Proofread')\n } else {\n setActiveComponent('Rephrase')\n }\n }, [initialValue, value, fieldType])\n\n const MemoizedActiveComponent = useMemo(() => {\n return ({ isLoading }) => {\n const ActiveComponent = getActiveComponent(activeComponent)\n const activeItem = menuItemsMap.find((i) => i.name === activeComponent)\n return (\n <ActiveComponent disabled={isLoading} hideIcon onClick={menuEvents[`on${activeComponent}`]}>\n {isLoading && activeItem.loadingText}\n </ActiveComponent>\n )\n }\n }, [activeComponent, menuEvents])\n\n const filteredMenuItems = useMemo(\n () =>\n menuItemsMap.filter((i) => i.name !== activeComponent && !i.excludedFor?.includes(fieldType)),\n [activeComponent, fieldType],\n )\n\n const MemoizedMenu = useMemo(() => {\n return ({ isLoading, onClose }) => (\n <div className={styles.menu}>\n {filteredMenuItems.map((i) => {\n const Action = i.component\n return (\n <Action\n disabled={isLoading}\n key={i.name}\n onClick={(data) => {\n if (i.name !== 'Settings') {\n setActiveComponent(i.name)\n }\n\n menuEvents[`on${i.name}`](data)\n onClose()\n }}\n >\n {isLoading && i.loadingText}\n </Action>\n )\n })}\n </div>\n )\n }, [filteredMenuItems, menuEvents])\n\n return {\n ActiveComponent: MemoizedActiveComponent,\n Menu: MemoizedMenu,\n }\n}\n"],"names":["useField","useFieldProps","React","useEffect","useMemo","useState","Compose","Proofread","Rephrase","menuItemsMap","styles","getActiveComponent","ac","useMenu","menuEvents","type","fieldType","path","pathFromContext","field","activeComponent","setActiveComponent","initialValue","value","some","i","excludedFor","includes","MemoizedActiveComponent","isLoading","ActiveComponent","activeItem","find","name","disabled","hideIcon","onClick","loadingText","filteredMenuItems","filter","MemoizedMenu","onClose","div","className","menu","map","Action","component","data","Menu"],"mappings":"AAAA;;AAEA,SAASA,QAAQ,EAAEC,aAAa,QAAQ,iBAAgB;AACxD,OAAOC,SAASC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,QAAQ,QAAO;AAI3D,SAASC,OAAO,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,aAAY;AACzD,SAASC,YAAY,QAAQ,gBAAe;AAC5C,OAAOC,YAAY,qBAAoB;AAEvC,MAAMC,qBAAqB,CAACC;IAC1B,OAAQA;QACN,KAAK;YACH,OAAOL;QACT,KAAK;YACH,OAAOC;QACT,KAAK;YACH,OAAOF;QACT;YACE,OAAOE;IACX;AACF;AAEA,OAAO,MAAMK,UAAU,CAACC;IACtB,MAAM,EAAEC,MAAMC,SAAS,EAAEC,MAAMC,eAAe,EAAE,GAAGjB;IACnD,MAAMkB,QAAQnB,SAAS;QAAEiB,MAAMC;IAAgB;IAC/C,MAAM,CAACE,iBAAiBC,mBAAmB,GAAGhB,SAA0B;IAExE,MAAM,EAAEiB,YAAY,EAAEC,KAAK,EAAE,GAAGJ;IAEhChB,UAAU;QACR,IAAI,CAACoB,OAAO;YACVF,mBAAmB;YACnB;QACF;QAEA,IAAIZ,aAAae,IAAI,CAAC,CAACC,IAAMA,EAAEC,WAAW,EAAEC,SAASX,aAAa;YAChEK,mBAAmB;YACnB;QACF;QAEA,IAAI,OAAOE,UAAU,YAAYA,UAAUD,cAAc;YACvDD,mBAAmB;QACrB,OAAO;YACLA,mBAAmB;QACrB;IACF,GAAG;QAACC;QAAcC;QAAOP;KAAU;IAEnC,MAAMY,0BAA0BxB,QAAQ;QACtC,OAAO,CAAC,EAAEyB,SAAS,EAAE;YACnB,MAAMC,kBAAkBnB,mBAAmBS;YAC3C,MAAMW,aAAatB,aAAauB,IAAI,CAAC,CAACP,IAAMA,EAAEQ,IAAI,KAAKb;YACvD,qBACE,KAACU;gBAAgBI,UAAUL;gBAAWM,QAAQ;gBAACC,SAAStB,UAAU,CAAC,CAAC,EAAE,EAAEM,gBAAgB,CAAC,CAAC;0BACvFS,aAAaE,WAAWM,WAAW;;QAG1C;IACF,GAAG;QAACjB;QAAiBN;KAAW;IAEhC,MAAMwB,oBAAoBlC,QACxB,IACEK,aAAa8B,MAAM,CAAC,CAACd,IAAMA,EAAEQ,IAAI,KAAKb,mBAAmB,CAACK,EAAEC,WAAW,EAAEC,SAASX,aACpF;QAACI;QAAiBJ;KAAU;IAG9B,MAAMwB,eAAepC,QAAQ;QAC3B,OAAO,CAAC,EAAEyB,SAAS,EAAEY,OAAO,EAAE,iBAC5B,KAACC;gBAAIC,WAAWjC,OAAOkC,IAAI;0BACxBN,kBAAkBO,GAAG,CAAC,CAACpB;oBACtB,MAAMqB,SAASrB,EAAEsB,SAAS;oBAC1B,qBACE,KAACD;wBACCZ,UAAUL;wBAEVO,SAAS,CAACY;4BACR,IAAIvB,EAAEQ,IAAI,KAAK,YAAY;gCACzBZ,mBAAmBI,EAAEQ,IAAI;4BAC3B;4BAEAnB,UAAU,CAAC,CAAC,EAAE,EAAEW,EAAEQ,IAAI,CAAC,CAAC,CAAC,CAACe;4BAC1BP;wBACF;kCAECZ,aAAaJ,EAAEY,WAAW;uBAVtBZ,EAAEQ,IAAI;gBAajB;;IAGN,GAAG;QAACK;QAAmBxB;KAAW;IAElC,OAAO;QACLgB,iBAAiBF;QACjBqB,MAAMT;IACR;AACF,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"useGenerate.d.ts","sourceRoot":"","sources":["../../../../src/ui/Compose/hooks/useGenerate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAA;AAa1E,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAGzE,eAAO,MAAM,WAAW;yBAuKH,oBAAoB;;CAoBxC,CAAA"}
1
+ {"version":3,"file":"useGenerate.d.ts","sourceRoot":"","sources":["../../../../src/ui/Actions/hooks/useGenerate.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,mBAAmB,CAAA;AAa1E,KAAK,oBAAoB,GAAG;IAAE,MAAM,EAAE,eAAe,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAGzE,eAAO,MAAM,WAAW;yBAsKH,oBAAoB;;CAoBxC,CAAA"}
@@ -3,16 +3,16 @@ import { useConfig, useDocumentInfo, useField, useFieldProps, useForm, useLocale
3
3
  import { useCompletion, experimental_useObject as useObject } from 'ai/react';
4
4
  import { useCallback, useEffect } from 'react';
5
5
  import { PLUGIN_API_ENDPOINT_GENERATE, PLUGIN_API_ENDPOINT_GENERATE_UPLOAD, PLUGIN_INSTRUCTIONS_TABLE } from '../../../defaults.js';
6
- import { useInstructions } from '../../../providers/InstructionsProvider/useInstructions.js';
6
+ import { useInstructions } from '../../../providers/InstructionsProvider/hook.js';
7
7
  import { getFieldBySchemaPath } from '../../../utilities/getFieldBySchemaPath.js';
8
- import { jsonSchemaToZod } from '../../../utilities/jsonToZod.js';
9
8
  import { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js';
10
9
  import { useHistory } from './useHistory.js';
10
+ import { jsonSchemaToZod } from '../../../utilities/jsonToZod.js';
11
11
  //TODO: DONATION IDEA - Add a url to donate in cli when user installs the plugin and uses it for couple of times.
12
12
  export const useGenerate = ()=>{
13
13
  const { type, path: pathFromContext, schemaPath } = useFieldProps();
14
14
  const editorConfigContext = useEditorConfigContext();
15
- const { editor } = editorConfigContext;
15
+ const { editor, focusedEditor } = editorConfigContext;
16
16
  const { docConfig } = useDocumentInfo();
17
17
  const { setValue } = useField({
18
18
  path: pathFromContext
@@ -23,25 +23,26 @@ export const useGenerate = ()=>{
23
23
  });
24
24
  const { getData } = useForm();
25
25
  const localFromContext = useLocale();
26
- const { config: { collections } } = useConfig();
26
+ const { collections } = useConfig();
27
27
  const collection = collections.find((collection)=>collection.slug === PLUGIN_INSTRUCTIONS_TABLE);
28
28
  const { custom: { editorConfig } = {} } = collection.admin;
29
29
  const { schema: DocumentSchema = {} } = editorConfig || {};
30
- const lexicalZodSchema = jsonSchemaToZod(DocumentSchema);
31
- const { isLoading: loadingObject, object, stop, submit } = useObject({
30
+ const zodSchema = jsonSchemaToZod(DocumentSchema);
31
+ const { isLoading: loadingObject, // @ts-ignore - Object execssivily deep issue
32
+ object, stop, submit } = useObject({
32
33
  api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,
33
34
  onError: (error)=>{
34
35
  console.error('Error generating object:', error);
35
36
  },
36
37
  onFinish: (result)=>{
38
+ console.log('onFinish: result', result);
39
+ //TODO: Sometimes object is undefined?!
37
40
  if (result.object) {
38
41
  setHistory(result.object);
39
42
  setValue(result.object);
40
- } else {
41
- console.log('onFinish: result ', result);
42
43
  }
43
44
  },
44
- schema: lexicalZodSchema
45
+ schema: zodSchema
45
46
  });
46
47
  useEffect(()=>{
47
48
  if (!object) return;
@@ -145,7 +146,8 @@ export const useGenerate = ()=>{
145
146
  }, [
146
147
  getData,
147
148
  localFromContext?.code,
148
- instructionId
149
+ instructionId,
150
+ setValue
149
151
  ]);
150
152
  const generate = useCallback(async (options)=>{
151
153
  if (type === 'richText') {
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/Actions/hooks/useGenerate.ts"],"sourcesContent":["import type { ClientCollectionConfig, UploadField } from 'payload'\n\nimport { useEditorConfigContext } from '@payloadcms/richtext-lexical/client'\nimport {\n useConfig,\n useDocumentInfo,\n useField,\n useFieldProps,\n useForm,\n useLocale,\n} from '@payloadcms/ui'\nimport { useCompletion, experimental_useObject as useObject } from 'ai/react'\nimport { useCallback, useEffect } from 'react'\n\nimport type { ActionMenuItems, GenerateTextarea } from '../../../types.js'\n\nimport {\n PLUGIN_API_ENDPOINT_GENERATE,\n PLUGIN_API_ENDPOINT_GENERATE_UPLOAD,\n PLUGIN_INSTRUCTIONS_TABLE,\n} from '../../../defaults.js'\nimport { useInstructions } from '../../../providers/InstructionsProvider/hook.js'\nimport { getFieldBySchemaPath } from '../../../utilities/getFieldBySchemaPath.js'\nimport { setSafeLexicalState } from '../../../utilities/setSafeLexicalState.js'\nimport { useHistory } from './useHistory.js'\nimport { jsonSchemaToZod } from '../../../utilities/jsonToZod.js'\n\ntype ActionCallbackParams = { action: ActionMenuItems; params?: unknown }\n\n//TODO: DONATION IDEA - Add a url to donate in cli when user installs the plugin and uses it for couple of times.\nexport const useGenerate = () => {\n const { type, path: pathFromContext, schemaPath } = useFieldProps()\n\n const editorConfigContext = useEditorConfigContext()\n const { editor, focusedEditor } = editorConfigContext\n\n const { docConfig } = useDocumentInfo()\n\n const { setValue } = useField<string>({\n path: pathFromContext,\n })\n\n const { set: setHistory } = useHistory()\n const { id: instructionId } = useInstructions({\n path: schemaPath,\n })\n\n const { getData } = useForm()\n const localFromContext = useLocale()\n const { collections } = useConfig()\n const collection = collections.find((collection) => collection.slug === PLUGIN_INSTRUCTIONS_TABLE)\n const { custom: { editorConfig } = {} } = collection.admin\n const { schema: DocumentSchema = {} } = editorConfig || {}\n const zodSchema = jsonSchemaToZod(DocumentSchema)\n\n const {\n isLoading: loadingObject,\n // @ts-ignore - Object execssivily deep issue\n object,\n stop, // TODO: Implement this function\n submit,\n } = useObject({\n api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating object:', error)\n },\n onFinish: (result) => {\n console.log('onFinish: result', result)\n //TODO: Sometimes object is undefined?!\n if (result.object) {\n setHistory(result.object)\n setValue(result.object)\n }\n },\n schema: zodSchema,\n })\n\n useEffect(() => {\n if (!object) return\n\n requestAnimationFrame(() => {\n if (!editor) {\n setValue(object)\n return\n }\n\n // Currently this is being used as setValue for RichText component does not render new changes right away.\n setSafeLexicalState(object, editor)\n })\n }, [object])\n\n const {\n complete,\n completion,\n isLoading: loadingCompletion,\n } = useCompletion({\n api: `/api${PLUGIN_API_ENDPOINT_GENERATE}`,\n onError: (error) => {\n console.error('Error generating text:', error)\n },\n onFinish: (prompt, result) => {\n setHistory(result)\n },\n streamProtocol: 'data',\n })\n\n useEffect(() => {\n if (!completion) return\n\n requestAnimationFrame(() => {\n setValue(completion)\n })\n }, [completion])\n\n const streamObject = useCallback(\n ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n const options = {\n action,\n actionParams: params,\n instructionId,\n }\n\n submit({\n doc,\n locale: localFromContext?.code,\n options,\n })\n },\n [getData, localFromContext?.code, instructionId],\n )\n\n const streamText = useCallback(\n async ({ action = 'Compose', params }: ActionCallbackParams) => {\n const doc = getData()\n\n const options = {\n action,\n actionParams: params,\n instructionId,\n }\n\n await complete('', {\n body: {\n doc,\n locale: localFromContext?.code,\n options,\n },\n })\n },\n [getData, localFromContext?.code, instructionId],\n )\n\n const generateUpload = useCallback(async () => {\n const doc = getData()\n\n const fieldInfo = getFieldBySchemaPath(\n docConfig as ClientCollectionConfig,\n schemaPath,\n ) as UploadField\n\n return fetch(`/api${PLUGIN_API_ENDPOINT_GENERATE_UPLOAD}`, {\n body: JSON.stringify({\n doc,\n locale: localFromContext?.code,\n options: {\n instructionId,\n uploadCollectionSlug: fieldInfo.relationTo || 'media',\n },\n } satisfies Parameters<GenerateTextarea>[0]),\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n },\n method: 'POST',\n })\n .then(async (uploadResponse) => {\n if (uploadResponse.ok) {\n const { result } = await uploadResponse.json()\n if (!result) throw new Error('generateUpload: Something went wrong')\n\n setValue(result?.id)\n setHistory(result?.id)\n } else {\n const { errors = [] } = await uploadResponse.json()\n const errStr = errors.map((error) => error.message).join(', ')\n throw new Error(errStr)\n }\n return uploadResponse\n })\n .catch((error) => {\n console.error('Error generating your upload', error)\n })\n }, [getData, localFromContext?.code, instructionId, setValue])\n\n const generate = useCallback(\n async (options?: ActionCallbackParams) => {\n if (type === 'richText') {\n return streamObject(options)\n }\n\n if (['text', 'textarea'].includes(type)) {\n return streamText(options)\n }\n\n if (type === 'upload') {\n return generateUpload()\n }\n },\n [generateUpload, streamObject, streamText, type],\n )\n\n return {\n generate,\n isLoading: loadingCompletion || loadingObject,\n }\n}\n"],"names":["useEditorConfigContext","useConfig","useDocumentInfo","useField","useFieldProps","useForm","useLocale","useCompletion","experimental_useObject","useObject","useCallback","useEffect","PLUGIN_API_ENDPOINT_GENERATE","PLUGIN_API_ENDPOINT_GENERATE_UPLOAD","PLUGIN_INSTRUCTIONS_TABLE","useInstructions","getFieldBySchemaPath","setSafeLexicalState","useHistory","jsonSchemaToZod","useGenerate","type","path","pathFromContext","schemaPath","editorConfigContext","editor","focusedEditor","docConfig","setValue","set","setHistory","id","instructionId","getData","localFromContext","collections","collection","find","slug","custom","editorConfig","admin","schema","DocumentSchema","zodSchema","isLoading","loadingObject","object","stop","submit","api","onError","error","console","onFinish","result","log","requestAnimationFrame","complete","completion","loadingCompletion","prompt","streamProtocol","streamObject","action","params","doc","options","actionParams","locale","code","streamText","body","generateUpload","fieldInfo","fetch","JSON","stringify","uploadCollectionSlug","relationTo","credentials","headers","method","then","uploadResponse","ok","json","Error","errors","errStr","map","message","join","catch","generate","includes"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useHistory.d.ts","sourceRoot":"","sources":["../../../../src/ui/Actions/hooks/useHistory.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,UAAU;;;;;gBAgEZ,GAAG;;CAoEb,CAAA"}
@@ -23,9 +23,7 @@ export const useHistory = ()=>{
23
23
  }
24
24
  }, []);
25
25
  const saveToLocalStorage = useCallback((newGlobalHistory)=>{
26
- if (typeof localStorage !== 'undefined') {
27
- localStorage.setItem(STORAGE_KEY, JSON.stringify(newGlobalHistory));
28
- }
26
+ localStorage.setItem(STORAGE_KEY, JSON.stringify(newGlobalHistory));
29
27
  }, []);
30
28
  // Clear previous history
31
29
  const clearHistory = useCallback(()=>{
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../src/ui/Actions/hooks/useHistory.ts"],"sourcesContent":["'use client'\n\nimport { useDocumentInfo, useField, useFieldProps } from '@payloadcms/ui'\nimport { useCallback, useEffect } from 'react'\n\nimport { PLUGIN_NAME } from '../../../defaults.js'\n\nconst STORAGE_KEY = `${PLUGIN_NAME}-fields-history`\n\ninterface HistoryState {\n [path: string]: {\n currentIndex: number\n history: any[]\n }\n}\n\nexport const useHistory = () => {\n const { id } = useDocumentInfo()\n const { path: pathFromContext, schemaPath } = useFieldProps()\n const { value: currentFieldValue } = useField<string>({\n path: pathFromContext,\n })\n\n const fieldKey = `${id}.${schemaPath}`\n\n const getLatestHistory = useCallback((): HistoryState => {\n try {\n // This condition is applied, as it was somehow triggering on server side\n if (typeof localStorage !== 'undefined') {\n return JSON.parse(localStorage.getItem(STORAGE_KEY) || '{}')\n }\n return {}\n } catch (e) {\n console.error('Error parsing history:', e)\n return {}\n }\n }, [])\n\n const saveToLocalStorage = useCallback((newGlobalHistory: HistoryState) => {\n localStorage.setItem(STORAGE_KEY, JSON.stringify(newGlobalHistory))\n }, [])\n\n // Clear previous history\n const clearHistory = useCallback(() => {\n const latestHistory = { ...getLatestHistory() }\n Object.keys(latestHistory).forEach((k) => {\n if (!k.startsWith(id.toString())) {\n delete latestHistory[k]\n }\n })\n saveToLocalStorage(latestHistory)\n }, [id, fieldKey, getLatestHistory, saveToLocalStorage])\n\n useEffect(() => {\n // This is applied to clear out the document history which is not currently in use\n clearHistory()\n\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || {\n currentIndex: -1,\n history: [],\n }\n\n let newIndex = currentIndex\n if (currentIndex == -1) {\n newIndex = 0\n if (currentFieldValue) {\n history[newIndex] = currentFieldValue\n }\n }\n\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newIndex, history },\n }\n\n saveToLocalStorage(newGlobalHistory)\n }, [fieldKey])\n\n const set = useCallback(\n (data: any) => {\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || {\n currentIndex: -1,\n history: [],\n }\n const newHistory = [...history.slice(0, currentIndex + 1), data]\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newHistory.length - 1, history: newHistory },\n }\n saveToLocalStorage(newGlobalHistory)\n return data\n },\n [fieldKey, getLatestHistory, saveToLocalStorage],\n )\n\n const undo = useCallback(() => {\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || { currentIndex: -1, history: [] }\n if (currentIndex > 0) {\n const newIndex = currentIndex - 1\n const newValue = history[newIndex]\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newIndex, history },\n }\n saveToLocalStorage(newGlobalHistory)\n return newValue\n }\n return undefined\n }, [fieldKey, getLatestHistory, saveToLocalStorage])\n\n const redo = useCallback(() => {\n const latestHistory = getLatestHistory()\n const { currentIndex, history } = latestHistory[fieldKey] || { currentIndex: -1, history: [] }\n if (currentIndex < history.length - 1) {\n const newIndex = currentIndex + 1\n const newValue = history[newIndex]\n const newGlobalHistory = {\n ...latestHistory,\n [fieldKey]: { currentIndex: newIndex, history },\n }\n saveToLocalStorage(newGlobalHistory)\n return newValue\n }\n return undefined\n }, [fieldKey, getLatestHistory, saveToLocalStorage])\n\n const getLatestFieldHistory = useCallback(() => {\n const latestHistory = getLatestHistory()\n return latestHistory[fieldKey] || { currentIndex: -1, history: [] }\n }, [getLatestHistory, fieldKey])\n\n const fieldHistory = getLatestFieldHistory()\n\n const canUndo = fieldHistory.currentIndex > 0\n const canRedo = fieldHistory.currentIndex < fieldHistory.history.length - 1\n const currentValue = fieldHistory.history[fieldHistory.currentIndex]\n\n return {\n canRedo,\n canUndo,\n currentValue,\n redo,\n set,\n undo,\n }\n}\n"],"names":["useDocumentInfo","useField","useFieldProps","useCallback","useEffect","PLUGIN_NAME","STORAGE_KEY","useHistory","id","path","pathFromContext","schemaPath","value","currentFieldValue","fieldKey","getLatestHistory","localStorage","JSON","parse","getItem","e","console","error","saveToLocalStorage","newGlobalHistory","setItem","stringify","clearHistory","latestHistory","Object","keys","forEach","k","startsWith","toString","currentIndex","history","newIndex","set","data","newHistory","slice","length","undo","newValue","undefined","redo","getLatestFieldHistory","fieldHistory","canUndo","canRedo","currentValue"],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * OG Creator: Kailash Nadh
3
+ * Github: https://github.com/knadh/floatype.js
4
+ *
5
+ * Reacted By: Claude 3.5 Sonnet and Ashbuilds
6
+ */
7
+ import React from 'react';
8
+ type Options = {
9
+ debounce?: number;
10
+ onNavigate?: (direction: number, items: any[], currentIndex: number) => void;
11
+ onQuery: (query: string) => any[];
12
+ onRender?: (item: any) => React.ReactNode;
13
+ onSelect?: (item: any, query: string) => string;
14
+ onUpdate: (value: string) => void;
15
+ };
16
+ type FloatypeProps = {
17
+ options: Partial<Options>;
18
+ };
19
+ export declare const Floatype: React.ForwardRefExoticComponent<FloatypeProps & React.RefAttributes<HTMLTextAreaElement>>;
20
+ export {};
21
+ //# sourceMappingURL=Floatype.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Floatype.d.ts","sourceRoot":"","sources":["../../../src/ui/Floatype/Floatype.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA+D,MAAM,OAAO,CAAA;AAInF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,MAAM,KAAK,IAAI,CAAA;IAC5E,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,EAAE,CAAA;IACjC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,KAAK,CAAC,SAAS,CAAA;IACzC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,KAAK,MAAM,CAAA;IAC/C,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;CAClC,CAAA;AAED,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAA;CAC1B,CAAA;AAED,eAAO,MAAM,QAAQ,2FAkPnB,CAAA"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * OG Creator: Kailash Nadh
3
+ * Github: https://github.com/knadh/floatype.js
4
+ *
5
+ * Reacted By: Claude 3.5 Sonnet and Ashbuilds
6
+ */ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
+ import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
8
+ import styles from './floatype.module.css';
9
+ export const Floatype = /*#__PURE__*/ forwardRef(({ options }, inputRef)=>{
10
+ const [items, setItems] = useState([]);
11
+ const [currentIndex, setCurrentIndex] = useState(0);
12
+ const [query, setQuery] = useState(null);
13
+ const [coords, setCoords] = useState(null);
14
+ const boxRef = useRef(null);
15
+ const shadowRef = useRef(null);
16
+ const opt = {
17
+ debounce: 100,
18
+ onNavigate: undefined,
19
+ onQuery: ()=>[],
20
+ onRender: undefined,
21
+ onSelect: undefined,
22
+ onUpdate: ()=>{},
23
+ ...options
24
+ };
25
+ const destroy = useCallback(()=>{
26
+ setItems([]);
27
+ setCurrentIndex(0);
28
+ setQuery(null);
29
+ }, []);
30
+ const getLastWord = useCallback((el)=>{
31
+ const text = el.value.substring(0, el.selectionStart ?? 0);
32
+ const match = text.match(/\S+\s*$/);
33
+ return match ? match[0] : null;
34
+ }, []);
35
+ const insertWord = useCallback((el, val)=>{
36
+ const start = Math.max(el.value.lastIndexOf(' ', (el.selectionStart ?? 0) - 1), el.value.lastIndexOf('\n', (el.selectionStart ?? 0) - 1)) + 1;
37
+ el.value = el.value.substring(0, start) + val + (el.value[el.selectionStart ?? 0] !== ' ' ? ' ' : '') + el.value.substring(el.selectionStart ?? 0);
38
+ el.setSelectionRange(start + val.length + 1, start + val.length + 1);
39
+ opt.onUpdate(el.value);
40
+ }, [
41
+ opt
42
+ ]);
43
+ const getCaret = useCallback(()=>{
44
+ if (!inputRef || !('current' in inputRef) || !inputRef.current || !shadowRef.current) return null;
45
+ const el = inputRef.current;
46
+ const shadow = shadowRef.current;
47
+ const txt = el.value.substring(0, el.selectionStart ?? 0);
48
+ const start = Math.max(txt.lastIndexOf('\n'), txt.lastIndexOf(' ')) + 1;
49
+ const cl = 'floatype-caret';
50
+ shadow.innerHTML = el.value.substring(0, start) + `<span id="${cl}" style="display: inline-block;">${el.value.substring(start)}</span>`;
51
+ const m = shadow.querySelector(`#${cl}`);
52
+ const elRect = el.getBoundingClientRect();
53
+ const mRect = m?.getBoundingClientRect();
54
+ if (!mRect) return null;
55
+ let top = mRect.top - elRect.top + el.scrollTop;
56
+ let left = mRect.left - elRect.left + el.scrollLeft;
57
+ if (boxRef.current && currentIndex !== null) {
58
+ const box = boxRef.current;
59
+ const selected = box.children[currentIndex];
60
+ if (selected) {
61
+ top -= selected.offsetTop + (selected.clientHeight / 2 - 5);
62
+ }
63
+ }
64
+ if (boxRef.current) {
65
+ const box = boxRef.current;
66
+ if (box.clientWidth + left + elRect.left + 50 > window.innerWidth) {
67
+ left = left - box.offsetWidth - 50;
68
+ }
69
+ }
70
+ return {
71
+ x: left + elRect.left,
72
+ y: top + elRect.top
73
+ };
74
+ }, [
75
+ inputRef,
76
+ shadowRef,
77
+ boxRef,
78
+ currentIndex
79
+ ]);
80
+ const handleInput = useCallback(()=>{
81
+ if (!inputRef || !('current' in inputRef) || !inputRef.current) return;
82
+ const w = getLastWord(inputRef.current);
83
+ if (!w) {
84
+ destroy();
85
+ return;
86
+ }
87
+ setQuery(w);
88
+ }, [
89
+ inputRef,
90
+ getLastWord,
91
+ destroy
92
+ ]);
93
+ const handleKeyDown = useCallback((e)=>{
94
+ if (!boxRef.current) return;
95
+ switch(e.key){
96
+ case 'ArrowUp':
97
+ e.preventDefault();
98
+ setCurrentIndex((prev)=>(prev - 1 + items.length) % items.length);
99
+ break;
100
+ case 'ArrowDown':
101
+ e.preventDefault();
102
+ setCurrentIndex((prev)=>(prev + 1) % items.length);
103
+ break;
104
+ case 'Enter':
105
+ e.preventDefault();
106
+ if (inputRef && 'current' in inputRef && inputRef.current) {
107
+ const selectedItem = items[currentIndex];
108
+ const newVal = opt.onSelect ? opt.onSelect(selectedItem, query) : selectedItem;
109
+ insertWord(inputRef.current, newVal);
110
+ }
111
+ destroy();
112
+ break;
113
+ case 'Escape':
114
+ destroy();
115
+ break;
116
+ }
117
+ }, [
118
+ boxRef,
119
+ items,
120
+ currentIndex,
121
+ inputRef,
122
+ opt.onSelect,
123
+ insertWord,
124
+ destroy,
125
+ query
126
+ ]);
127
+ useEffect(()=>{
128
+ if (!inputRef || !('current' in inputRef) || !inputRef.current) return;
129
+ const el = inputRef.current;
130
+ el.addEventListener('input', handleInput);
131
+ el.addEventListener('keydown', handleKeyDown);
132
+ el.addEventListener('blur', destroy);
133
+ return ()=>{
134
+ el.removeEventListener('input', handleInput);
135
+ el.removeEventListener('keydown', handleKeyDown);
136
+ el.removeEventListener('blur', destroy);
137
+ };
138
+ }, [
139
+ inputRef,
140
+ handleInput,
141
+ handleKeyDown
142
+ ]);
143
+ useEffect(()=>{
144
+ if (!shadowRef.current || !inputRef || !('current' in inputRef) || !inputRef.current) return;
145
+ const shadow = shadowRef.current;
146
+ const el = inputRef.current;
147
+ const stylesCss = window.getComputedStyle(el);
148
+ const { fontFamily, fontSize, fontWeight } = stylesCss;
149
+ shadow.style.fontFamily = fontFamily;
150
+ shadow.style.fontSize = fontSize;
151
+ shadow.style.fontWeight = fontWeight;
152
+ const updateShadowPosition = ()=>{
153
+ const elRect = el.getBoundingClientRect();
154
+ shadow.style.position = 'fixed';
155
+ shadow.style.top = `${elRect.top}px`;
156
+ shadow.style.left = `${elRect.left - 52}px`;
157
+ shadow.style.width = `${elRect.width}px`;
158
+ shadow.style.height = `${elRect.height}px`;
159
+ shadow.style.opacity = '0';
160
+ shadow.style.padding = '0';
161
+ shadow.style.visibility = 'hidden';
162
+ };
163
+ setTimeout(updateShadowPosition, 300);
164
+ window.addEventListener('resize', updateShadowPosition);
165
+ window.addEventListener('scroll', updateShadowPosition);
166
+ return ()=>{
167
+ window.removeEventListener('resize', updateShadowPosition);
168
+ window.removeEventListener('scroll', updateShadowPosition);
169
+ };
170
+ }, [
171
+ inputRef,
172
+ shadowRef
173
+ ]);
174
+ useEffect(()=>{
175
+ const fetchItems = ()=>{
176
+ if (!query) return;
177
+ const newItems = opt.onQuery(query);
178
+ setItems(newItems);
179
+ setCoords(getCaret());
180
+ };
181
+ const timeoutId = setTimeout(fetchItems, opt.debounce);
182
+ return ()=>clearTimeout(timeoutId);
183
+ }, [
184
+ query,
185
+ opt.onQuery,
186
+ opt.debounce,
187
+ getCaret
188
+ ]);
189
+ useEffect(()=>{
190
+ if (opt.onNavigate) {
191
+ opt.onNavigate(1, items, currentIndex);
192
+ }
193
+ }, [
194
+ currentIndex,
195
+ items,
196
+ opt
197
+ ]);
198
+ useEffect(()=>{
199
+ if (boxRef.current && coords && inputRef && 'current' in inputRef && inputRef.current) {
200
+ const box = boxRef.current;
201
+ box.style.position = 'fixed';
202
+ box.style.left = `${coords.x}px`;
203
+ box.style.top = `${coords.y}px`;
204
+ box.style.width = window.getComputedStyle(inputRef.current).width;
205
+ box.style.display = items.length > 0 ? 'block' : 'none';
206
+ }
207
+ }, [
208
+ coords,
209
+ items,
210
+ inputRef
211
+ ]);
212
+ return /*#__PURE__*/ _jsxs("div", {
213
+ className: "field-type textarea",
214
+ style: {
215
+ position: 'relative'
216
+ },
217
+ children: [
218
+ /*#__PURE__*/ _jsx("div", {
219
+ className: "textarea-clone",
220
+ ref: shadowRef,
221
+ style: {
222
+ position: 'absolute'
223
+ }
224
+ }),
225
+ items.length > 0 && /*#__PURE__*/ _jsx("div", {
226
+ className: styles.floatype,
227
+ ref: boxRef,
228
+ children: items.map((item, idx)=>/*#__PURE__*/ _jsx("div", {
229
+ className: `${styles.floatype_item} ${idx === currentIndex ? styles.floatype_sel : ''}`,
230
+ "data-selected": idx === currentIndex,
231
+ onMouseDown: ()=>{
232
+ if (inputRef && 'current' in inputRef && inputRef.current) {
233
+ const newVal = opt.onSelect ? opt.onSelect(item, query) : item;
234
+ insertWord(inputRef.current, newVal);
235
+ }
236
+ destroy();
237
+ },
238
+ children: opt.onRender ? opt.onRender(item) : item
239
+ }, idx))
240
+ })
241
+ ]
242
+ });
243
+ });
244
+
245
+ //# sourceMappingURL=Floatype.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/ui/Floatype/Floatype.tsx"],"sourcesContent":["/**\n * OG Creator: Kailash Nadh\n * Github: https://github.com/knadh/floatype.js\n *\n * Reacted By: Claude 3.5 Sonnet and Ashbuilds\n */\n\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react'\n\nimport styles from './floatype.module.css'\n\ntype Options = {\n debounce?: number\n onNavigate?: (direction: number, items: any[], currentIndex: number) => void\n onQuery: (query: string) => any[]\n onRender?: (item: any) => React.ReactNode\n onSelect?: (item: any, query: string) => string\n onUpdate: (value: string) => void\n}\n\ntype FloatypeProps = {\n options: Partial<Options>\n}\n\nexport const Floatype = forwardRef<HTMLTextAreaElement, FloatypeProps>(({ options }, inputRef) => {\n const [items, setItems] = useState<any[]>([])\n const [currentIndex, setCurrentIndex] = useState(0)\n const [query, setQuery] = useState<null | string>(null)\n const [coords, setCoords] = useState<{ x: number; y: number } | null>(null)\n\n const boxRef = useRef<HTMLDivElement>(null)\n const shadowRef = useRef<HTMLDivElement>(null)\n\n const opt: Options = {\n debounce: 100,\n onNavigate: undefined,\n onQuery: () => [],\n onRender: undefined,\n onSelect: undefined,\n onUpdate: () => {},\n ...options,\n }\n\n const destroy = useCallback(() => {\n setItems([])\n setCurrentIndex(0)\n setQuery(null)\n }, [])\n\n const getLastWord = useCallback((el: HTMLTextAreaElement): null | string => {\n const text = el.value.substring(0, el.selectionStart ?? 0)\n const match = text.match(/\\S+\\s*$/)\n return match ? match[0] : null\n }, [])\n\n const insertWord = useCallback(\n (el: HTMLInputElement | HTMLTextAreaElement, val: string): void => {\n const start =\n Math.max(\n el.value.lastIndexOf(' ', (el.selectionStart ?? 0) - 1),\n el.value.lastIndexOf('\\n', (el.selectionStart ?? 0) - 1),\n ) + 1\n el.value =\n el.value.substring(0, start) +\n val +\n (el.value[el.selectionStart ?? 0] !== ' ' ? ' ' : '') +\n el.value.substring(el.selectionStart ?? 0)\n el.setSelectionRange(start + val.length + 1, start + val.length + 1)\n opt.onUpdate(el.value)\n },\n [opt],\n )\n\n const getCaret = useCallback(() => {\n if (!inputRef || !('current' in inputRef) || !inputRef.current || !shadowRef.current)\n return null\n\n const el = inputRef.current\n const shadow = shadowRef.current\n\n const txt = el.value.substring(0, el.selectionStart ?? 0)\n const start = Math.max(txt.lastIndexOf('\\n'), txt.lastIndexOf(' ')) + 1\n\n const cl = 'floatype-caret'\n shadow.innerHTML =\n el.value.substring(0, start) +\n `<span id=\"${cl}\" style=\"display: inline-block;\">${el.value.substring(start)}</span>`\n\n const m = shadow.querySelector(`#${cl}`)\n const elRect = el.getBoundingClientRect()\n const mRect = m?.getBoundingClientRect()\n\n if (!mRect) return null\n\n let top = mRect.top - elRect.top + el.scrollTop\n let left = mRect.left - elRect.left + el.scrollLeft\n\n if (boxRef.current && currentIndex !== null) {\n const box = boxRef.current\n const selected = box.children[currentIndex] as HTMLElement\n if (selected) {\n top -= selected.offsetTop + (selected.clientHeight / 2 - 5)\n }\n }\n\n if (boxRef.current) {\n const box = boxRef.current\n if (box.clientWidth + left + elRect.left + 50 > window.innerWidth) {\n left = left - box.offsetWidth - 50\n }\n }\n\n return {\n x: left + elRect.left,\n y: top + elRect.top,\n }\n }, [inputRef, shadowRef, boxRef, currentIndex])\n\n const handleInput = useCallback(() => {\n if (!inputRef || !('current' in inputRef) || !inputRef.current) return\n const w = getLastWord(inputRef.current)\n if (!w) {\n destroy()\n return\n }\n setQuery(w)\n }, [inputRef, getLastWord, destroy])\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLInputElement | HTMLTextAreaElement>) => {\n if (!boxRef.current) return\n\n switch (e.key) {\n case 'ArrowUp':\n e.preventDefault()\n setCurrentIndex((prev) => (prev - 1 + items.length) % items.length)\n break\n case 'ArrowDown':\n e.preventDefault()\n setCurrentIndex((prev) => (prev + 1) % items.length)\n break\n case 'Enter':\n e.preventDefault()\n if (inputRef && 'current' in inputRef && inputRef.current) {\n const selectedItem = items[currentIndex]\n const newVal = opt.onSelect\n ? opt.onSelect(selectedItem, query)\n : (selectedItem as unknown as string)\n insertWord(inputRef.current, newVal)\n }\n destroy()\n break\n case 'Escape':\n destroy()\n break\n }\n },\n [boxRef, items, currentIndex, inputRef, opt.onSelect, insertWord, destroy, query],\n )\n\n useEffect(() => {\n if (!inputRef || !('current' in inputRef) || !inputRef.current) return\n\n const el = inputRef.current\n el.addEventListener('input', handleInput)\n el.addEventListener('keydown', handleKeyDown as any)\n el.addEventListener('blur', destroy)\n\n return () => {\n el.removeEventListener('input', handleInput)\n el.removeEventListener('keydown', handleKeyDown as any)\n el.removeEventListener('blur', destroy)\n }\n }, [inputRef, handleInput, handleKeyDown])\n\n useEffect(() => {\n if (!shadowRef.current || !inputRef || !('current' in inputRef) || !inputRef.current) return\n\n const shadow = shadowRef.current\n const el = inputRef.current\n\n const stylesCss = window.getComputedStyle(el)\n const { fontFamily, fontSize, fontWeight } = stylesCss\n\n shadow.style.fontFamily = fontFamily\n shadow.style.fontSize = fontSize\n shadow.style.fontWeight = fontWeight\n\n const updateShadowPosition = () => {\n const elRect = el.getBoundingClientRect()\n shadow.style.position = 'fixed'\n shadow.style.top = `${elRect.top}px`\n shadow.style.left = `${elRect.left - 52}px`\n shadow.style.width = `${elRect.width}px`\n shadow.style.height = `${elRect.height}px`\n shadow.style.opacity = '0'\n shadow.style.padding = '0'\n shadow.style.visibility = 'hidden'\n }\n\n setTimeout(updateShadowPosition, 300)\n window.addEventListener('resize', updateShadowPosition)\n window.addEventListener('scroll', updateShadowPosition)\n\n return () => {\n window.removeEventListener('resize', updateShadowPosition)\n window.removeEventListener('scroll', updateShadowPosition)\n }\n }, [inputRef, shadowRef])\n\n useEffect(() => {\n const fetchItems = () => {\n if (!query) return\n const newItems = opt.onQuery(query)\n setItems(newItems)\n setCoords(getCaret())\n }\n\n const timeoutId = setTimeout(fetchItems, opt.debounce)\n return () => clearTimeout(timeoutId)\n }, [query, opt.onQuery, opt.debounce, getCaret])\n\n useEffect(() => {\n if (opt.onNavigate) {\n opt.onNavigate(1, items, currentIndex)\n }\n }, [currentIndex, items, opt])\n\n useEffect(() => {\n if (boxRef.current && coords && inputRef && 'current' in inputRef && inputRef.current) {\n const box = boxRef.current\n box.style.position = 'fixed'\n box.style.left = `${coords.x}px`\n box.style.top = `${coords.y}px`\n box.style.width = window.getComputedStyle(inputRef.current).width\n box.style.display = items.length > 0 ? 'block' : 'none'\n }\n }, [coords, items, inputRef])\n\n return (\n <div className=\"field-type textarea\" style={{ position: 'relative' }}>\n <div className=\"textarea-clone\" ref={shadowRef} style={{ position: 'absolute' }} />\n {items.length > 0 && (\n <div className={styles.floatype} ref={boxRef}>\n {items.map((item, idx) => (\n <div\n className={`${styles.floatype_item} ${idx === currentIndex ? styles.floatype_sel : ''}`}\n data-selected={idx === currentIndex}\n key={idx}\n onMouseDown={() => {\n if (inputRef && 'current' in inputRef && inputRef.current) {\n const newVal = opt.onSelect\n ? opt.onSelect(item, query)\n : (item as unknown as string)\n insertWord(inputRef.current, newVal)\n }\n destroy()\n }}\n >\n {opt.onRender ? opt.onRender(item) : (item as unknown as string)}\n </div>\n ))}\n </div>\n )}\n </div>\n )\n})\n"],"names":["React","forwardRef","useCallback","useEffect","useRef","useState","styles","Floatype","options","inputRef","items","setItems","currentIndex","setCurrentIndex","query","setQuery","coords","setCoords","boxRef","shadowRef","opt","debounce","onNavigate","undefined","onQuery","onRender","onSelect","onUpdate","destroy","getLastWord","el","text","value","substring","selectionStart","match","insertWord","val","start","Math","max","lastIndexOf","setSelectionRange","length","getCaret","current","shadow","txt","cl","innerHTML","m","querySelector","elRect","getBoundingClientRect","mRect","top","scrollTop","left","scrollLeft","box","selected","children","offsetTop","clientHeight","clientWidth","window","innerWidth","offsetWidth","x","y","handleInput","w","handleKeyDown","e","key","preventDefault","prev","selectedItem","newVal","addEventListener","removeEventListener","stylesCss","getComputedStyle","fontFamily","fontSize","fontWeight","style","updateShadowPosition","position","width","height","opacity","padding","visibility","setTimeout","fetchItems","newItems","timeoutId","clearTimeout","display","div","className","ref","floatype","map","item","idx","floatype_item","floatype_sel","data-selected","onMouseDown"],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ .floatype {
2
+ background: var(--theme-bg);
3
+ color: var(--theme-text);
4
+ border: 1px solid var(--theme-elevation-250);
5
+ box-shadow:
6
+ 0px 10px 4px -8px rgba(0, 2, 4, 0.02),
7
+ 0px 2px 3px 0px rgba(0, 2, 4, 0.05);
8
+ text-align: left;
9
+ max-width: 200px;
10
+ z-index: 1000;
11
+ position: fixed;
12
+ }
13
+
14
+ .floatype_item {
15
+ padding: 5px 10px;
16
+ }
17
+
18
+ .floatype_item:hover {
19
+ background: var(--theme-elevation-100);
20
+ }
21
+
22
+ .floatype_sel {
23
+ background: var(--theme-input-bg);
24
+ font-weight: bold;
25
+ }
@@ -1,3 +1,3 @@
1
- import type { ClientCollectionConfig, CollectionConfig, Field } from 'payload';
2
- export declare const getFieldBySchemaPath: (collectionConfig: ClientCollectionConfig | CollectionConfig, schemaPath: string) => Field | null;
1
+ import type { ClientCollectionConfig, ClientFieldConfig, CollectionConfig, Field } from 'payload';
2
+ export declare const getFieldBySchemaPath: (collectionConfig: ClientCollectionConfig | CollectionConfig, schemaPath: string) => ClientFieldConfig | Field | null;
3
3
  //# sourceMappingURL=getFieldBySchemaPath.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"getFieldBySchemaPath.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldBySchemaPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE9E,eAAO,MAAM,oBAAoB,qBACb,sBAAsB,GAAG,gBAAgB,cAC/C,MAAM,KACjB,KAAK,GAAG,IAyCV,CAAA"}
1
+ {"version":3,"file":"getFieldBySchemaPath.d.ts","sourceRoot":"","sources":["../../src/utilities/getFieldBySchemaPath.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAEjG,eAAO,MAAM,oBAAoB,qBACb,sBAAsB,GAAG,gBAAgB,cAC/C,MAAM,KACjB,iBAAiB,GAAG,KAAK,GAAG,IAyC9B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/utilities/getFieldBySchemaPath.ts"],"sourcesContent":["import type { ClientCollectionConfig, CollectionConfig, Field } from 'payload'\n\nexport const getFieldBySchemaPath = (\n collectionConfig: ClientCollectionConfig | CollectionConfig,\n schemaPath: string, // e.g., \"posts.content\"\n): Field | null => {\n const pathParts = schemaPath.split('.')\n const targetFieldName = pathParts[pathParts.length - 1]\n\n const findField = (fields, remainingPath: string[]): Field | null => {\n for (const field of fields) {\n if (remainingPath.length === 1 && field.name === targetFieldName) {\n return field\n }\n\n if (field.type === 'group' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'array' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n const result = findField(tab.fields, remainingPath)\n if (result) return result\n }\n }\n\n if (field.type === 'blocks') {\n for (const block of field.blocks) {\n if (block.slug === remainingPath[0]) {\n const result = findField(block.fields, remainingPath.slice(1))\n if (result) return result\n }\n }\n }\n }\n\n return null\n }\n\n return findField(collectionConfig.fields, pathParts.slice(1))\n}\n"],"names":["getFieldBySchemaPath","collectionConfig","schemaPath","pathParts","split","targetFieldName","length","findField","fields","remainingPath","field","name","type","result","slice","tab","tabs","block","blocks","slug"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,CAClCC,kBACAC;IAEA,MAAMC,YAAYD,WAAWE,KAAK,CAAC;IACnC,MAAMC,kBAAkBF,SAAS,CAACA,UAAUG,MAAM,GAAG,EAAE;IAEvD,MAAMC,YAAY,CAACC,QAAQC;QACzB,KAAK,MAAMC,SAASF,OAAQ;YAC1B,IAAIC,cAAcH,MAAM,KAAK,KAAKI,MAAMC,IAAI,KAAKN,iBAAiB;gBAChE,OAAOK;YACT;YAEA,IAAIA,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,QAAQ;gBACzB,KAAK,MAAMG,OAAOL,MAAMM,IAAI,CAAE;oBAC5B,MAAMH,SAASN,UAAUQ,IAAIP,MAAM,EAAEC;oBACrC,IAAII,QAAQ,OAAOA;gBACrB;YACF;YAEA,IAAIH,MAAME,IAAI,KAAK,UAAU;gBAC3B,KAAK,MAAMK,SAASP,MAAMQ,MAAM,CAAE;oBAChC,IAAID,MAAME,IAAI,KAAKV,aAAa,CAAC,EAAE,EAAE;wBACnC,MAAMI,SAASN,UAAUU,MAAMT,MAAM,EAAEC,cAAcK,KAAK,CAAC;wBAC3D,IAAID,QAAQ,OAAOA;oBACrB;gBACF;YACF;QACF;QAEA,OAAO;IACT;IAEA,OAAON,UAAUN,iBAAiBO,MAAM,EAAEL,UAAUW,KAAK,CAAC;AAC5D,EAAC"}
1
+ {"version":3,"sources":["../../src/utilities/getFieldBySchemaPath.ts"],"sourcesContent":["import type { ClientCollectionConfig, ClientFieldConfig, CollectionConfig, Field } from 'payload'\n\nexport const getFieldBySchemaPath = (\n collectionConfig: ClientCollectionConfig | CollectionConfig,\n schemaPath: string, // e.g., \"posts.content\"\n): ClientFieldConfig | Field | null => {\n const pathParts = schemaPath.split('.')\n const targetFieldName = pathParts[pathParts.length - 1]\n\n const findField = (fields, remainingPath: string[]): Field | null => {\n for (const field of fields) {\n if (remainingPath.length === 1 && field.name === targetFieldName) {\n return field\n }\n\n if (field.type === 'group' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'array' && field.fields) {\n const result = findField(field.fields, remainingPath.slice(1))\n if (result) return result\n }\n\n if (field.type === 'tabs') {\n for (const tab of field.tabs) {\n const result = findField(tab.fields, remainingPath)\n if (result) return result\n }\n }\n\n if (field.type === 'blocks') {\n for (const block of field.blocks) {\n if (block.slug === remainingPath[0]) {\n const result = findField(block.fields, remainingPath.slice(1))\n if (result) return result\n }\n }\n }\n }\n\n return null\n }\n\n return findField(collectionConfig.fields, pathParts.slice(1))\n}\n"],"names":["getFieldBySchemaPath","collectionConfig","schemaPath","pathParts","split","targetFieldName","length","findField","fields","remainingPath","field","name","type","result","slice","tab","tabs","block","blocks","slug"],"mappings":"AAEA,OAAO,MAAMA,uBAAuB,CAClCC,kBACAC;IAEA,MAAMC,YAAYD,WAAWE,KAAK,CAAC;IACnC,MAAMC,kBAAkBF,SAAS,CAACA,UAAUG,MAAM,GAAG,EAAE;IAEvD,MAAMC,YAAY,CAACC,QAAQC;QACzB,KAAK,MAAMC,SAASF,OAAQ;YAC1B,IAAIC,cAAcH,MAAM,KAAK,KAAKI,MAAMC,IAAI,KAAKN,iBAAiB;gBAChE,OAAOK;YACT;YAEA,IAAIA,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,WAAWF,MAAMF,MAAM,EAAE;gBAC1C,MAAMK,SAASN,UAAUG,MAAMF,MAAM,EAAEC,cAAcK,KAAK,CAAC;gBAC3D,IAAID,QAAQ,OAAOA;YACrB;YAEA,IAAIH,MAAME,IAAI,KAAK,QAAQ;gBACzB,KAAK,MAAMG,OAAOL,MAAMM,IAAI,CAAE;oBAC5B,MAAMH,SAASN,UAAUQ,IAAIP,MAAM,EAAEC;oBACrC,IAAII,QAAQ,OAAOA;gBACrB;YACF;YAEA,IAAIH,MAAME,IAAI,KAAK,UAAU;gBAC3B,KAAK,MAAMK,SAASP,MAAMQ,MAAM,CAAE;oBAChC,IAAID,MAAME,IAAI,KAAKV,aAAa,CAAC,EAAE,EAAE;wBACnC,MAAMI,SAASN,UAAUU,MAAMT,MAAM,EAAEC,cAAcK,KAAK,CAAC;wBAC3D,IAAID,QAAQ,OAAOA;oBACrB;gBACF;YACF;QACF;QAEA,OAAO;IACT;IAEA,OAAON,UAAUN,iBAAiBO,MAAM,EAAEL,UAAUW,KAAK,CAAC;AAC5D,EAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"updateFieldsConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/updateFieldsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,uBAAuB,EAAE,gBAAgB,CAAA;CAC1C;AAED,eAAO,MAAM,kBAAkB,qBAAsB,gBAAgB,KAAG,kBA0FvE,CAAA"}
1
+ {"version":3,"file":"updateFieldsConfig.d.ts","sourceRoot":"","sources":["../../src/utilities/updateFieldsConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAI/C,UAAU,kBAAkB;IAC1B,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACrC,uBAAuB,EAAE,gBAAgB,CAAA;CAC1C;AAED,eAAO,MAAM,kBAAkB,qBAAsB,gBAAgB,KAAG,kBAiFvE,CAAA"}